diff --git a/package-lock.json b/package-lock.json
index bbcb2ca25c430d064a067b3184b9b06e6c03a477..73bd0c6754aa1bdea63450116672751629397c42 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1695,14 +1695,6 @@
         "schema-utils": "^2.7.0"
       }
     },
-    "@kolkov/angular-editor": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@kolkov/angular-editor/-/angular-editor-1.2.0.tgz",
-      "integrity": "sha512-uAXsYxK62rOcgGJZdT3Q8iqJZ1k9BJchmg23+Iwy+oTtaqdzqkjl1Sgeka1uXQRWEUqFFxjxn7CpU8mNLCmeGQ==",
-      "requires": {
-        "tslib": "^2.0.0"
-      }
-    },
     "@ngtools/webpack": {
       "version": "12.0.5",
       "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.0.5.tgz",
@@ -1829,6 +1821,21 @@
         "jsonc-parser": "3.0.0"
       }
     },
+    "@tinymce/tinymce-angular": {
+      "version": "4.2.4",
+      "resolved": "https://registry.npmjs.org/@tinymce/tinymce-angular/-/tinymce-angular-4.2.4.tgz",
+      "integrity": "sha512-A+FIvhTahHaqDuvcXovuhzvpCR2yjUbPuF+Z/t/MnNaCv/9Y0w7W5Qgmo5wARIW+NM7o8msWcMSxOMK4xkv10Q==",
+      "requires": {
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
+      }
+    },
     "@tootallnate/once": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
diff --git a/package.json b/package.json
index 723efac1a76ecae0df0c171117c8ecf1f6777deb..5bc4aa775e638663d3c069f4f9bf72bf00cead18 100644
--- a/package.json
+++ b/package.json
@@ -31,9 +31,9 @@
     "@angular/platform-browser": "~12.0.5",
     "@angular/platform-browser-dynamic": "~12.0.5",
     "@angular/router": "~12.0.5",
-    "@kolkov/angular-editor": "^1.2.0",
     "@ngx-translate/core": "^13.0.0",
     "@ngx-translate/http-loader": "^6.0.0",
+    "@tinymce/tinymce-angular": "^4.2.4",
     "rxjs": "~6.6.0",
     "tslib": "^2.1.0",
     "zone.js": "~0.11.4"
diff --git a/projects/editor/src/app/app.module.ts b/projects/editor/src/app/app.module.ts
index d83d72e4fbfe5dff36fac965664e68af4ad78ef7..914bebca035c2f449c3f36379a016eccfc673793 100644
--- a/projects/editor/src/app/app.module.ts
+++ b/projects/editor/src/app/app.module.ts
@@ -5,8 +5,7 @@ import { CommonModule } from '@angular/common';
 import { createCustomElement } from '@angular/elements';
 import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
 
-import { HttpClientModule } from '@angular/common/http';
-import { AngularEditorModule } from '@kolkov/angular-editor';
+import { EditorModule } from '@tinymce/tinymce-angular';
 
 import { MatButtonToggleModule } from '@angular/material/button-toggle';
 import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@@ -48,6 +47,7 @@ import { DynamicViewOnlyElementOverlayComponent } from './components/unit-view/p
     TextEditDialog,
     MultilineTextEditDialog,
     RichTextEditDialog,
+    RichTextEditDialogTinyMCE,
     PagePropertiesComponent,
     SectionPropertiesComponent,
     ElementPropertiesComponent,
@@ -61,8 +61,7 @@ import { DynamicViewOnlyElementOverlayComponent } from './components/unit-view/p
     SharedModule,
     MatButtonToggleModule,
     MatSlideToggleModule,
-    HttpClientModule,
-    AngularEditorModule,
+    EditorModule,
     TranslateModule.forRoot({
       loader: {
         provide: TranslateLoader,
diff --git a/projects/editor/src/assets/tinymce/CHANGELOG.md b/projects/editor/src/assets/tinymce/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..761798bee35c9df4f962d4cbc5df93e917e3f281
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/CHANGELOG.md
@@ -0,0 +1,2606 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## Unreleased
+
+## 5.9.1 - 2021-08-27
+
+### Fixed
+- Published TinyMCE types failed to compile in strict mode #TINY-7915
+- The `TableModified` event sometimes didn't fire when performing certain table actions #TINY-7916
+
+## 5.9.0 - 2021-08-26
+
+### Added
+- Added a new `mceFocus` command that focuses the editor. Equivalent to using `editor.focus()` #TINY-7373
+- Added a new `mceTableToggleClass` command which toggles the provided class on the currently selected table #TINY-7476
+- Added a new `mceTableCellToggleClass` command which toggles the provided class on the currently selected table cells #TINY-7476
+- Added a new `tablecellvalign` toolbar button and menu item for vertical table cell alignment #TINY-7477
+- Added a new `tablecellborderwidth` toolbar button and menu item to change table cell border width #TINY-7478
+- Added a new `tablecellborderstyle` toolbar button and menu item to change table cell border style #TINY-7478
+- Added a new `tablecaption` toolbar button and menu item to toggle captions on tables #TINY-7479
+- Added a new `mceTableToggleCaption` command that toggles captions on a selected table #TINY-7479
+- Added a new `tablerowheader` toolbar button and menu item to toggle the header state of row cells #TINY-7478
+- Added a new `tablecolheader` toolbar button and menu item to toggle the header state of column cells #TINY-7482
+- Added a new `tablecellbordercolor` toolbar button and menu item to select table cell border colors, with an accompanying setting `table_border_color_map` to customize the available values #TINY-7480
+- Added a new `tablecellbackgroundcolor` toolbar button and menu item to select table cell background colors, with an accompanying setting `table_background_color_map` to customize the available values #TINY-7480
+- Added a new `language` menu item and toolbar button to add `lang` attributes to content, with an accompanying `content_langs` setting to specify the languages available #TINY-6149
+- A new `lang` format is now available that can be used with `editor.formatter`, or applied with the `Lang` editor command #TINY-6149
+- Added a new `language` icon for the `language` toolbar button #TINY-7670
+- Added a new `table-row-numbering` icon #TINY-7327
+- Added new plugin commands: `mceEmoticons` (Emoticons), `mceWordCount` (Word Count), and `mceTemplate` (Template) #TINY-7619
+- Added a new `iframe_aria_text` setting to set the iframe title attribute #TINY-1264
+- Added a new DomParser `Node.children()` API to return all the children of a `Node` #TINY-7756
+
+### Improved
+- Sticky toolbars can now be offset from the top of the page using the new `toolbar_sticky_offset` setting #TINY-7337
+- Fancy menu items now accept an `initData` property to allow custom initialization data #TINY-7480
+- Improved the load time of the `fullpage` plugin by using the existing editor schema rather than creating a new one #TINY-6504
+- Improved the performance when UI components are rendered #TINY-7572
+- The context toolbar no longer unnecessarily repositions to the top of large elements when scrolling #TINY-7545
+- The context toolbar will now move out of the way when it overlaps with the selection, such as in table cells #TINY-7192
+- The context toolbar now uses a short animation when transitioning between different locations #TINY-7740
+- `Env.browser` now uses the User-Agent Client Hints API where it is available #TINY-7785
+- Icons with a `-rtl` suffix in their name will now automatically be used when the UI is rendered in right-to-left mode #TINY-7782
+- The `formatter.match` API now accepts an optional `similar` parameter to check if the format partially matches #TINY-7712
+- The `formatter.formatChanged` API now supports providing format variables when listening for changes #TINY-7713
+- The formatter will now fire `FormatApply` and `FormatRemove` events for the relevant actions #TINY-7713
+- The `autolink` plugin link detection now permits custom protocols #TINY-7714
+- The `autolink` plugin valid link detection has been improved #TINY-7714
+
+### Changed
+- Changed the load order so content CSS is loaded before the editor is populated with content #TINY-7249
+- Changed the `emoticons`, `wordcount`, `code`, `codesample`, and `template` plugins to open dialogs using commands #TINY-7619
+- The context toolbar will no longer show an arrow when it overlaps the content, such as in table cells #TINY-7665
+- The context toolbar will no longer overlap the statusbar for toolbars using `node` or `selection` positions #TINY-7666
+
+### Fixed
+- The `editor.fire` API was incorrectly mutating the original `args` provided #TINY-3254
+- Unbinding an event handler did not take effect immediately while the event was firing #TINY-7436
+- Binding an event handler incorrectly took effect immediately while the event was firing #TINY-7436
+- Unbinding a native event handler inside the `remove` event caused an exception that blocked editor removal #TINY-7730
+- The `SetContent` event contained the incorrect `content` when using the `editor.selection.setContent()` API #TINY-3254
+- The editor content could be edited after calling `setProgressState(true)` in iframe mode #TINY-7373
+- Tabbing out of the editor after calling `setProgressState(true)` behaved inconsistently in iframe mode #TINY-7373
+- Flash of unstyled content while loading the editor because the content CSS was loaded after the editor content was rendered #TINY-7249
+- Partially transparent RGBA values provided in the `color_map` setting were given the wrong hex value #TINY-7163
+- HTML comments with mismatched quotes were parsed incorrectly under certain circumstances #TINY-7589
+- The editor could crash when inserting certain HTML content #TINY-7756
+- Inserting certain HTML content into the editor could result in invalid HTML once parsed #TINY-7756
+- Links in notification text did not show the correct mouse pointer #TINY-7661
+- Using the Tab key to navigate into the editor on Microsoft Internet Explorer 11 would incorrectly focus the toolbar #TINY-3707
+- The editor selection could be placed in an incorrect location when undoing or redoing changes in a document containing `contenteditable="false"` elements #TINY-7663
+- Menus and context menus were not closed when clicking into a different editor #TINY-7399
+- Context menus on Android were not displayed when more than one HTML element was selected #TINY-7688
+- Disabled nested menu items could still be opened #TINY-7700
+- The nested menu item chevron icon was not fading when the menu item was disabled #TINY-7700
+- `imagetools` buttons were incorrectly enabled for remote images without `imagetools_proxy` set #TINY-7772
+- Only table content would be deleted when partially selecting a table and content outside the table #TINY-6044
+- The table cell selection handling was incorrect in some cases when dealing with nested tables #TINY-6298
+- Removing a table row or column could result in the cursor getting placed in an invalid location #TINY-7695
+- Pressing the Tab key to navigate through table cells did not skip noneditable cells #TINY-7705
+- Clicking on a noneditable table cell did not show a visual selection like other noneditable elements #TINY-7724
+- Some table operations would incorrectly cause table row attributes and styles to be lost #TINY-6666
+- The selection was incorrectly lost when using the `mceTableCellType` and `mceTableRowType` commands #TINY-6666
+- The `mceTableRowType` was reversing the order of the rows when converting multiple header rows back to body rows #TINY-6666
+- The table dialog did not always respect the `table_style_with_css` option #TINY-4926
+- Pasting into a table with multiple cells selected could cause the content to be pasted in the wrong location #TINY-7485
+- The `TableModified` event was not fired when pasting cells into a table #TINY-6939
+- The table paste column before and after icons were not flipped in RTL mode #TINY-7851
+- Fixed table corruption when deleting a `contenteditable="false"` cell #TINY-7891
+- The `dir` attribute was being incorrectly applied to list items #TINY-4589
+- Applying selector formats would sometimes not apply the format correctly to elements in a list #TINY-7393
+- For formats that specify an attribute or style that should be removed, the formatter `match` API incorrectly returned `false` #TINY-6149
+- The type signature on the `formatter.matchNode` API had the wrong return type (was `boolean` but should have been `Formatter | undefined`) #TINY-6149
+- The `formatter.formatChanged` API would ignore the `similar` parameter if another callback had already been registered for the same format #TINY-7713
+- The `formatter.formatChanged` API would sometimes not run the callback the first time the format was removed #TINY-7713
+- Base64 encoded images with spaces or line breaks in the data URI were not displayed correctly. Patch contributed by RoboBurned
+
+### Deprecated
+- The `bbcode`, `fullpage`, `legacyoutput`, and `spellchecker` plugins have been deprecated and marked for removal in the next major release #TINY-7260
+
+## 5.8.2 - 2021-06-23
+
+### Fixed
+- Fixed an issue when pasting cells from tables containing `colgroup`s into tables without `colgroup`s #TINY-6675
+- Fixed an issue that could cause an invalid toolbar button state when multiple inline editors were on a single page #TINY-6297
+
+## 5.8.1 - 2021-05-20
+
+### Fixed
+- An unexpected exception was thrown when switching to readonly mode and adjusting the editor width #TINY-6383
+- Content could be lost when the `pagebreak_split_block` setting was enabled #TINY-3388
+- The `list-style-type: none;` style on nested list items was incorrectly removed when clearing formatting #TINY-6264
+- URLs were not always detected when pasting over a selection. Patch contributed by jwcooper #TINY-6997
+- Properties on the `OpenNotification` event were incorrectly namespaced #TINY-7486
+
+## 5.8.0 - 2021-05-06
+
+### Added
+- Added the `PAGE_UP` and `PAGE_DOWN` key code constants to the `VK` API #TINY-4612
+- The editor resize handle can now be controlled using the keyboard #TINY-4823
+- Added a new `fixed_toolbar_container_target` setting which renders the toolbar in the specified `HTMLElement`. Patch contributed by pvrobays
+
+### Improved
+- The `inline_boundaries` feature now supports the `home`, `end`, `pageup`, and `pagedown` keys #TINY-4612
+- Updated the `formatter.matchFormat` API to support matching formats with variables in the `classes` property #TINY-7227
+- Added HTML5 `audio` and `video` elements to the default alignment formats #TINY-6633
+- Added support for alpha list numbering to the list properties dialog #TINY-6891
+
+### Changed
+- Updated the `image` dialog to display the class list dropdown as full-width if the caption checkbox is not present #TINY-6400
+- Renamed the "H Align" and "V Align" input labels in the Table Cell Properties dialog to "Horizontal align" and "Vertical align" respectively #TINY-7285
+
+### Deprecated
+- The undocumented `setIconStroke` Split Toolbar Button API has been deprecated and will be removed in a future release #TINY-3551
+
+### Fixed
+- Fixed a bug where it wasn't possible to align nested list items #TINY-6567
+- The RGB fields in the color picker dialog were not staying in sync with the color palette and hue slider #TINY-6952
+- The color preview box in the color picker dialog was not correctly displaying the saturation and value of the chosen color #TINY-6952
+- The color picker dialog will now show an alert if it is submitted with an invalid hex color code #TINY-2814
+- Fixed a bug where the `TableModified` event was not fired when adding a table row with the Tab key #TINY-7006
+- Added missing `images_file_types` setting to the exported TypeScript types #GH-6607
+- Fixed a bug where lists pasted from Word with Roman numeral markers were not displayed correctly. Patch contributed by aautio #GH-6620
+- The `editor.insertContent` API was incorrectly handling nested `span` elements with matching styles #TINY-6263
+- The HTML5 `small` element could not be removed when clearing text formatting #TINY-6633
+- The Oxide button text transform variable was incorrectly using `capitalize` instead of `none`. Patch contributed by dakur #GH-6341
+- Fix dialog button text that was using title-style capitalization #TINY-6816
+- Table plugin could perform operations on tables containing the inline editor #TINY-6625
+- Fixed Tab key navigation inside table cells with a ranged selection #TINY-6638
+- The foreground and background toolbar button color indicator is no longer blurry #TINY-3551
+- Fixed a regression in the `tinymce.create()` API that caused issues when multiple objects were created #TINY-7358
+- Fixed the `LineHeight` command causing the `change` event to be fired inconsistently #TINY-7048
+
+## 5.7.1 - 2021-03-17
+
+### Fixed
+- Fixed the `help` dialog incorrectly linking to the changelog of TinyMCE 4 instead of TinyMCE 5 #TINY-7031
+- Fixed a bug where error messages were displayed incorrectly in the image dialog #TINY-7099
+- Fixed an issue where URLs were not correctly filtered in some cases #TINY-7025
+- Fixed a bug where context menu items with names that contained uppercase characters were not displayed #TINY-7072
+- Fixed context menu items lacking support for the `disabled` and `shortcut` properties #TINY-7073
+- Fixed a regression where the width and height were incorrectly set when embedding content using the `media` dialog #TINY-7074
+
+## 5.7.0 - 2021-02-10
+
+### Added
+- Added IPv6 address support to the URI API. Patch contributed by dev7355608 #GH-4409
+- Added new `structure` and `style` properties to the `TableModified` event to indicate what kinds of modifications were made #TINY-6643
+- Added `video` and `audio` live embed support for the `media` plugin #TINY-6229
+- Added the ability to resize `video` and `iframe` media elements #TINY-6229
+- Added a new `font_css` setting for adding fonts to both the editor and the parent document #TINY-6199
+- Added a new `ImageUploader` API to simplify uploading image data to the configured `images_upload_url` or `images_upload_handler` #TINY-4601
+- Added an Oxide variable to define the container background color in fullscreen mode #TINY-6903
+- Added Oxide variables for setting the toolbar background colors for inline and sticky toolbars #TINY-6009
+- Added a new `AfterProgressState` event that is fired after `editor.setProgressState` calls complete #TINY-6686
+- Added support for `table_column_resizing` when inserting or deleting columns #TINY-6711
+
+### Changed
+- Changed table and table column copy behavior to retain an appropriate width when pasted #TINY-6664
+- Changed the `lists` plugin to apply list styles to all text blocks within a selection #TINY-3755
+- Changed the `advlist` plugin to log a console error message when the `list` plugin isn't enabled #TINY-6585
+- Changed the z-index of the `setProgressState(true)` throbber so it does not hide notifications #TINY-6686
+- Changed the type signature for `editor.selection.getRng()` incorrectly returning `null` #TINY-6843
+- Changed some `SaxParser` regular expressions to improve performance #TINY-6823
+- Changed `editor.setProgressState(true)` to close any open popups #TINY-6686
+
+### Fixed
+- Fixed `codesample` highlighting performance issues for some languages #TINY-6996
+- Fixed an issue where cell widths were lost when merging table cells #TINY-6901
+- Fixed `col` elements incorrectly transformed to `th` elements when converting columns to header columns #TINY-6715
+- Fixed a number of table operations not working when selecting 2 table cells on Mozilla Firefox #TINY-3897
+- Fixed a memory leak by backporting an upstream Sizzle fix #TINY-6859
+- Fixed table `width` style was removed when copying #TINY-6664
+- Fixed focus lost while typing in the `charmap` or `emoticons` dialogs when the editor is rendered in a shadow root #TINY-6904
+- Fixed corruption of base64 URLs used in style attributes when parsing HTML #TINY-6828
+- Fixed the order of CSS precedence of `content_style` and `content_css` in the `preview` and `template` plugins. `content_style` now has precedence #TINY-6529
+- Fixed an issue where the image dialog tried to calculate image dimensions for an empty image URL #TINY-6611
+- Fixed an issue where `scope` attributes on table cells would not change as expected when merging or unmerging cells #TINY-6486
+- Fixed the plugin documentation links in the `help` plugin #DOC-703
+- Fixed events bound using `DOMUtils` not returning the correct result for `isDefaultPrevented` in some cases #TINY-6834
+- Fixed the "Dropped file type is not supported" notification incorrectly showing when using an inline editor #TINY-6834
+- Fixed an issue with external styles bleeding into TinyMCE #TINY-6735
+- Fixed an issue where parsing malformed comments could cause an infinite loop #TINY-6864
+- Fixed incorrect return types on `editor.selection.moveToBookmark` #TINY-6504
+- Fixed the type signature for `editor.selection.setCursorLocation()` incorrectly allowing a node with no `offset` #TINY-6843
+- Fixed incorrect behavior when editor is destroyed while loading stylesheets #INT-2282
+- Fixed figure elements incorrectly splitting from a valid parent element when editing the image within #TINY-6592
+- Fixed inserting multiple rows or columns in a table cloning from the incorrect source row or column #TINY-6906
+- Fixed an issue where new lines were not scrolled into view when pressing Shift+Enter or Shift+Return #TINY-6964
+- Fixed an issue where list elements would not be removed when outdenting using the Enter or Return key #TINY-5974
+- Fixed an issue where file extensions with uppercase characters were treated as invalid #TINY-6940
+- Fixed dialog block messages were not passed through TinyMCE's translation system #TINY-6971
+
+## 5.6.2 - 2020-12-08
+
+### Fixed
+- Fixed a UI rendering regression when the document body is using `display: flex` #TINY-6783
+
+## 5.6.1 - 2020-11-25
+
+### Fixed
+- Fixed the `mceTableRowType` and `mceTableCellType` commands were not firing the `newCell` event #TINY-6692
+- Fixed the HTML5 `s` element was not recognized when editing or clearing text formatting #TINY-6681
+- Fixed an issue where copying and pasting table columns resulted in invalid HTML when using colgroups #TINY-6684
+- Fixed an issue where the toolbar would render with the wrong width for inline editors in some situations #TINY-6683
+
+## 5.6.0 - 2020-11-18
+
+### Added
+- Added new `BeforeOpenNotification` and `OpenNotification` events which allow internal notifications to be captured and modified before display #TINY-6528
+- Added support for `block` and `unblock` methods on inline dialogs #TINY-6487
+- Added new `TableModified` event which is fired whenever changes are made to a table #TINY-6629
+- Added new `images_file_types` setting to determine which image file formats will be automatically processed into `img` tags on paste when using the `paste` plugin #TINY-6306
+- Added support for `images_file_types` setting in the image file uploader to determine which image file extensions are valid for upload #TINY-6224
+- Added new `format_empty_lines` setting to control if empty lines are formatted in a ranged selection #TINY-6483
+- Added template support to the `autocompleter` for customizing the autocompleter items #TINY-6505
+- Added new user interface `enable`, `disable`, and `isDisabled` methods #TINY-6397
+- Added new `closest` formatter API to get the closest matching selection format from a set of formats #TINY-6479
+- Added new `emojiimages` emoticons database that uses the twemoji CDN by default #TINY-6021
+- Added new `emoticons_database` setting to configure which emoji database to use #TINY-6021
+- Added new `name` field to the `style_formats` setting object to enable specifying a name for the format #TINY-4239
+
+### Changed
+- Changed `readonly` mode to allow hyperlinks to be clickable #TINY-6248
+
+### Fixed
+- Fixed the `change` event not firing after a successful image upload #TINY-6586
+- Fixed the type signature for the `entity_encoding` setting not accepting delimited lists #TINY-6648
+- Fixed layout issues when empty `tr` elements were incorrectly removed from tables #TINY-4679
+- Fixed image file extensions lost when uploading an image with an alternative extension, such as `.jfif` #TINY-6622
+- Fixed a security issue where URLs in attributes weren't correctly sanitized #TINY-6518
+- Fixed `DOMUtils.getParents` incorrectly including the shadow root in the array of elements returned #TINY-6540
+- Fixed an issue where the root document could be scrolled while an editor dialog was open inside a shadow root #TINY-6363
+- Fixed `getContent` with text format returning a new line when the editor is empty #TINY-6281
+- Fixed table column and row resizers not respecting the `data-mce-resize` attribute #TINY-6600
+- Fixed inserting a table via the `mceInsertTable` command incorrectly creating 2 undo levels #TINY-6656
+- Fixed nested tables with `colgroup` elements incorrectly always resizing the inner table #TINY-6623
+- Fixed the `visualchars` plugin causing the editor to steal focus when initialized #TINY-6282
+- Fixed `fullpage` plugin altering text content in `editor.getContent()` #TINY-6541
+- Fixed `fullscreen` plugin not working correctly with multiple editors and shadow DOM #TINY-6280
+- Fixed font size keywords such as `medium` not displaying correctly in font size menus #TINY-6291
+- Fixed an issue where some attributes in table cells were not copied over to new rows or columns #TINY-6485
+- Fixed incorrectly removing formatting on adjacent spaces when removing formatting on a ranged selection #TINY-6268
+- Fixed the `Cut` menu item not working in the latest version of Mozilla Firefox #TINY-6615
+- Fixed some incorrect types in the new TypeScript declaration file #TINY-6413
+- Fixed a regression where a fake offscreen selection element was incorrectly created for the editor root node #TINY-6555
+- Fixed an issue where menus would incorrectly collapse in small containers #TINY-3321
+- Fixed an issue where only one table column at a time could be converted to a header #TINY-6326
+- Fixed some minor memory leaks that prevented garbage collection for editor instances #TINY-6570
+- Fixed resizing a `responsive` table not working when using the column resize handles #TINY-6601
+- Fixed incorrectly calculating table `col` widths when resizing responsive tables #TINY-6646
+- Fixed an issue where spaces were not preserved in pre-blocks when getting text content #TINY-6448
+- Fixed a regression that caused the selection to be difficult to see in tables with backgrounds #TINY-6495
+- Fixed content pasted multiple times in the editor when using Microsoft Internet Explorer 11. Patch contributed by mattford #GH-4905
+
+## 5.5.1 - 2020-10-01
+
+### Fixed
+- Fixed pressing the down key near the end of a document incorrectly raising an exception #TINY-6471
+- Fixed incorrect Typescript types for the `Tools` API #TINY-6475
+
+## 5.5.0 - 2020-09-29
+
+### Added
+- Added a TypeScript declaration file to the bundle output for TinyMCE core #TINY-3785
+- Added new `table_column_resizing` setting to control how table columns are resized when using the resize bars #TINY-6001
+- Added the ability to remove images on a failed upload using the `images_upload_handler` failure callback #TINY-6011
+- Added `hasPlugin` function to the editor API to determine if a plugin exists or not #TINY-766
+- Added new `ToggleToolbarDrawer` command and query state handler to allow the toolbar drawer to be programmatically toggled and the toggle state to be checked #TINY-6032
+- Added the ability to use `colgroup` elements in tables #TINY-6050
+- Added a new setting `table_use_colgroups` for toggling whether colgroups are used in new tables #TINY-6050
+- Added the ability to delete and navigate HTML media elements without the `media` plugin #TINY-4211
+- Added `fullscreen_native` setting to the `fullscreen` plugin to enable use of the entire monitor #TINY-6284
+- Added table related oxide variables to the Style API for more granular control over table cell selection appearance #TINY-6311
+- Added new `toolbar_persist` setting to control the visibility of the inline toolbar #TINY-4847
+- Added new APIs to allow for programmatic control of the inline toolbar visibility #TINY-4847
+- Added the `origin` property to the `ObjectResized` and `ObjectResizeStart` events, to specify which handle the resize was performed on #TINY-6242
+- Added new StyleSheetLoader `unload` and `unloadAll` APIs to allow loaded stylesheets to be removed #TINY-3926
+- Added the `LineHeight` query command and action to the editor #TINY-4843
+- Added the `lineheight` toolbar and menu items, and added `lineheight` to the default format menu #TINY-4843
+- Added a new `contextmenu_avoid_overlap` setting to allow context menus to avoid overlapping matched nodes #TINY-6036
+- Added new listbox dialog UI component for rendering a dropdown that allows nested options #TINY-2236
+- Added back the ability to use nested items in the `image_class_list`, `link_class_list`, `link_list`, `table_class_list`, `table_cell_class_list`, and `table_row_class_list` settings #TINY-2236
+
+### Changed
+- Changed how CSS manipulates table cells when selecting multiple cells to achieve a semi-transparent selection #TINY-6311
+- Changed the `target` property on fired events to use the native event target. The original target for an open shadow root can be obtained using `event.getComposedPath()` #TINY-6128
+- Changed the editor to clean-up loaded CSS stylesheets when all editors using the stylesheet have been removed #TINY-3926
+- Changed `imagetools` context menu icon for accessing the `image` dialog to use the `image` icon #TINY-4141
+- Changed the `editor.insertContent()` and `editor.selection.setContent()` APIs to retain leading and trailing whitespace #TINY-5966
+- Changed the `table` plugin `Column` menu to include the cut, copy and paste column menu items #TINY-6374
+- Changed the default table styles in the content CSS files to better support the styling options available in the `table` dialog #TINY-6179
+
+### Deprecated
+- Deprecated the `Env.experimentalShadowDom` flag #TINY-6128
+
+### Fixed
+- Fixed tables with no borders displaying with the default border styles in the `preview` dialog #TINY-6179
+- Fixed loss of whitespace when inserting content after a non-breaking space #TINY-5966
+- Fixed the `event.getComposedPath()` function throwing an exception for events fired from the editor #TINY-6128
+- Fixed notifications not appearing when the editor is within a ShadowRoot #TINY-6354
+- Fixed focus issues with inline dialogs when the editor is within a ShadowRoot #TINY-6360
+- Fixed the `template` plugin previews missing some content styles #TINY-6115
+- Fixed the `media` plugin not saving the alternative source url in some situations #TINY-4113
+- Fixed an issue where column resizing using the resize bars was inconsistent between fixed and relative table widths #TINY-6001
+- Fixed an issue where dragging and dropping within a table would select table cells #TINY-5950
+- Fixed up and down keyboard navigation not working for inline `contenteditable="false"` elements #TINY-6226
+- Fixed dialog not retrieving `close` icon from icon pack #TINY-6445
+- Fixed the `unlink` toolbar button not working when selecting multiple links #TINY-4867
+- Fixed the `link` dialog not showing the "Text to display" field in some valid cases #TINY-5205
+- Fixed the `DOMUtils.split()` API incorrectly removing some content #TINY-6294
+- Fixed pressing the escape key not focusing the editor when using multiple toolbars #TINY-6230
+- Fixed the `dirty` flag not being correctly set during an `AddUndo` event #TINY-4707
+- Fixed `editor.selection.setCursorLocation` incorrectly placing the cursor outside `pre` elements in some circumstances #TINY-4058
+- Fixed an exception being thrown when pressing the enter key inside pre elements while `br_in_pre` setting is false #TINY-4058
+
+## 5.4.2 - 2020-08-17
+
+### Fixed
+- Fixed the editor not resizing when resizing the browser window in fullscreen mode #TINY-3511
+- Fixed clicking on notifications causing inline editors to hide #TINY-6058
+- Fixed an issue where link URLs could not be deleted or edited in the link dialog in some cases #TINY-4706
+- Fixed a regression where setting the `anchor_top` or `anchor_bottom` options to `false` was not working #TINY-6256
+- Fixed the `anchor` plugin not supporting the `allow_html_in_named_anchor` option #TINY-6236
+- Fixed an exception thrown when removing inline formats that contained additional styles or classes #TINY-6288
+- Fixed an exception thrown when positioning the context toolbar on Internet Explorer 11 in some edge cases #TINY-6271
+- Fixed inline formats not removed when more than one `removeformat` format rule existed #TINY-6216
+- Fixed an issue where spaces were sometimes removed when removing formating on nearby text #TINY-6251
+- Fixed the list toolbar buttons not showing as active when a list is selected #TINY-6286
+- Fixed an issue where the UI would sometimes not be shown or hidden when calling the show or hide API methods on the editor #TINY-6048
+- Fixed the list type style not retained when copying list items #TINY-6289
+- Fixed the Paste plugin converting tabs in plain text to a single space character. A `paste_tab_spaces` option has been included for setting the number of spaces used to replace a tab character #TINY-6237
+
+## 5.4.1 - 2020-07-08
+
+### Fixed
+- Fixed the Search and Replace plugin incorrectly including zero-width caret characters in search results #TINY-4599
+- Fixed dragging and dropping unsupported files navigating the browser away from the editor #TINY-6027
+- Fixed undo levels not created on browser handled drop or paste events #TINY-6027
+- Fixed content in an iframe element parsing as DOM elements instead of text content #TINY-5943
+- Fixed Oxide checklist styles not showing when printing #TINY-5139
+- Fixed bug with `scope` attribute not being added to the cells of header rows #TINY-6206
+
+## 5.4.0 - 2020-06-30
+
+### Added
+- Added keyboard navigation support to menus and toolbars when the editor is in a ShadowRoot #TINY-6152
+- Added the ability for menus to be clicked when the editor is in an open shadow root #TINY-6091
+- Added the `Editor.ui.styleSheetLoader` API for loading stylesheets within the Document or ShadowRoot containing the editor UI #TINY-6089
+- Added the `StyleSheetLoader` module to the public API #TINY-6100
+- Added Oxide variables for styling the `select` element and headings in dialog content #TINY-6070
+- Added icons for `table` column and row cut, copy, and paste toolbar buttons #TINY-6062
+- Added all `table` menu items to the UI registry, so they can be used by name in other menus #TINY-4866
+- Added new `mceTableApplyCellStyle` command to the `table` plugin #TINY-6004
+- Added new `table` cut, copy, and paste column editor commands and menu items #TINY-6006
+- Added font related Oxide variables for secondary buttons, allowing for custom styling #TINY-6061
+- Added new `table_header_type` setting to control how table header rows are structured #TINY-6007
+- Added new `table_sizing_mode` setting to replace the `table_responsive_width` setting, which has now been deprecated #TINY-6051
+- Added new `mceTableSizingMode` command for changing the sizing mode of a table #TINY-6000
+- Added new `mceTableRowType`, `mceTableColType`, and `mceTableCellType` commands and value queries #TINY-6150
+
+### Changed
+- Changed `advlist` toolbar buttons to only show a dropdown list if there is more than one option #TINY-3194
+- Changed `mceInsertTable` command and `insertTable` API method to take optional header rows and columns arguments #TINY-6012
+- Changed stylesheet loading, so that UI skin stylesheets can load in a ShadowRoot if required #TINY-6089
+- Changed the DOM location of menus so that they display correctly when the editor is in a ShadowRoot #TINY-6093
+- Changed the table plugin to correctly detect all valid header row structures #TINY-6007
+
+### Fixed
+- Fixed tables with no defined width being converted to a `fixed` width table when modifying the table #TINY-6051
+- Fixed the `autosave` `isEmpty` API incorrectly detecting non-empty content as empty #TINY-5953
+- Fixed table `Paste row after` and `Paste row before` menu items not disabled when nothing was available to paste #TINY-6006
+- Fixed a selection performance issue with large tables on Microsoft Internet Explorer and Edge #TINY-6057
+- Fixed filters for screening commands from the undo stack to be case-insensitive #TINY-5946
+- Fixed `fullscreen` plugin now removes all classes when the editor is closed #TINY-4048
+- Fixed handling of mixed-case icon identifiers (names) for UI elements #TINY-3854
+- Fixed leading and trailing spaces lost when using `editor.selection.getContent({ format: 'text' })` #TINY-5986
+- Fixed an issue where changing the URL with the quicklink toolbar caused unexpected undo behavior #TINY-5952
+- Fixed an issue where removing formatting within a table cell would cause Internet Explorer 11 to scroll to the end of the table #TINY-6049
+- Fixed an issue where the `allow_html_data_urls` setting was not correctly applied #TINY-5951
+- Fixed the `autolink` feature so that it no longer treats a string with multiple "@" characters as an email address #TINY-4773
+- Fixed an issue where removing the editor would leave unexpected attributes on the target element #TINY-4001
+- Fixed the `link` plugin now suggest `mailto:` when the text contains an '@' and no slashes (`/`) #TINY-5941
+- Fixed the `valid_children` check of custom elements now allows a wider range of characters in names #TINY-5971
+
+## 5.3.2 - 2020-06-10
+
+### Fixed
+- Fixed a regression introduced in 5.3.0, where `images_dataimg_filter` was no-longer called #TINY-6086
+
+## 5.3.1 - 2020-05-27
+
+### Fixed
+- Fixed the image upload error alert also incorrectly closing the image dialog #TINY-6020
+- Fixed editor content scrolling incorrectly on focus in Firefox by reverting default content CSS html and body heights added in 5.3.0 #TINY-6019
+
+## 5.3.0 - 2020-05-21
+
+### Added
+- Added html and body height styles to the default oxide content CSS #TINY-5978
+- Added `uploadUri` and `blobInfo` to the data returned by `editor.uploadImages()` #TINY-4579
+- Added a new function to the `BlobCache` API to lookup a blob based on the base64 data and mime type #TINY-5988
+- Added the ability to search and replace within a selection #TINY-4549
+- Added the ability to set the list start position for ordered lists and added new `lists` context menu item #TINY-3915
+- Added `icon` as an optional config option to the toggle menu item API #TINY-3345
+- Added `auto` mode for `toolbar_location` which positions the toolbar and menu bar at the bottom if there is no space at the top #TINY-3161
+
+### Changed
+- Changed the default `toolbar_location` to `auto` #TINY-3161
+- Changed toggle menu items and choice menu items to have a dedicated icon with the checkmark displayed on the far right side of the menu item #TINY-3345
+- Changed the `link`, `image`, and `paste` plugins to use Promises to reduce the bundle size #TINY-4710
+- Changed the default icons to be lazy loaded during initialization #TINY-4729
+- Changed the parsing of content so base64 encoded urls are converted to blob urls #TINY-4727
+- Changed context toolbars so they concatenate when more than one is suitable for the current selection #TINY-4495
+- Changed inline style element formats (strong, b, em, i, u, strike) to convert to a span on format removal if a `style` or `class` attribute is present #TINY-4741
+
+### Fixed
+- Fixed the `selection.setContent()` API not running parser filters #TINY-4002
+- Fixed formats incorrectly applied or removed when table cells were selected #TINY-4709
+- Fixed the `quickimage` button not restricting the file types to images #TINY-4715
+- Fixed search and replace ignoring text in nested contenteditable elements #TINY-5967
+- Fixed resize handlers displaying in the wrong location sometimes for remote images #TINY-4732
+- Fixed table picker breaking in Firefox on low zoom levels #TINY-4728
+- Fixed issue with loading or pasting contents with large base64 encoded images on Safari #TINY-4715
+- Fixed supplementary special characters being truncated when inserted into the editor. Patch contributed by mlitwin. #TINY-4791
+- Fixed toolbar buttons not set to disabled when the editor is in readonly mode #TINY-4592
+- Fixed the editor selection incorrectly changing when removing caret format containers #TINY-3438
+- Fixed bug where title, width, and height would be set to empty string values when updating an image and removing those attributes using the image dialog #TINY-4786
+- Fixed `ObjectResized` event firing when an object wasn't resized #TINY-4161
+- Fixed `ObjectResized` and `ObjectResizeStart` events incorrectly fired when adding or removing table rows and columns #TINY-4829
+- Fixed the placeholder not hiding when pasting content into the editor #TINY-4828
+- Fixed an issue where the editor would fail to load if local storage was disabled #TINY-5935
+- Fixed an issue where an uploaded image would reuse a cached image with a different mime type #TINY-5988
+- Fixed bug where toolbars and dialogs would not show if the body element was replaced (e.g. with Turbolinks). Patch contributed by spohlenz #GH-5653
+- Fixed an issue where multiple formats would be removed when removing a single format at the end of lines or on empty lines #TINY-1170
+- Fixed zero-width spaces incorrectly included in the `wordcount` plugin character count #TINY-5991
+- Fixed a regression introduced in 5.2.0 whereby the desktop `toolbar_mode` setting would incorrectly override the mobile default setting #TINY-5998
+- Fixed an issue where deleting all content in a single cell table would delete the entire table #TINY-1044
+
+## 5.2.2 - 2020-04-23
+
+### Fixed
+- Fixed an issue where anchors could not be inserted on empty lines #TINY-2788
+- Fixed text decorations (underline, strikethrough) not consistently inheriting the text color #TINY-4757
+- Fixed `format` menu alignment buttons inconsistently applying to images #TINY-4057
+- Fixed the floating toolbar drawer height collapsing when the editor is rendered in modal dialogs or floating containers #TINY-4837
+- Fixed `media` embed content not processing safely in some cases #TINY-4857
+
+## 5.2.1 - 2020-03-25
+
+### Fixed
+- Fixed the "is decorative" checkbox in the image dialog clearing after certain dialog events #FOAM-11
+- Fixed possible uncaught exception when a `style` attribute is removed using a content filter on `setContent` #TINY-4742
+- Fixed the table selection not functioning correctly in Microsoft Edge 44 or higher #TINY-3862
+- Fixed the table resize handles not functioning correctly in Microsoft Edge 44 or higher #TINY-4160
+- Fixed the floating toolbar drawer disconnecting from the toolbar when adding content in inline mode #TINY-4725 #TINY-4765
+- Fixed `readonly` mode not returning the appropriate boolean value #TINY-3948
+- Fixed the `forced_root_block_attrs` setting not applying attributes to new blocks consistently #TINY-4564
+- Fixed the editor incorrectly stealing focus during initialization in Microsoft Internet Explorer #TINY-4697
+- Fixed dialogs stealing focus when opening an alert or confirm dialog using an `onAction` callback #TINY-4014
+- Fixed inline dialogs incorrectly closing when clicking on an opened alert or confirm dialog #TINY-4012
+- Fixed the context toolbar overlapping the menu bar and toolbar #TINY-4586
+- Fixed notification and inline dialog positioning issues when using `toolbar_location: 'bottom'` #TINY-4586
+- Fixed the `colorinput` popup appearing offscreen on mobile devices #TINY-4711
+- Fixed special characters not being found when searching by "whole words only" #TINY-4522
+- Fixed an issue where dragging images could cause them to be duplicated #TINY-4195
+- Fixed context toolbars activating without the editor having focus #TINY-4754
+- Fixed an issue where removing the background color of text did not always work #TINY-4770
+- Fixed an issue where new rows and columns in a table did not retain the style of the previous row or column #TINY-4788
+
+## 5.2.0 - 2020-02-13
+
+### Added
+- Added the ability to apply formats to spaces #TINY-4200
+- Added new `toolbar_location` setting to allow for positioning the menu and toolbar at the bottom of the editor #TINY-4210
+- Added new `toolbar_groups` setting to allow a custom floating toolbar group to be added to the toolbar when using `floating` toolbar mode #TINY-4229
+- Added new `link_default_protocol` setting to `link` and `autolink` plugin to allow a protocol to be used by default #TINY-3328
+- Added new `placeholder` setting to allow a placeholder to be shown when the editor is empty #TINY-3917
+- Added new `tinymce.dom.TextSeeker` API to allow searching text across different DOM nodes #TINY-4200
+- Added a drop shadow below the toolbar while in sticky mode and introduced Oxide variables to customize it when creating a custom skin #TINY-4343
+- Added `quickbars_image_toolbar` setting to allow for the image quickbar to be turned off #TINY-4398
+- Added iframe and img `loading` attribute to the default schema. Patch contributed by ataylor32. #GH-5112
+- Added new `getNodeFilters`/`getAttributeFilters` functions to the `editor.serializer` instance #TINY-4344
+- Added new `a11y_advanced_options` setting to allow additional accessibility options to be added #FOAM-11
+- Added new accessibility options and behaviours to the image dialog using `a11y_advanced_options` #FOAM-11
+- Added the ability to use the window `PrismJS` instance for the `codesample` plugin instead of the bundled version to allow for styling custom languages #TINY-4504
+- Added error message events that fire when a resource loading error occurs #TINY-4509
+
+### Changed
+- Changed the default schema to disallow `onchange` for select elements #TINY-4614
+- Changed default `toolbar_mode` value from false to `wrap`. The value false has been deprecated #TINY-4617
+- Changed `toolbar_drawer` setting to `toolbar_mode`. `toolbar_drawer` has been deprecated #TINY-4416
+- Changed iframe mode to set selection on content init if selection doesn't exist #TINY-4139
+- Changed table related icons to align them with the visual style of the other icons #TINY-4341
+- Changed and improved the visual appearance of the color input field #TINY-2917
+- Changed fake caret container to use `forced_root_block` when possible #TINY-4190
+- Changed the `requireLangPack` API to wait until the plugin has been loaded before loading the language pack #TINY-3716
+- Changed the formatter so `style_formats` are registered before the initial content is loaded into the editor #TINY-4238
+- Changed media plugin to use https protocol for media urls by default #TINY-4577
+- Changed the parser to treat CDATA nodes as bogus HTML comments to match the HTML parsing spec. A new `preserve_cdata` setting has been added to preserve CDATA nodes if required #TINY-4625
+
+### Fixed
+- Fixed incorrect parsing of malformed/bogus HTML comments #TINY-4625
+- Fixed `quickbars` selection toolbar appearing on non-editable elements #TINY-4359
+- Fixed bug with alignment toolbar buttons sometimes not changing state correctly #TINY-4139
+- Fixed the `codesample` toolbar button not toggling when selecting code samples other than HTML #TINY-4504
+- Fixed content incorrectly scrolling to the top or bottom when pressing enter if when the content was already in view #TINY-4162
+- Fixed `scrollIntoView` potentially hiding elements behind the toolbar #TINY-4162
+- Fixed editor not respecting the `resize_img_proportional` setting due to legacy code #TINY-4236
+- Fixed flickering floating toolbar drawer in inline mode #TINY-4210
+- Fixed an issue where the template plugin dialog would be indefinitely blocked on a failed template load #TINY-2766
+- Fixed the `mscontrolselect` event not being unbound on IE/Edge #TINY-4196
+- Fixed Confirm dialog footer buttons so only the "Yes" button is highlighted #TINY-4310
+- Fixed `file_picker_callback` functionality for Image, Link and Media plugins #TINY-4163
+- Fixed issue where floating toolbar drawer sometimes would break if the editor is resized while the drawer is open #TINY-4439
+- Fixed incorrect `external_plugins` loading error message #TINY-4503
+- Fixed resize handler was not hidden for ARIA purposes. Patch contributed by Parent5446. #GH-5195
+- Fixed an issue where content could be lost if a misspelled word was selected and spellchecking was disabled #TINY-3899
+- Fixed validation errors in the CSS where certain properties had the wrong default value #TINY-4491
+- Fixed an issue where forced root block attributes were not applied when removing a list #TINY-4272
+- Fixed an issue where the element path isn't being cleared when there are no parents #TINY-4412
+- Fixed an issue where width and height in svg icons containing `rect` elements were overridden by the CSS reset #TINY-4408
+- Fixed an issue where uploading images with `images_reuse_filename` enabled and that included a query parameter would generate an invalid URL #TINY-4638
+- Fixed the `closeButton` property not working when opening notifications #TINY-4674
+- Fixed keyboard flicker when opening a context menu on mobile #TINY-4540
+- Fixed issue where plus icon svg contained strokes #TINY-4681
+
+## 5.1.6 - 2020-01-28
+
+### Fixed
+- Fixed `readonly` mode not blocking all clicked links #TINY-4572
+- Fixed legacy font sizes being calculated inconsistently for the `FontSize` query command value #TINY-4555
+- Fixed changing a tables row from `Header` to `Body` incorrectly moving the row to the bottom of the table #TINY-4593
+- Fixed the context menu not showing in certain cases with hybrid devices #TINY-4569
+- Fixed the context menu opening in the wrong location when the target is the editor body #TINY-4568
+- Fixed the `image` plugin not respecting the `automatic_uploads` setting when uploading local images #TINY-4287
+- Fixed security issue related to parsing HTML comments and CDATA #TINY-4544
+
+## 5.1.5 - 2019-12-19
+
+### Fixed
+- Fixed the UI not working with hybrid devices that accept both touch and mouse events #TNY-4521
+- Fixed the `charmap` dialog initially focusing the first tab of the dialog instead of the search input field #TINY-4342
+- Fixed an exception being raised when inserting content if the caret was directly before or after a `contenteditable="false"` element #TINY-4528
+- Fixed a bug with pasting image URLs when paste as text is enabled #TINY-4523
+
+## 5.1.4 - 2019-12-11
+
+### Fixed
+- Fixed dialog contents disappearing when clicking a checkbox for right-to-left languages #TINY-4518
+- Fixed the `legacyoutput` plugin registering legacy formats after editor initialization, causing legacy content to be stripped on the initial load #TINY-4447
+- Fixed search and replace not cycling through results when searching using special characters #TINY-4506
+- Fixed the `visualchars` plugin converting HTML-like text to DOM elements in certain cases #TINY-4507
+- Fixed an issue with the `paste` plugin not sanitizing content in some cases #TINY-4510
+- Fixed HTML comments incorrectly being parsed in certain cases #TINY-4511
+
+## 5.1.3 - 2019-12-04
+
+### Fixed
+- Fixed sticky toolbar not undocking when fullscreen mode is activated #TINY-4390
+- Fixed the "Current Window" target not applying when updating links using the link dialog #TINY-4063
+- Fixed disabled menu items not highlighting when focused #TINY-4339
+- Fixed touch events passing through dialog collection items to the content underneath on Android devices #TINY-4431
+- Fixed keyboard navigation of the Help dialog's Keyboard Navigation tab #TINY-4391
+- Fixed search and replace dialog disappearing when finding offscreen matches on iOS devices #TINY-4350
+- Fixed performance issues where sticky toolbar was jumping while scrolling on slower browsers #TINY-4475
+
+## 5.1.2 - 2019-11-19
+
+### Fixed
+- Fixed desktop touch devices using `mobile` configuration overrides #TINY-4345
+- Fixed unable to disable the new scrolling toolbar feature #TINY-4345
+- Fixed touch events passing through any pop-up items to the content underneath on Android devices #TINY-4367
+- Fixed the table selector handles throwing JavaScript exceptions for non-table selections #TINY-4338
+- Fixed `cut` operations not removing selected content on Android devices when the `paste` plugin is enabled #TINY-4362
+- Fixed inline toolbar not constrained to the window width by default #TINY-4314
+- Fixed context toolbar split button chevrons pointing right when they should be pointing down #TINY-4257
+- Fixed unable to access the dialog footer in tabbed dialogs on small screens #TINY-4360
+- Fixed mobile table selectors were hard to select with touch by increasing the size #TINY-4366
+- Fixed mobile table selectors moving when moving outside the editor #TINY-4366
+- Fixed inline toolbars collapsing when using sliding toolbars #TINY-4389
+- Fixed block textpatterns not treating NBSPs as spaces #TINY-4378
+- Fixed backspace not merging blocks when the last element in the preceding block was a `contenteditable="false"` element #TINY-4235
+- Fixed toolbar buttons that only contain text labels overlapping on mobile devices #TINY-4395
+- Fixed quickbars quickimage picker not working on mobile #TINY-4377
+- Fixed fullscreen not resizing in an iOS WKWebView component #TINY-4413
+
+## 5.1.1 - 2019-10-28
+
+### Fixed
+- Fixed font formats containing spaces being wrapped in `"` entities instead of single quotes #TINY-4275
+- Fixed alert and confirm dialogs losing focus when clicked #TINY-4248
+- Fixed clicking outside a modal dialog focusing on the document body #TINY-4249
+- Fixed the context toolbar not hiding when scrolled out of view #TINY-4265
+
+## 5.1.0 - 2019-10-17
+
+### Added
+- Added touch selector handles for table selections on touch devices #TINY-4097
+- Added border width field to Table Cell dialog #TINY-4028
+- Added touch event listener to media plugin to make embeds playable #TINY-4093
+- Added oxide styling options to notifications and tweaked the default variables #TINY-4153
+- Added additional padding to split button chevrons on touch devices, to make them easier to interact with #TINY-4223
+- Added new platform detection functions to `Env` and deprecated older detection properties #TINY-4184
+- Added `inputMode` config field to specify inputmode attribute of `input` dialog components #TINY-4062
+- Added new `inputMode` property to relevant plugins/dialogs #TINY-4102
+- Added new `toolbar_sticky` setting to allow the iframe menubar/toolbar to stick to the top of the window when scrolling #TINY-3982
+
+### Changed
+- Changed default setting for `toolbar_drawer` to `floating` #TINY-3634
+- Changed mobile phones to use the `silver` theme by default #TINY-3634
+- Changed some editor settings to default to `false` on touch devices:
+  - `menubar`(phones only) #TINY-4077
+  - `table_grid` #TINY-4075
+  - `resize` #TINY-4157
+  - `object_resizing` #TINY-4157
+- Changed toolbars and context toolbars to sidescroll on mobile #TINY-3894 #TINY-4107
+- Changed context menus to render as horizontal menus on touch devices #TINY-4107
+- Changed the editor to use the `VisualViewport` API of the browser where possible #TINY-4078
+- Changed visualblocks toolbar button icon and renamed `paragraph` icon to `visualchars` #TINY-4074
+- Changed Oxide default for `@toolbar-button-chevron-color` to follow toolbar button icon color #TINY-4153
+- Changed the `urlinput` dialog component to use the `url` type attribute #TINY-4102
+
+### Fixed
+- Fixed Safari desktop visual viewport fires resize on fullscreen breaking the restore function #TINY-3976
+- Fixed scroll issues on mobile devices #TINY-3976
+- Fixed context toolbar unable to refresh position on iOS12 #TINY-4107
+- Fixed ctrl+left click not opening links on readonly mode and the preview dialog #TINY-4138
+- Fixed Slider UI component not firing `onChange` event on touch devices #TINY-4092
+- Fixed notifications overlapping instead of stacking #TINY-3478
+- Fixed inline dialogs positioning incorrectly when the page is scrolled #TINY-4018
+- Fixed inline dialogs and menus not repositioning when resizing #TINY-3227
+- Fixed inline toolbar incorrectly stretching to the full width when a width value was provided #TINY-4066
+- Fixed menu chevrons color to follow the menu text color #TINY-4153
+- Fixed table menu selection grid from staying black when using dark skins, now follows border color #TINY-4153
+- Fixed Oxide using the wrong text color variable for menubar button focused state #TINY-4146
+- Fixed the autoresize plugin not keeping the selection in view when resizing #TINY-4094
+- Fixed textpattern plugin throwing exceptions when using `forced_root_block: false` #TINY-4172
+- Fixed missing CSS fill styles for toolbar button icon active state #TINY-4147
+- Fixed an issue where the editor selection could end up inside a short ended element (such as `br`) #TINY-3999
+- Fixed browser selection being lost in inline mode when opening split dropdowns #TINY-4197
+- Fixed backspace throwing an exception when using `forced_root_block: false` #TINY-4099
+- Fixed floating toolbar drawer expanding outside the bounds of the editor #TINY-3941
+- Fixed the autocompleter not activating immediately after a `br` or `contenteditable=false` element #TINY-4194
+- Fixed an issue where the autocompleter would incorrectly close on IE 11 in certain edge cases #TINY-4205
+
+## 5.0.16 - 2019-09-24
+
+### Added
+- Added new `referrer_policy` setting to add the `referrerpolicy` attribute when loading scripts or stylesheets #TINY-3978
+- Added a slight background color to dialog tab links when focused to aid keyboard navigation #TINY-3877
+
+### Fixed
+- Fixed media poster value not updating on change #TINY-4013
+- Fixed openlink was not registered as a toolbar button #TINY-4024
+- Fixed failing to initialize if a script tag was used inside a SVG #TINY-4087
+- Fixed double top border showing on toolbar without menubar when toolbar_drawer is enabled #TINY-4118
+- Fixed unable to drag inline dialogs to the bottom of the screen when scrolled #TINY-4154
+- Fixed notifications appearing on top of the toolbar when scrolled in inline mode #TINY-4159
+- Fixed notifications displaying incorrectly on IE 11 #TINY-4169
+
+## 5.0.15 - 2019-09-02
+
+### Added
+- Added a dark `content_css` skin to go with the dark UI skin #TINY-3743
+
+### Changed
+- Changed the enabled state on toolbar buttons so they don't get the hover effect #TINY-3974
+
+### Fixed
+- Fixed missing CSS active state on toolbar buttons #TINY-3966
+- Fixed `onChange` callback not firing for the colorinput dialog component #TINY-3968
+- Fixed context toolbars not showing in fullscreen mode #TINY-4023
+
+## 5.0.14 - 2019-08-19
+
+### Added
+- Added an API to reload the autocompleter menu with additional fetch metadata #MENTIONS-17
+
+### Fixed
+- Fixed missing toolbar button border styling options #TINY-3965
+- Fixed image upload progress notification closing before the upload is complete #TINY-3963
+- Fixed inline dialogs not closing on escape when no dialog component is in focus #TINY-3936
+- Fixed plugins not being filtered when defaulting to mobile on phones #TINY-3537
+- Fixed toolbar more drawer showing the content behind it when transitioning between opened and closed states #TINY-3878
+- Fixed focus not returning to the dialog after pressing the "Replace all" button in the search and replace dialog #TINY-3961
+
+### Removed
+- Removed Oxide variable `@menubar-select-disabled-border-color` and replaced it with `@menubar-select-disabled-border` #TINY-3965
+
+## 5.0.13 - 2019-08-06
+
+### Changed
+- Changed modal dialogs to prevent dragging by default and added new `draggable_modal` setting to restore dragging #TINY-3873
+- Changed the nonbreaking plugin to insert nbsp characters wrapped in spans to aid in filtering. This can be disabled using the `nonbreaking_wrap` setting #TINY-3647
+- Changed backspace behaviour in lists to outdent nested list items when the cursor is at the start of the list item #TINY-3651
+
+### Fixed
+- Fixed sidebar growing beyond editor bounds in IE 11 #TINY-3937
+- Fixed issue with being unable to keyboard navigate disabled toolbar buttons #TINY-3350
+- Fixed issues with backspace and delete in nested contenteditable true and false elements #TINY-3868
+- Fixed issue with losing keyboard navigation in dialogs due to disabled buttons #TINY-3914
+- Fixed `MouseEvent.mozPressure is deprecated` warning in Firefox #TINY-3919
+- Fixed `default_link_target` not being respected when `target_list` is disabled #TINY-3757
+- Fixed mobile plugin filter to only apply to the mobile theme, rather than all mobile platforms #TINY-3405
+- Fixed focus switching to another editor during mode changes #TINY-3852
+- Fixed an exception being thrown when clicking on an uninitialized inline editor #TINY-3925
+- Fixed unable to keyboard navigate to dialog menu buttons #TINY-3933
+- Fixed dialogs being able to be dragged outside the window viewport #TINY-3787
+- Fixed inline dialogs appearing above modal dialogs #TINY-3932
+
+## 5.0.12 - 2019-07-18
+
+### Added
+- Added ability to utilize UI dialog panels inside other panels #TINY-3305
+- Added help dialog tab explaining keyboard navigation of the editor #TINY-3603
+
+### Changed
+- Changed the "Find and Replace" design to an inline dialog #TINY-3054
+
+### Fixed
+- Fixed issue where autolink spacebar event was not being fired on Edge #TINY-3891
+- Fixed table selection missing the background color #TINY-3892
+- Fixed removing shortcuts not working for function keys #TINY-3871
+- Fixed non-descriptive UI component type names #TINY-3349
+- Fixed UI registry components rendering as the wrong type when manually specifying a different type #TINY-3385
+- Fixed an issue where dialog checkbox, input, selectbox, textarea and urlinput components couldn't be disabled #TINY-3708
+- Fixed the context toolbar not using viable screen space in inline/distraction free mode #TINY-3717
+- Fixed the context toolbar overlapping the toolbar in various conditions #TINY-3205
+- Fixed IE11 edge case where items were being inserted into the wrong location #TINY-3884
+
+## 5.0.11 - 2019-07-04
+
+### Fixed
+- Fixed packaging errors caused by a rollup treeshaking bug (https://github.com/rollup/rollup/issues/2970) #TINY-3866
+- Fixed the customeditor component not able to get data from the dialog api #TINY-3866
+- Fixed collection component tooltips not being translated #TINY-3855
+
+## 5.0.10 - 2019-07-02
+
+### Added
+- Added support for all HTML color formats in `color_map` setting #TINY-3837
+
+### Changed
+- Changed backspace key handling to outdent content in appropriate circumstances #TINY-3685
+- Changed default palette for forecolor and backcolor to include some lighter colors suitable for highlights #TINY-2865
+- Changed the search and replace plugin to cycle through results #TINY-3800
+
+### Fixed
+- Fixed inconsistent types causing some properties to be unable to be used in dialog components #TINY-3778
+- Fixed an issue in the Oxide skin where dialog content like outlines and shadows were clipped because of overflow hidden #TINY-3566
+- Fixed the search and replace plugin not resetting state when changing the search query #TINY-3800
+- Fixed backspace in lists not creating an undo level #TINY-3814
+- Fixed the editor to cancel loading in quirks mode where the UI is not supported #TINY-3391
+- Fixed applying fonts not working when the name contained spaces and numbers #TINY-3801
+- Fixed so that initial content is retained when initializing on list items #TINY-3796
+- Fixed inefficient font name and font size current value lookup during rendering #TINY-3813
+- Fixed mobile font copied into the wrong folder for the oxide-dark skin #TINY-3816
+- Fixed an issue where resizing the width of tables would produce inaccurate results #TINY-3827
+- Fixed a memory leak in the Silver theme #TINY-3797
+- Fixed alert and confirm dialogs using incorrect markup causing inconsistent padding #TINY-3835
+- Fixed an issue in the Table plugin with `table_responsive_width` not enforcing units when resizing #TINY-3790
+- Fixed leading, trailing and sequential spaces being lost when pasting plain text #TINY-3726
+- Fixed exception being thrown when creating relative URIs #TINY-3851
+- Fixed focus is no longer set to the editor content during mode changes unless the editor already had focus #TINY-3852
+
+## 5.0.9 - 2019-06-26
+
+### Fixed
+- Fixed print plugin not working in Firefox #TINY-3834
+
+## 5.0.8 - 2019-06-18
+
+### Added
+- Added back support for multiple toolbars #TINY-2195
+- Added support for .m4a files to the media plugin #TINY-3750
+- Added new base_url and suffix editor init options #TINY-3681
+
+### Fixed
+- Fixed incorrect padding for select boxes with visible values #TINY-3780
+- Fixed selection incorrectly changing when programmatically setting selection on contenteditable false elements #TINY-3766
+- Fixed sidebar background being transparent #TINY-3727
+- Fixed the build to remove duplicate iife wrappers #TINY-3689
+- Fixed bogus autocompleter span appearing in content when the autocompleter menu is shown #TINY-3752
+- Fixed toolbar font size select not working with legacyoutput plugin #TINY-2921
+- Fixed the legacyoutput plugin incorrectly aligning images #TINY-3660
+- Fixed remove color not working when using the legacyoutput plugin #TINY-3756
+- Fixed the font size menu applying incorrect sizes when using the legacyoutput plugin #TINY-3773
+- Fixed scrollIntoView not working when the parent window was out of view #TINY-3663
+- Fixed the print plugin printing from the wrong window in IE11 #TINY-3762
+- Fixed content CSS loaded over CORS not loading in the preview plugin with content_css_cors enabled #TINY-3769
+- Fixed the link plugin missing the default "None" option for link list #TINY-3738
+- Fixed small dot visible with menubar and toolbar disabled in inline mode #TINY-3623
+- Fixed space key properly inserts a nbsp before/after block elements #TINY-3745
+- Fixed native context menu not showing with images in IE11 #TINY-3392
+- Fixed inconsistent browser context menu image selection #TINY-3789
+
+## 5.0.7 - 2019-06-05
+
+### Added
+- Added new toolbar button and menu item for inserting tables via dialog #TINY-3636
+- Added new API for adding/removing/changing tabs in the Help dialog #TINY-3535
+- Added highlighting of matched text in autocompleter items #TINY-3687
+- Added the ability for autocompleters to work with matches that include spaces #TINY-3704
+- Added new `imagetools_fetch_image` callback to allow custom implementations for cors loading of images #TINY-3658
+- Added `'http'` and `https` options to `link_assume_external_targets` to prepend `http://` or `https://` prefixes when URL does not contain a protocol prefix. Patch contributed by francoisfreitag. #GH-4335
+
+### Changed
+- Changed annotations navigation to work the same as inline boundaries #TINY-3396
+- Changed tabpanel API by adding a `name` field and changing relevant methods to use it #TINY-3535
+
+### Fixed
+- Fixed text color not updating all color buttons when choosing a color #TINY-3602
+- Fixed the autocompleter not working with fragmented text #TINY-3459
+- Fixed the autosave plugin no longer overwrites window.onbeforeunload #TINY-3688
+- Fixed infinite loop in the paste plugin when IE11 takes a long time to process paste events. Patch contributed by lRawd. #GH-4987
+- Fixed image handle locations when using `fixed_toolbar_container`. Patch contributed by t00. #GH-4966
+- Fixed the autoresize plugin not firing `ResizeEditor` events #TINY-3587
+- Fixed editor in fullscreen mode not extending to the bottom of the screen #TINY-3701
+- Fixed list removal when pressing backspace after the start of the list item #TINY-3697
+- Fixed autocomplete not triggering from compositionend events #TINY-3711
+- Fixed `file_picker_callback` could not set the caption field on the insert image dialog #TINY-3172
+- Fixed the autocompleter menu showing up after a selection had been made #TINY-3718
+- Fixed an exception being thrown when a file or number input has focus during initialization. Patch contributed by t00 #GH-2194
+
+## 5.0.6 - 2019-05-22
+
+### Added
+- Added `icons_url` editor settings to enable icon packs to be loaded from a custom url #TINY-3585
+- Added `image_uploadtab` editor setting to control the visibility of the upload tab in the image dialog #TINY-3606
+- Added new api endpoints to the wordcount plugin and improved character count logic #TINY-3578
+
+### Changed
+- Changed plugin, language and icon loading errors to log in the console instead of a notification #TINY-3585
+
+### Fixed
+- Fixed the textpattern plugin not working with fragmented text #TINY-3089
+- Fixed various toolbar drawer accessibility issues and added an animation #TINY-3554
+- Fixed issues with selection and ui components when toggling readonly mode #TINY-3592
+- Fixed so readonly mode works with inline editors #TINY-3592
+- Fixed docked inline toolbar positioning when scrolled #TINY-3621
+- Fixed initial value not being set on bespoke select in quickbars and toolbar drawer #TINY-3591
+- Fixed so that nbsp entities aren't trimmed in white-space: pre-line elements #TINY-3642
+- Fixed `mceInsertLink` command inserting spaces instead of url encoded characters #GH-4990
+- Fixed text content floating on top of dialogs in IE11 #TINY-3640
+
+## 5.0.5 - 2019-05-09
+
+### Added
+- Added menu items to match the forecolor/backcolor toolbar buttons #TINY-2878
+- Added default directionality based on the configured language #TINY-2621
+- Added styles, icons and tests for rtl mode #TINY-2621
+
+### Fixed
+- Fixed autoresize not working with floating elements or when media elements finished loading #TINY-3545
+- Fixed incorrect vertical caret positioning in IE 11 #TINY-3188
+- Fixed submenu anchoring hiding overflowed content #TINY-3564
+
+### Removed
+- Removed unused and hidden validation icons to avoid displaying phantom tooltips #TINY-2329
+
+## 5.0.4 - 2019-04-23
+
+### Added
+- Added back URL dialog functionality, which is now available via `editor.windowManager.openUrl()` #TINY-3382
+- Added the missing throbber functionality when calling `editor.setProgressState(true)` #TINY-3453
+- Added function to reset the editor content and undo/dirty state via `editor.resetContent()` #TINY-3435
+- Added the ability to set menu buttons as active #TINY-3274
+- Added `editor.mode` API, featuring a custom editor mode API #TINY-3406
+- Added better styling to floating toolbar drawer #TINY-3479
+- Added the new premium plugins to the Help dialog plugins tab #TINY-3496
+- Added the linkchecker context menu items to the default configuration #TINY-3543
+
+### Fixed
+- Fixed image context menu items showing on placeholder images #TINY-3280
+- Fixed dialog labels and text color contrast within notifications/alert banners to satisfy WCAG 4.5:1 contrast ratio for accessibility #TINY-3351
+- Fixed selectbox and colorpicker items not being translated #TINY-3546
+- Fixed toolbar drawer sliding mode to correctly focus the editor when tabbing via keyboard navigation #TINY-3533
+- Fixed positioning of the styleselect menu in iOS while using the mobile theme #TINY-3505
+- Fixed the menubutton `onSetup` callback to be correctly executed when rendering the menu buttons #TINY-3547
+- Fixed `default_link_target` setting to be correctly utilized when creating a link #TINY-3508
+- Fixed colorpicker floating marginally outside its container #TINY-3026
+- Fixed disabled menu items displaying as active when hovered #TINY-3027
+
+### Removed
+- Removed redundant mobile wrapper #TINY-3480
+
+## 5.0.3 - 2019-03-19
+
+### Changed
+- Changed empty nested-menu items within the style formats menu to be disabled or hidden if the value of `style_formats_autohide` is `true` #TINY-3310
+- Changed the entire phrase 'Powered by Tiny' in the status bar to be a link instead of just the word 'Tiny' #TINY-3366
+- Changed `formatselect`, `styleselect` and `align` menus to use the `mceToggleFormat` command internally #TINY-3428
+
+### Fixed
+- Fixed toolbar keyboard navigation to work as expected when `toolbar_drawer` is configured #TINY-3432
+- Fixed text direction buttons to display the correct pressed state in selections that have no explicit `dir` property #TINY-3138
+- Fixed the mobile editor to clean up properly when removed #TINY-3445
+- Fixed quickbar toolbars to add an empty box to the screen when it is set to `false` #TINY-3439
+- Fixed an issue where pressing the **Delete/Backspace** key at the edge of tables was creating incorrect selections #TINY-3371
+- Fixed an issue where dialog collection items (emoticon and special character dialogs) couldn't be selected with touch devices #TINY-3444
+- Fixed a type error introduced in TinyMCE version 5.0.2 when calling `editor.getContent()` with nested bookmarks #TINY-3400
+- Fixed an issue that prevented default icons from being overridden #TINY-3449
+- Fixed an issue where **Home/End** keys wouldn't move the caret correctly before or after `contenteditable=false` inline elements #TINY-2995
+- Fixed styles to be preserved in IE 11 when editing via the `fullpage` plugin #TINY-3464
+- Fixed the `link` plugin context toolbar missing the open link button #TINY-3461
+- Fixed inconsistent dialog component spacing #TINY-3436
+
+## 5.0.2 - 2019-03-05
+
+### Added
+- Added presentation and document presets to `htmlpanel` dialog component #TINY-2694
+- Added missing fixed_toolbar_container setting has been reimplemented in the Silver theme #TINY-2712
+- Added a new toolbar setting `toolbar_drawer` that moves toolbar groups which overflow the editor width into either a `sliding` or `floating` toolbar section #TINY-2874
+
+### Changed
+- Updated the build process to include package lock files in the dev distribution archive #TINY-2870
+
+### Fixed
+- Fixed inline dialogs did not have aria attributes #TINY-2694
+- Fixed default icons are now available in the UI registry, allowing use outside of toolbar buttons #TINY-3307
+- Fixed a memory leak related to select toolbar items #TINY-2874
+- Fixed a memory leak due to format changed listeners that were never unbound #TINY-3191
+- Fixed an issue where content may have been lost when using permanent bookmarks #TINY-3400
+- Fixed the quicklink toolbar button not rendering in the quickbars plugin #TINY-3125
+- Fixed an issue where menus were generating invalid HTML in some cases #TINY-3323
+- Fixed an issue that could cause the mobile theme to show a blank white screen when the editor was inside an `overflow:hidden` element #TINY-3407
+- Fixed mobile theme using a transparent background and not taking up the full width on iOS #TINY-3414
+- Fixed the template plugin dialog missing the description field #TINY-3337
+- Fixed input dialog components using an invalid default type attribute #TINY-3424
+- Fixed an issue where backspace/delete keys after/before pagebreak elements wouldn't move the caret #TINY-3097
+- Fixed an issue in the table plugin where menu items and toolbar buttons weren't showing correctly based on the selection #TINY-3423
+- Fixed inconsistent button focus styles in Firefox #TINY-3377
+- Fixed the resize icon floating left when all status bar elements were disabled #TINY-3340
+- Fixed the resize handle to not show in fullscreen mode #TINY-3404
+
+## 5.0.1 - 2019-02-21
+
+### Added
+- Added H1-H6 toggle button registration to the silver theme #TINY-3070
+- Added code sample toolbar button will now toggle on when the cursor is in a code section #TINY-3040
+- Added new settings to the emoticons plugin to allow additional emoticons to be added #TINY-3088
+
+### Fixed
+- Fixed an issue where adding links to images would replace the image with text #TINY-3356
+- Fixed an issue where the inline editor could use fractional pixels for positioning #TINY-3202
+- Fixed an issue where uploading non-image files in the Image Plugin upload tab threw an error. #TINY-3244
+- Fixed an issue in the media plugin that was causing the source url and height/width to be lost in certain circumstances #TINY-2858
+- Fixed an issue with the Context Toolbar not being removed when clicking outside of the editor #TINY-2804
+- Fixed an issue where clicking 'Remove link' wouldn't remove the link in certain circumstances #TINY-3199
+- Fixed an issue where the media plugin would fail when parsing dialog data #TINY-3218
+- Fixed an issue where retrieving the selected content as text didn't create newlines #TINY-3197
+- Fixed incorrect keyboard shortcuts in the Help dialog for Windows #TINY-3292
+- Fixed an issue where JSON serialization could produce invalid JSON #TINY-3281
+- Fixed production CSS including references to source maps #TINY-3920
+- Fixed development CSS was not included in the development zip #TINY-3920
+- Fixed the autocompleter matches predicate not matching on the start of words by default #TINY-3306
+- Fixed an issue where the page could be scrolled with modal dialogs open #TINY-2252
+- Fixed an issue where autocomplete menus would show an icon margin when no items had icons #TINY-3329
+- Fixed an issue in the quickbars plugin where images incorrectly showed the text selection toolbar #TINY-3338
+- Fixed an issue that caused the inline editor to fail to render when the target element already had focus #TINY-3353
+
+### Removed
+- Removed paste as text notification banner and paste_plaintext_inform setting #POW-102
+
+## 5.0.0 - 2019-02-04
+
+Full documentation for the version 5 features and changes is available at https://www.tiny.cloud/docs/release-notes/
+
+### Added
+- Added links and registered names with * to denote premium plugins in Plugins tab of Help dialog #TINY-3223
+
+### Changed
+- Changed Tiny 5 mobile skin to look more uniform with desktop #TINY-2650
+- Blacklisted table, th and td as inline editor target #TINY-717
+
+### Fixed
+- Fixed an issue where tab panel heights weren't sizing properly on smaller screens and weren't updating on resize #TINY-3242
+- Fixed image tools not having any padding between the label and slider #TINY-3220
+- Fixed context toolbar toggle buttons not showing the correct state #TINY-3022
+- Fixed missing separators in the spellchecker context menu between the suggestions and actions #TINY-3217
+- Fixed notification icon positioning in alert banners #TINY-2196
+- Fixed a typo in the word count plugin name #TINY-3062
+- Fixed charmap and emoticons dialogs not having a primary button #TINY-3233
+- Fixed an issue where resizing wouldn't work correctly depending on the box-sizing model #TINY-3278
+
+## 5.0.0-rc-2 - 2019-01-22
+
+### Added
+- Added screen reader accessibility for sidebar and statusbar #TINY-2699
+
+### Changed
+- Changed formatting menus so they are registered and made the align toolbar button use an icon instead of text #TINY-2880
+- Changed checkboxes to use a boolean for its state, instead of a string #TINY-2848
+- Updated the textpattern plugin to properly support nested patterns and to allow running a command with a value for a pattern with a start and an end #TINY-2991
+- Updated Emoticons and Charmap dialogs to be screen reader accessible #TINY-2693
+
+### Fixed
+- Fixed the link dialog such that it will now retain class attributes when updating links #TINY-2825
+- Fixed "Find and replace" not showing in the "Edit" menu by default #TINY-3061
+- Fixed dropdown buttons missing the 'type' attribute, which could cause forms to be incorrectly submitted #TINY-2826
+- Fixed emoticon and charmap search not returning expected results in certain cases #TINY-3084
+- Fixed blank rel_list values throwing an exception in the link plugin #TINY-3149
+
+### Removed
+- Removed unnecessary 'flex' and unused 'colspan' properties from the new dialog APIs #TINY-2973
+
+## 5.0.0-rc-1 - 2019-01-08
+
+### Added
+- Added editor settings functionality to specify title attributes for toolbar groups #TINY-2690
+- Added icons instead of button text to improve Search and Replace dialog footer appearance #TINY-2654
+- Added `tox-dialog__table` instead of `mce-table-striped` class to enhance Help dialog appearance #TINY-2360
+- Added title attribute to iframes so, screen readers can announce iframe labels #TINY-2692
+- Added a wordcount menu item, that defaults to appearing in the tools menu #TINY-2877
+
+### Changed
+- Updated the font select dropdown logic to try to detect the system font stack and show "System Font" as the font name #TINY-2710
+- Updated the autocompleter to only show when it has matched items #TINY-2350
+- Updated SizeInput labels to "Height" and "Width" instead of Dimensions #TINY-2833
+- Updated the build process to minify and generate ASCII only output for the emoticons database #TINY-2744
+
+### Fixed
+- Fixed readonly mode not fully disabling editing content #TINY-2287
+- Fixed accessibility issues with the font select, font size, style select and format select toolbar dropdowns #TINY-2713
+- Fixed accessibility issues with split dropdowns #TINY-2697
+- Fixed the legacyoutput plugin to be compatible with TinyMCE 5.0 #TINY-2301
+- Fixed icons not showing correctly in the autocompleter popup #TINY-3029
+- Fixed an issue where preview wouldn't show anything in Edge under certain circumstances #TINY-3035
+- Fixed the height being incorrectly calculated for the autoresize plugin #TINY-2807
+
+## 5.0.0-beta-1 - 2018-11-30
+
+### Added
+- Added a new `addNestedMenuItem()` UI registry function and changed all nested menu items to use the new registry functions #TINY-2230
+- Added title attribute to color swatch colors #TINY-2669
+- Added anchorbar component to anchor inline toolbar dialogs to instead of the toolbar #TINY-2040
+- Added support for toolbar<n> and toolbar array config options to be squashed into a single toolbar and not create multiple toolbars #TINY-2195
+- Added error handling for when forced_root_block config option is set to true #TINY-2261
+- Added functionality for the removed_menuitems config option #TINY-2184
+- Added the ability to use a string to reference menu items in menu buttons and submenu items #TINY-2253
+
+### Changed
+- Changed the name of the "inlite" plugin to "quickbars" #TINY-2831
+- Changed the background color icon to highlight background icon #TINY-2258
+- Changed Help dialog to be accessible to screen readers #TINY-2687
+- Changed the color swatch to save selected custom colors to local storage for use across sessions #TINY-2722
+- Changed `WindowManager` API - methods `getParams`, `setParams` and `getWindows`, and the legacy `windows` property, have been removed. `alert` and `confirm` dialogs are no longer tracked in the window list. #TINY-2603
+
+### Fixed
+- Fixed an inline mode issue where the save plugin upon saving can cause content loss #TINY-2659
+- Fixed an issue in IE 11 where calling selection.getContent() would return an empty string when the editor didn't have focus #TINY-2325
+
+### Removed
+- Removed compat3x plugin #TINY-2815
+
+## 5.0.0-preview-4 - 2018-11-12
+
+### Added
+- Added width and height placeholder text to image and media dialog dimensions input #AP-296
+- Added the ability to keyboard navigate through menus, toolbars, sidebar and the status bar sequentially #AP-381
+- Added translation capability back to the editor's UI #AP-282
+- Added `label` component type for dialogs to group components under a label
+
+### Changed
+- Changed the editor resize handle so that it should be disabled when the autoresize plugin is turned on #AP-424
+- Changed UI text for microcopy improvements #TINY-2281
+
+### Fixed
+- Fixed distraction free plugin #AP-470
+- Fixed contents of the input field being selected on focus instead of just recieving an outline highlight #AP-464
+- Fixed styling issues with dialogs and menus in IE 11 #AP-456
+- Fixed custom style format control not honoring custom formats #AP-393
+- Fixed context menu not appearing when clicking an image with a caption #AP-382
+- Fixed directionality of UI when using an RTL language #AP-423
+- Fixed page responsiveness with multiple inline editors #AP-430
+- Fixed empty toolbar groups appearing through invalid configuration of the `toolbar` property #AP-450
+- Fixed text not being retained when updating links through the link dialog #AP-293
+- Fixed edit image context menu, context toolbar and toolbar items being incorrectly enabled when selecting invalid images #AP-323
+- Fixed emoji type ahead being shown when typing URLs #AP-366
+- Fixed toolbar configuration properties incorrectly expecting string arrays instead of strings #AP-342
+- Fixed the block formatting toolbar item not showing a "Formatting" title when there is no selection #AP-321
+- Fixed clicking disabled toolbar buttons hiding the toolbar in inline mode #AP-380
+- Fixed `EditorResize` event not being fired upon editor resize #AP-327
+- Fixed tables losing styles when updating through the dialog #AP-368
+- Fixed context toolbar positioning to be more consistent near the edges of the editor #AP-318
+- Fixed table of contents plugin now works with v5 toolbar APIs correctly #AP-347
+- Fixed the `link_context_toolbar` configuration not disabling the context toolbar #AP-458
+- Fixed the link context toolbar showing incorrect relative links #AP-435
+- Fixed the alignment of the icon in alert banner dialog components #TINY-2220
+- Fixed the visual blocks and visual char menu options not displaying their toggled state #TINY-2238
+- Fixed the editor not displaying as fullscreen when toggled #TINY-2237
+
+### Removed
+- Removed the tox-custom-editor class that was added to the wrapping element of codemirror #TINY-2211
+
+## 5.0.0-preview-3 - 2018-10-18
+
+### Changed
+- Changed editor layout to use modern CSS properties over manually calculating dimensions #AP-324
+- Changed `autoresize_min_height` and `autoresize_max_height` configurations to `min_height` and `max_height` #AP-324
+- Changed `Whole word` label in Search and Replace dialog to `Find whole words only` #AP-387
+
+### Fixed
+- Fixed bugs with editor width jumping when resizing and the iframe not resizing to smaller than 150px in height #AP-324
+- Fixed mobile theme bug that prevented the editor from loading #AP-404
+- Fixed long toolbar groups extending outside of the editor instead of wrapping
+- Fixed dialog titles so they are now proper case #AP-384
+- Fixed color picker default to be #000000 instead of #ff00ff #AP-216
+- Fixed "match case" option on the Find and Replace dialog is no longer selected by default #AP-298
+- Fixed vertical alignment of toolbar icons #DES-134
+- Fixed toolbar icons not appearing on IE11 #DES-133
+
+## 5.0.0-preview-2 - 2018-10-10
+
+### Added
+- Added swatch is now shown for colorinput fields, instead of the colorpicker directly #AP-328
+- Added fontformats and fontsizes menu items #AP-390
+
+### Changed
+- Changed configuration of color options has been simplified to `color_map`, `color_cols`, and `custom_colors` #AP-328
+- Changed `height` configuration to apply to the editor frame (including menubar, toolbar, status bar) instead of the content area #AP-324
+
+### Fixed
+- Fixed styleselect not updating the displayed item as the cursor moved #AP-388
+- Fixed preview iframe not expanding to the dialog size #AP-252
+- Fixed 'meta' shortcuts not translated into platform-specific text #AP-270
+- Fixed tabbed dialogs (Charmap and Emoticons) shrinking when no search results returned
+- Fixed a bug where alert banner icons were not retrieved from icon pack. #AP-330
+- Fixed component styles to flex so they fill large dialogs. #AP-252
+- Fixed editor flashing unstyled during load (still in progress). #AP-349
+
+### Removed
+- Removed `colorpicker` plugin, it is now in the theme #AP-328
+- Removed `textcolor` plugin, it is now in the theme #AP-328
+
+## 5.0.0-preview-1 - 2018-10-01
+
+Developer preview 1
+
+Initial list of features and changes is available at https://tiny.cloud/docs-preview/release-notes/new-features/
+
+## 4.9.11 - 2020-07-13
+
+### Fixed
+- Fixed the `selection.setContent()` API not running parser filters #TINY-4002
+- Fixed content in an iframe element parsing as DOM elements instead of text content #TINY-5943
+- Fixed up and down keyboard navigation not working for inline `contenteditable="false"` elements #TINY-6226
+
+## 4.9.10 - 2020-04-23
+
+### Fixed
+- Fixed an issue where the editor selection could end up inside a short ended element (eg br) #TINY-3999
+- Fixed a security issue related to CDATA sanitization during parsing #TINY-4669
+- Fixed `media` embed content not processing safely in some cases #TINY-4857
+
+## 4.9.9 - 2020-03-25
+
+### Fixed
+- Fixed the table selection not functioning correctly in Microsoft Edge 44 or higher #TINY-3862
+- Fixed the table resize handles not functioning correctly in Microsoft Edge 44 or higher #TINY-4160
+- Fixed the `forced_root_block_attrs` setting not applying attributes to new blocks consistently #TINY-4564
+- Fixed the editor failing to initialize if a script tag was used inside an SVG #TINY-4087
+
+## 4.9.8 - 2020-01-28
+
+### Fixed
+- Fixed the `mobile` theme failing to load due to a bundling issue #TINY-4613
+- Fixed security issue related to parsing HTML comments and CDATA #TINY-4544
+
+## 4.9.7 - 2019-12-19
+
+### Fixed
+- Fixed the `visualchars` plugin converting HTML-like text to DOM elements in certain cases #TINY-4507
+- Fixed an issue with the `paste` plugin not sanitizing content in some cases #TINY-4510
+- Fixed HTML comments incorrectly being parsed in certain cases #TINY-4511
+
+## 4.9.6 - 2019-09-02
+
+### Fixed
+- Fixed image browse button sometimes displaying the browse window twice #TINY-3959
+
+## 4.9.5 - 2019-07-02
+
+### Changed
+- Changed annotations navigation to work the same as inline boundaries #TINY-3396
+
+### Fixed
+- Fixed the print plugin printing from the wrong window in IE11 #TINY-3762
+- Fixed an exception being thrown when a file or number input has focus during initialization. Patch contributed by t00 #GH-2194
+- Fixed positioning of the styleselect menu in iOS while using the mobile theme #TINY-3505
+- Fixed native context menu not showing with images in IE11 #TINY-3392
+- Fixed selection incorrectly changing when programmatically setting selection on contenteditable false elements #TINY-3766
+- Fixed image browse button not working on touch devices #TINY-3751
+- Fixed so that nbsp entities aren't trimmed in white-space: pre-line elements #TINY-3642
+- Fixed space key properly inserts a nbsp before/after block elements #TINY-3745
+- Fixed infinite loop in the paste plugin when IE11 takes a long time to process paste events. Patch contributed by lRawd. #GH-4987
+
+## 4.9.4 - 2019-03-20
+
+### Fixed
+- Fixed an issue where **Home/End** keys wouldn't move the caret correctly before or after `contenteditable=false` inline elements #TINY-2995
+- Fixed an issue where content may have been lost when using permanent bookmarks #TINY-3400
+- Fixed the mobile editor to clean up properly when removed #TINY-3445
+- Fixed an issue where retrieving the selected content as text didn't create newlines #TINY-3197
+- Fixed an issue where typing space between images would cause issues with nbsp not being inserted. #TINY-3346
+
+## 4.9.3 - 2019-01-31
+
+### Added
+- Added a visualchars_default_state setting to the Visualchars Plugin. Patch contributed by mat3e.
+
+### Fixed
+- Fixed a bug where scrolling on a page with more than one editor would cause a ResizeWindow event to fire. #TINY-3247
+- Fixed a bug where if a plugin threw an error during initialisation the whole editor would fail to load. #TINY-3243
+- Fixed a bug where getContent would include bogus elements when valid_elements setting was set up in a specific way. #TINY-3213
+- Fixed a bug where only a few function key names could be used when creating keyboard shortcuts. #TINY-3146
+- Fixed a bug where it wasn't possible to enter spaces into an editor after pressing shift+enter. #TINY-3099
+- Fixed a bug where no caret would be rendered after backspacing to a contenteditable false element. #TINY-2998
+- Fixed a bug where deletion to/from indented lists would leave list fragments in the editor. #TINY-2981
+
+## 4.9.2 - 2018-12-17
+
+### Fixed
+- Fixed a bug with pressing the space key on IE 11 would result in nbsp characters being inserted between words at the end of a block. #TINY-2996
+- Fixed a bug where character composition using quote and space on US International keyboards would produce a space instead of a quote. #TINY-2999
+- Fixed a bug where remove format wouldn't remove the inner most inline element in some situations. #TINY-2982
+- Fixed a bug where outdenting an list item would affect attributes on other list items within the same list. #TINY-2971
+- Fixed a bug where the DomParser filters wouldn't be applied for elements created when parsing invalid html. #TINY-2978
+- Fixed a bug where setProgressState wouldn't automatically close floating ui elements like menus. #TINY-2896
+- Fixed a bug where it wasn't possible to navigate out of a figcaption element using the arrow keys. #TINY-2894
+- Fixed a bug where enter key before an image inside a link would remove the image. #TINY-2780
+
+## 4.9.1 - 2018-12-04
+
+### Added
+- Added functionality to insert html to the replacement feature of the Textpattern Plugin. #TINY-2839
+
+### Fixed
+- Fixed a bug where `editor.selection.getContent({format: 'text'})` didn't work as expected in IE11 on an unfocused editor. #TINY-2862
+- Fixed a bug in the Textpattern Plugin where the editor would get an incorrect selection after inserting a text pattern on Safari. #TINY-2838
+- Fixed a bug where the space bar didn't work correctly in editors with the forced_root_block setting set to false. #TINY-2816
+
+## 4.9.0 - 2018-11-27
+
+### Added
+- Added a replace feature to the Textpattern Plugin. #TINY-1908
+- Added functionality to the Lists Plugin that improves the indentation logic. #TINY-1790
+
+### Fixed
+- Fixed a bug where it wasn't possible to delete/backspace when the caret was between a contentEditable=false element and a BR. #TINY-2372
+- Fixed a bug where copying table cells without a text selection would fail to copy anything. #TINY-1789
+- Implemented missing `autosave_restore_when_empty` functionality in the Autosave Plugin. Patch contributed by gzzo. #GH-4447
+- Reduced insertion of unnecessary nonbreaking spaces in the editor. #TINY-1879
+
+## 4.8.5 - 2018-10-30
+
+### Added
+- Added a content_css_cors setting to the editor that adds the crossorigin="anonymous" attribute to link tags added by the StyleSheetLoader. #TINY-1909
+
+### Fixed
+- Fixed a bug where trying to remove formatting with a collapsed selection range would throw an exception. #GH-4636
+- Fixed a bug in the image plugin that caused updating figures to split contenteditable elements. #GH-4563
+- Fixed a bug that was causing incorrect viewport calculations for fixed position UI elements. #TINY-1897
+- Fixed a bug where inline formatting would cause the delete key to do nothing. #TINY-1900
+
+## 4.8.4 - 2018-10-23
+
+### Added
+- Added support for the HTML5 `main` element. #TINY-1877
+
+### Changed
+- Changed the keyboard shortcut to move focus to contextual toolbars to Ctrl+F9. #TINY-1812
+
+### Fixed
+- Fixed a bug where content css could not be loaded from another domain. #TINY-1891
+- Fixed a bug on FireFox where the cursor would get stuck between two contenteditable false inline elements located inside of the same block element divided by a BR. #TINY-1878
+- Fixed a bug with the insertContent method where nonbreaking spaces would be inserted incorrectly. #TINY-1868
+- Fixed a bug where the toolbar of the inline editor would not be visible in some scenarios. #TINY-1862
+- Fixed a bug where removing the editor while more than one notification was open would throw an error. #TINY-1845
+- Fixed a bug where the menubutton would be rendered on top of the menu if the viewport didn't have enough height. #TINY-1678
+- Fixed a bug with the annotations api where annotating collapsed selections caused problems. #TBS-2449
+- Fixed a bug where wbr elements were being transformed into whitespace when using the Paste Plugin's paste as text setting. #GH-4638
+- Fixed a bug where the Search and Replace didn't replace spaces correctly. #GH-4632
+- Fixed a bug with sublist items not persisting selection. #GH-4628
+- Fixed a bug with mceInsertRawHTML command not working as expected. #GH-4625
+
+## 4.8.3 - 2018-09-13
+
+### Fixed
+- Fixed a bug where the Wordcount Plugin didn't correctly count words within tables on IE11. #TINY-1770
+- Fixed a bug where it wasn't possible to move the caret out of a table on IE11 and Firefox. #TINY-1682
+- Fixed a bug where merging empty blocks didn't work as expected, sometimes causing content to be deleted. #TINY-1781
+- Fixed a bug where the Textcolor Plugin didn't show the correct current color. #TINY-1810
+- Fixed a bug where clear formatting with a collapsed selection would sometimes clear formatting from more content than expected. #TINY-1813 #TINY-1821
+- Fixed a bug with the Table Plugin where it wasn't possible to keyboard navigate to the caption. #TINY-1818
+
+## 4.8.2 - 2018-08-09
+
+### Changed
+- Moved annotator from "experimental" to "annotator" object on editor. #TBS-2398
+- Improved the multiclick normalization across browsers. #TINY-1788
+
+### Fixed
+- Fixed a bug where running getSelectedBlocks with a collapsed selection between block elements would produce incorrect results. #TINY-1787
+- Fixed a bug where the ScriptLoaders loadScript method would not work as expected in FireFox when loaded on the same page as a ShadowDOM polyfill. #TINY-1786
+- Removed reference to ShadowDOM event.path as Blink based browsers now support event.composedPath. #TINY-1785
+- Fixed a bug where a reference to localStorage would throw an "access denied" error in IE11 with strict security settings. #TINY-1782
+- Fixed a bug where pasting using the toolbar button on an inline editor in IE11 would cause a looping behaviour. #TINY-1768
+
+## 4.8.1 - 2018-07-26
+
+### Fixed
+- Fixed a bug where the content of inline editors was being cleaned on every call of `editor.save()`. #TINY-1783
+- Fixed a bug where the arrow of the Inlite Theme toolbar was being rendered incorrectly in RTL mode. #TINY-1776
+- Fixed a bug with the Paste Plugin where pasting after inline contenteditable false elements moved the caret to the end of the line. #TINY-1758
+
+## 4.8.0 - 2018-06-27
+
+### Added
+- Added new "experimental" object in editor, with initial Annotator API. #TBS-2374
+
+### Fixed
+- Fixed a bug where deleting paragraphs inside of table cells would delete the whole table cell. #TINY-1759
+- Fixed a bug in the Table Plugin where removing row height set on the row properties dialog did not update the table. #TINY-1730
+- Fixed a bug with the font select toolbar item didn't update correctly. #TINY-1683
+- Fixed a bug where all bogus elements would not be deleted when removing an inline editor. #TINY-1669
+
+## 4.7.13 - 2018-05-16
+
+### Added
+- Added missing code menu item from the default menu config. #TINY-1648
+- Added new align button for combining the separate align buttons into a menu button. #TINY-1652
+
+### Fixed
+- Fixed a bug where Edge 17 wouldn't be able to select images or tables. #TINY-1679
+- Fixed issue where whitespace wasn't preserved when the editor was initialized on pre elements. #TINY-1649
+- Fixed a bug with the fontselect dropdowns throwing an error if the editor was hidden in Firefox. #TINY-1664
+- Fixed a bug where it wasn't possible to merge table cells on IE 11. #TINY-1671
+- Fixed a bug where textcolor wasn't applying properly on IE 11 in some situations. #TINY-1663
+- Fixed a bug where the justifyfull command state wasn't working correctly. #TINY-1677
+- Fixed a bug where the styles wasn't updated correctly when resizing some tables. #TINY-1668
+
+## 4.7.12 - 2018-05-03
+
+### Added
+- Added an option to filter out image svg data urls.
+- Added support for html5 details and summary elements.
+
+### Changed
+- Changed so the mce-abs-layout-item css rule targets html instead of body. Patch contributed by nazar-pc.
+
+### Fixed
+- Fixed a bug where the "read" step on the mobile theme was still present on android mobile browsers.
+- Fixed a bug where all images in the editor document would reload on any editor change.
+- Fixed a bug with the Table Plugin where ObjectResized event wasn't being triggered on column resize.
+- Fixed so the selection is set to the first suitable caret position after editor.setContent called.
+- Fixed so links with xlink:href attributes are filtered correctly to prevent XSS.
+- Fixed a bug on IE11 where pasting content into an inline editor initialized on a heading element would create new editable elements.
+- Fixed a bug where readonly mode would not work as expected when the editor contained contentEditable=true elements.
+- Fixed a bug where the Link Plugin would throw an error when used together with the webcomponents polyfill. Patch contributed by 4esnog.
+- Fixed a bug where the "Powered by TinyMCE" branding link would break on XHTML pages. Patch contributed by tistre.
+- Fixed a bug where the same id would be used in the blobcache for all pasted images. Patch contributed by thorn0.
+
+## 4.7.11 - 2018-04-11
+
+### Added
+- Added a new imagetools_credentials_hosts option to the Imagetools Plugin.
+
+### Fixed
+- Fixed a bug where toggling a list containing empty LIs would throw an error. Patch contributed by bradleyke.
+- Fixed a bug where applying block styles to a text with the caret at the end of the paragraph would select all text in the paragraph.
+- Fixed a bug where toggling on the Spellchecker Plugin would trigger isDirty on the editor.
+- Fixed a bug where it was possible to enter content into selection bookmark spans.
+- Fixed a bug where if a non paragraph block was configured in forced_root_block the editor.getContent method would return incorrect values with an empty editor.
+- Fixed a bug where dropdown menu panels stayed open and fixed in position when dragging dialog windows.
+- Fixed a bug where it wasn't possible to extend table cells with the space button in Safari.
+- Fixed a bug where the setupeditor event would thrown an error when using the Compat3x Plugin.
+- Fixed a bug where an error was thrown in FontInfo when called on a detached element.
+
+## 4.7.10 - 2018-04-03
+
+### Added
+- Added normalization of triple clicks across browsers in the editor.
+- Added a `hasFocus` method to the editor that checks if the editor has focus.
+- Added correct icon to the Nonbreaking Plugin menu item.
+
+### Fixed
+- Fixed so the `getContent`/`setContent` methods work even if the editor is not initialized.
+- Fixed a bug with the Media Plugin where query strings were being stripped from youtube links.
+- Fixed a bug where image styles were changed/removed when opening and closing the Image Plugin dialog.
+- Fixed a bug in the Table Plugin where some table cell styles were not correctly added to the content html.
+- Fixed a bug in the Spellchecker Plugin where it wasn't possible to change the spellchecker language.
+- Fixed so the the unlink action in the Link Plugin has a menu item and can be added to the contextmenu.
+- Fixed a bug where it wasn't possible to keyboard navigate to the start of an inline element on a new line within the same block element.
+- Fixed a bug with the Text Color Plugin where if used with an inline editor located at the bottom of the screen the colorpicker could appear off screen.
+- Fixed a bug with the UndoManager where undo levels were being added for nbzwsp characters.
+- Fixed a bug with the Table Plugin where the caret would sometimes be lost when keyboard navigating up through a table.
+- Fixed a bug where FontInfo.getFontFamily would throw an error when called on a removed editor.
+- Fixed a bug in Firefox where undo levels were not being added correctly for some specific operations.
+- Fixed a bug where initializing an inline editor inside of a table would make the whole table resizeable.
+- Fixed a bug where the fake cursor that appears next to tables on Firefox was positioned incorrectly when switching to fullscreen.
+- Fixed a bug where zwsp's weren't trimmed from the output from `editor.getContent({ format: 'text' })`.
+- Fixed a bug where the fontsizeselect/fontselect toolbar items showed the body info rather than the first possible caret position info on init.
+- Fixed a bug where it wasn't possible to select all content if the editor only contained an inline boundary element.
+- Fixed a bug where `content_css` urls with query strings wasn't working.
+- Fixed a bug in the Table Plugin where some table row styles were removed when changing other styles in the row properties dialog.
+
+### Removed
+- Removed the "read" step from the mobile theme.
+
+## 4.7.9 - 2018-02-27
+
+### Fixed
+- Fixed a bug where the editor target element didn't get the correct style when removing the editor.
+
+## 4.7.8 - 2018-02-26
+
+### Fixed
+- Fixed an issue with the Help Plugin where the menuitem name wasn't lowercase.
+- Fixed an issue on MacOS where text and bold text did not have the same line-height in the autocomplete dropdown in the Link Plugin dialog.
+- Fixed a bug where the "paste as text" option in the Paste Plugin didn't work.
+- Fixed a bug where dialog list boxes didn't get positioned correctly in documents with scroll.
+- Fixed a bug where the Inlite Theme didn't use the Table Plugin api to insert correct tables.
+- Fixed a bug where the Inlite Theme panel didn't hide on blur in a correct way.
+- Fixed a bug where placing the cursor before a table in Firefox would scroll to the bottom of the table.
+- Fixed a bug where selecting partial text in table cells with rowspans and deleting would produce faulty tables.
+- Fixed a bug where the Preview Plugin didn't work on Safari due to sandbox security.
+- Fixed a bug where table cell selection using the keyboard threw an error.
+- Fixed so the font size and font family doesn't toggle the text but only sets the selected format on the selected text.
+- Fixed so the built-in spellchecking on Chrome and Safari creates an undo level when replacing words.
+
+## 4.7.7 - 2018-02-19
+
+### Added
+- Added a border style selector to the advanced tab of the Image Plugin.
+- Added better controls for default table inserted by the Table Plugin.
+- Added new `table_responsive_width` option to the Table Plugin that controls whether to use pixel or percentage widths.
+
+### Fixed
+- Fixed a bug where the Link Plugin text didn't update when a URL was pasted using the context menu.
+- Fixed a bug with the Spellchecker Plugin where using "Add to dictionary" in the context menu threw an error.
+- Fixed a bug in the Media Plugin where the preview node for iframes got default width and height attributes that interfered with width/height styles.
+- Fixed a bug where backslashes were being added to some font family names in Firefox in the fontselect toolbar item.
+- Fixed a bug where errors would be thrown when trying to remove an editor that had not yet been fully initialized.
+- Fixed a bug where the Imagetools Plugin didn't update the images atomically.
+- Fixed a bug where the Fullscreen Plugin was throwing errors when being used on an inline editor.
+- Fixed a bug where drop down menus weren't positioned correctly in inline editors on scroll.
+- Fixed a bug with a semicolon missing at the end of the bundled javascript files.
+- Fixed a bug in the Table Plugin with cursor navigation inside of tables where the cursor would sometimes jump into an incorrect table cells.
+- Fixed a bug where indenting a table that is a list item using the "Increase indent" button would create a nested table.
+- Fixed a bug where text nodes containing only whitespace were being wrapped by paragraph elements.
+- Fixed a bug where whitespace was being inserted after br tags inside of paragraph tags.
+- Fixed a bug where converting an indented paragraph to a list item would cause the list item to have extra padding.
+- Fixed a bug where Copy/Paste in an editor with a lot of content would cause the editor to scroll to the top of the content in IE11.
+- Fixed a bug with a memory leak in the DragHelper. Path contributed by ben-mckernan.
+- Fixed a bug where the advanced tab in the Media Plugin was being shown even if it didn't contain anything. Patch contributed by gabrieeel.
+- Fixed an outdated eventname in the EventUtils. Patch contributed by nazar-pc.
+- Fixed an issue where the Json.parse function would throw an error when being used on a page with strict CSP settings.
+- Fixed so you can place the curser before and after table elements within the editor in Firefox and Edge/IE.
+
+## 4.7.6 - 2018-01-29
+
+### Fixed
+- Fixed a bug in the jquery integration where it threw an error saying that "global is not defined".
+- Fixed a bug where deleting a table cell whose previous sibling was set to contenteditable false would create a corrupted table.
+- Fixed a bug where highlighting text in an unfocused editor did not work correctly in IE11/Edge.
+- Fixed a bug where the table resize handles were not being repositioned when activating the Fullscreen Plugin.
+- Fixed a bug where the Imagetools Plugin dialog didn't honor editor RTL settings.
+- Fixed a bug where block elements weren't being merged correctly if you deleted from after a contenteditable false element to the beginning of another block element.
+- Fixed a bug where TinyMCE didn't work with module loaders like webpack.
+
+## 4.7.5 - 2018-01-22
+
+### Fixed
+- Fixed bug with the Codesample Plugin where it wasn't possible to edit codesamples when the editor was in inline mode.
+- Fixed bug where focusing on the status bar broke the keyboard navigation functionality.
+- Fixed bug where an error would be thrown on Edge by the Table Plugin when pasting using the PowerPaste Plugin.
+- Fixed bug in the Table Plugin where selecting row border style from the dropdown menu in advanced row properties would throw an error.
+- Fixed bug with icons being rendered incorrectly on Chrome on Mac OS.
+- Fixed bug in the Textcolor Plugin where the font color and background color buttons wouldn't trigger an ExecCommand event.
+- Fixed bug in the Link Plugin where the url field wasn't forced LTR.
+- Fixed bug where the Nonbreaking Plugin incorrectly inserted spaces into tables.
+- Fixed bug with the inline theme where the toolbar wasn't repositioned on window resize.
+
+## 4.7.4 - 2017-12-05
+
+### Fixed
+- Fixed bug in the Nonbreaking Plugin where the nonbreaking_force_tab setting was being ignored.
+- Fixed bug in the Table Plugin where changing row height incorrectly converted column widths to pixels.
+- Fixed bug in the Table Plugin on Edge and IE11 where resizing the last column after resizing the table would cause invalid column heights.
+- Fixed bug in the Table Plugin where keyboard navigation was not normalized between browsers.
+- Fixed bug in the Table Plugin where the colorpicker button would show even without defining the colorpicker_callback.
+- Fixed bug in the Table Plugin where it wasn't possible to set the cell background color.
+- Fixed bug where Firefox would throw an error when intialising an editor on an element that is hidden or not yet added to the DOM.
+- Fixed bug where Firefox would throw an error when intialising an editor inside of a hidden iframe.
+
+## 4.7.3 - 2017-11-23
+
+### Added
+- Added functionality to open the Codesample Plugin dialog when double clicking on a codesample. Patch contributed by dakuzen.
+
+### Fixed
+- Fixed bug where undo/redo didn't work correctly with some formats and caret positions.
+- Fixed bug where the color picker didn't show up in Table Plugin dialogs.
+- Fixed bug where it wasn't possible to change the width of a table through the Table Plugin dialog.
+- Fixed bug where the Charmap Plugin couldn't insert some special characters.
+- Fixed bug where editing a newly inserted link would not actually edit the link but insert a new link next to it.
+- Fixed bug where deleting all content in a table cell made it impossible to place the caret into it.
+- Fixed bug where the vertical alignment field in the Table Plugin cell properties dialog didn't do anything.
+- Fixed bug where an image with a caption showed two sets of resize handles in IE11.
+- Fixed bug where pressing the enter button inside of an h1 with contenteditable set to true would sometimes produce a p tag.
+- Fixed bug with backspace not working as expected before a noneditable element.
+- Fixed bug where operating on tables with invalid rowspans would cause an error to be thrown.
+- Fixed so a real base64 representation of the image is available on the blobInfo that the images_upload_handler gets called with.
+- Fixed so the image upload tab is available when the images_upload_handler is defined (and not only when the images_upload_url is defined).
+
+## 4.7.2 - 2017-11-07
+
+### Added
+- Added newly rewritten Table Plugin.
+- Added support for attributes with colon in valid_elements and addValidElements.
+- Added support for dailymotion short url in the Media Plugin. Patch contributed by maat8.
+- Added support for converting to half pt when converting font size from px to pt. Patch contributed by danny6514.
+- Added support for location hash to the Autosave plugin to make it work better with SPAs using hash routing.
+- Added support for merging table cells when pasting a table into another table.
+
+### Changed
+- Changed so the language packs are only loaded once. Patch contributed by 0xor1.
+- Simplified the css for inline boundaries selection by switching to an attribute selector.
+
+### Fixed
+- Fixed bug where an error would be thrown on editor initialization if the window.getSelection() returned null.
+- Fixed bug where holding down control or alt keys made the keyboard navigation inside an inline boundary not work as expected.
+- Fixed bug where applying formats in IE11 produced extra, empty paragraphs in the editor.
+- Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
+- Fixed bug where removing an inline editor removed the element that the editor had been initialized on.
+- Fixed bug where setting the selection to the end of an editable container caused some formatting problems.
+- Fixed bug where an error would be thrown sometimes when an editor was removed because of the selection bookmark was being stored asynchronously.
+- Fixed a bug where an editor initialized on an empty list did not contain any valid cursor positions.
+- Fixed a bug with the Context Menu Plugin and webkit browsers on Mac where right-clicking inside a table would produce an incorrect selection.
+- Fixed bug where the Image Plugin constrain proportions setting wasn't working as expected.
+- Fixed bug where deleting the last character in a span with decorations produced an incorrect element when typing.
+- Fixed bug where focusing on inline editors made the toolbar flicker when moving between elements quickly.
+- Fixed bug where the selection would be stored incorrectly in inline editors when the mouseup event was fired outside the editor body.
+- Fixed bug where toggling bold at the end of an inline boundary would toggle off the whole word.
+- Fixed bug where setting the skin to false would not stop the loading of some skin css files.
+- Fixed bug in mobile theme where pinch-to-zoom would break after exiting the editor.
+- Fixed bug where sublists of a fully selected list would not be switched correctly when changing list style.
+- Fixed bug where inserting media by source would break the UndoManager.
+- Fixed bug where inserting some content into the editor with a specific selection would replace some content incorrectly.
+- Fixed bug where selecting all content with ctrl+a in IE11 caused problems with untoggling some formatting.
+- Fixed bug where the Search and Replace Plugin left some marker spans in the editor when undoing and redoing after replacing some content.
+- Fixed bug where the editor would not get a scrollbar when using the Fullscreen and Autoresize plugins together.
+- Fixed bug where the font selector would stop working correctly after selecting fonts three times.
+- Fixed so pressing the enter key inside of an inline boundary inserts a br after the inline boundary element.
+- Fixed a bug where it wasn't possible to use tab navigation inside of a table that was inside of a list.
+- Fixed bug where end_container_on_empty_block would incorrectly remove elements.
+- Fixed bug where content_styles weren't added to the Preview Plugin iframe.
+- Fixed so the beforeSetContent/beforeGetContent events are preventable.
+- Fixed bug where changing height value in Table Plugin advanced tab didn't do anything.
+- Fixed bug where it wasn't possible to remove formatting from content in beginning of table cell.
+
+## 4.7.1 - 2017-10-09
+
+### Fixed
+- Fixed bug where theme set to false on an inline editor produced an extra div element after the target element.
+- Fixed bug where the editor drag icon was misaligned with the branding set to false.
+- Fixed bug where doubled menu items were not being removed as expected with the removed_menuitems setting.
+- Fixed bug where the Table of contents plugin threw an error when initialized.
+- Fixed bug where it wasn't possible to add inline formats to text selected right to left.
+- Fixed bug where the paste from plain text mode did not work as expected.
+- Fixed so the style previews do not set color and background color when selected.
+- Fixed bug where the Autolink plugin didn't work as expected with some formats applied on an empty editor.
+- Fixed bug where the Textpattern plugin were throwing errors on some patterns.
+- Fixed bug where the Save plugin saved all editors instead of only the active editor. Patch contributed by dannoe.
+
+## 4.7.0 - 2017-10-03
+
+### Added
+- Added new mobile ui that is specifically designed for mobile devices.
+
+### Changed
+- Updated the default skin to be more modern and white since white is preferred by most implementations.
+- Restructured the default menus to be more similar to common office suites like Google Docs.
+
+### Fixed
+- Fixed so theme can be set to false on both inline and iframe editor modes.
+- Fixed bug where inline editor would add/remove the visualblocks css multiple times.
+- Fixed bug where selection wouldn't be properly restored when editor lost focus and commands where invoked.
+- Fixed bug where toc plugin would generate id:s for headers even though a toc wasn't inserted into the content.
+- Fixed bug where is wasn't possible to drag/drop contents within the editor if paste_data_images where set to true.
+- Fixed bug where getParam and close in WindowManager would get the first opened window instead of the last opened window.
+- Fixed bug where delete would delete between cells inside a table in Firefox.
+
+## 4.6.7 - 2017-09-18
+
+### Added
+- Added some missing translations to Image, Link and Help plugins.
+
+### Fixed
+- Fixed bug where paste wasn't working in IOS.
+- Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
+- Fixed bug where inserting a list in a table caused the cell to expand in height.
+- Fixed bug where pressing enter in a list located inside of a table deleted list items instead of inserting new list item.
+- Fixed bug where copy and pasting table cells produced inconsistent results.
+- Fixed bug where initializing an editor with an ID of 'length' would throw an exception.
+- Fixed bug where it was possible to split a non merged table cell.
+- Fixed bug where copy and pasting a list with a very specific selection into another list would produce a nested list.
+- Fixed bug where copy and pasting ordered lists sometimes produced unordered lists.
+- Fixed bug where padded elements inside other elements would be treated as empty.
+- Fixed so you can resize images inside a figure element.
+- Fixed bug where an inline TinyMCE editor initialized on a table did not set selection on load in Chrome.
+- Fixed the positioning of the inlite toolbar when the target element wasn't big enough to fit the toolbar.
+
+## 4.6.6 - 2017-08-30
+
+### Fixed
+- Fixed so that notifications wrap long text content instead of bleeding outside the notification element.
+- Fixed so the content_style css is added after the skin and custom stylesheets.
+- Fixed bug where it wasn't possible to remove a table with the Cut button.
+- Fixed bug where the center format wasn't getting the same font size as the other formats in the format preview.
+- Fixed bug where the wordcount plugin wasn't counting hyphenated words correctly.
+- Fixed bug where all content pasted into the editor was added to the end of the editor.
+- Fixed bug where enter keydown on list item selection only deleted content and didn't create a new line.
+- Fixed bug where destroying the editor while the content css was still loading caused error notifications on Firefox.
+- Fixed bug where undoing cut operation in IE11 left some unwanted html in the editor content.
+- Fixed bug where enter keydown would throw an error in IE11.
+- Fixed bug where duplicate instances of an editor were added to the editors array when using the createEditor API.
+- Fixed bug where the formatter applied formats on the wrong content when spellchecker was activated.
+- Fixed bug where switching formats would reset font size on child nodes.
+- Fixed bug where the table caption element weren't always the first descendant to the table tag.
+- Fixed bug where pasting some content into the editor on chrome some newlines were removed.
+- Fixed bug where it wasn't possible to remove a list if a list item was a table element.
+- Fixed bug where copy/pasting partial selections of tables wouldn't produce a proper table.
+- Fixed bug where the searchreplace plugin could not find consecutive spaces.
+- Fixed bug where background color wasn't applied correctly on some partially selected contents.
+
+## 4.6.5 - 2017-08-02
+
+### Added
+- Added new inline_boundaries_selector that allows you to specify the elements that should have boundaries.
+- Added new local upload feature this allows the user to upload images directly from the image dialog.
+- Added a new api for providing meta data for plugins. It will show up in the help dialog if it's provided.
+
+### Fixed
+- Fixed so that the notifications created by the notification manager are more screen reader accessible.
+- Fixed bug where changing the list format on multiple selected lists didn't change all of the lists.
+- Fixed bug where the nonbreaking plugin would insert multiple undo levels when pressing the tab key.
+- Fixed bug where delete/backspace wouldn't render a caret when all editor contents where deleted.
+- Fixed bug where delete/backspace wouldn't render a caret if the deleted element was a single contentEditable false element.
+- Fixed bug where the wordcount plugin wouldn't count words correctly if word where typed after applying a style format.
+- Fixed bug where the wordcount plugin would count mathematical formulas as multiple words for example 1+1=2.
+- Fixed bug where formatting of triple clicked blocks on Chrome/Safari would result in styles being added outside the visual selection.
+- Fixed bug where paste would add the contents to the end of the editor area when inline mode was used.
+- Fixed bug where toggling off bold formatting on text entered in a new paragraph would add an extra line break.
+- Fixed bug where autolink plugin would only produce a link on every other consecutive link on Firefox.
+- Fixed bug where it wasn't possible to select all contents if the content only had one pre element.
+- Fixed bug where sizzle would produce lagging behavior on some sites due to repaints caused by feature detection.
+- Fixed bug where toggling off inline formats wouldn't include the space on selected contents with leading or trailing spaces.
+- Fixed bug where the cut operation in UI wouldn't work in Chrome.
+- Fixed bug where some legacy editor initialization logic would throw exceptions about editor settings not being defined.
+- Fixed bug where it wasn't possible to apply text color to links if they where part of a non collapsed selection.
+- Fixed bug where an exception would be thrown if the user selected a video element and then moved the focus outside the editor.
+- Fixed bug where list operations didn't work if there where block elements inside the list items.
+- Fixed bug where applying block formats to lists wrapped in block elements would apply to all elements in that wrapped block.
+
+## 4.6.4 - 2017-06-13
+
+### Fixed
+- Fixed bug where the editor would move the caret when clicking on the scrollbar next to a content editable false block.
+- Fixed bug where the text color select dropdowns wasn't placed correctly when they didn't fit the width of the screen.
+- Fixed bug where the default editor line height wasn't working for mixed font size contents.
+- Fixed bug where the content css files for inline editors were loaded multiple times for multiple editor instances.
+- Fixed bug where the initial value of the font size/font family dropdowns wasn't displayed.
+- Fixed bug where the I18n api was not supporting arrays as the translation replacement values.
+- Fixed bug where chrome would display "The given range isn't in document." errors for invalid ranges passed to setRng.
+- Fixed bug where the compat3x plugin wasn't working since the global tinymce references wasn't resolved correctly.
+- Fixed bug where the preview plugin wasn't encoding the base url passed into the iframe contents producing a xss bug.
+- Fixed bug where the dom parser/serializer wasn't handling some special elements like noframes, title and xmp.
+- Fixed bug where the dom parser/serializer wasn't handling cdata sections with comments inside.
+- Fixed bug where the editor would scroll to the top of the editable area if a dialog was closed in inline mode.
+- Fixed bug where the link dialog would not display the right rel value if rel_list was configured.
+- Fixed bug where the context menu would select images on some platforms but not others.
+- Fixed bug where the filenames of images were not retained on dragged and drop into the editor from the desktop.
+- Fixed bug where the paste plugin would misrepresent newlines when pasting plain text and having forced_root_block configured.
+- Fixed so that the error messages for the imagetools plugin is more human readable.
+- Fixed so the internal validate setting for the parser/serializer can't be set from editor initialization settings.
+
+## 4.6.3 - 2017-05-30
+
+### Fixed
+- Fixed bug where the arrow keys didn't work correctly when navigating on nested inline boundary elements.
+- Fixed bug where delete/backspace didn't work correctly on nested inline boundary elements.
+- Fixed bug where image editing didn't work on subsequent edits of the same image.
+- Fixed bug where charmap descriptions wouldn't properly wrap if they exceeded the width of the box.
+- Fixed bug where the default image upload handler only accepted 200 as a valid http status code.
+- Fixed so rel on target=_blank links gets forced with only noopener instead of both noopener and noreferrer.
+
+## 4.6.2 - 2017-05-23
+
+### Fixed
+- Fixed bug where the SaxParser would run out of memory on very large documents.
+- Fixed bug with formatting like font size wasn't applied to del elements.
+- Fixed bug where various api calls would be throwing exceptions if they where invoked on a removed editor instance.
+- Fixed bug where the branding position would be incorrect if the editor was inside a hidden tab and then later showed.
+- Fixed bug where the color levels feature in the imagetools dialog wasn't working properly.
+- Fixed bug where imagetools dialog wouldn't pre-load images from CORS domains, before trying to prepare them for editing.
+- Fixed bug where the tab key would move the caret to the next table cell if being pressed inside a list inside a table.
+- Fixed bug where the cut/copy operations would loose parent context like the current format etc.
+- Fixed bug with format preview not working on invalid elements excluded by valid_elements.
+- Fixed bug where blocks would be merged in incorrect order on backspace/delete.
+- Fixed bug where zero length text nodes would cause issues with the undo logic if there where iframes present.
+- Fixed bug where the font size/family select lists would throw errors if the first node was a comment.
+- Fixed bug with csp having to allow local script evaluation since it was used to detect global scope.
+- Fixed bug where CSP required a relaxed option for javascript: URLs in unsupported legacy browsers.
+- Fixed bug where a fake caret would be rendered for td with the contenteditable=false.
+- Fixed bug where typing would be blocked on IE 11 when within a nested contenteditable=true/false structure.
+
+## 4.6.1 - 2017-05-10
+
+### Added
+- Added configuration option to list plugin to disable tab indentation.
+
+### Fixed
+- Fixed bug where format change on very specific content could cause the selection to change.
+- Fixed bug where TinyMCE could not be lazyloaded through jquery integration.
+- Fixed bug where entities in style attributes weren't decoded correctly on paste in webkit.
+- Fixed bug where fontsize_formats option had been renamed incorrectly.
+- Fixed bug with broken backspace/delete behaviour between contenteditable=false blocks.
+- Fixed bug where it wasn't possible to backspace to the previous line with the inline boundaries functionality turned on.
+- Fixed bug where is wasn't possible to move caret left and right around a linked image with the inline boundaries functionality turned on.
+- Fixed bug where pressing enter after/before hr element threw exception. Patch contributed bradleyke.
+- Fixed so the CSS in the visualblocks plugin doesn't overwrite background color. Patch contributed by Christian Rank.
+- Fixed bug where multibyte characters weren't encoded correctly. Patch contributed by James Tarkenton.
+- Fixed bug where shift-click to select within contenteditable=true fields wasn't working.
+
+## 4.6.0 - 2017-05-04
+
+### Added
+- Added an inline boundary caret position feature that makes it easier to type at the beginning/end of links/code elements.
+- Added a help plugin that adds a button and a dialog showing the editor shortcuts and loaded plugins.
+- Added an inline_boundaries option that allows you to disable the inline boundary feature if it's not desired.
+- Added a new ScrollIntoView event that allows you to override the default scroll to element behavior.
+- Added role and aria- attributes as valid elements in the default valid elements config.
+- Added new internal flag for PastePreProcess/PastePostProcess this is useful to know if the paste was coming from an external source.
+- Added new ignore function to UndoManager this works similar to transact except that it doesn't add an undo level by default.
+
+### Fixed
+- Fixed so that urls gets retained for images when being edited. This url is then passed on to the upload handler.
+- Fixed so that the editors would be initialized on readyState interactive instead of complete.
+- Fixed so that the init event of the editor gets fired once all contentCSS files have been properly loaded.
+- Fixed so that width/height of the editor gets taken from the textarea element if it's explicitly specified in styles.
+- Fixed so that keep_styles set to false no longer clones class/style from the previous paragraph on enter.
+- Fixed so that the default line-height is 1.2em to avoid zwnbsp characters from producing text rendering glitches on Windows.
+- Fixed so that loading errors of content css gets presented by a notification message.
+- Fixed so figure image elements can be linked when selected this wraps the figure image in a anchor element.
+- Fixed bug where it wasn't possible to copy/paste rows with colspans by using the table copy/paste feature.
+- Fixed bug where the protect setting wasn't properly applied to header/footer parts when using the fullpage plugin.
+- Fixed bug where custom formats that specified upper case element names where not applied correctly.
+- Fixed bug where some screen readers weren't reading buttons due to an aria specific fix for IE 8.
+- Fixed bug where cut wasn't working correctly on iOS due to it's clipboard API not working correctly.
+- Fixed bug where Edge would paste div elements instead of paragraphs when pasting plain text.
+- Fixed bug where the textpattern plugin wasn't dealing with trailing punctuations correctly.
+- Fixed bug where image editing would some times change the image format from jpg to png.
+- Fixed bug where some UI elements could be inserted into the toolbar even if they where not registered.
+- Fixed bug where it was possible to click the TD instead of the character in the character map and that caused an exception.
+- Fixed bug where the font size/font family dropdowns would sometimes show an incorrect value due to css not being loaded in time.
+- Fixed bug with the media plugin inserting undefined instead of retaining size when media_dimensions was set to false.
+- Fixed bug with deleting images when forced_root_blocks where set to false.
+- Fixed bug where input focus wasn't properly handled on nested content editable elements.
+- Fixed bug where Chrome/Firefox would throw an exception when selecting images due to recent change of setBaseAndExtent support.
+- Fixed bug where malformed blobs would throw exceptions now they are simply ignored.
+- Fixed bug where backspace/delete wouldn't work properly in some cases where all contents was selected in WebKit.
+- Fixed bug with Angular producing errors since it was expecting events objects to be patched with their custom properties.
+- Fixed bug where the formatter would apply formatting to spellchecker errors now all bogus elements are excluded.
+- Fixed bug with backspace/delete inside table caption elements wouldn't behave properly on IE 11.
+- Fixed bug where typing after a contenteditable false inline element could move the caret to the end of that element.
+- Fixed bug where backspace before/after contenteditable false blocks wouldn't properly remove the right element.
+- Fixed bug where backspace before/after contenteditable false inline elements wouldn't properly empty the current block element.
+- Fixed bug where vertical caret navigation with a custom line-height would sometimes match incorrect positions.
+- Fixed bug with paste on Edge where character encoding wasn't handled properly due to a browser bug.
+- Fixed bug with paste on Edge where extra fragment data was inserted into the contents when pasting.
+- Fixed bug with pasting contents when having a whole block element selected on WebKit could cause WebKit spans to appear.
+- Fixed bug where the visualchars plugin wasn't working correctly showing invisible nbsp characters.
+- Fixed bug where browsers would hang if you tried to load some malformed html contents.
+- Fixed bug where the init call promise wouldn't resolve if the specified selector didn't find any matching elements.
+- Fixed bug where the Schema isValidChild function was case sensitive.
+
+### Removed
+- Dropped support for IE 8-10 due to market share and lack of support from Microsoft. See tinymce docs for details.
+
+## 4.5.3 - 2017-02-01
+
+### Added
+- Added keyboard navigation for menu buttons when the menu is in focus.
+- Added api to the list plugin for setting custom classes/attributes on lists.
+- Added validation for the anchor plugin input field according to W3C id naming specifications.
+
+### Fixed
+- Fixed bug where media placeholders were removed after resize with the forced_root_block setting set to false.
+- Fixed bug where deleting selections with similar sibling nodes sometimes deleted the whole document.
+- Fixed bug with inlite theme where several toolbars would appear scrolling when more than one instance of the editor was in use.
+- Fixed bug where the editor would throw error with the fontselect plugin on hidden editor instances in Firefox.
+- Fixed bug where the background color would not stretch to the font size.
+- Fixed bug where font size would be removed when changing background color.
+- Fixed bug where the undomanager trimmed away whitespace between nodes on undo/redo.
+- Fixed bug where media_dimensions=false in media plugin caused the editor to throw an error.
+- Fixed bug where IE was producing font/u elements within links on paste.
+- Fixed bug where some button tooltips were broken when compat3x was in use.
+- Fixed bug where backspace/delete/typeover would remove the caption element.
+- Fixed bug where powerspell failed to function when compat3x was enabled.
+- Fixed bug where it wasn't possible to apply sub/sup on text with large font size.
+- Fixed bug where pre tags with spaces weren't treated as content.
+- Fixed bug where Meta+A would select the entire document instead of all contents in nested ce=true elements.
+
+## 4.5.2 - 2017-01-04
+
+### Fixed
+- Added missing keyboard shortcut description for the underline menu item in the format menu.
+- Fixed bug where external blob urls wasn't properly handled by editor upload logic. Patch contributed by David Oviedo.
+- Fixed bug where urls wasn't treated as a single word by the wordcount plugin.
+- Fixed bug where nbsp characters wasn't treated as word delimiters by the wordcount plugin.
+- Fixed bug where editor instance wasn't properly passed to the format preview logic. Patch contributed by NullQuery.
+- Fixed bug where the fake caret wasn't hidden when you moved selection to a cE=false element.
+- Fixed bug where it wasn't possible to edit existing code sample blocks.
+- Fixed bug where it wasn't possible to delete editor contents if the selection included an empty block.
+- Fixed bug where the formatter wasn't expanding words on some international characters. Patch contributed by Martin Larochelle.
+- Fixed bug where the open link feature wasn't working correctly on IE 11.
+- Fixed bug where enter before/after a cE=false block wouldn't properly padd the paragraph with an br element.
+- Fixed so font size and font family select boxes always displays a value by using the runtime style as a fallback.
+- Fixed so missing plugins will be logged to console as warnings rather than halting the initialization of the editor.
+- Fixed so splitbuttons become normal buttons in advlist plugin if styles are empty. Patch contributed by René Schleusner.
+- Fixed so you can multi insert rows/cols by selecting table cells and using insert rows/columns.
+
+## 4.5.1 - 2016-12-07
+
+### Fixed
+- Fixed bug where the lists plugin wouldn't initialize without the advlist plugins if served from cdn.
+- Fixed bug where selectors with "*" would cause the style format preview to throw an error.
+- Fixed bug with toggling lists off on lists with empty list items would throw an error.
+- Fixed bug where editing images would produce non existing blob uris.
+- Fixed bug where the offscreen toc selection would be treated as the real toc element.
+- Fixed bug where the aria level attribute for element path would have an incorrect start index.
+- Fixed bug where the offscreen selection of cE=false that where very wide would be shown onscreen. Patch contributed by Steven Bufton.
+- Fixed so the default_link_target gets applied to links created by the autolink plugin.
+- Fixed so that the name attribute gets removed by the anchor plugin if editing anchors.
+
+## 4.5.0 - 2016-11-23
+
+### Added
+- Added new toc plugin allows you to insert table of contents based on editor headings.
+- Added new auto complete menu to all url fields. Adds history, link to anchors etc.
+- Added new sidebar api that allows you to add custom sidebar panels and buttons to toggle these.
+- Added new insert menu button that allows you to have multiple insert functions under the same menu button.
+- Added new open link feature to ctrl+click, alt+enter and context menu.
+- Added new media_embed_handler option to allow the media plugin to be populated with custom embeds.
+- Added new support for editing transparent images using the image tools dialog.
+- Added new images_reuse_filename option to allow filenames of images to be retained for upload.
+- Added new security feature where links with target="_blank" will by default get rel="noopener noreferrer".
+- Added new allow_unsafe_link_target to allow you to opt-out of the target="_blank" security feature.
+- Added new style_formats_autohide option to automatically hide styles based on context.
+- Added new codesample_content_css option to specify where the code sample prism css is loaded from.
+- Added new support for Japanese/Chinese word count following the unicode standards on this.
+- Added new fragmented undo levels this dramatically reduces flicker on contents with iframes.
+- Added new live previews for complex elements like table or lists.
+
+### Fixed
+- Fixed bug where it wasn't possible to properly tab between controls in a dialog with a disabled form item control.
+- Fixed bug where firefox would generate a rectangle on elements produced after/before a cE=false elements.
+- Fixed bug with advlist plugin not switching list element format properly in some edge cases.
+- Fixed bug where col/rowspans wasn't correctly computed by the table plugin in some cases.
+- Fixed bug where the table plugin would thrown an error if object_resizing was disabled.
+- Fixed bug where some invalid markup would cause issues when running in XHTML mode. Patch contributed by Charles Bourasseau.
+- Fixed bug where the fullscreen class wouldn't be removed properly when closing dialogs.
+- Fixed bug where the PastePlainTextToggle event wasn't fired by the paste plugin when the state changed.
+- Fixed bug where table the row type wasn't properly updated in table row dialog. Patch contributed by Matthias Balmer.
+- Fixed bug where select all and cut wouldn't place caret focus back to the editor in WebKit. Patch contributed by Daniel Jalkut.
+- Fixed bug where applying cell/row properties to multiple cells/rows would reset other unchanged properties.
+- Fixed bug where some elements in the schema would have redundant/incorrect children.
+- Fixed bug where selector and target options would cause issues if used together.
+- Fixed bug where drag/drop of images from desktop on chrome would thrown an error.
+- Fixed bug where cut on WebKit/Blink wouldn't add an undo level.
+- Fixed bug where IE 11 would scroll to the cE=false elements when they where selected.
+- Fixed bug where keys like F5 wouldn't work when a cE=false element was selected.
+- Fixed bug where the undo manager wouldn't stop the typing state when commands where executed.
+- Fixed bug where unlink on wrapped links wouldn't work properly.
+- Fixed bug with drag/drop of images on WebKit where the image would be deleted form the source editor.
+- Fixed bug where the visual characters mode would be disabled when contents was extracted from the editor.
+- Fixed bug where some browsers would toggle of formats applied to the caret when clicking in the editor toolbar.
+- Fixed bug where the custom theme function wasn't working correctly.
+- Fixed bug where image option for custom buttons required you to have icon specified as well.
+- Fixed bug where the context menu and contextual toolbars would be visible at the same time and sometimes overlapping.
+- Fixed bug where the noneditable plugin would double wrap elements when using the noneditable_regexp option.
+- Fixed bug where tables would get padding instead of margin when you used the indent button.
+- Fixed bug where the charmap plugin wouldn't properly insert non breaking spaces.
+- Fixed bug where the color previews in color input boxes wasn't properly updated.
+- Fixed bug where the list items of previous lists wasn't merged in the right order.
+- Fixed bug where it wasn't possible to drag/drop inline-block cE=false elements on IE 11.
+- Fixed bug where some table cell merges would produce incorrect rowspan/colspan.
+- Fixed so the font size of the editor defaults to 14px instead of 11px this can be overridden by custom css.
+- Fixed so wordcount is debounced to reduce cpu hogging on larger texts.
+- Fixed so tinymce global gets properly exported as a module when used with some module bundlers.
+- Fixed so it's possible to specify what css properties you want to preview on specific formats.
+- Fixed so anchors are contentEditable=false while within the editor.
+- Fixed so selected contents gets wrapped in a inline code element by the codesample plugin.
+- Fixed so conditional comments gets properly stripped independent of case. Patch contributed by Georgii Dolzhykov.
+- Fixed so some escaped css sequences gets properly handled. Patch contributed by Georgii Dolzhykov.
+- Fixed so notifications with the same message doesn't get displayed at the same time.
+- Fixed so F10 can be used as an alternative key to focus to the toolbar.
+- Fixed various api documentation issues and typos.
+
+### Removed
+- Removed layer plugin since it wasn't really ported from 3.x and there doesn't seem to be much use for it.
+- Removed moxieplayer.swf from the media plugin since it wasn't used by the media plugin.
+- Removed format state from the advlist plugin to be more consistent with common word processors.
+
+## 4.4.3 - 2016-09-01
+
+### Fixed
+- Fixed bug where copy would produce an exception on Chrome.
+- Fixed bug where deleting lists on IE 11 would merge in correct text nodes.
+- Fixed bug where deleting partial lists with indentation wouldn't cause proper normalization.
+
+## 4.4.2 - 2016-08-25
+
+### Added
+- Added new importcss_exclusive option to disable unique selectors per group.
+- Added new group specific selector_converter option to importcss plugin.
+- Added new codesample_languages option to apply custom languages to codesample plugin.
+- Added new codesample_dialog_width/codesample_dialog_height options.
+
+### Fixed
+- Fixed bug where fullscreen button had an incorrect keyboard shortcut.
+- Fixed bug where backspace/delete wouldn't work correctly from a block to a cE=false element.
+- Fixed bug where smartpaste wasn't detecting links with special characters in them like tilde.
+- Fixed bug where the editor wouldn't get proper focus if you clicked on a cE=false element.
+- Fixed bug where it wasn't possible to copy/paste table rows that had merged cells.
+- Fixed bug where merging cells could some times produce invalid col/rowspan attibute values.
+- Fixed bug where getBody would sometimes thrown an exception now it just returns null if the iframe is clobbered.
+- Fixed bug where drag/drop of cE=false element wasn't properly constrained to viewport.
+- Fixed bug where contextmenu on Mac would collapse any selection to a caret.
+- Fixed bug where rtl mode wasn't rendered properly when loading a language pack with the rtl flag.
+- Fixed bug where Kamer word bounderies would be stripped from contents.
+- Fixed bug where lists would sometimes render two dots or numbers on the same line.
+- Fixed bug where the skin_url wasn't used by the inlite theme.
+- Fixed so data attributes are ignored when comparing formats in the formatter.
+- Fixed so it's possible to disable inline toolbars in the inlite theme.
+- Fixed so template dialog gets resized if it doesn't fit the window viewport.
+
+## 4.4.1 - 2016-07-26
+
+### Added
+- Added smart_paste option to paste plugin to allow disabling the paste behavior if needed.
+
+### Fixed
+- Fixed bug where png urls wasn't properly detected by the smart paste logic.
+- Fixed bug where the element path wasn't working properly when multiple editor instances where used.
+- Fixed bug with creating lists out of multiple paragraphs would just create one list item instead of multiple.
+- Fixed bug where scroll position wasn't properly handled by the inlite theme to place the toolbar properly.
+- Fixed bug where multiple instances of the editor using the inlite theme didn't render the toolbar properly.
+- Fixed bug where the shortcut label for fullscreen mode didn't match the actual shortcut key.
+- Fixed bug where it wasn't possible to select cE=false blocks using touch devices on for example iOS.
+- Fixed bug where it was possible to select the child image within a cE=false on IE 11.
+- Fixed so inserts of html containing lists doesn't merge with any existing lists unless it's a paste operation.
+
+## 4.4.0 - 2016-06-30
+
+### Added
+- Added new inlite theme this is a more lightweight inline UI.
+- Added smarter paste logic that auto detects urls in the clipboard and inserts images/links based on that.
+- Added a better image resize algorithm for better image quality in the imagetools plugin.
+
+### Fixed
+- Fixed bug where it wasn't possible to drag/dropping cE=false elements on FF.
+- Fixed bug where backspace/delete before/after a cE=false block would produce a new paragraph.
+- Fixed bug where list style type css property wasn't preserved when indenting lists.
+- Fixed bug where merging of lists where done even if the list style type was different.
+- Fixed bug where the image_dataimg_filter function wasn't used when pasting images.
+- Fixed bug where nested editable within a non editable element would cause scroll on focus in Chrome.
+- Fixed so invalid targets for inline mode is blocked on initialization. We only support elements that can have children.
+
+## 4.3.13 - 2016-06-08
+
+### Added
+- Added characters with a diacritical mark to charmap plugin. Patch contributed by Dominik Schilling.
+- Added better error handling if the image proxy service would produce errors.
+
+### Fixed
+- Fixed issue with pasting list items into list items would produce nested list rather than a merged list.
+- Fixed bug where table selection could get stuck in selection mode for inline editors.
+- Fixed bug where it was possible to place the caret inside the resize grid elements.
+- Fixed bug where it wasn't possible to place in elements horizontally adjacent cE=false blocks.
+- Fixed bug where multiple notifications wouldn't be properly placed on screen.
+- Fixed bug where multiple editor instance of the same id could be produces in some specific integrations.
+
+## 4.3.12 - 2016-05-10
+
+### Fixed
+- Fixed bug where focus calls couldn't be made inside the editors PostRender event handler.
+- Fixed bug where some translations wouldn't work as expected due to a bug in editor.translate.
+- Fixed bug where the node change event could fire with a node out side the root of the editor.
+- Fixed bug where Chrome wouldn't properly present the keyboard paste clipboard details when paste was clicked.
+- Fixed bug where merged cells in tables couldn't be selected from right to left.
+- Fixed bug where insert row wouldn't properly update a merged cells rowspan property.
+- Fixed bug where the color input boxes preview field wasn't properly set on initialization.
+- Fixed bug where IME composition inside table cells wouldn't work as expected on IE 11.
+- Fixed so all shadow dom support is under and experimental flag due to flaky browser support.
+
+## 4.3.11 - 2016-04-25
+
+### Fixed
+- Fixed bug where it wasn't possible to insert empty blocks though the API unless they where padded.
+- Fixed bug where you couldn't type the Euro character on Windows.
+- Fixed bug where backspace/delete from a cE=false element to a text block didn't work properly.
+- Fixed bug where the text color default grid would render incorrectly.
+- Fixed bug where the codesample plugin wouldn't load the css in the editor for multiple editors.
+- Fixed so the codesample plugin textarea gets focused by default.
+
+## 4.3.10 - 2016-04-12
+
+### Fixed
+- Fixed bug where the key "y" on WebKit couldn't be entered due to conflict with keycode for F10 on keypress.
+
+## 4.3.9 - 2016-04-12
+
+### Added
+- Added support for focusing the contextual toolbars using keyboard.
+- Added keyboard support for slider UI controls. You can no increase/decrease using arrow keys.
+- Added url pattern matching for Dailymotion to media plugin. Patch contributed by Bertrand Darbon.
+- Added body_class to template plugin preview. Patch contributed by Milen Petrinski.
+- Added options to better override textcolor pickers with custom colors. Patch contributed by Xavier Boubert.
+- Added visual arrows to inline contextual toolbars so that they point to the element being active.
+
+### Changed
+- Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak, Polish languages used the first one for input.
+
+### Fixed
+- Fixed so toolbars for tables or other larger elements get better positioned below the scrollable viewport.
+- Fixed bug where it was possible to click links inside cE=false blocks.
+- Fixed bug where event targets wasn't properly handled in Safari Technical Preview.
+- Fixed bug where drag/drop text in FF 45 would make the editor caret invisible.
+- Fixed bug where the remove state wasn't properly set on editor instances when detected as clobbered.
+- Fixed bug where offscreen selection of some cE=false elements would render onscreen. Patch contributed by Steven Bufton
+- Fixed bug where enter would clone styles out side the root on editors inside a span. Patch contributed by ChristophKaser.
+- Fixed bug where drag/drop of images into the editor didn't work correctly in FF.
+- Fixed so the first item in panels for the imagetools dialog gets proper keyboard focus.
+
+## 4.3.8 - 2016-03-15
+
+### Fixed
+- Fixed bug where inserting HR at the end of a block element would produce an extra empty block.
+- Fixed bug where links would be clickable when readonly mode was enabled.
+- Fixed bug where the formatter would normalize to the wrong node on very specific content.
+- Fixed bug where some nested list items couldn't be indented properly.
+- Fixed bug where links where clickable in the preview dialog.
+- Fixed so the alt attribute doesn't get padded with an empty value by default.
+- Fixed so nested alignment works more correctly. You will now alter the alignment to the closest block parent.
+
+## 4.3.7 - 2016-03-02
+
+### Fixed
+- Fixed bug where incorrect icons would be rendered for imagetools edit and color levels.
+- Fixed bug where navigation using arrow keys inside a SelectBox didn't move up/down.
+- Fixed bug where the visualblocks plugin would render borders round internal UI elements.
+
+## 4.3.6 - 2016-03-01
+
+### Added
+- Added new paste_remember_plaintext_info option to allow a global disable of the plain text mode notification.
+- Added new PastePlainTextToggle event that fires when plain text mode toggles on/off.
+
+### Fixed
+- Fixed bug where it wasn't possible to select media elements since the drag logic would snap it to mouse cursor.
+- Fixed bug where it was hard to place the caret inside nested cE=true elements when the outer cE=false element was focused.
+- Fixed bug where editors wouldn't properly initialize if both selector and mode where used.
+- Fixed bug where IME input inside table cells would switch the IME off.
+- Fixed bug where selection inside the first table cell would cause the whole table cell to get selected.
+- Fixed bug where error handling of images being uploaded wouldn't properly handle faulty statuses.
+- Fixed bug where inserting contents before a HR would cause an exception to be thrown.
+- Fixed bug where copy/paste of Excel data would be inserted as an image.
+- Fixed caret position issues with copy/paste of inline block cE=false elements.
+- Fixed issues with various menu item focus bugs in Chrome. Where the focused menu bar item wasn't properly blurred.
+- Fixed so the notifications have a solid background since it would be hard to read if there where text under it.
+- Fixed so notifications gets animated similar to the ones used by dialogs.
+- Fixed so larger images that gets pasted is handled better.
+- Fixed so the window close button is more uniform on various platform and also increased it's hit area.
+
+## 4.3.5 - 2016-02-11
+
+Npm version bump due to package not being fully updated.
+
+## 4.3.4 - 2016-02-11
+
+### Added
+- Added new OpenWindow/CloseWindow events that gets fired when windows open/close.
+- Added new NewCell/NewRow events that gets fired when table cells/rows are created.
+- Added new Promise return value to tinymce.init makes it easier to handle initialization.
+
+### Fixed
+- Fixed various bugs with drag/drop of contentEditable:false elements.
+- Fixed bug where deleting of very specific nested list items would result in an odd list.
+- Fixed bug where lists would get merged with adjacent lists outside the editable inline root.
+- Fixed bug where MS Edge would crash when closing a dialog then clicking a menu item.
+- Fixed bug where table cell selection would add undo levels.
+- Fixed bug where table cell selection wasn't removed when inline editor where removed.
+- Fixed bug where table cell selection wouldn't work properly on nested tables.
+- Fixed bug where table merge menu would be available when merging between thead and tbody.
+- Fixed bug where table row/column resize wouldn't get properly removed when the editor was removed.
+- Fixed bug where Chrome would scroll to the editor if there where a empty hash value in document url.
+- Fixed bug where the cache suffix wouldn't work correctly with the importcss plugin.
+- Fixed bug where selection wouldn't work properly on MS Edge on Windows Phone 10.
+- Fixed so adjacent pre blocks gets joined into one pre block since that seems like the user intent.
+- Fixed so events gets properly dispatched in shadow dom. Patch provided by Nazar Mokrynskyi.
+
+### Removed
+- Removed the jQuery version the jQuery plugin is now moved into the main package.
+- Removed jscs from build process since eslint can now handle code style checking.
+
+## 4.3.3 - 2016-01-14
+
+### Added
+- Added new table_resize_bars configuration setting.  This setting allows you to disable the table resize bars.
+- Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR properties before open. Patch contributed by Brent Clintel.
+- Added new autolink_pattern setting to autolink plugin. Enables you to override the default autolink formats. Patch contributed by Ben Tiedt.
+- Added new charmap option that lets you override the default charmap of the charmap plugin.
+- Added new charmap_append option that lets you add new characters to the default charmap of the charmap plugin.
+- Added new insertCustomChar event that gets fired when a character is inserted by the charmap plugin.
+
+### Fixed
+- Fixed bug where table cells started with a superfluous &nbsp; in IE10+.
+- Fixed bug where table plugin would retain all BR tags when cells were merged.
+- Fixed bug where media plugin would strip underscores from youtube urls.
+- Fixed bug where IME input would fail on IE 11 if you typed within a table.
+- Fixed bug where double click selection of a word would remove the space before the word on insert contents.
+- Fixed bug where table plugin would produce exceptions when hovering tables with invalid structure.
+- Fixed bug where fullscreen wouldn't scroll back to it's original position when untoggled.
+- Fixed so the template plugins templates setting can be a function that gets a callback that can provide templates.
+
+## 4.3.2 - 2015-12-14
+
+### Fixed
+- Fixed bug where the resize bars for table cells were not affected by the object_resizing property.
+- Fixed bug where the contextual table toolbar would appear incorrectly if TinyMCE was initialized inline inside a table.
+- Fixed bug where resizing table cells did not fire a node change event or add an undo level.
+- Fixed bug where double click selection of text on IE 11 wouldn't work properly.
+- Fixed bug where codesample plugin would incorrectly produce br elements inside code elements.
+- Fixed bug where media plugin would strip dashes from youtube urls.
+- Fixed bug where it was possible to move the caret into the table resize bars.
+- Fixed bug where drag/drop into a cE=false element was possible on IE.
+
+## 4.3.1 - 2015-11-30
+
+### Fixed
+- Fixed so it's possible to disable the table inline toolbar by setting it to false or an empty string.
+- Fixed bug where it wasn't possible to resize some tables using the drag handles.
+- Fixed bug where unique id:s would clash for multiple editor instances and cE=false selections.
+- Fixed bug where the same plugin could be initialized multiple times.
+- Fixed bug where the table inline toolbars would be displayed at the same time as the image toolbars.
+- Fixed bug where the table selection rect wouldn't be removed when selecting another control element.
+
+## 4.3.0 - 2015-11-23
+
+### Added
+- Added new table column/row resize support. Makes it a lot more easy to resize the columns/rows in a table.
+- Added new table inline toolbar. Makes it easier to for example add new rows or columns to a table.
+- Added new notification API. Lets you display floating notifications to the end user.
+- Added new codesample plugin that lets you insert syntax highlighted pre elements into the editor.
+- Added new image_caption to images. Lets you create images with captions using a HTML5 figure/figcaption elements.
+- Added new live previews of embeded videos. Lets you play the video right inside the editor.
+- Added new setDirty method and "dirty" event to the editor. Makes it easier to track the dirty state change.
+- Added new setMode method to Editor instances that lets you dynamically switch between design/readonly.
+- Added new core support for contentEditable=false elements within the editor overrides the browsers broken behavior.
+
+### Changed
+- Rewrote the noneditable plugin to use the new contentEditable false core logic.
+
+### Fixed
+- Fixed so the dirty state doesn't set to false automatically when the undo index is set to 0.
+- Fixed the Selection.placeCaretAt so it works better on IE when the coordinate is between paragraphs.
+- Fixed bug where data-mce-bogus="all" element contents where counted by the word count plugin.
+- Fixed bug where contentEditable=false elements would be indented by the indent buttons.
+- Fixed bug where images within contentEditable=false would be selected in WebKit on mouse click.
+- Fixed bug in DOMUntils split method where the replacement parameter wouldn't work on specific cases.
+- Fixed bug where the importcss plugin would import classes from the skin content css file.
+- Fixed so all button variants have a wrapping span for it's text to make it easier to skin.
+- Fixed so it's easier to exit pre block using the arrow keys.
+- Fixed bug where listboxes with fix widths didn't render correctly.
+
+## 4.2.8 - 2015-11-13
+
+### Fixed
+- Fixed bug where it was possible to delete tables as the inline root element if all columns where selected.
+- Fixed bug where the UI buttons active state wasn't properly updated due to recent refactoring of that logic.
+
+## 4.2.7 - 2015-10-27
+
+### Fixed
+- Fixed bug where backspace/delete would remove all formats on the last paragraph character in WebKit/Blink.
+- Fixed bug where backspace within a inline format element with a bogus caret container would move the caret.
+- Fixed bug where backspace/delete on selected table cells wouldn't add an undo level.
+- Fixed bug where script tags embedded within the editor could sometimes get a mce- prefix prepended to them
+- Fixed bug where validate: false option could produce an error to be thrown from the Serialization step.
+- Fixed bug where inline editing of a table as the root element could let the user delete that table.
+- Fixed bug where inline editing of a table as the root element wouldn't properly handle enter key.
+- Fixed bug where inline editing of a table as the root element would normalize the selection incorrectly.
+- Fixed bug where inline editing of a list as the root element could let the user delete that list.
+- Fixed bug where inline editing of a list as the root element could let the user split that list.
+- Fixed bug where resize handles would be rendered on editable root elements such as table.
+
+## 4.2.6 - 2015-09-28
+
+### Added
+- Added capability to set request headers when using XHRs.
+- Added capability to upload local images automatically default delay is set to 30 seconds after editing images.
+- Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from execCommand.
+- Added Edge browser to saucelabs grunt task. Patch contributed by John-David Dalton.
+
+### Fixed
+- Fixed bug where blob uris not produced by tinymce would produce HTML invalid markup.
+- Fixed bug where selection of contents of a nearly empty editor in Edge would sometimes fail.
+- Fixed bug where color styles woudln't be retained on copy/paste in Blink/Webkit.
+- Fixed bug where the table plugin would throw an error when inserting rows after a child table.
+- Fixed bug where the template plugin wouldn't handle functions as variable replacements.
+- Fixed bug where undo/redo sometimes wouldn't work properly when applying formatting collapsed ranges.
+- Fixed bug where shift+delete wouldn't do a cut operation on Blink/WebKit.
+- Fixed bug where cut action wouldn't properly store the before selection bookmark for the undo level.
+- Fixed bug where backspace in side an empty list element on IE would loose editor focus.
+- Fixed bug where the save plugin wouldn't enable the buttons when a change occurred.
+- Fixed bug where Edge wouldn't initialize the editor if a document.domain was specified.
+- Fixed bug where enter key before nested images would sometimes not properly expand the previous block.
+- Fixed bug where the inline toolbars wouldn't get properly hidden when blurring the editor instance.
+- Fixed bug where Edge would paste Chinese characters on some Windows 10 installations.
+- Fixed bug where IME would loose focus on IE 11 due to the double trailing br bug fix.
+- Fixed bug where the proxy url in imagetools was incorrect. Patch contributed by Wong Ho Wang.
+
+## 4.2.5 - 2015-08-31
+
+### Added
+- Added fullscreen capability to embedded youtube and vimeo videos.
+
+### Fixed
+- Fixed bug where the uploadImages call didn't work on IE 10.
+- Fixed bug where image place holders would be uploaded by uploadImages call.
+- Fixed bug where images marked with bogus would be uploaded by the uploadImages call.
+- Fixed bug where multiple calls to uploadImages would result in decreased performance.
+- Fixed bug where pagebreaks were editable to imagetools patch contributed by Rasmus Wallin.
+- Fixed bug where the element path could cause too much recursion exception.
+- Fixed bug for domains containing ".min". Patch contributed by Loïc Février.
+- Fixed so validation of external links to accept a number after www. Patch contributed by Victor Carvalho.
+- Fixed so the charmap is exposed though execCommand. Patch contributed by Matthew Will.
+- Fixed so that the image uploads are concurrent for improved performance.
+- Fixed various grammar problems in inline documentation. Patches provided by nikolas.
+
+## 4.2.4 - 2015-08-17
+
+### Added
+- Added picture as a valid element to the HTML 5 schema. Patch contributed by Adam Taylor.
+
+### Fixed
+- Fixed bug where contents would be duplicated on drag/drop within the same editor.
+- Fixed bug where floating/alignment of images on Edge wouldn't work properly.
+- Fixed bug where it wasn't possible to drag images on IE 11.
+- Fixed bug where image selection on Edge would sometimes fail.
+- Fixed bug where contextual toolbars icons wasn't rendered properly when using the toolbar_items_size.
+- Fixed bug where searchreplace dialog doesn't get prefilled with the selected text.
+- Fixed bug where fragmented matches wouldn't get properly replaced by the searchreplace plugin.
+- Fixed bug where enter key wouldn't place the caret if was after a trailing space within an inline element.
+- Fixed bug where the autolink plugin could produce multiple links for the same text on Gecko.
+- Fixed bug where EditorUpload could sometimes throw an exception if the blob wasn't found.
+- Fixed xss issues with media plugin not properly filtering out some script attributes.
+
+## 4.2.3 - 2015-07-30
+
+### Fixed
+- Fixed bug where image selection wasn't possible on Edge due to incompatible setBaseAndExtend API.
+- Fixed bug where image blobs urls where not properly destroyed by the imagetools plugin.
+- Fixed bug where keyboard shortcuts wasn't working correctly on IE 8.
+- Fixed skin issue where the borders of panels where not visible on IE 8.
+
+## 4.2.2 - 2015-07-22
+
+### Fixed
+- Fixed bug where float panels were not being hidden on inline editor blur when fixed_toolbar_container config option was in use.
+- Fixed bug where combobox states wasn't properly updated if contents where updated without keyboard.
+- Fixed bug where pasting into textbox or combobox would move the caret to the end of text.
+- Fixed bug where removal of bogus span elements before block elements would remove whitespace between nodes.
+- Fixed bug where repositioning of inline toolbars where async and producing errors if the editor was removed from DOM to early. Patch by iseulde.
+- Fixed bug where element path wasn't working correctly. Patch contributed by iseulde.
+- Fixed bug where menus wasn't rendered correctly when custom images where added to a menu. Patch contributed by Naim Hammadi.
+
+## 4.2.1 - 2015-06-29
+
+### Fixed
+- Fixed bug where back/forward buttons in the browser would render blob images as broken images.
+- Fixed bug where Firefox would throw regexp to big error when replacing huge base64 chunks.
+- Fixed bug rendering issues with resize and context toolbars not being placed properly until next animation frame.
+- Fixed bug where the rendering of the image while cropping would some times not be centered correctly.
+- Fixed bug where listbox items with submenus would me selected as active.
+- Fixed bug where context menu where throwing an error when rendering.
+- Fixed bug where resize both option wasn't working due to resent addClass API change. Patch contributed by Jogai.
+- Fixed bug where a hideAll call for container rendered inline toolbars would throw an error.
+- Fixed bug where onclick event handler on combobox could cause issues if element.id was a function by some polluting libraries.
+- Fixed bug where listboxes wouldn't get proper selected sub menu item when using link_list or image_list.
+- Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls in toolbars.
+- Fixed so the imagetools dialog is adaptive for smaller screen sizes.
+
+## 4.2.0 - 2015-06-25
+
+### Added
+- Added new flat default skin to make the UI more modern.
+- Added new imagetools plugin, lets you crop/resize and apply filters to images.
+- Added new contextual toolbars support to the API lets you add floating toolbars for specific CSS selectors.
+- Added new promise feature fill as tinymce.util.Promise.
+- Added new built in image upload feature lets you upload any base64 encoded image within the editor as files.
+
+### Fixed
+- Fixed bug where resize handles would appear in the right position in the wrong editor when switching between resizable content in different inline editors.
+- Fixed bug where tables would not be inserted in inline mode due to previous float panel fix.
+- Fixed bug where floating panels would remain open when focus was lost on inline editors.
+- Fixed bug where cut command on Chrome would thrown a browser security exception.
+- Fixed bug where IE 11 sometimes would report an incorrect size for images in the image dialog.
+- Fixed bug where it wasn't possible to remove inline formatting at the end of block elements.
+- Fixed bug where it wasn't possible to delete table cell contents when cell selection was vertical.
+- Fixed bug where table cell wasn't emptied from block elements if delete/backspace where pressed in empty cell.
+- Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac when selecting to start/end of line.
+- Fixed bug where removal of bogus elements would sometimes remove whitespace between nodes.
+- Fixed bug where the resize handles wasn't updated when the main window was resized.
+- Fixed so script elements gets removed by default to prevent possible XSS issues in default config implementations.
+- Fixed so the UI doesn't need manual reflows when using non native layout managers.
+- Fixed so base64 encoded images doesn't slow down the editor on modern browsers while editing.
+- Fixed so all UI elements uses touch events to improve mobile device support.
+- Removed the touch click quirks patch for iOS since it did more harm than good.
+- Removed the non proportional resize handles since. Unproportional resize can still be done by holding the shift key.
+
+## 4.1.10 - 2015-05-05
+
+### Fixed
+- Fixed bug where plugins loaded with compat3x would sometimes throw errors when loading using the jQuery version.
+- Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink due to recent Quriks fix.
+- Fixed bug where the editor wouldn't work properly on IE 12 due to some required browser sniffing.
+- Fixed bug where formatting shortcut keys where interfering with Mac OS X screenshot keys.
+- Fixed bug where the caret wouldn't move to the next/previous line boundary on Cmd+Left/Right on Gecko.
+- Fixed bug where it wasn't possible to remove formats from very specific nested contents.
+- Fixed bug where undo levels wasn't produced when typing letters using the shift or alt+ctrl modifiers.
+- Fixed bug where the dirty state wasn't properly updated when typing using the shift or alt+ctrl modifiers.
+- Fixed bug where an error would be thrown if an autofocused editor was destroyed quickly after its initialization. Patch provided by thorn0.
+- Fixed issue with dirty state not being properly updated on redo operation.
+- Fixed issue with entity decoder not handling incorrectly written numeric entities.
+- Fixed issue where some PI element values wouldn't be properly encoded.
+
+## 4.1.9 - 2015-03-10
+
+### Fixed
+- Fixed bug where indentation wouldn't work properly for non list elements.
+- Fixed bug with image plugin not pulling the image dimensions out correctly if a custom document_base_url was used.
+- Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on Windows. New shortcuts is ctrl+shift+[1-9].
+- Fixed bug with removing formatting on nodes in inline mode would sometimes include nodes outside the editor body.
+- Fixed bug where extra nbsp:s would be inserted when you replaced a word surrounded by spaces using insertContent.
+- Fixed bug with pasting from Google Docs would produce extra strong elements and line feeds.
+
+## 4.1.8 - 2015-03-05
+
+### Added
+- Added new html5 sizes attribute to img elements used together with srcset.
+- Added new elementpath option that makes it possible to disable the element path but keep the statusbar.
+- Added new option table_style_by_css for the table plugin to set table styling with css rather than table attributes.
+- Added new link_assume_external_targets option to prompt the user to prepend http:// prefix if the supplied link does not contain a protocol prefix.
+- Added new image_prepend_url option to allow a custom base path/url to be added to images.
+- Added new table_appearance_options option to make it possible to disable some options.
+- Added new image_title option to make it possible to alter the title of the image, disabled by default.
+
+### Fixed
+- Fixed bug where selection starting from out side of the body wouldn't produce a proper selection range on IE 11.
+- Fixed bug where pressing enter twice before a table moves the cursor in the table and causes a javascript error.
+- Fixed bug where advanced image styles were not respected.
+- Fixed bug where the less common Shift+Delete didn't produce a proper cut operation on WebKit browsers.
+- Fixed bug where image/media size constrain logic would produce NaN when handling non number values.
+- Fixed bug where internal classes where removed by the removeformat command.
+- Fixed bug with creating links table cell contents with a specific selection would throw a exceptions on WebKit/Blink.
+- Fixed bug where valid_classes option didn't work as expected according to docs. Patch provided by thorn0.
+- Fixed bug where jQuery plugin would patch the internal methods multiple times. Patch provided by Drew Martin.
+- Fixed bug where backspace key wouldn't delete the current selection of newly formatted content.
+- Fixed bug where type over of inline formatting elements wouldn't properly keep the format on WebKit/Blink.
+- Fixed bug where selection needed to be properly normalized on modern IE versions.
+- Fixed bug where Command+Backspace didn't properly delete the whole line of text but the previous word.
+- Fixed bug where UI active states wheren't properly updated on IE if you placed caret within the current range.
+- Fixed bug where delete/backspace on WebKit/Blink would remove span elements created by the user.
+- Fixed bug where delete/backspace would produce incorrect results when deleting between two text blocks with br elements.
+- Fixed bug where captions where removed when pasting from MS Office.
+- Fixed bug where lists plugin wouldn't properly remove fully selected nested lists.
+- Fixed bug where the ttf font used for icons would throw an warning message on Gecko on Mac OS X.
+- Fixed a bug where applying a color to text did not update the undo/redo history.
+- Fixed so shy entities gets displayed when using the visualchars plugin.
+- Fixed so removeformat removes ins/del by default since these might be used for strikethough.
+- Fixed so multiple language packs can be loaded and added to the global I18n data structure.
+- Fixed so transparent color selection gets treated as a normal color selection. Patch contributed by Alexander Hofbauer.
+- Fixed so it's possible to disable autoresize_overflow_padding, autoresize_bottom_margin options by setting them to false.
+- Fixed so the charmap plugin shows the description of the character in the dialog. Patch contributed by Jelle Hissink.
+- Removed address from the default list of block formats since it tends to be missused.
+- Fixed so the pre block format is called preformatted to make it more verbose.
+- Fixed so it's possible to context scope translation strings this isn't needed most of the time.
+- Fixed so the max length of the width/height input fields of the media dialog is 5 instead of 3.
+- Fixed so drag/dropped contents gets properly processed by paste plugin since it's basically a paste. Patch contributed by Greg Fairbanks.
+- Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9] since these are for switching tabs in the browsers.
+- Fixed so "u" doesn't get converted into a span element by the legacy input filter. Since this is now a valid HTML5 element.
+- Fixed font families in order to provide appropriate web-safe fonts.
+
+## 4.1.7 - 2014-11-27
+
+### Added
+- Added HTML5 schema support for srcset, source and picture. Patch contributed by mattheu.
+- Added new cache_suffix setting to enable cache busting by producing unique urls.
+- Added new paste_convert_word_fake_lists option to enable users to disable the fake lists convert logic.
+
+### Fixed
+- Fixed so advlist style changes adds undo levels for each change.
+- Fixed bug where WebKit would sometimes produce an exception when the autolink plugin where looking for URLs.
+- Fixed bug where IE 7 wouldn't be rendered properly due to aggressive css compression.
+- Fixed bug where DomQuery wouldn't accept window as constructor element.
+- Fixed bug where the color picker in 3.x dialogs wouldn't work properly. Patch contributed by Callidior.
+- Fixed bug where the image plugin wouldn't respect the document_base_url.
+- Fixed bug where the jQuery plugin would fail to append to elements named array prototype names.
+
+## 4.1.6 - 2014-10-08
+
+### Changed
+- Replaced jake with grunt since it is more mainstream and has better plugin support.
+
+### Fixed
+- Fixed bug with clicking on the scrollbar of the iframe would cause a JS error to be thrown.
+- Fixed bug where null would produce an exception if you passed it to selection.setRng.
+- Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you switched tabs in the browser.
+- Fixed bug where pasting empty cells from Excel would result in a broken table.
+- Fixed bug where it wasn't possible to switch back to default list style type.
+- Fixed issue where the select all quirk fix would fire for other modifiers than Ctrl/Cmd combinations.
+
+
+## 4.1.5 - 2014-09-09
+
+### Fixed
+- Fixed bug where sometimes the resize rectangles wouldn't properly render on images on WebKit/Blink.
+- Fixed bug in list plugin where delete/backspace would merge empty LI elements in lists incorrectly.
+- Fixed bug where empty list elements would result in empty LI elements without it's parent container.
+- Fixed bug where backspace in empty caret formatted element could produce an type error exception of Gecko.
+- Fixed bug where lists pasted from word with a custom start index above 9 wouldn't be properly handled.
+- Fixed bug where tabfocus plugin would tab out of the editor instance even if the default action was prevented.
+- Fixed bug where tabfocus wouldn't tab properly to other adjacent editor instances.
+- Fixed bug where the DOMUtils setStyles wouldn't properly removed or update the data-mce-style attribute.
+- Fixed bug where dialog select boxes would be placed incorrectly if document.body wasn't statically positioned.
+- Fixed bug where pasting would sometimes scroll to the top of page if the user was using the autoresize plugin.
+- Fixed bug where caret wouldn't be properly rendered by Chrome when clicking on the iframes documentElement.
+- Fixed so custom images for menubutton/splitbutton can be provided. Patch contributed by Naim Hammadi.
+- Fixed so the default action of windows closing can be prevented by blocking the default action of the close event.
+- Fixed so nodeChange and focus of the editor isn't automatically performed when opening sub dialogs.
+
+## 4.1.4 - 2014-08-21
+
+### Added
+- Added new media_filter_html option to media plugin that blocks any conditional comments, scripts etc within a video element.
+- Added new content_security_policy option allows you to set custom policy for iframe contents. Patch contributed by Francois Chagnon.
+
+### Fixed
+- Fixed bug where activate/deactivate events wasn't firing properly when switching between editors.
+- Fixed bug where placing the caret on iOS was difficult due to a WebKit bug with touch events.
+- Fixed bug where the resize helper wouldn't render properly on older IE versions.
+- Fixed bug where resizing images inside tables on older IE versions would sometimes fail depending mouse position.
+- Fixed bug where editor.insertContent would produce an exception when inserting select/option elements.
+- Fixed bug where extra empty paragraphs would be produced if block elements where inserted inside span elements.
+- Fixed bug where the spellchecker menu item wouldn't be properly checked if spell checking was started before it was rendered.
+- Fixed bug where the DomQuery filter function wouldn't remove non elements from collection.
+- Fixed bug where document with custom document.domain wouldn't properly render the editor.
+- Fixed bug where IE 8 would throw exception when trying to enter invalid color values into colorboxes.
+- Fixed bug where undo manager could incorrectly add an extra undo level when custom resize handles was removed.
+- Fixed bug where it wouldn't be possible to alter cell properties properly on table cells on IE 8.
+- Fixed so the color picker button in table dialog isn't shown unless you include the colorpicker plugin or add your own custom color picker.
+- Fixed so activate/deactivate events fire when windowManager opens a window since.
+- Fixed so the table advtab options isn't separated by an underscore to normalize naming with image_advtab option.
+- Fixed so the table cell dialog has proper padding when the advanced tab in disabled.
+
+## 4.1.3 - 2014-07-29
+
+### Added
+- Added event binding logic to tinymce.util.XHR making it possible to override headers and settings before any request is made.
+
+### Fixed
+- Fixed bug where drag events wasn't fireing properly on older IE versions since the event handlers where bound to document.
+- Fixed bug where drag/dropping contents within the editor on IE would force the contents into plain text mode even if it was internal content.
+- Fixed bug where IE 7 wouldn't open menus properly due to a resize bug in the browser auto closing them immediately.
+- Fixed bug where the DOMUtils getPos logic wouldn't produce a valid coordinate inside the body if the body was positioned non static.
+- Fixed bug where the element path and format state wasn't properly updated if you had the wordcount plugin enabled.
+- Fixed bug where a comment at the beginning of source would produce an exception in the formatter logic.
+- Fixed bug where setAttrib/getAttrib on null would throw exception together with any hooked attributes like style.
+- Fixed bug where table sizes wasn't properly retained when copy/pasting on WebKit/Blink.
+- Fixed bug where WebKit/Blink would produce colors in RGB format instead of the forced HEX format when deleting contents.
+- Fixed bug where the width attribute wasn't updated on tables if you changed the size inside the table dialog.
+- Fixed bug where control selection wasn't properly handled when the caret was placed directly after an image.
+- Fixed bug where selecting the contents of table cells using the selection.select method wouldn't place the caret properly.
+- Fixed bug where the selection state for images wasn't removed when placing the caret right after an image on WebKit/Blink.
+- Fixed bug where all events wasn't properly unbound when and editor instance was removed or destroyed by some external innerHTML call.
+- Fixed bug where it wasn't possible or very hard to select images on iOS when the onscreen keyboard was visible.
+- Fixed so auto_focus can take a boolean argument this will auto focus the last initialized editor might be useful for single inits.
+- Fixed so word auto detect lists logic works better for faked lists that doesn't have specific markup.
+- Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we optimized that event to fire less often.
+
+### Removed
+- Removed the finish menu item from spellchecker menu since it's redundant you can stop spellchecking by toggling menu item or button.
+
+## 4.1.2 - 2014-07-15
+
+### Added
+- Added offset/grep to DomQuery class works basically the same as it's jQuery equivalent.
+
+### Fixed
+- Fixed bug where backspace/delete or setContent with an empty string would remove header data when using the fullpage plugin.
+- Fixed bug where tinymce.remove with a selector not matching any editors would remove all editors.
+- Fixed bug where resizing of the editor didn't work since the theme was calling setStyles instead of setStyle.
+- Fixed bug where IE 7 would fail to append html fragments to iframe document when using DomQuery.
+- Fixed bug where the getStyle DOMUtils method would produce an exception if it was called with null as it's element.
+- Fixed bug where the paste plugin would remove the element if the none of the paste_webkit_styles rules matched the current style.
+- Fixed bug where contextmenu table items wouldn't work properly on IE since it would some times fire an incorrect selection change.
+- Fixed bug where the padding/border values wasn't used in the size calculation for the body size when using autoresize. Patch contributed by Matt Whelan.
+- Fixed bug where conditional word comments wouldn't be properly removed when pasting plain text.
+- Fixed bug where resizing would sometime fail on IE 11 when the mouseup occurred inside the resizable element.
+- Fixed so the iframe gets initialized without any inline event handlers for better CSP support. Patch contributed by Matt Whelan.
+- Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this resolves the document context bug.
+
+## 4.1.1 - 2014-07-08
+
+### Fixed
+- Fixed bug where pasting plain text on some WebKit versions would result in an empty line.
+- Fixed bug where resizing images inside tables on IE 11 wouldn't work properly.
+- Fixed bug where IE 11 would sometimes throw "Invalid argument" exception when editor contents was set to an empty string.
+- Fixed bug where document.activeElement would throw exceptions on IE 9 when that element was hidden or removed from dom.
+- Fixed bug where WebKit/Blink sometimes produced br elements with the Apple-interchange-newline class.
+- Fixed bug where table cell selection wasn't properly removed when copy/pasting table cells.
+- Fixed bug where pasting nested list items from Word wouldn't produce proper semantic nested lists.
+- Fixed bug where right clicking using the contextmenu plugin on WebKit/Blink on Mac OS X would select the target current word or line.
+- Fixed bug where it wasn't possible to alter table cell properties on IE 8 using the context menu.
+- Fixed bug where the resize helper wouldn't be correctly positioned on older IE versions.
+- Fixed bug where fullpage plugin would produce an error if you didn't specify a doctype encoding.
+- Fixed bug where anchor plugin would get the name/id of the current element even if it wasn't anchor element.
+- Fixed bug where visual aids for tables wouldn't be properly disabled when changing the border size.
+- Fixed bug where some control selection events wasn't properly fired on older IE versions.
+- Fixed bug where table cell selection on older IE versions would prevent resizing of images.
+- Fixed bug with paste_data_images paste option not working properly on modern IE versions.
+- Fixed bug where custom elements with underscores in the name wasn't properly parsed/serialized.
+- Fixed bug where applying inline formats to nested list elements would produce an incorrect formatting result.
+- Fixed so it's possible to hide items from elements path by using preventDefault/stopPropagation.
+- Fixed so inline mode toolbar gets rendered right aligned if the editable element positioned to the documents right edge.
+- Fixed so empty inline elements inside empty block elements doesn't get removed if configured to be kept intact.
+- Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports selectors/elements/filters etc.
+- Fixed so legacyoutput plugin overrides fontselect and fontsizeselect controls and handles font elements properly.
+
+## 4.1.0 - 2014-06-18
+
+### Added
+- Added new file_picker_callback option to replace the old file_browser_callback the latter will still work though.
+- Added new custom colors to textcolor plugin will be displayed if a color picker is provided also shows the latest colors.
+- Added new color_picker_callback option to enable you to add custom color pickers to the editor.
+- Added new advanced tabs to table/cell/row dialogs to enable you to select colors for border/background.
+- Added new colorpicker plugin that lets you select colors from a hsv color picker.
+- Added new tinymce.util.Color class to handle color parsing and converting.
+- Added new colorpicker UI widget element lets you add a hsv color picker to any form/window.
+- Added new textpattern plugin that allows you to use markdown like text patterns to format contents.
+- Added new resize helper element that shows the current width & height while resizing.
+- Added new "once" method to Editor and EventDispatcher enables since callback execution events.
+- Added new jQuery like class under tinymce.dom.DomQuery it's exposed on editor instances (editor.$) and globally under (tinymce.$).
+
+### Fixed
+- Fixed so the default resize method for images are proportional shift/ctrl can be used to make an unproportional size.
+- Fixed bug where the image_dimensions option of the image plugin would cause exceptions when it tried to update the size.
+- Fixed bug where table cell dialog class field wasn't properly updated when editing an a table cell with an existing class.
+- Fixed bug where Safari on Mac would produce webkit-fake-url for pasted images so these are now removed.
+- Fixed bug where the nodeChange event would get fired before the selection was changed when clicking inside the current selection range.
+- Fixed bug where valid_classes option would cause exception when it removed internal prefixed classes like mce-item-.
+- Fixed bug where backspace would cause navigation in IE 8 on an inline element and after a caret formatting was applied.
+- Fixed so placeholder images produced by the media plugin gets selected when inserted/edited.
+- Fixed so it's possible to drag in images when the paste_data_images option is enabled. Might be useful for mail clients.
+- Fixed so images doesn't get a width/height applied if the image_dimensions option is set to false useful for responsive contents.
+- Fixed so it's possible to pass in an optional arguments object for the nodeChanged function to be passed to all nodechange event listeners.
+- Fixed bug where media plugin embed code didn't update correctly.
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/icons/default/icons.min.js b/projects/editor/src/assets/tinymce/js/tinymce/icons/default/icons.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..2cf9ef86da30d2cf9848bb281e22b6a01531c524
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/icons/default/icons.min.js
@@ -0,0 +1 @@
+tinymce.IconManager.add("default",{icons:{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>',"border-style":'<svg width="24" height="24"><g fill-rule="evenodd"><rect width="18" height="2" x="3" y="6" rx="1"/><rect width="2.8" height="2" x="3" y="16" rx="1"/><rect width="2.8" height="2" x="6.8" y="16" rx="1"/><rect width="2.8" height="2" x="10.6" y="16" rx="1"/><rect width="2.8" height="2" x="14.4" y="16" rx="1"/><rect width="2.8" height="2" x="18.2" y="16" rx="1"/><rect width="8" height="2" x="3" y="11" rx="1"/><rect width="8" height="2" x="13" y="11" rx="1"/></g></svg>',"border-width":'<svg width="24" height="24"><g fill-rule="evenodd"><rect width="18" height="5" x="3" y="5" rx="1"/><rect width="18" height="3.5" x="3" y="11.5" rx="1"/><rect width="18" height="2" x="3" y="17" rx="1"/></g></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"cell-background-color":'<svg width="24" height="24"><path d="M15.7 2l1.6 1.6-2.7 2.6 5.9 5.8c.7.7.7 1.7 0 2.4l-6.3 6.1a1.7 1.7 0 01-2.4 0l-6.3-6.1c-.7-.7-.7-1.7 0-2.4L15.7 2zM18 12l-4.5-4L9 12h9zM4 16s2 2.4 2 3.8C6 21 5.1 22 4 22s-2-1-2-2.2C2 18.4 4 16 4 16z"/></svg>',"cell-border-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M5 13v5h2v2H5a2 2 0 01-2-2v-5h2zm8-7V4h6a2 2 0 012 2h-8z" opacity=".2"/><path fill-rule="nonzero" d="M13 4v2H5v7H3V6c0-1.1.9-2 2-2h8zm-2.6 14.1l.1-.1.1.1.2.3.2.2.2.2c.4.6.8 1.2.8 1.7 0 .8-.7 1.5-1.5 1.5S9 21.3 9 20.5c0-.5.4-1.1.8-1.7l.2-.2.2-.2.2-.3z"/><path d="M13 11l-2 2H5v-2h6V6h2z"/><path fill-rule="nonzero" d="M18.4 8l1 1-1.8 1.9 4 4c.5.4.5 1.1 0 1.6l-4.3 4.2a1.2 1.2 0 01-1.6 0l-4.4-4.2c-.4-.5-.4-1.2 0-1.7l7-6.8zm1.6 7l-3-3-3 3h6z"/></g></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',"cut-column":'<svg width="24" height="24"><path fill-rule="evenodd" d="M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0110.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 012 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 017 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 00-.7.4v.1a2.8 2.8 0 00-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 00.8-.3 2.4 2.4 0 00.7-.7 2.5 2.5 0 00.3-.8 1.5 1.5 0 000-.8 1 1 0 00-.2-.4 1 1 0 00-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 00-.5.3 1 1 0 00-.2.5v.7a2.5 2.5 0 00.3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 000-.8 2.6 2.6 0 00-.3-.8A2.5 2.5 0 007.7 6l-.4-.1H7z"/></svg>',"cut-row":'<svg width="24" height="24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 00-.8.4 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3L9 18V18l.4-.4.2-.4.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2h-.5zm7 0H15a1 1 0 00-.4.3 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4a2.8 2.8 0 00.5.7h.1a2.8 2.8 0 00.8.6l.4.1h.7l.5-.2.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',"duplicate-column":'<svg width="24" height="24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',"duplicate-row":'<svg width="24" height="24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>',export:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M14.4 3L18 7v1h-5V5H7v14h9a1 1 0 012 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5z"/><path d="M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3z"/><path d="M16.4 9.2a1 1 0 011.4.2l2.4 3.6-2.4 3.6a1 1 0 01-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 01.2-1.4z"/></g></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',format:'<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',language:'<svg width="24" height="24"><path d="M12 3a9 9 0 110 18 9 9 0 010-18zm4.3 13.3c-.5 1-1.2 2-2 2.9a7.5 7.5 0 003.2-2.1l-.2-.2a6 6 0 00-1-.6zm-8.6 0c-.5.2-.9.5-1.2.8.9 1 2 1.7 3.2 2a10 10 0 01-2-2.8zm3.6-.8c-.8 0-1.6.1-2.2.3.5 1 1.2 1.9 2.1 2.7zm1.5 0v3c.9-.8 1.6-1.7 2.1-2.7-.6-.2-1.4-.3-2.1-.3zm-6-2.7H4.5c.2 1 .5 2.1 1 3h.3l1.3-1a10 10 0 01-.3-2zm12.7 0h-2.3c0 .7-.1 1.4-.3 2l1.6 1.1c.5-1 .9-2 1-3.1zm-3.8 0h-3V14c1 0 2 .1 2.7.4.2-.5.3-1 .3-1.6zm-4.4 0h-3l.3 1.6c.8-.3 1.7-.4 2.7-.4v-1.3zm-5.5-5c-.7 1-1.1 2.2-1.3 3.5h2.3c0-1 .2-1.8.5-2.6l-1.5-1zm2.9 1.4v.1c-.2.6-.4 1.3-.4 2h3V9.4c-1 0-1.8-.1-2.6-.3zm6.6 0h-.1l-2.4.3v1.8h3l-.5-2.1zm3-1.4l-.3.1-1.3.8c.3.8.5 1.6.5 2.6h2.3a7.5 7.5 0 00-1.3-3.5zm-9 0l2 .2V5.5a9 9 0 00-2 2.2zm3.5-2.3V8c.6 0 1.3 0 1.9-.2a9 9 0 00-2-2.3zm-3-.7h-.1c-1.1.4-2.1 1-3 1.8l1.2.7a10 10 0 011.9-2.5zm4.4 0l.1.1a10 10 0 011.8 2.4l1.1-.7a7.5 7.5 0 00-3-1.8z"/></svg>',"line-height":'<svg width="24" height="24"><path d="M21 5a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zM7 3.6l3.7 3.7a1 1 0 01-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 011.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 011.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 01-1.3 0h-.1a1 1 0 010-1.3v-.1L7 3.6z"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',paragraph:'<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>',"paste-column-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-column-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-caption":'<svg width="24" height="24"><g fill-rule="nonzero"><rect width="12" height="2" x="3" y="4" rx="1"/><path d="M19 8a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2v-8c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></g></svg>',"table-cell-classes":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M13 4v9H3V6c0-1.1.9-2 2-2h8zm-2 2H5v5h6V6z"/><path fill-rule="nonzero" d="M13 4h6a2 2 0 012 2v7h-8v-2h6V6h-6V4z" opacity=".2"/><path d="M18 20l-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3 .2-2.3 2 .7 3z"/><path fill-rule="nonzero" d="M3 13v5c0 1.1.9 2 2 2h8v-7h-2v5H5v-5H3z" opacity=".2"/></g></svg>',"table-cell-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>',"table-classes":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v7h-8v7H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8-7h-6v5h6V6zm-8 0H5v5h6V6z"/><path d="M18 20l-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3 .2-2.3 2 .7 3z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',"table-delete-row":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',"table-delete-table":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>',"table-insert-column-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>',"table-row-numbering-rtl":'<svg width="24" height="24"><path d="M6 4a2 2 0 00-2 2v13c0 1.1.9 2 2 2h12a2 2 0 002-2V6a2 2 0 00-2-2H6zm0 12h8v3H6v-3zm11 0c.6 0 1 .4 1 1v1a1 1 0 01-2 0v-1c0-.6.4-1 1-1zM6 11h8v3H6v-3zm11 0c.6 0 1 .4 1 1v1a1 1 0 01-2 0v-1c0-.6.4-1 1-1zM6 6h8v3H6V6zm11 0c.6 0 1 .4 1 1v1a1 1 0 11-2 0V7c0-.6.4-1 1-1z"/></svg>',"table-row-numbering":'<svg width="24" height="24"><path d="M18 4a2 2 0 012 2v13a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2h12zm0 12h-8v3h8v-3zM7 16a1 1 0 00-1 1v1a1 1 0 002 0v-1c0-.6-.4-1-1-1zm11-5h-8v3h8v-3zM7 11a1 1 0 00-1 1v1a1 1 0 002 0v-1c0-.6-.4-1-1-1zm11-5h-8v3h8V6zM7 6a1 1 0 00-1 1v1a1 1 0 102 0V7c0-.6-.4-1-1-1z"/></svg>',"table-row-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',"table-split-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>',table:'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',"vertical-align":'<svg width="24" height="24"><g fill-rule="nonzero"><rect width="18" height="2" x="3" y="11" rx="1"/><path d="M12 2c.6 0 1 .4 1 1v4l2-1.3a1 1 0 011.2 1.5l-.1.1-4.1 3-4-3a1 1 0 011-1.7l2 1.5V3c0-.6.4-1 1-1zm0 11.8l4 2.9a1 1 0 01-1 1.7l-2-1.5V21c0 .5-.4 1-.9 1H12a1 1 0 01-1-1v-4l-2 1.3a1 1 0 01-1.2-.1l-.1-.1a1 1 0 01.1-1.3l.1-.1 4.1-3z"/></g></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>'}});
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/jquery.tinymce.min.js b/projects/editor/src/assets/tinymce/js/tinymce/jquery.tinymce.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..46e24d2684c7c77348646bd3e78b5f8520f57999
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/jquery.tinymce.min.js
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+/**
+ * Jquery integration plugin.
+ *
+ * @class tinymce.core.JqueryIntegration
+ * @private
+ */
+!function(){function f(){
+// Reference to tinymce needs to be lazily evaluated since tinymce
+// might be loaded through the compressor or other means
+return d.tinymce}var p,c,u,s=[],d="undefined"!=typeof global?global:window,m=d.jQuery;m.fn.tinymce=function(o){var e,t,i,n,l=this,r="";
+// No match then just ignore the call
+return l.length?
+// Get editor instance
+o?(l.css("visibility","hidden"),
+// Load TinyMCE on demand, if we need to
+d.tinymce||c||!(e=o.script_url)?
+// Delay the init call until tinymce is loaded
+1===c?s.push(a):a():(c=1,t=e.substring(0,e.lastIndexOf("/")),
+// Check if it's a dev/src version they want to load then
+// make sure that all plugins, themes etc are loaded in source mode as well
+-1!=e.indexOf(".min")&&(r=".min"),
+// Setup tinyMCEPreInit object this will later be used by the TinyMCE
+// core script to locate other resources like CSS files, dialogs etc
+// You can also predefined a tinyMCEPreInit object and then it will use that instead
+d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r},
+// url contains gzip then we assume it's a compressor
+-1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
+// Check if compressor script is already loaded otherwise setup a basic one
+d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){function n(e){f().ScriptLoader.markDone(f().baseURI.toAbsolute(e))}
+// Add core languages
+n("langs/"+i+".js"),
+// Add themes with languages
+n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
+// Add plugins with languages
+m.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}})),(n=document.createElement("script")).type="text/javascript",n.onload=n.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(n.readyState)||(f().dom.Event.domLoaded=1,c=2,
+// Execute callback after mainscript has been loaded and before the initialization occurs
+o.script_loaded&&o.script_loaded(),a(),m.each(s,function(e,t){t()}))},n.src=e,document.body.appendChild(n)),l):f()?f().get(l[0].id):null:l;function a(){var a=[],c=0;
+// Apply patches to the jQuery object, only once
+u||(v(),u=!0),
+// Create an editor instance for each matched node
+l.each(function(e,t){var n,i=t.id,r=o.oninit;
+// Generate unique id for target element if needed
+i||(t.id=i=f().DOM.uniqueId()),
+// Only init the editor once
+f().get(i)||(
+// Create editor instance and render it
+n=f().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
+// Run this if the oninit setting is defined
+// this logic will fire the oninit callback ones each
+// matched editor instance is initialized
+r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:f().resolve(t.replace(/\.\w+$/,"")),t=f().resolve(t)),
+// Call the oninit function with the object
+t.apply(e||f(),a))}))}),
+// Render the editor instances in a separate loop since we
+// need to have the full editors array used in the onInit calls
+m.each(a,function(e,t){t.render()})}},
+// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
+// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
+m.extend(m.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=f().get(e.id))&&t.editorManager===f())}});
+// This function patches internal jQuery functions so that if
+// you for example remove an div element containing an editor it's
+// automatically destroyed by the TinyMCE API
+var v=function(){function r(e){
+// If the function is remove
+"remove"===e&&this.each(function(e,t){var n=u(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=f().get(t.id.replace(/_parent$/,""));n&&n.remove()})}function o(i){var e,t=this;
+// Handle set value
+/*jshint eqnull:true */if(null!=i)r.call(t),
+// Saves the contents before get/set value of textarea/div
+t.each(function(e,t){var n;(n=f().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=f().get(t[0].id)))return e.getContent()}function l(e){return e&&e.length&&d.tinymce&&e.is(":tinymce")}
+// Removes any child editor instances by looking for editor wrapper elements
+var u=function(e){var t=null;return e&&e.id&&d.tinymce?f().get(e.id):t},s={};
+// Loads or saves contents from/to textarea if the value
+// argument is defined it will set the TinyMCE internal contents
+// Patch some setter/getter functions these will
+// now be able to set/get the contents of editor instances for
+// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
+m.each(["text","html","val"],function(e,t){var a=s[t]=m.fn[t],c="text"===t;m.fn[t]=function(e){var t=this;if(!l(t))return a.apply(t,arguments);if(e!==p)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
+var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=u(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(m(t),r)}),i}}),
+// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
+m.each(["append","prepend"],function(e,t){var n=s[t]=m.fn[t],r="prepend"===t;m.fn[t]=function(i){var e=this;return l(e)?i!==p?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=u(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
+// Makes sure that the editor instance gets properly destroyed when the parent element is removed
+m.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=m.fn[t];m.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=m.fn.attr,
+// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
+m.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!l(n))return s.attr.apply(n,i);if(t!==p)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
+var r=n[0],a=u(r);return a?a.getContent({save:!0}):s.attr.apply(m(r),i)}}}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/langs/README.md b/projects/editor/src/assets/tinymce/js/tinymce/langs/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a52bf03f9a3ae977eaca0d3f4c406199cc15b023
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/langs/README.md
@@ -0,0 +1,3 @@
+This is where language files should be placed.
+
+Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/license.txt b/projects/editor/src/assets/tinymce/js/tinymce/license.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b17fc90494cf7573951fdbcccc9d2df35ad95797
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/license.txt
@@ -0,0 +1,504 @@
+      GNU LESSER GENERAL PUBLIC LICENSE
+           Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+      GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+          NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/advlist/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/advlist/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bb83a08a4a3ae6cbb1b7c7e29c425f3fd5da965
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/advlist/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function f(t,e,n){t.execCommand("UL"===e?"InsertUnorderedList":"InsertOrderedList",!1,!1===n?null:{"list-style-type":n})}function i(t){return function(){return t}}function t(t){return t}function e(){return s}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=i(!1),l=i(!0),s={fold:function(t,e){return t()},isSome:u,isNone:l,getOr:t,getOrThunk:r,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:r,map:e,each:function(){},bind:e,exists:u,forall:l,filter:function(){return s},toArray:function(){return[]},toString:i("none()")};function r(t){return t()}function d(t){return t&&/^(TH|TD)$/.test(t.nodeName)}function m(c,a){return function(s){function t(t){var e,n,r,o,i,u,l;s.setActive((e=c,r=a,i=-1!==(o=function(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n;return-1}((n=t).parents,d))?n.parents.slice(0,o):n.parents,0<(u=g.grep(i,(l=e,function(t){return t&&/^(OL|UL|DL)$/.test(t.nodeName)&&(e=t,l.$.contains(l.getBody(),e));var e}))).length&&u[0].nodeName===r))}return c.on("NodeChange",t),function(){return c.off("NodeChange",t)}}}function c(t,e,n,r,o,i){var u,l,s,c,a,d;1<i.length?(c=r,a=o,d=i,(s=t).ui.registry.addSplitButton(e,{tooltip:n,icon:"OL"===a?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(t){t(g.map(d,function(t){return{type:"choiceitem",value:"default"===t?"":t,icon:"list-"+("OL"===a?"num":"bull")+"-"+("disc"===t||"decimal"===t?"default":t),text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()})}}))},onAction:function(){return s.execCommand(c)},onItemAction:function(t,e){f(s,a,e)},select:function(e){var t,n=(t=s).dom.getParent(t.selection.getNode(),"ol,ul"),r=t.dom.getStyle(n,"listStyleType");return p(r).map(function(t){return e===t}).getOr(!1)},onSetup:m(s,a)})):(l=r,(u=t).ui.registry.addToggleButton(e,{active:!1,tooltip:n,icon:"OL"===o?"ordered-list":"unordered-list",onSetup:m(u,o),onAction:function(){return u.execCommand(l)}}))}var a=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:l,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return a(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:s},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},p=function(t){return null==t?s:a(t)};n.add("advlist",function(t){var n,e,r,o;t.hasPlugin("lists")?(c(e=t,"numlist","Numbered list","InsertOrderedList","OL",(r=e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"))?r.split(/[ ,]/):[]),c(e,"bullist","Bullet list","InsertUnorderedList","UL",(o=e.getParam("advlist_bullet_styles","default,circle,square"))?o.split(/[ ,]/):[]),(n=t).addCommand("ApplyUnorderedListStyle",function(t,e){f(n,"UL",e["list-style-type"])}),n.addCommand("ApplyOrderedListStyle",function(t,e){f(n,"OL",e["list-style-type"])})):console.error("Please use the Lists plugin together with the Advanced List plugin.")})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/anchor/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/anchor/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..134974ec11d8a8ed9c35fe6cf119b365d3d90218
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/anchor/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function a(e){return e.getAttribute("id")||e.getAttribute("name")||""}function c(e){return e&&"a"===e.nodeName.toLowerCase()&&!e.getAttribute("href")&&""!==a(e)}function d(e){return e.dom.getParent(e.selection.getStart(),l)}function r(e,t){var o,a,n,r,i,l=d(e);l?(n=e,r=t,(i=l).removeAttribute("name"),i.id=r,n.addVisual(),n.undoManager.add()):(a=t,(o=e).undoManager.transact(function(){var e,n;o.getParam("allow_html_in_named_anchor",!1,"boolean")||o.selection.collapse(!0),o.selection.isCollapsed()?o.insertContent(o.dom.createHTML("a",{id:a})):(n=(e=o).dom,u(n).walk(e.selection.getRng(),function(e){s.each(e,function(e){var t;c(t=e)&&!t.firstChild&&n.remove(e,!1)})}),o.formatter.remove("namedAnchor",null,null,!0),o.formatter.apply("namedAnchor",{value:a}),o.addVisual())})),e.focus()}function i(r){return function(e){for(var t,n=0;n<e.length;n++){var o=e[n],a=void 0;!(a=t=o)||a.attr("href")||!a.attr("id")&&!a.attr("name")||t.firstChild||o.attr("contenteditable",r)}}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),s=tinymce.util.Tools.resolve("tinymce.util.Tools"),l="a:not([href])";e.add("anchor",function(e){var t,n,o;(t=e).on("PreInit",function(){t.parser.addNodeFilter("a",i("false")),t.serializer.addNodeFilter("a",i(null))}),(n=e).addCommand("mceAnchor",function(){var o,e,t;t=(e=d(o=n))?a(e):"",o.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(e){var t=o,n=e.getData().id;(/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(n)?(r(t,n),0):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))||e.close()}})}),(o=e).ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return o.execCommand("mceAnchor")},onSetup:function(e){return o.selection.selectorChangedWithUnbind("a:not([href])",e.setActive).unbind}}),o.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return o.execCommand("mceAnchor")}}),e.on("PreInit",function(){e.formatter.register("namedAnchor",{inline:"a",selector:l,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:c})})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/autolink/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/autolink/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..72c729e12c2fd12ac2ed0f3ad57cc7fdf9d57c33
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/autolink/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function o(e,t){var n;return t<0&&(t=0),3!==e.nodeType||(n=e.data.length)<t&&(t=n),t}function p(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setStart(t,o(t,n)):e.setStartBefore(t)}function A(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setEnd(t,o(t,n)):e.setEndAfter(t)}function i(e,t,n){var o,i,r,a,d,s,l=e.getParam("autolink_pattern",v),f=e.getParam("default_link_target",!1);if("A"!==e.selection.getNode().tagName){var c=e.selection.getRng().cloneRange();if(c.startOffset<5){if(!(a=c.endContainer.previousSibling)){if(!c.endContainer.firstChild||!c.endContainer.firstChild.nextSibling)return;a=c.endContainer.firstChild.nextSibling}if(p(c,a,d=a.length),A(c,a,d),c.endOffset<5)return;o=c.endOffset,i=a}else{if(3!==(i=c.endContainer).nodeType&&i.firstChild){for(;3!==i.nodeType&&i.firstChild;)i=i.firstChild;3===i.nodeType&&(p(c,i,0),A(c,i,i.nodeValue.length))}o=1===c.endOffset?2:c.endOffset-1-t}for(var g,u=o;p(c,i,2<=o?o-2:0),A(c,i,1<=o?o-1:0),--o," "!==(s=c.toString())&&""!==s&&160!==s.charCodeAt(0)&&0<=o-2&&s!==n;);(g=c.toString())===n||" "===g||160===g.charCodeAt(0)?(p(c,i,o),A(c,i,u),o+=1):(0===c.startOffset?p(c,i,0):p(c,i,o),A(c,i,u)),h=c.toString(),/[?!,.;:]/.test(h.charAt(h.length-1))&&A(c,i,u-1);var h,C,m,y,k=(h=c.toString().trim()).match(l),w=e.getParam("link_default_protocol","http","string");k&&((m=C=k[0]).length>=(y="www.").length&&m.substr(0,0+y.length)===y?C=w+"://"+C:-1===C.indexOf("@")||/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(C)||(C="mailto:"+C),r=e.selection.getBookmark(),e.selection.setRng(c),e.execCommand("createlink",!1,C),!1!==f&&e.dom.setAttrib(e.selection.getNode(),"target",f),e.selection.moveToBookmark(r),e.nodeChanged())}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env"),v=new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-+~=.,%()\/\w]*[-+~=%()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i");e.add("autolink",function(e){var t,n;(t=e).on("keydown",function(e){13===e.keyCode&&i(t,-1,"")}),r.browser.isIE()?t.on("focus",function(){if(!n){n=!0;try{t.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(t.on("keypress",function(e){41===e.keyCode&&i(t,-1,"(")}),t.on("keyup",function(e){32===e.keyCode&&i(t,0,"")}))})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/autoresize/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/autoresize/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..ebb318a20e880980320d95910e4676c50930a3cf
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/autoresize/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function d(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")}function h(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function y(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var g=Object.hasOwnProperty,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){v(e,t),n--?u(e,t,n,i,o):o&&o()},i)},v=function(e,t){var n,i,o,r,s,a,g,u,l,c,m=e.dom,f=e.getDoc();f&&(e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()?h(e,!0):(n=f.documentElement,i=e.getParam("autoresize_bottom_margin",50,"number"),o=d(e),r=y(m,n,"margin-top",!0),s=y(m,n,"margin-bottom",!0),(a=(a=n.offsetHeight+r+s+i)<0?0:a)+(g=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight)>d(e)&&(o=a+g),(u=e.getParam("max_height",0,"number"))&&u<o?(o=u,h(e,!0)):h(e,!1),o!==t.get()&&(l=o-t.get(),m.setStyle(e.getContainer(),"height",o+"px"),t.set(o),e.fire("ResizeEditor"),p.browser.isSafari()&&p.mac&&(c=e.getWin()).scrollTo(c.pageXOffset,c.pageYOffset),e.hasFocus()&&e.selection.scrollIntoView(e.selection.getNode()),p.webkit&&l<0&&v(e,t))))};e.add("autoresize",function(e){var t,n,i,o,r,s,a=e.settings;g.call(a,"resize")||(e.settings.resize=!1),e.inline||(s=0,r=t={get:function(){return s},set:function(e){s=e}},(o=e).addCommand("mceAutoResize",function(){v(o,r)}),i=t,(n=e).on("init",function(){var e=n.getParam("autoresize_overflow_padding",1,"number"),t=n.dom;t.setStyles(n.getDoc().documentElement,{height:"auto"}),t.setStyles(n.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),n.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(){v(n,i)}),n.getParam("autoresize_on_init",!0,"boolean")&&n.on("init",function(){u(n,i,20,100,function(){u(n,i,5,1e3)})}))})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/autosave/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/autosave/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..d320735894319b27c39b28c0d55936fefa10ecd1
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/autosave/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function o(t,e){var r=t||e,n=/^(\d+)([ms]?)$/.exec(""+r);return(n[2]?{s:1e3,m:6e4}[n[2]]:1)*parseInt(r,10)}function n(t){var e=document.location;return t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)}function i(t,e){if(a(e))return t.dom.isEmpty(t.getBody());var r=d.trim(e);if(""===r)return!0;var n=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(n)}function u(t){var e=parseInt(v.getItem(n(t)+"time"),10)||0;return!((new Date).getTime()-e>o(t.getParam("autosave_retention"),"20m")&&(g(t,!1),1))}function s(t){var e=n(t);!i(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))}function f(t){var e=n(t);u(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))}function c(t){t.undoManager.transact(function(){f(t),g(t)}),t.focus()}function m(r){return function(t){function e(){return t.setDisabled(!u(r))}return t.setDisabled(!u(r)),r.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return r.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return void 0===t},l=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var r=n(t);v.removeItem(r+"draft"),v.removeItem(r+"time"),!1!==e&&t.fire("RemoveDraft")},y=tinymce.util.Tools.resolve("tinymce.EditorManager");t.add("autosave",function(t){var e,r,n,a;return t.editorManager.on("BeforeUnload",function(t){var e;d.each(y.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)}),n=e=t,a=o(n.getParam("autosave_interval"),"30s"),l.setEditorInterval(n,function(){s(n)},a),e.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),e.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),t.on("init",function(){t.getParam("autosave_restore_when_empty",!1)&&t.dom.isEmpty(t.getBody())&&f(t)}),r=t,{hasDraft:function(){return u(r)},storeDraft:function(){return s(r)},restoreDraft:function(){return f(r)},removeDraft:function(t){return g(r,t)},isEmpty:function(t){return i(r,t)}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/bbcode/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/bbcode/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..7848009864fa6cdfa40ff31072cf786187ed5cd0
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/bbcode/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function i(t){function o(o,e){t=t.replace(o,e)}return t=n.trim(t),o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),t}var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");o.add("bbcode",function(o){console.warn("The bbcode plugin has been deprecated and marked for removal in TinyMCE 6.0"),o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){function e(o,e){t=t.replace(o,e)}var t;o.set&&(o.content=i(o.content)),o.get&&(o.content=(t=o.content,t=n.trim(t),e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/<font>(.*?)<\/font>/gi,"$1"),e(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),e(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),e(/<u>/gi,"[u]"),e(/<blockquote[^>]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/<br \/>/gi,"\n"),e(/<br\/>/gi,"\n"),e(/<br>/gi,"\n"),e(/<p>/gi,""),e(/<\/p>/gi,"\n"),e(/&nbsp;|\u00a0/gi," "),e(/&quot;/gi,'"'),e(/&lt;/gi,"<"),e(/&gt;/gi,">"),e(/&amp;/gi,"&"),t))})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/charmap/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/charmap/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..62e2bca4d5ebc10fe1900b2c0c5abb6f5f6cbb81
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/charmap/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function l(e,r){var n=e.fire("insertCustomChar",{chr:r}).chr;e.execCommand("mceInsertContent",!1,n)}function i(e){return function(){return e}}function e(e){return e}function r(){return c}var t,g,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(e){return n=typeof(r=e),(null===r?"null":"object"==n&&(Array.prototype.isPrototypeOf(r)||r.constructor&&"Array"===r.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(r)||r.constructor&&"String"===r.constructor.name)?"string":n)===t;var r,n},m=i(!(t="array")),o=i(!(g=null)),c={fold:function(e,r){return e()},isSome:m,isNone:o,getOr:e,getOrThunk:u,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:u,map:r,each:function(){},bind:r,exists:m,forall:o,filter:function(){return c},toArray:function(){return[]},toString:i("none()")};function u(e){return e()}function f(e,r){for(var n=e.length,t=new Array(n),a=0;a<n;a++){var i=e[a];t[a]=r(i,a)}return t}function s(e){return A(e)?x.grep(e,function(e){return A(e)&&2===e.length}):"function"==typeof e?e():[]}function h(e){var r=function(e,r){var n=e.getParam("charmap");n&&(r=[{name:O,characters:s(n)}]);var t=e.getParam("charmap_append");if(t){var a=x.grep(r,function(e){return e.name===O});return a.length?(a[0].characters=[].concat(a[0].characters).concat(s(t)),r):r.concat({name:O,characters:s(t)})}return r}(e,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[169,"copyright sign"],[174,"registered sign"],[8482,"trade mark sign"],[8240,"per mille sign"],[181,"micro sign"],[183,"middle dot"],[8226,"bullet"],[8230,"three dot leader"],[8242,"minutes / feet"],[8243,"seconds / inches"],[167,"section sign"],[182,"paragraph sign"],[223,"sharp s / ess-zed"]]},{name:"Quotations",characters:[[8249,"single left-pointing angle quotation mark"],[8250,"single right-pointing angle quotation mark"],[171,"left pointing guillemet"],[187,"right pointing guillemet"],[8216,"left single quotation mark"],[8217,"right single quotation mark"],[8220,"left double quotation mark"],[8221,"right double quotation mark"],[8218,"single low-9 quotation mark"],[8222,"double low-9 quotation mark"],[60,"less-than sign"],[62,"greater-than sign"],[8804,"less-than or equal to"],[8805,"greater-than or equal to"],[8211,"en dash"],[8212,"em dash"],[175,"macron"],[8254,"overline"],[164,"currency sign"],[166,"broken bar"],[168,"diaeresis"],[161,"inverted exclamation mark"],[191,"turned question mark"],[710,"circumflex accent"],[732,"small tilde"],[176,"degree sign"],[8722,"minus sign"],[177,"plus-minus sign"],[247,"division sign"],[8260,"fraction slash"],[215,"multiplication sign"],[185,"superscript one"],[178,"superscript two"],[179,"superscript three"],[188,"fraction one quarter"],[189,"fraction one half"],[190,"fraction three quarters"]]},{name:"Mathematical",characters:[[402,"function / florin"],[8747,"integral"],[8721,"n-ary sumation"],[8734,"infinity"],[8730,"square root"],[8764,"similar to"],[8773,"approximately equal to"],[8776,"almost equal to"],[8800,"not equal to"],[8801,"identical to"],[8712,"element of"],[8713,"not an element of"],[8715,"contains as member"],[8719,"n-ary product"],[8743,"logical and"],[8744,"logical or"],[172,"not sign"],[8745,"intersection"],[8746,"union"],[8706,"partial differential"],[8704,"for all"],[8707,"there exists"],[8709,"diameter"],[8711,"backward difference"],[8727,"asterisk operator"],[8733,"proportional to"],[8736,"angle"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[913,"Alpha"],[914,"Beta"],[915,"Gamma"],[916,"Delta"],[917,"Epsilon"],[918,"Zeta"],[919,"Eta"],[920,"Theta"],[921,"Iota"],[922,"Kappa"],[923,"Lambda"],[924,"Mu"],[925,"Nu"],[926,"Xi"],[927,"Omicron"],[928,"Pi"],[929,"Rho"],[931,"Sigma"],[932,"Tau"],[933,"Upsilon"],[934,"Phi"],[935,"Chi"],[936,"Psi"],[937,"Omega"],[945,"alpha"],[946,"beta"],[947,"gamma"],[948,"delta"],[949,"epsilon"],[950,"zeta"],[951,"eta"],[952,"theta"],[953,"iota"],[954,"kappa"],[955,"lambda"],[956,"mu"],[957,"nu"],[958,"xi"],[959,"omicron"],[960,"pi"],[961,"rho"],[962,"final sigma"],[963,"sigma"],[964,"tau"],[965,"upsilon"],[966,"phi"],[967,"chi"],[968,"psi"],[969,"omega"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[8592,"leftwards arrow"],[8593,"upwards arrow"],[8594,"rightwards arrow"],[8595,"downwards arrow"],[8596,"left right arrow"],[8629,"carriage return"],[8656,"leftwards double arrow"],[8657,"upwards double arrow"],[8658,"rightwards double arrow"],[8659,"downwards double arrow"],[8660,"left right double arrow"],[8756,"therefore"],[8834,"subset of"],[8835,"superset of"],[8836,"not a subset of"],[8838,"subset of or equal to"],[8839,"superset of or equal to"],[8853,"circled plus"],[8855,"circled times"],[8869,"perpendicular"],[8901,"dot operator"],[8968,"left ceiling"],[8969,"right ceiling"],[8970,"left floor"],[8971,"right floor"],[9001,"left-pointing angle bracket"],[9002,"right-pointing angle bracket"],[9674,"lozenge"],[9824,"black spade suit"],[9827,"black club suit"],[9829,"black heart suit"],[9830,"black diamond suit"],[8194,"en space"],[8195,"em space"],[8201,"thin space"],[8204,"zero width non-joiner"],[8205,"zero width joiner"],[8206,"left-to-right mark"],[8207,"right-to-left mark"]]}]);return 1<r.length?[{name:"All",characters:function(e){for(var r=[],n=0,t=e.length;n<t;++n){if(!a(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);C.apply(r,e[n])}return r}(f(r,function(e){return e.characters}))}].concat(r):r}function p(e){var r=e;return{get:function(){return r},set:function(e){r=e}}}function d(e,r){return-1!==e.indexOf(r)}function y(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];if(q)return q.apply(void 0,e);for(var n=[],t="",a=0,i=e.length;a!==i;++a){var o=+e[a];if(!(o<1114111&&o>>>0===o))throw RangeError("Invalid code point: "+o);16383<=(o<=65535?n.push(o):(o-=65536,n.push(55296+(o>>10),o%1024+56320)))&&(t+=String.fromCharCode.apply(null,n),n.length=0)}return t+String.fromCharCode.apply(null,n)}function v(e,r){var c=[],u=r.toLowerCase();return function(e){for(var r,n,t,a,i=0,o=e.length;i<o;i++)r=e[i],a=t=n=a=t=n=void 0,n=r[0],t=r[1],a=u,(d(y(n).toLowerCase(),a)||d(t.toLowerCase(),a)||d(t.toLowerCase().replace(/\s+/g,""),a))&&c.push(r)}(e.characters),f(c,function(e){return{text:e[1],value:y(e[0]),icon:y(e[0])}})}function w(n,a){function r(){return[{label:"Search",type:"input",name:S},{type:"collection",name:"results"}]}var t,i,o=1===a.length?p(O):p("All"),c=(t=function(e){var r=e.getData().pattern,n=e,t=r;(function(e,r,n){for(var t=0,a=e.length;t<a;t++){var i=e[t];if(r(i,t))return k.some(i);if(n(i,t))break}return k.none()})(a,function(e){return e.name===o.get()},m).each(function(e){var r=v(e,t);n.setData({results:r})})},i=null,{cancel:u,throttle:function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];u(),i=setTimeout(function(){i=null,t.apply(null,e)},40)}});function u(){g===i||(clearTimeout(i),i=null)}var e=1===a.length?{type:"panel",items:r()}:{type:"tabpanel",tabs:f(a,function(e){return{title:e.name,name:e.name,items:r()}})},s={pattern:"",results:v(a[0],"")};n.windowManager.open({title:"Special Character",size:"normal",body:e,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:s,onAction:function(e,r){"results"===r.name&&(l(n,r.value),e.close())},onTabChange:function(e,r){o.set(r.newTabName),c.throttle(e)},onChange:function(e,r){r.name===S&&c.throttle(e)}}).focus(S)}var b=function(n){function e(){return a}function r(e){return e(n)}var t=i(n),a={fold:function(e,r){return r(n)},isSome:o,isNone:m,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return b(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?a:c},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},k={some:b,none:r,from:function(e){return null==e?c:b(e)}},C=Array.prototype.push,x=tinymce.util.Tools.resolve("tinymce.util.Tools"),A=x.isArray,O="User Defined",q=String.fromCodePoint,S="pattern",T=tinymce.util.Tools.resolve("tinymce.util.Promise");n.add("charmap",function(e){var r,n,t,a,i,o=h(e),c=o;return(r=e).addCommand("mceShowCharmap",function(){w(r,c)}),(n=e).ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:function(){return n.execCommand("mceShowCharmap")}}),n.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:function(){return n.execCommand("mceShowCharmap")}}),t=e,a=o[0],t.ui.registry.addAutocompleter("charmap",{ch:":",columns:"auto",minChars:2,fetch:function(n,e){return new T(function(e,r){e(v(a,n))})},onAction:function(e,r,n){t.selection.setRng(r),t.insertContent(n),e.hide()}}),i=e,{getCharMap:function(){return h(i)},insertChar:function(e){l(i,e)}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/code/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/code/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..5a37bd0fdb7f18b5ea217fc640f106198a5989ec
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/code/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",function(e){var t,o;function n(){return o.execCommand("mceCodeEditor")}return(t=e).addCommand("mceCodeEditor",function(){var n,e;e=(n=t).getContent({source_view:!0}),n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t=n,o=e.getData().code;t.focus(),t.undoManager.transact(function(){t.setContent(o)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})}),(o=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:n}),o.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:n}),{}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/codesample/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/codesample/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..fecbb3b4af68f5f7d2bcdea8e18869131098b590
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/codesample/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function o(e){return function(){return e}}function e(e){return e}function n(){return l}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=o(!1),i=o(!0),l={fold:function(e,n){return e()},isSome:s,isNone:i,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:n,each:function(){},bind:n,exists:s,forall:i,filter:function(){return l},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function u(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")}function c(t){return function(e,n){return t(n)}}var d=function(t){function e(){return r}function n(e){return e(t)}var a=o(t),r={fold:function(e,n){return n(t)},isSome:i,isNone:s,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return d(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?r:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},p={some:d,none:n,from:function(e){return null==e?l:d(e)}},g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r="undefined"!=typeof window?window:Function("return this;")(),m={},f={exports:m},b={};function h(e){return r.Prism&&e.getParam("codesample_global_prismjs",!1,"boolean")?r.Prism:k}function y(e){var n=e.selection?e.selection.getNode():null;return u(n)?p.some(n):p.none()}function w(s){var t,e,n=s.getParam("codesample_languages")||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],a=(0<(e=n).length?p.some(e[0]):p.none()).fold(o(""),function(e){return e.value}),r=(t=a,y(s).fold(function(){return t},function(e){var n=e.className.match(/language-(\w+)/);return n?n[1]:t})),i=y(s).fold(o(""),function(e){return e.textContent});s.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:n},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:r,code:i},onSubmit:function(e){var n=e.getData(),t=s,a=n.language,r=n.code;t.undoManager.transact(function(){var e=y(t);return r=g.DOM.encode(r),e.fold(function(){t.insertContent('<pre id="__new" class="language-'+a+'">'+r+"</pre>"),t.selection.select(t.$("#__new").removeAttr("id")[0])},function(e){t.dom.setAttrib(e,"class","language-"+a),e.innerHTML=r,h(t).highlightElement(e),t.selection.select(e)})}),e.close()}})}!function(n,t){var e=window.Prism;window.Prism={manual:!0},function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==b?b:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function s(i,o,l){function u(n,e){if(!o[n]){if(!i[n]){var t=!1;if(!e&&t)return t(n,!0);if(c)return c(n,!0);var a=new Error("Cannot find module '"+n+"'");throw a.code="MODULE_NOT_FOUND",a}var r=o[n]={exports:{}};i[n][0].call(r.exports,function(e){return u(i[n][1][e]||e)},r,r.exports,s,i,o,l)}return o[n].exports}for(var c=!1,e=0;e<l.length;e++)u(l[e]);return u}({1:[function(e,n,t){Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c.boolean},{}],2:[function(e,n,t){Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},{}],3:[function(e,t,n){!function(n){!function(){var e=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},C={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof O?new O(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function t(e,a){var r,n;switch(a=a||{},C.util.type(e)){case"Object":if(n=C.util.objId(e),a[n])return a[n];for(var s in r={},a[n]=r,e)e.hasOwnProperty(s)&&(r[s]=t(e[s],a));return r;case"Array":return n=C.util.objId(e),a[n]||(r=[],a[n]=r,e.forEach(function(e,n){r[n]=t(e,a)}),r);default:return e}},getLanguage:function(e){for(;e&&!c.test(e.className);)e=e.parentElement;return e?(e.className.match(c)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var n=(/at [^(\r\n]*\((.*):.+:.+\)$/i.exec(e.stack)||[])[1];if(n){var t,a=document.getElementsByTagName("script");for(t in a)if(a[t].src==n)return a[t]}return null}},isActive:function(e,n,t){for(var a="no-"+n;e;){var r=e.classList;if(r.contains(n))return!0;if(r.contains(a))return!1;e=e.parentElement}return!!t}},languages:{plain:e,plaintext:e,text:e,txt:e,extend:function(e,n){var t,a=C.util.clone(C.languages[e]);for(t in n)a[t]=n[t];return a},insertBefore:function(t,e,n,a){var r,s=(a=a||C.languages)[t],i={};for(r in s)if(s.hasOwnProperty(r)){if(r==e)for(var o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);n.hasOwnProperty(r)||(i[r]=s[r])}var l=a[t];return a[t]=i,C.languages.DFS(C.languages,function(e,n){n===l&&e!=t&&(this[e]=i)}),i},DFS:function e(n,t,a,r){r=r||{};var s,i,o,l=C.util.objId;for(s in n)n.hasOwnProperty(s)&&(t.call(n,s,n[s],a||s),i=n[s],"Object"!==(o=C.util.type(i))||r[l(i)]?"Array"!==o||r[l(i)]||(r[l(i)]=!0,e(i,t,s,r)):(r[l(i)]=!0,e(i,t,null,r)))}},plugins:{},highlightAll:function(e,n){C.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var a={callback:t,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};C.hooks.run("before-highlightall",a),a.elements=Array.prototype.slice.apply(a.container.querySelectorAll(a.selector)),C.hooks.run("before-all-elements-highlight",a);for(var r,s=0;r=a.elements[s++];)C.highlightElement(r,!0===n,a.callback)},highlightElement:function(e,n,t){var a=C.util.getLanguage(e),r=C.languages[a];e.className=e.className.replace(c,"").replace(/\s+/g," ")+" language-"+a;var s=e.parentElement;s&&"pre"===s.nodeName.toLowerCase()&&(s.className=s.className.replace(c,"").replace(/\s+/g," ")+" language-"+a);var i,o={element:e,language:a,grammar:r,code:e.textContent};function l(e){o.highlightedCode=e,C.hooks.run("before-insert",o),o.element.innerHTML=o.highlightedCode,C.hooks.run("after-highlight",o),C.hooks.run("complete",o),t&&t.call(o.element)}if(C.hooks.run("before-sanity-check",o),(s=o.element.parentElement)&&"pre"===s.nodeName.toLowerCase()&&!s.hasAttribute("tabindex")&&s.setAttribute("tabindex","0"),!o.code)return C.hooks.run("complete",o),void(t&&t.call(o.element));C.hooks.run("before-highlight",o),o.grammar?n&&u.Worker?((i=new Worker(C.filename)).onmessage=function(e){l(e.data)},i.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))):l(C.highlight(o.code,o.grammar,o.language)):l(C.util.encode(o.code))},highlight:function(e,n,t){var a={code:e,grammar:n,language:t};return C.hooks.run("before-tokenize",a),a.tokens=C.tokenize(a.code,a.grammar),C.hooks.run("after-tokenize",a),O.stringify(C.util.encode(a.tokens),a.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var a in t)n[a]=t[a];delete n.rest}var r=new s;return T(r,r.head,e),function e(n,t,a,r,s,i){for(var o in a)if(a.hasOwnProperty(o)&&a[o])for(var l=a[o],l=Array.isArray(l)?l:[l],u=0;u<l.length;++u){if(i&&i.cause==o+","+u)return;var c,d=l[u],p=d.inside,g=!!d.lookbehind,m=!!d.greedy,f=d.alias;m&&!d.pattern.global&&(c=d.pattern.toString().match(/[imsuy]*$/)[0],d.pattern=RegExp(d.pattern.source,c+"g"));for(var b=d.pattern||d,h=r.next,y=s;h!==t.tail&&!(i&&y>=i.reach);y+=h.value.length,h=h.next){var w=h.value;if(t.length>n.length)return;if(!(w instanceof O)){var k,v=1;if(m){if(!(k=N(b,y,n,g)))break;var x=k.index,_=k.index+k[0].length,F=y;for(F+=h.value.length;F<=x;)F+=(h=h.next).value.length;if(y=F-=h.value.length,h.value instanceof O)continue;for(var P=h;P!==t.tail&&(F<_||"string"==typeof P.value);P=P.next)v++,F+=P.value.length;v--,w=n.slice(y,F),k.index-=y}else if(!(k=N(b,0,w,g)))continue;var x=k.index,A=k[0],S=w.slice(0,x),$=w.slice(x+A.length),z=y+w.length;i&&z>i.reach&&(i.reach=z);var j=h.prev;S&&(j=T(t,j,S),y+=S.length),function(e,n,t){for(var a=n.next,r=0;r<t&&a!==e.tail;r++)a=a.next;(n.next=a).prev=n,e.length-=r}(t,j,v);var E,h=T(t,j,new O(o,p?C.tokenize(A,p):A,f,A));$&&T(t,h,$),1<v&&(e(n,t,a,h.prev,y,E={cause:o+","+u,reach:z}),i&&E.reach>i.reach&&(i.reach=E.reach))}}}}(e,r,n,r.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(r)},hooks:{all:{},add:function(e,n){var t=C.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=C.hooks.all[e];if(t&&t.length)for(var a,r=0;a=t[r++];)a(n)}},Token:O};function O(e,n,t,a){this.type=e,this.content=n,this.alias=t,this.length=0|(a||"").length}function N(e,n,t,a){e.lastIndex=n;var r,s=e.exec(t);return s&&a&&s[1]&&(r=s[1].length,s.index+=r,s[0]=s[0].slice(r)),s}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function T(e,n,t){var a=n.next,r={value:t,prev:n,next:a};return n.next=r,a.prev=r,e.length++,r}if(u.Prism=C,O.stringify=function n(e,t){if("string"==typeof e)return e;if(Array.isArray(e)){var a="";return e.forEach(function(e){a+=n(e,t)}),a}var r={type:e.type,content:n(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t},s=e.alias;s&&(Array.isArray(s)?Array.prototype.push.apply(r.classes,s):r.classes.push(s)),C.hooks.run("wrap",r);var i,o="";for(i in r.attributes)o+=" "+i+'="'+(r.attributes[i]||"").replace(/"/g,"&quot;")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+o+">"+r.content+"</"+r.tag+">"},!u.document)return u.addEventListener&&(C.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,a=n.code,r=n.immediateClose;u.postMessage(C.highlight(a,C.languages[t],t)),r&&u.close()},!1)),C;var t,a=C.util.currentScript();function r(){C.manual||C.highlightAll()}return a&&(C.filename=a.src,a.hasAttribute("data-manual")&&(C.manual=!0)),C.manual||("loading"===(t=document.readyState)||"interactive"===t&&a&&a.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),C}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});void 0!==t&&t.exports&&(t.exports=e),void 0!==n&&(n.Prism=e)}.call(this)}.call(this,void 0!==b?b:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,n,t){var a=Prism,r=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,s=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return r.source});a.languages.cpp=a.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return r.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:r,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),a.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:module|import)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return s})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),a.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b[a-z_]\w*\s*<(?:[^<>]|<(?:[^<>])*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:a.languages.cpp}}}}),a.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),a.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:a.languages.extend("cpp",{})}}),a.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},a.languages.cpp["base-clause"])},{}],5:[function(e,n,t){!function(t){function a(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function r(e,n,t){return RegExp(a(e,n),t||"")}function e(e,n){for(var t=0;t<n;t++)e=e.replace(/<<self>>/g,function(){return"(?:"+e+")"});return e.replace(/<<self>>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",s="add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where",i="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function o(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var l=o("class enum interface struct"),u=RegExp(o(n+" class enum interface struct "+s+" "+i)),c=o("class enum interface struct "+s+" "+i),d=o(n+" class enum interface struct "+i),p=e(/<(?:[^<>;=+\-*/%&|^]|<<self>>)*>/.source,2),g=e(/\((?:[^()]|<<self>>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,f=a(/<<0>>(?:\s*<<1>>)?/.source,[m,p]),b=a(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[c,f]),h=/\[\s*(?:,\s*)*\]/.source,y=a(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,h]),w=a(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[p,g,h]),k=a(/\(<<0>>+(?:,<<0>>+)+\)/.source,[w]),v=a(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[k,b,h]),x={keyword:u,punctuation:/[<>()?,.:[\]]/},_=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,F=/"(?:\\.|[^\\"\r\n])*"/.source;t.languages.csharp=t.languages.extend("clike",{string:[{pattern:r(/(^|[^$\\])<<0>>/.source,[/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source]),lookbehind:!0,greedy:!0},{pattern:r(/(^|[^@$\\])<<0>>/.source,[F]),lookbehind:!0,greedy:!0},{pattern:RegExp(_),greedy:!0,alias:"character"}],"class-name":[{pattern:r(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:x},{pattern:r(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,v]),lookbehind:!0,inside:x},{pattern:r(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:r(/(\b<<0>>\s+)<<1>>/.source,[l,f]),lookbehind:!0,inside:x},{pattern:r(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:x},{pattern:r(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:r(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[y]),lookbehind:!0,inside:x},{pattern:r(/\b<<0>>(?=\s+(?!<<1>>)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[v,d,m]),inside:x}],keyword:u,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),t.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),t.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:r(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),t.languages.insertBefore("csharp","class-name",{namespace:{pattern:r(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:r(/(\b(?:default|typeof|sizeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[g]),lookbehind:!0,alias:"class-name",inside:x},"return-type":{pattern:r(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[v,b]),inside:x,alias:"class-name"},"constructor-invocation":{pattern:r(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[v]),lookbehind:!0,inside:x,alias:"class-name"},"generic-method":{pattern:r(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,p]),inside:{function:r(/^<<0>>/.source,[m]),generic:{pattern:RegExp(p),alias:"class-name",inside:x}}},"type-list":{pattern:r(/\b((?:<<0>>\s+<<1>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>)(?:\s*,\s*(?:<<3>>|<<4>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[l,f,m,v,u.source]),lookbehind:!0,inside:{keyword:u,"class-name":{pattern:RegExp(v),greedy:!0,inside:x},punctuation:/,/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var P=F+"|"+_,A=a(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[P]),S=e(a(/[^"'/()]|<<0>>|\(<<self>>*\)/.source,[A]),2),$=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,z=a(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,S]);t.languages.insertBefore("csharp","class-name",{attribute:{pattern:r(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[$,z]),lookbehind:!0,greedy:!0,inside:{target:{pattern:r(/^<<0>>(?=\s*:)/.source,[$]),alias:"keyword"},"attribute-arguments":{pattern:r(/\(<<0>>*\)/.source,[S]),inside:t.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var j=/:[^}\r\n]+/.source,E=e(a(/[^"'/()]|<<0>>|\(<<self>>*\)/.source,[A]),2),C=a(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[E,j]),O=e(a(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<<self>>*\)/.source,[P]),2),N=a(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,j]);function T(e,n){return{interpolation:{pattern:r(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[e]),lookbehind:!0,inside:{"format-string":{pattern:r(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[n,j]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:t.languages.csharp}}},string:/[\s\S]+/}}t.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:r(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[C]),lookbehind:!0,greedy:!0,inside:T(C,E)},{pattern:r(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[N]),lookbehind:!0,greedy:!0,inside:T(N,O)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp},{}],6:[function(e,n,t){!function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism)},{}],7:[function(e,n,t){var a=Prism,r=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,s=/(^|[^\w.])(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,i={pattern:RegExp(s+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};a.languages.java=a.languages.extend("clike",{"class-name":[i,{pattern:RegExp(s+/[A-Z]\w*(?=\s+\w+\s*[;,=()])/.source),lookbehind:!0,inside:i.inside}],keyword:r,function:[a.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),a.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),a.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":i,keyword:r,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g,function(){return r.source})),lookbehind:!0,inside:{punctuation:/\./}}})},{}],8:[function(e,n,t){Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript},{}],9:[function(e,n,t){function h(e,n){return"___"+e.toUpperCase()+n+"___"}var y=Prism;Object.defineProperties(y.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,s){var i;a.language===r&&(i=a.tokenStack=[],a.code=a.code.replace(e,function(e){if("function"==typeof s&&!s(e))return e;for(var n,t=i.length;-1!==a.code.indexOf(n=h(r,t));)++t;return i[t]=e,n}),a.grammar=y.languages.markup)}},tokenizePlaceholders:{value:function(g,m){var f,b;g.language===m&&g.tokenStack&&(g.grammar=y.languages[m],f=0,b=Object.keys(g.tokenStack),function e(n){for(var t=0;t<n.length&&!(f>=b.length);t++){var a,r,s,i,o,l,u,c,d,p=n[t];"string"==typeof p||p.content&&"string"==typeof p.content?(a=b[f],r=g.tokenStack[a],s="string"==typeof p?p:p.content,i=h(m,a),-1<(o=s.indexOf(i))&&(++f,l=s.substring(0,o),u=new y.Token(m,y.tokenize(r,g.grammar),"language-"+m,r),c=s.substring(o+i.length),d=[],l&&d.push.apply(d,e([l])),d.push(u),c&&d.push.apply(d,e([c])),"string"==typeof p?n.splice.apply(n,[t,1].concat(d)):p.content=d)):p.content&&e(p.content)}return n}(g.tokens))}}})},{}],10:[function(e,n,t){Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?\]\]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,n){var t={};t["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[n]},t.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:t}};a["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var r={};r[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:a},Prism.languages.insertBefore("markup","cdata",r)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,n){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:Prism.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml},{}],11:[function(e,n,t){!function(n){var e=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],a=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;n.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:a,operator:r,punctuation:s};var i={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:n.languages.php},o=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:i}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:i}}];n.languages.insertBefore("php","variable",{string:o,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:o,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:a,operator:r,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),n.hooks.add("before-tokenize",function(e){/<\?/.test(e.code)&&n.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism)},{}],12:[function(e,n,t){Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},{}],13:[function(e,n,t){!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp(/%r/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S])*\)/.source,/\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S])*\]/.source,/<(?:[^<>\\]|\\[\s\S])*>/.source].join("|")+")"+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp(/%[qQiIwWxs]?/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S])*\)/.source,/\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S])*\]/.source,/<(?:[^<>\\]|\\[\s\S])*>/.source].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:n}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(Prism)},{}],14:[function(e,n,t){var a=e("prismjs/components/prism-core");e("prismjs/components/prism-clike"),e("prismjs/components/prism-markup-templating"),e("prismjs/components/prism-c"),e("prismjs/components/prism-cpp"),e("prismjs/components/prism-csharp"),e("prismjs/components/prism-css"),e("prismjs/components/prism-java"),e("prismjs/components/prism-javascript"),e("prismjs/components/prism-markup"),e("prismjs/components/prism-php"),e("prismjs/components/prism-python"),e("prismjs/components/prism-ruby"),n.exports={boltExport:a}},{"prismjs/components/prism-c":1,"prismjs/components/prism-clike":2,"prismjs/components/prism-core":3,"prismjs/components/prism-cpp":4,"prismjs/components/prism-csharp":5,"prismjs/components/prism-css":6,"prismjs/components/prism-java":7,"prismjs/components/prism-javascript":8,"prismjs/components/prism-markup":10,"prismjs/components/prism-markup-templating":9,"prismjs/components/prism-php":11,"prismjs/components/prism-python":12,"prismjs/components/prism-ruby":13}]},{},[14])(14)});window.Prism;window.Prism=e}(m,f);var k=f.exports.boltExport;t.add("codesample",function(n){var t,r,a,s;function e(){return s.execCommand("codesample")}r=(t=n).$,t.on("PreProcess",function(e){r("pre[contenteditable=false]",e.node).filter(c(u)).each(function(e,n){var t=r(n),a=n.textContent;t.attr("class",r.trim(t.attr("class"))),t.removeAttr("contentEditable"),t.empty().append(r("<code></code>").each(function(){this.textContent=a}))})}),t.on("SetContent",function(){var e=r("pre").filter(c(u)).filter(function(e,n){return"false"!==n.contentEditable});e.length&&t.undoManager.transact(function(){e.each(function(e,n){r(n).find("br").each(function(e,n){n.parentNode.replaceChild(t.getDoc().createTextNode("\n"),n)}),n.contentEditable="false",n.innerHTML=t.dom.encode(n.textContent),h(t).highlightElement(n),n.className=r.trim(n.className)})})}),(s=n).ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:e,onSetup:function(t){function e(){var e,n;t.setActive((n=(e=s).selection.getStart(),e.dom.is(n,'pre[class*="language-"]')))}return s.on("NodeChange",e),function(){return s.off("NodeChange",e)}}}),s.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:e}),(a=n).addCommand("codesample",function(){var e=a.selection.getNode();a.selection.isCollapsed()||u(e)?w(a):a.formatter.toggle("code")}),n.on("dblclick",function(e){u(e.target)&&w(n)})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ea409428e46d37af2c2673742eef717d3e47919
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ff712273431c00f66d7a5f62753b41c12dcc297
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/directionality/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/directionality/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..30affae86cbdf78d858d02493da975223e923a0e
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/directionality/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function n(t){return function(n){return typeof n===t}}function u(n){return function(){return n}}function t(n){return n}function r(){return d}var o,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){return r=typeof(t=n),(null===t?"null":"object"==r&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":r)===o;var t,r},c=n("boolean"),f=n("function"),l=n("number"),a=u(!(o="string")),m=u(!0),d={fold:function(n,t){return n()},isSome:a,isNone:m,getOr:t,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(void 0),or:t,orThunk:s,map:r,each:function(){},bind:r,exists:a,forall:m,filter:function(){return d},toArray:function(){return[]},toString:u("none()")};function s(n){return n()}function g(n,t){for(var r=0,o=n.length;r<o;r++)t(n[r],r)}function h(n,t){var r=n.dom;if(1!==r.nodeType)return!1;var o=r;if(void 0!==o.matches)return o.matches(t);if(void 0!==o.msMatchesSelector)return o.msMatchesSelector(t);if(void 0!==o.webkitMatchesSelector)return o.webkitMatchesSelector(t);if(void 0!==o.mozMatchesSelector)return o.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function v(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var p=function(r){function n(){return e}function t(n){return n(r)}var o=u(r),e={fold:function(n,t){return t(r)},isSome:m,isNone:a,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return p(n(r))},each:function(n){n(r)},bind:t,exists:t,forall:t,filter:function(n){return n(r)?e:d},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return e},y={some:p,none:r,from:function(n){return null==n?d:p(n)}},w={fromHtml:function(n,t){var r=(t||document).createElement("div");if(r.innerHTML=n,!r.hasChildNodes()||1<r.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return v(r.childNodes[0])},fromTag:function(n,t){var r=(t||document).createElement(n);return v(r)},fromText:function(n,t){var r=(t||document).createTextNode(n);return v(r)},fromDom:v,fromPoint:function(n,t,r){return y.from(n.dom.elementFromPoint(t,r)).map(v)}};function D(t){return function(n){return n.dom.nodeType===t}}function N(n,t,r){!function(n,t,r){if(!(i(r)||c(r)||l(r)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",r,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,r+"")}(n.dom,t,r)}function T(n,t){n.dom.removeAttribute(t)}function S(n){return w.fromDom(n.dom.host)}function b(e,u,n){return function(n){for(var t=e.dom,r=f(n)?n:a;t.parentNode;){var t=t.parentNode,o=w.fromDom(t);if(h(o,u))return y.some(o);if(r(o))break}return y.none()}(n)}function O(n){return"rtl"===(r="direction",o=(t=n).dom,""!==(e=window.getComputedStyle(o).getPropertyValue(r))||B(t)?e:H(o,r))?"rtl":"ltr";var t,r,o,e}function A(n,t){return r=function(n){return h(n,t)},function(n,t){for(var r=[],o=0,e=n.length;o<e;o++){var u=n[o];t(u,o)&&r.push(u)}return r}(function(n,t){for(var r=n.length,o=new Array(r),e=0;e<r;e++){var u=n[e];o[e]=t(u,e)}return o}(n.dom.childNodes,w.fromDom),r);var r}function C(n,u){var t=n.selection.getSelectedBlocks();0<t.length&&(g(t,function(n){var t,r=w.fromDom(n),o=k(r),e=(t=r,(o?b(t,"ol,ul"):y.some(t)).getOr(t));y.from(e.dom.parentNode).map(w.fromDom).filter(E).each(function(n){O(n)!==u?N(e,"dir",u):O(e)!==u&&T(e,"dir"),o&&g(A(e,"li[dir]"),function(n){return T(n,"dir"),0})})}),n.nodeChanged())}function M(t,o){return function(r){function n(n){var t=w.fromDom(n.element);r.setActive(O(t)===o)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}"undefined"!=typeof window||Function("return this;")();function k(n){return E(n)&&"li"===n.dom.nodeName.toLowerCase()}var E=D(1),L=D(3),P=D(9),R=D(11),x=f(Element.prototype.attachShadow)&&f(Node.prototype.getRootNode)?function(n){return w.fromDom(n.dom.getRootNode())}:function(n){return P(n)?n:w.fromDom(n.dom.ownerDocument)},B=function(n){var t=L(n)?n.dom.parentNode:n.dom;if(null==t||null===t.ownerDocument)return!1;var r,o,e,u,i,c=t.ownerDocument;return e=w.fromDom(t),i=x(e),(R(u=i)&&null!=u.dom.host?y.some(i):y.none()).fold(function(){return c.body.contains(t)},(r=B,o=S,function(n){return r(o(n))}))},H=function(n,t){return void 0!==n.style&&f(n.style.getPropertyValue)?n.style.getPropertyValue(t):""};e.add("directionality",function(n){var t,r;(t=n).addCommand("mceDirectionLTR",function(){C(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){C(t,"rtl")}),(r=n).ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return r.execCommand("mceDirectionLTR")},onSetup:M(r,"ltr")}),r.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return r.execCommand("mceDirectionRTL")},onSetup:M(r,"rtl")})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojiimages.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojiimages.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5f9734baa6067db1a55acfb8ad13975a21c22b4
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojiimages.js
@@ -0,0 +1,9424 @@
+// Source: npm package: emojilib
+// Images provided by twemoji: https://github.com/twitter/twemoji
+window.tinymce.Resource.add("tinymce.plugins.emoticons", {
+  100: {
+    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaf" src="1f4af.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  1234: {
+    keywords: [ "numbers", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd22" src="1f522.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grinning: {
+    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude00" src="1f600.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  grimacing: {
+    keywords: [ "face", "grimace", "teeth" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2c" src="1f62c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  grin: {
+    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude01" src="1f601.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  joy: {
+    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude02" src="1f602.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rofl: {
+    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd23" src="1f923.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  partying: {
+    keywords: [ "face", "celebration", "woohoo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd73" src="1f973.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiley: {
+    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude03" src="1f603.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smile: {
+    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude04" src="1f604.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sweat_smile: {
+    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude05" src="1f605.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  laughing: {
+    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude06" src="1f606.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  innocent: {
+    keywords: [ "face", "angel", "heaven", "halo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude07" src="1f607.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  wink: {
+    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude09" src="1f609.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  blush: {
+    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0a" src="1f60a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  slightly_smiling_face: {
+    keywords: [ "face", "smile" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude42" src="1f642.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  upside_down_face: {
+    keywords: [ "face", "flipped", "silly", "smile" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude43" src="1f643.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  relaxed: {
+    keywords: [ "face", "blush", "massage", "happiness" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u263a\ufe0f" src="263a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  yum: {
+    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0b" src="1f60b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  relieved: {
+    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0c" src="1f60c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  heart_eyes: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0d" src="1f60d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiling_face_with_three_hearts: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd70" src="1f970.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_heart: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude18" src="1f618.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing: {
+    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude17" src="1f617.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_smiling_eyes: {
+    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude19" src="1f619.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_closed_eyes: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1a" src="1f61a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue_winking_eye: {
+    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1c" src="1f61c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zany: {
+    keywords: [ "face", "goofy", "crazy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2a" src="1f92a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  raised_eyebrow: {
+    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd28" src="1f928.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  monocle: {
+    keywords: [ "face", "stuffy", "wealthy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd0" src="1f9d0.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue_closed_eyes: {
+    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1d" src="1f61d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue: {
+    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1b" src="1f61b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  money_mouth_face: {
+    keywords: [ "face", "rich", "dollar", "money" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd11" src="1f911.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  nerd_face: {
+    keywords: [ "face", "nerdy", "geek", "dork" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd13" src="1f913.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sunglasses: {
+    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0e" src="1f60e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  star_struck: {
+    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd29" src="1f929.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  clown_face: {
+    keywords: [ "face" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd21" src="1f921.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cowboy_hat_face: {
+    keywords: [ "face", "cowgirl", "hat" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd20" src="1f920.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hugs: {
+    keywords: [ "face", "smile", "hug" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd17" src="1f917.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smirk: {
+    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0f" src="1f60f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  no_mouth: {
+    keywords: [ "face", "hellokitty" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude36" src="1f636.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  neutral_face: {
+    keywords: [ "indifference", "meh", ":|", "neutral" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude10" src="1f610.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  expressionless: {
+    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude11" src="1f611.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  unamused: {
+    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude12" src="1f612.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  roll_eyes: {
+    keywords: [ "face", "eyeroll", "frustrated" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude44" src="1f644.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  thinking: {
+    keywords: [ "face", "hmmm", "think", "consider" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd14" src="1f914.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  lying_face: {
+    keywords: [ "face", "lie", "pinocchio" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd25" src="1f925.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hand_over_mouth: {
+    keywords: [ "face", "whoops", "shock", "surprise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2d" src="1f92d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  shushing: {
+    keywords: [ "face", "quiet", "shhh" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2b" src="1f92b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  symbols_over_mouth: {
+    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2c" src="1f92c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  exploding_head: {
+    keywords: [ "face", "shocked", "mind", "blown" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2f" src="1f92f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  flushed: {
+    keywords: [ "face", "blush", "shy", "flattered" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude33" src="1f633.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  disappointed: {
+    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1e" src="1f61e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  worried: {
+    keywords: [ "face", "concern", "nervous", ":(" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1f" src="1f61f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  angry: {
+    keywords: [ "mad", "face", "annoyed", "frustrated" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude20" src="1f620.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rage: {
+    keywords: [ "angry", "mad", "hate", "despise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude21" src="1f621.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pensive: {
+    keywords: [ "face", "sad", "depressed", "upset" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude14" src="1f614.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  confused: {
+    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude15" src="1f615.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  slightly_frowning_face: {
+    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude41" src="1f641.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  frowning_face: {
+    keywords: [ "face", "sad", "upset", "frown" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2639" src="2639.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  persevere: {
+    keywords: [ "face", "sick", "no", "upset", "oops" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude23" src="1f623.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  confounded: {
+    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude16" src="1f616.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tired_face: {
+    keywords: [ "sick", "whine", "upset", "frustrated" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2b" src="1f62b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  weary: {
+    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude29" src="1f629.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pleading: {
+    keywords: [ "face", "begging", "mercy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7a" src="1f97a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  triumph: {
+    keywords: [ "face", "gas", "phew", "proud", "pride" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude24" src="1f624.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  open_mouth: {
+    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2e" src="1f62e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scream: {
+    keywords: [ "face", "munch", "scared", "omg" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude31" src="1f631.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  fearful: {
+    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude28" src="1f628.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cold_sweat: {
+    keywords: [ "face", "nervous", "sweat" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude30" src="1f630.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hushed: {
+    keywords: [ "face", "woo", "shh" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2f" src="1f62f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  frowning: {
+    keywords: [ "face", "aw", "what" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude26" src="1f626.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  anguished: {
+    keywords: [ "face", "stunned", "nervous" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude27" src="1f627.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cry: {
+    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude22" src="1f622.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  disappointed_relieved: {
+    keywords: [ "face", "phew", "sweat", "nervous" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude25" src="1f625.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  drooling_face: {
+    keywords: [ "face" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd24" src="1f924.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sleepy: {
+    keywords: [ "face", "tired", "rest", "nap" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2a" src="1f62a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sweat: {
+    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude13" src="1f613.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hot: {
+    keywords: [ "face", "feverish", "heat", "red", "sweating" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd75" src="1f975.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cold: {
+    keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd76" src="1f976.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sob: {
+    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2d" src="1f62d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dizzy_face: {
+    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude35" src="1f635.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  astonished: {
+    keywords: [ "face", "xox", "surprised", "poisoned" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude32" src="1f632.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zipper_mouth_face: {
+    keywords: [ "face", "sealed", "zipper", "secret" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd10" src="1f910.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  nauseated_face: {
+    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd22" src="1f922.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sneezing_face: {
+    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd27" src="1f927.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  vomiting: {
+    keywords: [ "face", "sick" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2e" src="1f92e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mask: {
+    keywords: [ "face", "sick", "ill", "disease" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude37" src="1f637.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  face_with_thermometer: {
+    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd12" src="1f912.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  face_with_head_bandage: {
+    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd15" src="1f915.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  woozy: {
+    keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd74" src="1f974.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sleeping: {
+    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude34" src="1f634.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zzz: {
+    keywords: [ "sleepy", "tired", "dream" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca4" src="1f4a4.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  poop: {
+    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca9" src="1f4a9.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiling_imp: {
+    keywords: [ "devil", "horns" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude08" src="1f608.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  imp: {
+    keywords: [ "devil", "angry", "horns" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7f" src="1f47f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  japanese_ogre: {
+    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc79" src="1f479.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  japanese_goblin: {
+    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7a" src="1f47a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  skull: {
+    keywords: [ "dead", "skeleton", "creepy", "death" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc80" src="1f480.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ghost: {
+    keywords: [ "halloween", "spooky", "scary" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7b" src="1f47b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  alien: {
+    keywords: [ "UFO", "paul", "weird", "outer_space" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7d" src="1f47d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  robot: {
+    keywords: [ "computer", "machine", "bot" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd16" src="1f916.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiley_cat: {
+    keywords: [ "animal", "cats", "happy", "smile" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3a" src="1f63a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smile_cat: {
+    keywords: [ "animal", "cats", "smile" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude38" src="1f638.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  joy_cat: {
+    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude39" src="1f639.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  heart_eyes_cat: {
+    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3b" src="1f63b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smirk_cat: {
+    keywords: [ "animal", "cats", "smirk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3c" src="1f63c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_cat: {
+    keywords: [ "animal", "cats", "kiss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3d" src="1f63d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scream_cat: {
+    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude40" src="1f640.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  crying_cat_face: {
+    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3f" src="1f63f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pouting_cat: {
+    keywords: [ "animal", "cats" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3e" src="1f63e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  palms_up: {
+    keywords: [ "hands", "gesture", "cupped", "prayer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd32" src="1f932.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hands: {
+    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4c" src="1f64c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  clap: {
+    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4f" src="1f44f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  wave: {
+    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4b" src="1f44b.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  call_me_hand: {
+    keywords: [ "hands", "gesture" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd19" src="1f919.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  "+1": {
+    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4d" src="1f44d.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  "-1": {
+    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4e" src="1f44e.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  facepunch: {
+    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4a" src="1f44a.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist: {
+    keywords: [ "fingers", "hand", "grasp" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270a" src="270a.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist_left: {
+    keywords: [ "hand", "fistbump" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1b" src="1f91b.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist_right: {
+    keywords: [ "hand", "fistbump" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1c" src="1f91c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  v: {
+    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270c" src="270c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_hand: {
+    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4c" src="1f44c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hand: {
+    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270b" src="270b.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_back_of_hand: {
+    keywords: [ "fingers", "raised", "backhand" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1a" src="1f91a.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  open_hands: {
+    keywords: [ "fingers", "butterfly", "hands", "open" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc50" src="1f450.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  muscle: {
+    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaa" src="1f4aa.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pray: {
+    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4f" src="1f64f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  foot: {
+    keywords: [ "kick", "stomp" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb6" src="1f9b6.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  leg: {
+    keywords: [ "kick", "limb" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb5" src="1f9b5.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  handshake: {
+    keywords: [ "agreement", "shake" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1d" src="1f91d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  point_up: {
+    keywords: [ "hand", "fingers", "direction", "up" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u261d" src="261d.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_up_2: {
+    keywords: [ "fingers", "hand", "direction", "up" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc46" src="1f446.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_down: {
+    keywords: [ "fingers", "hand", "direction", "down" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc47" src="1f447.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_left: {
+    keywords: [ "direction", "fingers", "hand", "left" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc48" src="1f448.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_right: {
+    keywords: [ "fingers", "hand", "direction", "right" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc49" src="1f449.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fu: {
+    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd95" src="1f595.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hand_with_fingers_splayed: {
+    keywords: [ "hand", "fingers", "palm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd90" src="1f590.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  love_you: {
+    keywords: [ "hand", "fingers", "gesture" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1f" src="1f91f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  metal: {
+    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd18" src="1f918.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  crossed_fingers: {
+    keywords: [ "good", "lucky" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1e" src="1f91e.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  vulcan_salute: {
+    keywords: [ "hand", "fingers", "spock", "star trek" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd96" src="1f596.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  writing_hand: {
+    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270d" src="270d.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  selfie: {
+    keywords: [ "camera", "phone" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd33" src="1f933.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  nail_care: {
+    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc85" src="1f485.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  lips: {
+    keywords: [ "mouth", "kiss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc44" src="1f444.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tooth: {
+    keywords: [ "teeth", "dentist" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb7" src="1f9b7.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tongue: {
+    keywords: [ "mouth", "playful" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc45" src="1f445.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ear: {
+    keywords: [ "face", "hear", "sound", "listen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc42" src="1f442.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  nose: {
+    keywords: [ "smell", "sniff" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc43" src="1f443.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  eye: {
+    keywords: [ "face", "look", "see", "watch", "stare" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc41" src="1f441.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  eyes: {
+    keywords: [ "look", "watch", "stalk", "peek", "see" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc40" src="1f440.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  brain: {
+    keywords: [ "smart", "intelligent" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde0" src="1f9e0.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bust_in_silhouette: {
+    keywords: [ "user", "person", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc64" src="1f464.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  busts_in_silhouette: {
+    keywords: [ "user", "person", "human", "group", "team" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc65" src="1f465.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  speaking_head: {
+    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde3" src="1f5e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  baby: {
+    keywords: [ "child", "boy", "girl", "toddler" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc76" src="1f476.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  child: {
+    keywords: [ "gender-neutral", "young" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd2" src="1f9d2.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  boy: {
+    keywords: [ "man", "male", "guy", "teenager" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc66" src="1f466.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  girl: {
+    keywords: [ "female", "woman", "teenager" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc67" src="1f467.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  adult: {
+    keywords: [ "gender-neutral", "person" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd1" src="1f9d1.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man: {
+    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68" src="1f468.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman: {
+    keywords: [ "female", "girls", "lady" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69" src="1f469.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  blonde_woman: {
+    keywords: [ "woman", "female", "girl", "blonde", "person" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71\u200d\u2640\ufe0f" src="1f471-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  blonde_man: {
+    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71" src="1f471.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bearded_person: {
+    keywords: [ "person", "bewhiskered" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd4" src="1f9d4.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_adult: {
+    keywords: [ "human", "elder", "senior", "gender-neutral" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd3" src="1f9d3.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_man: {
+    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc74" src="1f474.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_woman: {
+    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc75" src="1f475.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_with_gua_pi_mao: {
+    keywords: [ "male", "boy", "chinese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc72" src="1f472.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_with_headscarf: {
+    keywords: [ "female", "hijab", "mantilla", "tichel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd5" src="1f9d5.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_with_turban: {
+    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73\u200d\u2640\ufe0f" src="1f473-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_with_turban: {
+    keywords: [ "male", "indian", "hinduism", "arabs" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73" src="1f473.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  policewoman: {
+    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e\u200d\u2640\ufe0f" src="1f46e-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  policeman: {
+    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e" src="1f46e.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  construction_worker_woman: {
+    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77\u200d\u2640\ufe0f" src="1f477-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  construction_worker_man: {
+    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77" src="1f477.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  guardswoman: {
+    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82\u200d\u2640\ufe0f" src="1f482-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  guardsman: {
+    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82" src="1f482.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  female_detective: {
+    keywords: [ "human", "spy", "detective", "female", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75\ufe0f\u200d\u2640\ufe0f" src="1f575-fe0f-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  male_detective: {
+    keywords: [ "human", "spy", "detective" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75" src="1f575.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_health_worker: {
+    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2695\ufe0f" src="1f469-200d-2695-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_health_worker: {
+    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2695\ufe0f" src="1f468-200d-2695-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_farmer: {
+    keywords: [ "rancher", "gardener", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf3e" src="1f469-200d-1f33e.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_farmer: {
+    keywords: [ "rancher", "gardener", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf3e" src="1f468-200d-1f33e.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_cook: {
+    keywords: [ "chef", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf73" src="1f469-200d-1f373.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_cook: {
+    keywords: [ "chef", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf73" src="1f468-200d-1f373.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_student: {
+    keywords: [ "graduate", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf93" src="1f469-200d-1f393.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_student: {
+    keywords: [ "graduate", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf93" src="1f468-200d-1f393.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_singer: {
+    keywords: [ "rockstar", "entertainer", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa4" src="1f469-200d-1f3a4.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_singer: {
+    keywords: [ "rockstar", "entertainer", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa4" src="1f468-200d-1f3a4.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_teacher: {
+    keywords: [ "instructor", "professor", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfeb" src="1f469-200d-1f3eb.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_teacher: {
+    keywords: [ "instructor", "professor", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfeb" src="1f468-200d-1f3eb.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_factory_worker: {
+    keywords: [ "assembly", "industrial", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfed" src="1f469-200d-1f3ed.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_factory_worker: {
+    keywords: [ "assembly", "industrial", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfed" src="1f468-200d-1f3ed.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_technologist: {
+    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbb" src="1f469-200d-1f4bb.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_technologist: {
+    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbb" src="1f468-200d-1f4bb.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_office_worker: {
+    keywords: [ "business", "manager", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbc" src="1f469-200d-1f4bc.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_office_worker: {
+    keywords: [ "business", "manager", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbc" src="1f468-200d-1f4bc.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_mechanic: {
+    keywords: [ "plumber", "woman", "human", "wrench" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd27" src="1f469-200d-1f527.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_mechanic: {
+    keywords: [ "plumber", "man", "human", "wrench" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd27" src="1f468-200d-1f527.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_scientist: {
+    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd2c" src="1f469-200d-1f52c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_scientist: {
+    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd2c" src="1f468-200d-1f52c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_artist: {
+    keywords: [ "painter", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa8" src="1f469-200d-1f3a8.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_artist: {
+    keywords: [ "painter", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa8" src="1f468-200d-1f3a8.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_firefighter: {
+    keywords: [ "fireman", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude92" src="1f469-200d-1f692.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_firefighter: {
+    keywords: [ "fireman", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude92" src="1f468-200d-1f692.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_pilot: {
+    keywords: [ "aviator", "plane", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2708\ufe0f" src="1f469-200d-2708-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_pilot: {
+    keywords: [ "aviator", "plane", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2708\ufe0f" src="1f468-200d-2708-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_astronaut: {
+    keywords: [ "space", "rocket", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude80" src="1f469-200d-1f680.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_astronaut: {
+    keywords: [ "space", "rocket", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude80" src="1f468-200d-1f680.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_judge: {
+    keywords: [ "justice", "court", "woman", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2696\ufe0f" src="1f469-200d-2696-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_judge: {
+    keywords: [ "justice", "court", "man", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2696\ufe0f" src="1f468-200d-2696-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_superhero: {
+    keywords: [ "woman", "female", "good", "heroine", "superpowers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2640\ufe0f" src="1f9b8-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_superhero: {
+    keywords: [ "man", "male", "good", "hero", "superpowers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2642\ufe0f" src="1f9b8-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_supervillain: {
+    keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2640\ufe0f" src="1f9b9-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_supervillain: {
+    keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2642\ufe0f" src="1f9b9-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  mrs_claus: {
+    keywords: [ "woman", "female", "xmas", "mother christmas" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd36" src="1f936.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  santa: {
+    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf85" src="1f385.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  sorceress: {
+    keywords: [ "woman", "female", "mage", "witch" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2640\ufe0f" src="1f9d9-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  wizard: {
+    keywords: [ "man", "male", "mage", "sorcerer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2642\ufe0f" src="1f9d9-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_elf: {
+    keywords: [ "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2640\ufe0f" src="1f9dd-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_elf: {
+    keywords: [ "man", "male" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2642\ufe0f" src="1f9dd-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_vampire: {
+    keywords: [ "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2640\ufe0f" src="1f9db-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_vampire: {
+    keywords: [ "man", "male", "dracula" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2642\ufe0f" src="1f9db-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_zombie: {
+    keywords: [ "woman", "female", "undead", "walking dead" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2640\ufe0f" src="1f9df-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  man_zombie: {
+    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2642\ufe0f" src="1f9df-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  woman_genie: {
+    keywords: [ "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2640\ufe0f" src="1f9de-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  man_genie: {
+    keywords: [ "man", "male" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2642\ufe0f" src="1f9de-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mermaid: {
+    keywords: [ "woman", "female", "merwoman", "ariel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2640\ufe0f" src="1f9dc-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  merman: {
+    keywords: [ "man", "male", "triton" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2642\ufe0f" src="1f9dc-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_fairy: {
+    keywords: [ "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2640\ufe0f" src="1f9da-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_fairy: {
+    keywords: [ "man", "male" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2642\ufe0f" src="1f9da-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  angel: {
+    keywords: [ "heaven", "wings", "halo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7c" src="1f47c.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pregnant_woman: {
+    keywords: [ "baby" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd30" src="1f930.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  breastfeeding: {
+    keywords: [ "nursing", "baby" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd31" src="1f931.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  princess: {
+    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc78" src="1f478.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  prince: {
+    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd34" src="1f934.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bride_with_veil: {
+    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc70" src="1f470.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_in_tuxedo: {
+    keywords: [ "couple", "marriage", "wedding", "groom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd35" src="1f935.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  running_woman: {
+    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3\u200d\u2640\ufe0f" src="1f3c3-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  running_man: {
+    keywords: [ "man", "walking", "exercise", "race", "running" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3" src="1f3c3.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  walking_woman: {
+    keywords: [ "human", "feet", "steps", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6\u200d\u2640\ufe0f" src="1f6b6-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  walking_man: {
+    keywords: [ "human", "feet", "steps" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6" src="1f6b6.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  dancer: {
+    keywords: [ "female", "girl", "woman", "fun" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc83" src="1f483.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_dancing: {
+    keywords: [ "male", "boy", "fun", "dancer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd7a" src="1f57a.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  dancing_women: {
+    keywords: [ "female", "bunny", "women", "girls" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f" src="1f46f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dancing_men: {
+    keywords: [ "male", "bunny", "men", "boys" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f\u200d\u2642\ufe0f" src="1f46f-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple: {
+    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6b" src="1f46b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  two_men_holding_hands: {
+    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6c" src="1f46c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  two_women_holding_hands: {
+    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6d" src="1f46d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bowing_woman: {
+    keywords: [ "woman", "female", "girl" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47\u200d\u2640\ufe0f" src="1f647-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bowing_man: {
+    keywords: [ "man", "male", "boy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47" src="1f647.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_facepalming: {
+    keywords: [ "man", "male", "boy", "disbelief" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2642\ufe0f" src="1f926-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_facepalming: {
+    keywords: [ "woman", "female", "girl", "disbelief" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2640\ufe0f" src="1f926-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_shrugging: {
+    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37" src="1f937.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_shrugging: {
+    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37\u200d\u2642\ufe0f" src="1f937-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  tipping_hand_woman: {
+    keywords: [ "female", "girl", "woman", "human", "information" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81" src="1f481.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  tipping_hand_man: {
+    keywords: [ "male", "boy", "man", "human", "information" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81\u200d\u2642\ufe0f" src="1f481-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  no_good_woman: {
+    keywords: [ "female", "girl", "woman", "nope" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45" src="1f645.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  no_good_man: {
+    keywords: [ "male", "boy", "man", "nope" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45\u200d\u2642\ufe0f" src="1f645-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_woman: {
+    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46" src="1f646.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_man: {
+    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46\u200d\u2642\ufe0f" src="1f646-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raising_hand_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b" src="1f64b.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raising_hand_man: {
+    keywords: [ "male", "boy", "man" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b\u200d\u2642\ufe0f" src="1f64b-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pouting_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e" src="1f64e.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pouting_man: {
+    keywords: [ "male", "boy", "man" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e\u200d\u2642\ufe0f" src="1f64e-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  frowning_woman: {
+    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d" src="1f64d.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  frowning_man: {
+    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d\u200d\u2642\ufe0f" src="1f64d-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  haircut_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87" src="1f487.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  haircut_man: {
+    keywords: [ "male", "boy", "man" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87\u200d\u2642\ufe0f" src="1f487-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  massage_woman: {
+    keywords: [ "female", "girl", "woman", "head" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86" src="1f486.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  massage_man: {
+    keywords: [ "male", "boy", "man", "head" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86\u200d\u2642\ufe0f" src="1f486-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_in_steamy_room: {
+    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2640\ufe0f" src="1f9d6-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_in_steamy_room: {
+    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2642\ufe0f" src="1f9d6-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  couple_with_heart_woman_man: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc91" src="1f491.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple_with_heart_woman_woman: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f469.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple_with_heart_man_man: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f468.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_man_woman: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8f" src="1f48f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_woman_woman: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_man_man: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_boy: {
+    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6a" src="1f46a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl: {
+    keywords: [ "home", "parents", "people", "human", "child" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_boy: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f467-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_boy_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f466-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl_girl: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f467-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_boy: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f467-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_boy_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f466-200d-1f466.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl_girl: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f467-200d-1f467.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  yarn: {
+    keywords: [ "ball", "crochet", "knit" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf6" src="1f9f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  thread: {
+    keywords: [ "needle", "sewing", "spool", "string" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf5" src="1f9f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  coat: {
+    keywords: [ "jacket" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde5" src="1f9e5.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  labcoat: {
+    keywords: [ "doctor", "experiment", "scientist", "chemist" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7c" src="1f97c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  womans_clothes: {
+    keywords: [ "fashion", "shopping_bags", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5a" src="1f45a.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tshirt: {
+    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc55" src="1f455.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  jeans: {
+    keywords: [ "fashion", "shopping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc56" src="1f456.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  necktie: {
+    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc54" src="1f454.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dress: {
+    keywords: [ "clothes", "fashion", "shopping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc57" src="1f457.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bikini: {
+    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc59" src="1f459.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kimono: {
+    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc58" src="1f458.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  lipstick: {
+    keywords: [ "female", "girl", "fashion", "woman" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc84" src="1f484.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kiss: {
+    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8b" src="1f48b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  footprints: {
+    keywords: [ "feet", "tracking", "walking", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc63" src="1f463.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  flat_shoe: {
+    keywords: [ "ballet", "slip-on", "slipper" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7f" src="1f97f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  high_heel: {
+    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc60" src="1f460.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sandal: {
+    keywords: [ "shoes", "fashion", "flip flops" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc61" src="1f461.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  boot: {
+    keywords: [ "shoes", "fashion" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc62" src="1f462.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mans_shoe: {
+    keywords: [ "fashion", "male" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5e" src="1f45e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  athletic_shoe: {
+    keywords: [ "shoes", "sports", "sneakers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5f" src="1f45f.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hiking_boot: {
+    keywords: [ "backpacking", "camping", "hiking" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7e" src="1f97e.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  socks: {
+    keywords: [ "stockings", "clothes" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde6" src="1f9e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  gloves: {
+    keywords: [ "hands", "winter", "clothes" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde4" src="1f9e4.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scarf: {
+    keywords: [ "neck", "winter", "clothes" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde3" src="1f9e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  womans_hat: {
+    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc52" src="1f452.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tophat: {
+    keywords: [ "magic", "gentleman", "classy", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa9" src="1f3a9.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  billed_hat: {
+    keywords: [ "cap", "baseball" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde2" src="1f9e2.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rescue_worker_helmet: {
+    keywords: [ "construction", "build" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d1" src="26d1.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mortar_board: {
+    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf93" src="1f393.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  crown: {
+    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc51" src="1f451.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  school_satchel: {
+    keywords: [ "student", "education", "bag", "backpack" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf92" src="1f392.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  luggage: {
+    keywords: [ "packing", "travel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf3" src="1f9f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pouch: {
+    keywords: [ "bag", "accessories", "shopping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5d" src="1f45d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  purse: {
+    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5b" src="1f45b.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  handbag: {
+    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5c" src="1f45c.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  briefcase: {
+    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbc" src="1f4bc.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  eyeglasses: {
+    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc53" src="1f453.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dark_sunglasses: {
+    keywords: [ "face", "cool", "accessories" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd76" src="1f576.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  goggles: {
+    keywords: [ "eyes", "protection", "safety" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7d" src="1f97d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ring: {
+    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8d" src="1f48d.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  closed_umbrella: {
+    keywords: [ "weather", "rain", "drizzle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf02" src="1f302.png"/>',
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dog: {
+    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc36" src="1f436.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cat: {
+    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc31" src="1f431.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mouse: {
+    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2d" src="1f42d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hamster: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc39" src="1f439.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rabbit: {
+    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc30" src="1f430.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fox_face: {
+    keywords: [ "animal", "nature", "face" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8a" src="1f98a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bear: {
+    keywords: [ "animal", "nature", "wild" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3b" src="1f43b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  panda_face: {
+    keywords: [ "animal", "nature", "panda" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3c" src="1f43c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  koala: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc28" src="1f428.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tiger: {
+    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2f" src="1f42f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lion: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd81" src="1f981.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cow: {
+    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2e" src="1f42e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig: {
+    keywords: [ "animal", "oink", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc37" src="1f437.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig_nose: {
+    keywords: [ "animal", "oink" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3d" src="1f43d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  frog: {
+    keywords: [ "animal", "nature", "croak", "toad" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc38" src="1f438.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  squid: {
+    keywords: [ "animal", "nature", "ocean", "sea" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd91" src="1f991.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  octopus: {
+    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc19" src="1f419.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shrimp: {
+    keywords: [ "animal", "ocean", "nature", "seafood" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd90" src="1f990.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  monkey_face: {
+    keywords: [ "animal", "nature", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc35" src="1f435.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  gorilla: {
+    keywords: [ "animal", "nature", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8d" src="1f98d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  see_no_evil: {
+    keywords: [ "monkey", "animal", "nature", "haha" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude48" src="1f648.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hear_no_evil: {
+    keywords: [ "animal", "monkey", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude49" src="1f649.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  speak_no_evil: {
+    keywords: [ "monkey", "animal", "nature", "omg" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4a" src="1f64a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  monkey: {
+    keywords: [ "animal", "nature", "banana", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc12" src="1f412.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chicken: {
+    keywords: [ "animal", "cluck", "nature", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc14" src="1f414.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  penguin: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc27" src="1f427.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bird: {
+    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc26" src="1f426.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  baby_chick: {
+    keywords: [ "animal", "chicken", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc24" src="1f424.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hatching_chick: {
+    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc23" src="1f423.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hatched_chick: {
+    keywords: [ "animal", "chicken", "baby", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc25" src="1f425.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  duck: {
+    keywords: [ "animal", "nature", "bird", "mallard" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd86" src="1f986.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  eagle: {
+    keywords: [ "animal", "nature", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd85" src="1f985.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  owl: {
+    keywords: [ "animal", "nature", "bird", "hoot" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd89" src="1f989.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bat: {
+    keywords: [ "animal", "nature", "blind", "vampire" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd87" src="1f987.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wolf: {
+    keywords: [ "animal", "nature", "wild" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3a" src="1f43a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  boar: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc17" src="1f417.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  horse: {
+    keywords: [ "animal", "brown", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc34" src="1f434.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  unicorn: {
+    keywords: [ "animal", "nature", "mystical" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd84" src="1f984.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  honeybee: {
+    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1d" src="1f41d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bug: {
+    keywords: [ "animal", "insect", "nature", "worm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1b" src="1f41b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  butterfly: {
+    keywords: [ "animal", "insect", "nature", "caterpillar" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8b" src="1f98b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snail: {
+    keywords: [ "slow", "animal", "shell" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0c" src="1f40c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  beetle: {
+    keywords: [ "animal", "insect", "nature", "ladybug" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1e" src="1f41e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ant: {
+    keywords: [ "animal", "insect", "nature", "bug" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1c" src="1f41c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  grasshopper: {
+    keywords: [ "animal", "cricket", "chirp" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd97" src="1f997.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  spider: {
+    keywords: [ "animal", "arachnid" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd77" src="1f577.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  scorpion: {
+    keywords: [ "animal", "arachnid" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd82" src="1f982.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crab: {
+    keywords: [ "animal", "crustacean" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd80" src="1f980.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snake: {
+    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0d" src="1f40d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lizard: {
+    keywords: [ "animal", "nature", "reptile" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8e" src="1f98e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  "t-rex": {
+    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd96" src="1f996.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sauropod: {
+    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd95" src="1f995.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  turtle: {
+    keywords: [ "animal", "slow", "nature", "tortoise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc22" src="1f422.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tropical_fish: {
+    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc20" src="1f420.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fish: {
+    keywords: [ "animal", "food", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1f" src="1f41f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  blowfish: {
+    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc21" src="1f421.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dolphin: {
+    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2c" src="1f42c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shark: {
+    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd88" src="1f988.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  whale: {
+    keywords: [ "animal", "nature", "sea", "ocean" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc33" src="1f433.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  whale2: {
+    keywords: [ "animal", "nature", "sea", "ocean" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0b" src="1f40b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crocodile: {
+    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0a" src="1f40a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  leopard: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc06" src="1f406.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  zebra: {
+    keywords: [ "animal", "nature", "stripes", "safari" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd93" src="1f993.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tiger2: {
+    keywords: [ "animal", "nature", "roar" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc05" src="1f405.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  water_buffalo: {
+    keywords: [ "animal", "nature", "ox", "cow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc03" src="1f403.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ox: {
+    keywords: [ "animal", "cow", "beef" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc02" src="1f402.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cow2: {
+    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc04" src="1f404.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  deer: {
+    keywords: [ "animal", "nature", "horns", "venison" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8c" src="1f98c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dromedary_camel: {
+    keywords: [ "animal", "hot", "desert", "hump" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2a" src="1f42a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  camel: {
+    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2b" src="1f42b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  giraffe: {
+    keywords: [ "animal", "nature", "spots", "safari" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd92" src="1f992.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  elephant: {
+    keywords: [ "animal", "nature", "nose", "th", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc18" src="1f418.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rhinoceros: {
+    keywords: [ "animal", "nature", "horn" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8f" src="1f98f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  goat: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc10" src="1f410.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ram: {
+    keywords: [ "animal", "sheep", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0f" src="1f40f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sheep: {
+    keywords: [ "animal", "nature", "wool", "shipit" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc11" src="1f411.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  racehorse: {
+    keywords: [ "animal", "gamble", "luck" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0e" src="1f40e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig2: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc16" src="1f416.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rat: {
+    keywords: [ "animal", "mouse", "rodent" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc00" src="1f400.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mouse2: {
+    keywords: [ "animal", "nature", "rodent" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc01" src="1f401.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rooster: {
+    keywords: [ "animal", "nature", "chicken" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc13" src="1f413.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  turkey: {
+    keywords: [ "animal", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd83" src="1f983.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dove: {
+    keywords: [ "animal", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4a" src="1f54a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dog2: {
+    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc15" src="1f415.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  poodle: {
+    keywords: [ "dog", "animal", "101", "nature", "pet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc29" src="1f429.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cat2: {
+    keywords: [ "animal", "meow", "pet", "cats" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc08" src="1f408.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rabbit2: {
+    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc07" src="1f407.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chipmunk: {
+    keywords: [ "animal", "nature", "rodent", "squirrel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3f" src="1f43f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hedgehog: {
+    keywords: [ "animal", "nature", "spiny" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd94" src="1f994.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  raccoon: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9d" src="1f99d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  llama: {
+    keywords: [ "animal", "nature", "alpaca" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd99" src="1f999.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hippopotamus: {
+    keywords: [ "animal", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9b" src="1f99b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  kangaroo: {
+    keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd98" src="1f998.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  badger: {
+    keywords: [ "animal", "nature", "honey" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda1" src="1f9a1.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  swan: {
+    keywords: [ "animal", "nature", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda2" src="1f9a2.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  peacock: {
+    keywords: [ "animal", "nature", "peahen", "bird" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9a" src="1f99a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  parrot: {
+    keywords: [ "animal", "nature", "bird", "pirate", "talk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9c" src="1f99c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lobster: {
+    keywords: [ "animal", "nature", "bisque", "claws", "seafood" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9e" src="1f99e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mosquito: {
+    keywords: [ "animal", "nature", "insect", "malaria" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9f" src="1f99f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  paw_prints: {
+    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3e" src="1f43e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dragon: {
+    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc09" src="1f409.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dragon_face: {
+    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc32" src="1f432.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cactus: {
+    keywords: [ "vegetable", "plant", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf35" src="1f335.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  christmas_tree: {
+    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf84" src="1f384.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  evergreen_tree: {
+    keywords: [ "plant", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf32" src="1f332.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  deciduous_tree: {
+    keywords: [ "plant", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf33" src="1f333.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  palm_tree: {
+    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf34" src="1f334.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  seedling: {
+    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf31" src="1f331.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  herb: {
+    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3f" src="1f33f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shamrock: {
+    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2618" src="2618.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  four_leaf_clover: {
+    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf40" src="1f340.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bamboo: {
+    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8d" src="1f38d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tanabata_tree: {
+    keywords: [ "plant", "nature", "branch", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8b" src="1f38b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  leaves: {
+    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf43" src="1f343.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fallen_leaf: {
+    keywords: [ "nature", "plant", "vegetable", "leaves" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf42" src="1f342.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  maple_leaf: {
+    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf41" src="1f341.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ear_of_rice: {
+    keywords: [ "nature", "plant" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3e" src="1f33e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hibiscus: {
+    keywords: [ "plant", "vegetable", "flowers", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3a" src="1f33a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sunflower: {
+    keywords: [ "nature", "plant", "fall" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3b" src="1f33b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rose: {
+    keywords: [ "flowers", "valentines", "love", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf39" src="1f339.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wilted_flower: {
+    keywords: [ "plant", "nature", "flower" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd40" src="1f940.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tulip: {
+    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf37" src="1f337.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  blossom: {
+    keywords: [ "nature", "flowers", "yellow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3c" src="1f33c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cherry_blossom: {
+    keywords: [ "nature", "plant", "spring", "flower" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf38" src="1f338.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bouquet: {
+    keywords: [ "flowers", "nature", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc90" src="1f490.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mushroom: {
+    keywords: [ "plant", "vegetable" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf44" src="1f344.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chestnut: {
+    keywords: [ "food", "squirrel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf30" src="1f330.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  jack_o_lantern: {
+    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf83" src="1f383.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shell: {
+    keywords: [ "nature", "sea", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1a" src="1f41a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  spider_web: {
+    keywords: [ "animal", "insect", "arachnid", "silk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd78" src="1f578.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_americas: {
+    keywords: [ "globe", "world", "USA", "international" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0e" src="1f30e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_africa: {
+    keywords: [ "globe", "world", "international" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0d" src="1f30d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_asia: {
+    keywords: [ "globe", "world", "east", "international" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0f" src="1f30f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  full_moon: {
+    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf15" src="1f315.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waning_gibbous_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf16" src="1f316.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  last_quarter_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf17" src="1f317.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waning_crescent_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf18" src="1f318.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  new_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf11" src="1f311.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waxing_crescent_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf12" src="1f312.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  first_quarter_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf13" src="1f313.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waxing_gibbous_moon: {
+    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf14" src="1f314.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  new_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1a" src="1f31a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  full_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1d" src="1f31d.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  first_quarter_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1b" src="1f31b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  last_quarter_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1c" src="1f31c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_with_face: {
+    keywords: [ "nature", "morning", "sky" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1e" src="1f31e.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crescent_moon: {
+    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf19" src="1f319.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  star: {
+    keywords: [ "night", "yellow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b50" src="2b50.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  star2: {
+    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1f" src="1f31f.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dizzy: {
+    keywords: [ "star", "sparkle", "shoot", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcab" src="1f4ab.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sparkles: {
+    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2728" src="2728.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  comet: {
+    keywords: [ "space" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2604" src="2604.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sunny: {
+    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2600\ufe0f" src="2600.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_small_cloud: {
+    keywords: [ "weather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf24" src="1f324.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  partly_sunny: {
+    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c5" src="26c5.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_large_cloud: {
+    keywords: [ "weather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf25" src="1f325.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_rain_cloud: {
+    keywords: [ "weather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf26" src="1f326.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud: {
+    keywords: [ "weather", "sky" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2601\ufe0f" src="2601.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_rain: {
+    keywords: [ "weather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf27" src="1f327.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_lightning_and_rain: {
+    keywords: [ "weather", "lightning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c8" src="26c8.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_lightning: {
+    keywords: [ "weather", "thunder" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf29" src="1f329.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  zap: {
+    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a1" src="26a1.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fire: {
+    keywords: [ "hot", "cook", "flame" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd25" src="1f525.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  boom: {
+    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca5" src="1f4a5.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowflake: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2744\ufe0f" src="2744.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_snow: {
+    keywords: [ "weather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf28" src="1f328.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowman: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c4" src="26c4.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowman_with_snow: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2603" src="2603.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wind_face: {
+    keywords: [ "gust", "air" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2c" src="1f32c.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dash: {
+    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca8" src="1f4a8.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tornado: {
+    keywords: [ "weather", "cyclone", "twister" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2a" src="1f32a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fog: {
+    keywords: [ "weather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2b" src="1f32b.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  open_umbrella: {
+    keywords: [ "weather", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2602" src="2602.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  umbrella: {
+    keywords: [ "rainy", "weather", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2614" src="2614.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  droplet: {
+    keywords: [ "water", "drip", "faucet", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca7" src="1f4a7.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sweat_drops: {
+    keywords: [ "water", "drip", "oops" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca6" src="1f4a6.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ocean: {
+    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0a" src="1f30a.png"/>',
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  green_apple: {
+    keywords: [ "fruit", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4f" src="1f34f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  apple: {
+    keywords: [ "fruit", "mac", "school" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4e" src="1f34e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pear: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf50" src="1f350.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tangerine: {
+    keywords: [ "food", "fruit", "nature", "orange" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4a" src="1f34a.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  lemon: {
+    keywords: [ "fruit", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4b" src="1f34b.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  banana: {
+    keywords: [ "fruit", "food", "monkey" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4c" src="1f34c.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  watermelon: {
+    keywords: [ "fruit", "food", "picnic", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf49" src="1f349.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  grapes: {
+    keywords: [ "fruit", "food", "wine" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf47" src="1f347.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  strawberry: {
+    keywords: [ "fruit", "food", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf53" src="1f353.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  melon: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf48" src="1f348.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cherries: {
+    keywords: [ "food", "fruit" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf52" src="1f352.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  peach: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf51" src="1f351.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pineapple: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4d" src="1f34d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  coconut: {
+    keywords: [ "fruit", "nature", "food", "palm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd65" src="1f965.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  kiwi_fruit: {
+    keywords: [ "fruit", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5d" src="1f95d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  mango: {
+    keywords: [ "fruit", "food", "tropical" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6d" src="1f96d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  avocado: {
+    keywords: [ "fruit", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd51" src="1f951.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  broccoli: {
+    keywords: [ "fruit", "food", "vegetable" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd66" src="1f966.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tomato: {
+    keywords: [ "fruit", "vegetable", "nature", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf45" src="1f345.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  eggplant: {
+    keywords: [ "vegetable", "nature", "food", "aubergine" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf46" src="1f346.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cucumber: {
+    keywords: [ "fruit", "food", "pickle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd52" src="1f952.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  carrot: {
+    keywords: [ "vegetable", "food", "orange" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd55" src="1f955.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hot_pepper: {
+    keywords: [ "food", "spicy", "chilli", "chili" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf36" src="1f336.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  potato: {
+    keywords: [ "food", "tuber", "vegatable", "starch" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd54" src="1f954.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  corn: {
+    keywords: [ "food", "vegetable", "plant" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3d" src="1f33d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  leafy_greens: {
+    keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6c" src="1f96c.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sweet_potato: {
+    keywords: [ "food", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf60" src="1f360.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  peanuts: {
+    keywords: [ "food", "nut" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5c" src="1f95c.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  honey_pot: {
+    keywords: [ "bees", "sweet", "kitchen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6f" src="1f36f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  croissant: {
+    keywords: [ "food", "bread", "french" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd50" src="1f950.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bread: {
+    keywords: [ "food", "wheat", "breakfast", "toast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5e" src="1f35e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  baguette_bread: {
+    keywords: [ "food", "bread", "french" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd56" src="1f956.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bagel: {
+    keywords: [ "food", "bread", "bakery", "schmear" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6f" src="1f96f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pretzel: {
+    keywords: [ "food", "bread", "twisted" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd68" src="1f968.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cheese: {
+    keywords: [ "food", "chadder" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc0" src="1f9c0.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  egg: {
+    keywords: [ "food", "chicken", "breakfast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5a" src="1f95a.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bacon: {
+    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd53" src="1f953.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  steak: {
+    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd69" src="1f969.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pancakes: {
+    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5e" src="1f95e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  poultry_leg: {
+    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf57" src="1f357.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  meat_on_bone: {
+    keywords: [ "good", "food", "drumstick" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf56" src="1f356.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bone: {
+    keywords: [ "skeleton" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb4" src="1f9b4.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fried_shrimp: {
+    keywords: [ "food", "animal", "appetizer", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf64" src="1f364.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fried_egg: {
+    keywords: [ "food", "breakfast", "kitchen", "egg" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf73" src="1f373.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hamburger: {
+    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf54" src="1f354.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fries: {
+    keywords: [ "chips", "snack", "fast food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5f" src="1f35f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  stuffed_flatbread: {
+    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd59" src="1f959.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hotdog: {
+    keywords: [ "food", "frankfurter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2d" src="1f32d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pizza: {
+    keywords: [ "food", "party" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf55" src="1f355.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sandwich: {
+    keywords: [ "food", "lunch", "bread" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6a" src="1f96a.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  canned_food: {
+    keywords: [ "food", "soup" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6b" src="1f96b.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  spaghetti: {
+    keywords: [ "food", "italian", "noodle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5d" src="1f35d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  taco: {
+    keywords: [ "food", "mexican" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2e" src="1f32e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  burrito: {
+    keywords: [ "food", "mexican" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2f" src="1f32f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  green_salad: {
+    keywords: [ "food", "healthy", "lettuce" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd57" src="1f957.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  shallow_pan_of_food: {
+    keywords: [ "food", "cooking", "casserole", "paella" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd58" src="1f958.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  ramen: {
+    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5c" src="1f35c.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  stew: {
+    keywords: [ "food", "meat", "soup" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf72" src="1f372.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fish_cake: {
+    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf65" src="1f365.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fortune_cookie: {
+    keywords: [ "food", "prophecy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd60" src="1f960.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sushi: {
+    keywords: [ "food", "fish", "japanese", "rice" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf63" src="1f363.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bento: {
+    keywords: [ "food", "japanese", "box" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf71" src="1f371.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  curry: {
+    keywords: [ "food", "spicy", "hot", "indian" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5b" src="1f35b.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice_ball: {
+    keywords: [ "food", "japanese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf59" src="1f359.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice: {
+    keywords: [ "food", "china", "asian" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5a" src="1f35a.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice_cracker: {
+    keywords: [ "food", "japanese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf58" src="1f358.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  oden: {
+    keywords: [ "food", "japanese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf62" src="1f362.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  dango: {
+    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf61" src="1f361.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  shaved_ice: {
+    keywords: [ "hot", "dessert", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf67" src="1f367.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  ice_cream: {
+    keywords: [ "food", "hot", "dessert" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf68" src="1f368.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  icecream: {
+    keywords: [ "food", "hot", "dessert", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf66" src="1f366.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pie: {
+    keywords: [ "food", "dessert", "pastry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd67" src="1f967.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cake: {
+    keywords: [ "food", "dessert" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf70" src="1f370.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cupcake: {
+    keywords: [ "food", "dessert", "bakery", "sweet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc1" src="1f9c1.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  moon_cake: {
+    keywords: [ "food", "autumn" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6e" src="1f96e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  birthday: {
+    keywords: [ "food", "dessert", "cake" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf82" src="1f382.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  custard: {
+    keywords: [ "dessert", "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6e" src="1f36e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  candy: {
+    keywords: [ "snack", "dessert", "sweet", "lolly" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6c" src="1f36c.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  lollipop: {
+    keywords: [ "food", "snack", "candy", "sweet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6d" src="1f36d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  chocolate_bar: {
+    keywords: [ "food", "snack", "dessert", "sweet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6b" src="1f36b.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  popcorn: {
+    keywords: [ "food", "movie theater", "films", "snack" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7f" src="1f37f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  dumpling: {
+    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5f" src="1f95f.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  doughnut: {
+    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf69" src="1f369.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cookie: {
+    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6a" src="1f36a.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  milk_glass: {
+    keywords: [ "beverage", "drink", "cow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5b" src="1f95b.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  beer: {
+    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7a" src="1f37a.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  beers: {
+    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7b" src="1f37b.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  clinking_glasses: {
+    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd42" src="1f942.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  wine_glass: {
+    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf77" src="1f377.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tumbler_glass: {
+    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd43" src="1f943.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cocktail: {
+    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf78" src="1f378.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tropical_drink: {
+    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf79" src="1f379.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  champagne: {
+    keywords: [ "drink", "wine", "bottle", "celebration" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7e" src="1f37e.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sake: {
+    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf76" src="1f376.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tea: {
+    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf75" src="1f375.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cup_with_straw: {
+    keywords: [ "drink", "soda" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd64" src="1f964.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  coffee: {
+    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2615" src="2615.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  baby_bottle: {
+    keywords: [ "food", "container", "milk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7c" src="1f37c.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  salt: {
+    keywords: [ "condiment", "shaker" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc2" src="1f9c2.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  spoon: {
+    keywords: [ "cutlery", "kitchen", "tableware" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd44" src="1f944.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fork_and_knife: {
+    keywords: [ "cutlery", "kitchen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf74" src="1f374.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  plate_with_cutlery: {
+    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7d" src="1f37d.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bowl_with_spoon: {
+    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd63" src="1f963.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  takeout_box: {
+    keywords: [ "food", "leftovers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd61" src="1f961.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  chopsticks: {
+    keywords: [ "food" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd62" src="1f962.png"/>',
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  soccer: {
+    keywords: [ "sports", "football" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26bd" src="26bd.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  basketball: {
+    keywords: [ "sports", "balls", "NBA" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc0" src="1f3c0.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  football: {
+    keywords: [ "sports", "balls", "NFL" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc8" src="1f3c8.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  baseball: {
+    keywords: [ "sports", "balls" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26be" src="26be.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  softball: {
+    keywords: [ "sports", "balls" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4e" src="1f94e.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  tennis: {
+    keywords: [ "sports", "balls", "green" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbe" src="1f3be.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  volleyball: {
+    keywords: [ "sports", "balls" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd0" src="1f3d0.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rugby_football: {
+    keywords: [ "sports", "team" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc9" src="1f3c9.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  flying_disc: {
+    keywords: [ "sports", "frisbee", "ultimate" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4f" src="1f94f.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "8ball": {
+    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb1" src="1f3b1.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golf: {
+    keywords: [ "sports", "business", "flag", "hole", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f3" src="26f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golfing_woman: {
+    keywords: [ "sports", "business", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f" src="1f3cc-fe0f-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golfing_man: {
+    keywords: [ "sports", "business" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc" src="1f3cc.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  ping_pong: {
+    keywords: [ "sports", "pingpong" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd3" src="1f3d3.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  badminton: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff8" src="1f3f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  goal_net: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd45" src="1f945.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ice_hockey: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd2" src="1f3d2.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  field_hockey: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd1" src="1f3d1.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  lacrosse: {
+    keywords: [ "sports", "ball", "stick" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4d" src="1f94d.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  cricket: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcf" src="1f3cf.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ski: {
+    keywords: [ "sports", "winter", "cold", "snow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbf" src="1f3bf.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  skier: {
+    keywords: [ "sports", "winter", "snow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f7" src="26f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  snowboarder: {
+    keywords: [ "sports", "winter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc2" src="1f3c2.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  person_fencing: {
+    keywords: [ "sports", "fencing", "sword" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3a" src="1f93a.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  women_wrestling: {
+    keywords: [ "sports", "wrestlers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2640\ufe0f" src="1f93c-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  men_wrestling: {
+    keywords: [ "sports", "wrestlers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2642\ufe0f" src="1f93c-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  woman_cartwheeling: {
+    keywords: [ "gymnastics" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2640\ufe0f" src="1f938-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_cartwheeling: {
+    keywords: [ "gymnastics" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2642\ufe0f" src="1f938-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_playing_handball: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2640\ufe0f" src="1f93e-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_playing_handball: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2642\ufe0f" src="1f93e-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  ice_skate: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f8" src="26f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  curling_stone: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4c" src="1f94c.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  skateboard: {
+    keywords: [ "board" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef9" src="1f6f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  sled: {
+    keywords: [ "sleigh", "luge", "toboggan" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef7" src="1f6f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  bow_and_arrow: {
+    keywords: [ "sports" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff9" src="1f3f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  fishing_pole_and_fish: {
+    keywords: [ "food", "hobby", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa3" src="1f3a3.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  boxing_glove: {
+    keywords: [ "sports", "fighting" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4a" src="1f94a.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  martial_arts_uniform: {
+    keywords: [ "judo", "karate", "taekwondo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4b" src="1f94b.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rowing_woman: {
+    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3\u200d\u2640\ufe0f" src="1f6a3-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  rowing_man: {
+    keywords: [ "sports", "hobby", "water", "ship" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3" src="1f6a3.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  climbing_woman: {
+    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2640\ufe0f" src="1f9d7-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  climbing_man: {
+    keywords: [ "sports", "hobby", "man", "male", "rock" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2642\ufe0f" src="1f9d7-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  swimming_woman: {
+    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca\u200d\u2640\ufe0f" src="1f3ca-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  swimming_man: {
+    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca" src="1f3ca.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_playing_water_polo: {
+    keywords: [ "sports", "pool" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2640\ufe0f" src="1f93d-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_playing_water_polo: {
+    keywords: [ "sports", "pool" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2642\ufe0f" src="1f93d-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_in_lotus_position: {
+    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2640\ufe0f" src="1f9d8-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_in_lotus_position: {
+    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2642\ufe0f" src="1f9d8-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  surfing_woman: {
+    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4\u200d\u2640\ufe0f" src="1f3c4-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  surfing_man: {
+    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4" src="1f3c4.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  bath: {
+    keywords: [ "clean", "shower", "bathroom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec0" src="1f6c0.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  basketball_woman: {
+    keywords: [ "sports", "human", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9\ufe0f\u200d\u2640\ufe0f" src="26f9-fe0f-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  basketball_man: {
+    keywords: [ "sports", "human" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9" src="26f9.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  weight_lifting_woman: {
+    keywords: [ "sports", "training", "exercise", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f" src="1f3cb-fe0f-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  weight_lifting_man: {
+    keywords: [ "sports", "training", "exercise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb" src="1f3cb.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  biking_woman: {
+    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4\u200d\u2640\ufe0f" src="1f6b4-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  biking_man: {
+    keywords: [ "sports", "bike", "exercise", "hipster" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4" src="1f6b4.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  mountain_biking_woman: {
+    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5\u200d\u2640\ufe0f" src="1f6b5-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  mountain_biking_man: {
+    keywords: [ "transportation", "sports", "human", "race", "bike" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5" src="1f6b5.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  horse_racing: {
+    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc7" src="1f3c7.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  business_suit_levitating: {
+    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd74" src="1f574.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  trophy: {
+    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc6" src="1f3c6.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  running_shirt_with_sash: {
+    keywords: [ "play", "pageant" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbd" src="1f3bd.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  medal_sports: {
+    keywords: [ "award", "winning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc5" src="1f3c5.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  medal_military: {
+    keywords: [ "award", "winning", "army" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf96" src="1f396.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "1st_place_medal": {
+    keywords: [ "award", "winning", "first" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd47" src="1f947.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "2nd_place_medal": {
+    keywords: [ "award", "second" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd48" src="1f948.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "3rd_place_medal": {
+    keywords: [ "award", "third" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd49" src="1f949.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  reminder_ribbon: {
+    keywords: [ "sports", "cause", "support", "awareness" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf97" src="1f397.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rosette: {
+    keywords: [ "flower", "decoration", "military" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff5" src="1f3f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ticket: {
+    keywords: [ "event", "concert", "pass" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfab" src="1f3ab.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  tickets: {
+    keywords: [ "sports", "concert", "entrance" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9f" src="1f39f.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  performing_arts: {
+    keywords: [ "acting", "theater", "drama" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfad" src="1f3ad.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  art: {
+    keywords: [ "design", "paint", "draw", "colors" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa8" src="1f3a8.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  circus_tent: {
+    keywords: [ "festival", "carnival", "party" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaa" src="1f3aa.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  woman_juggling: {
+    keywords: [ "juggle", "balance", "skill", "multitask" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2640\ufe0f" src="1f939-200d-2640-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_juggling: {
+    keywords: [ "juggle", "balance", "skill", "multitask" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2642\ufe0f" src="1f939-200d-2642-fe0f.png"/>',
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  microphone: {
+    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa4" src="1f3a4.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  headphones: {
+    keywords: [ "music", "score", "gadgets" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa7" src="1f3a7.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  musical_score: {
+    keywords: [ "treble", "clef", "compose" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbc" src="1f3bc.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  musical_keyboard: {
+    keywords: [ "piano", "instrument", "compose" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb9" src="1f3b9.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  drum: {
+    keywords: [ "music", "instrument", "drumsticks", "snare" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd41" src="1f941.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  saxophone: {
+    keywords: [ "music", "instrument", "jazz", "blues" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb7" src="1f3b7.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  trumpet: {
+    keywords: [ "music", "brass" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfba" src="1f3ba.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  guitar: {
+    keywords: [ "music", "instrument" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb8" src="1f3b8.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  violin: {
+    keywords: [ "music", "instrument", "orchestra", "symphony" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbb" src="1f3bb.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  clapper: {
+    keywords: [ "movie", "film", "record" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfac" src="1f3ac.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  video_game: {
+    keywords: [ "play", "console", "PS4", "controller" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfae" src="1f3ae.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  space_invader: {
+    keywords: [ "game", "arcade", "play" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7e" src="1f47e.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  dart: {
+    keywords: [ "game", "play", "bar", "target", "bullseye" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaf" src="1f3af.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  game_die: {
+    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb2" src="1f3b2.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  chess_pawn: {
+    keywords: [ "expendable" ],
+    char: "\u265f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  slot_machine: {
+    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb0" src="1f3b0.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  jigsaw: {
+    keywords: [ "interlocking", "puzzle", "piece" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde9" src="1f9e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  bowling: {
+    keywords: [ "sports", "fun", "play" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb3" src="1f3b3.png"/>',
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  red_car: {
+    keywords: [ "red", "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude97" src="1f697.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  taxi: {
+    keywords: [ "uber", "vehicle", "cars", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude95" src="1f695.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  blue_car: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude99" src="1f699.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bus: {
+    keywords: [ "car", "vehicle", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8c" src="1f68c.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  trolleybus: {
+    keywords: [ "bart", "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8e" src="1f68e.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  racing_car: {
+    keywords: [ "sports", "race", "fast", "formula", "f1" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfce" src="1f3ce.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  police_car: {
+    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude93" src="1f693.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ambulance: {
+    keywords: [ "health", "911", "hospital" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude91" src="1f691.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fire_engine: {
+    keywords: [ "transportation", "cars", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude92" src="1f692.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  minibus: {
+    keywords: [ "vehicle", "car", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude90" src="1f690.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  truck: {
+    keywords: [ "cars", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9a" src="1f69a.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  articulated_lorry: {
+    keywords: [ "vehicle", "cars", "transportation", "express" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9b" src="1f69b.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tractor: {
+    keywords: [ "vehicle", "car", "farming", "agriculture" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9c" src="1f69c.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  kick_scooter: {
+    keywords: [ "vehicle", "kick", "razor" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef4" src="1f6f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motorcycle: {
+    keywords: [ "race", "sports", "fast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcd" src="1f3cd.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bike: {
+    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb2" src="1f6b2.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motor_scooter: {
+    keywords: [ "vehicle", "vespa", "sasha" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef5" src="1f6f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rotating_light: {
+    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea8" src="1f6a8.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_police_car: {
+    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude94" src="1f694.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_bus: {
+    keywords: [ "vehicle", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8d" src="1f68d.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_automobile: {
+    keywords: [ "car", "vehicle", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude98" src="1f698.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_taxi: {
+    keywords: [ "vehicle", "cars", "uber" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude96" src="1f696.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  aerial_tramway: {
+    keywords: [ "transportation", "vehicle", "ski" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea1" src="1f6a1.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_cableway: {
+    keywords: [ "transportation", "vehicle", "ski" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea0" src="1f6a0.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  suspension_railway: {
+    keywords: [ "vehicle", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9f" src="1f69f.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  railway_car: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude83" src="1f683.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  train: {
+    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8b" src="1f68b.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  monorail: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9d" src="1f69d.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bullettrain_side: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude84" src="1f684.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bullettrain_front: {
+    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude85" src="1f685.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  light_rail: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude88" src="1f688.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_railway: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9e" src="1f69e.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  steam_locomotive: {
+    keywords: [ "transportation", "vehicle", "train" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude82" src="1f682.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  train2: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude86" src="1f686.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  metro: {
+    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude87" src="1f687.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tram: {
+    keywords: [ "transportation", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8a" src="1f68a.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  station: {
+    keywords: [ "transportation", "vehicle", "public" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude89" src="1f689.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flying_saucer: {
+    keywords: [ "transportation", "vehicle", "ufo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef8" src="1f6f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  helicopter: {
+    keywords: [ "transportation", "vehicle", "fly" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude81" src="1f681.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  small_airplane: {
+    keywords: [ "flight", "transportation", "fly", "vehicle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee9" src="1f6e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  airplane: {
+    keywords: [ "vehicle", "transportation", "flight", "fly" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2708\ufe0f" src="2708.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flight_departure: {
+    keywords: [ "airport", "flight", "landing" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeeb" src="1f6eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flight_arrival: {
+    keywords: [ "airport", "flight", "boarding" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeec" src="1f6ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sailboat: {
+    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f5" src="26f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motor_boat: {
+    keywords: [ "ship" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee5" src="1f6e5.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  speedboat: {
+    keywords: [ "ship", "transportation", "vehicle", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea4" src="1f6a4.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ferry: {
+    keywords: [ "boat", "ship", "yacht" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f4" src="26f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  passenger_ship: {
+    keywords: [ "yacht", "cruise", "ferry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef3" src="1f6f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rocket: {
+    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude80" src="1f680.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  artificial_satellite: {
+    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef0" src="1f6f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  seat: {
+    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcba" src="1f4ba.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  canoe: {
+    keywords: [ "boat", "paddle", "water", "ship" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef6" src="1f6f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  anchor: {
+    keywords: [ "ship", "ferry", "sea", "boat" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2693" src="2693.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  construction: {
+    keywords: [ "wip", "progress", "caution", "warning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea7" src="1f6a7.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fuelpump: {
+    keywords: [ "gas station", "petroleum" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fd" src="26fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  busstop: {
+    keywords: [ "transportation", "wait" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8f" src="1f68f.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  vertical_traffic_light: {
+    keywords: [ "transportation", "driving" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea6" src="1f6a6.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  traffic_light: {
+    keywords: [ "transportation", "signal" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea5" src="1f6a5.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  checkered_flag: {
+    keywords: [ "contest", "finishline", "race", "gokart" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc1" src="1f3c1.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ship: {
+    keywords: [ "transportation", "titanic", "deploy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea2" src="1f6a2.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ferris_wheel: {
+    keywords: [ "photo", "carnival", "londoneye" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa1" src="1f3a1.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  roller_coaster: {
+    keywords: [ "carnival", "playground", "photo", "fun" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa2" src="1f3a2.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  carousel_horse: {
+    keywords: [ "photo", "carnival" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa0" src="1f3a0.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  building_construction: {
+    keywords: [ "wip", "working", "progress" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd7" src="1f3d7.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  foggy: {
+    keywords: [ "photo", "mountain" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf01" src="1f301.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tokyo_tower: {
+    keywords: [ "photo", "japanese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfc" src="1f5fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  factory: {
+    keywords: [ "building", "industry", "pollution", "smoke" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfed" src="1f3ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fountain: {
+    keywords: [ "photo", "summer", "water", "fresh" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f2" src="26f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rice_scene: {
+    keywords: [ "photo", "japan", "asia", "tsukimi" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf91" src="1f391.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain: {
+    keywords: [ "photo", "nature", "environment" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f0" src="26f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_snow: {
+    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd4" src="1f3d4.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mount_fuji: {
+    keywords: [ "photo", "mountain", "nature", "japanese" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfb" src="1f5fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  volcano: {
+    keywords: [ "photo", "nature", "disaster" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0b" src="1f30b.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  japan: {
+    keywords: [ "nation", "country", "japanese", "asia" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfe" src="1f5fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  camping: {
+    keywords: [ "photo", "outdoors", "tent" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd5" src="1f3d5.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tent: {
+    keywords: [ "photo", "camping", "outdoors" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fa" src="26fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  national_park: {
+    keywords: [ "photo", "environment", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfde" src="1f3de.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motorway: {
+    keywords: [ "road", "cupertino", "interstate", "highway" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee3" src="1f6e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  railway_track: {
+    keywords: [ "train", "transportation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee4" src="1f6e4.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sunrise: {
+    keywords: [ "morning", "view", "vacation", "photo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf05" src="1f305.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sunrise_over_mountains: {
+    keywords: [ "view", "vacation", "photo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf04" src="1f304.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  desert: {
+    keywords: [ "photo", "warm", "saharah" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdc" src="1f3dc.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  beach_umbrella: {
+    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd6" src="1f3d6.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  desert_island: {
+    keywords: [ "photo", "tropical", "mojito" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdd" src="1f3dd.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  city_sunrise: {
+    keywords: [ "photo", "good morning", "dawn" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf07" src="1f307.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  city_sunset: {
+    keywords: [ "photo", "evening", "sky", "buildings" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf06" src="1f306.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  cityscape: {
+    keywords: [ "photo", "night life", "urban" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd9" src="1f3d9.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  night_with_stars: {
+    keywords: [ "evening", "city", "downtown" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf03" src="1f303.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bridge_at_night: {
+    keywords: [ "photo", "sanfrancisco" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf09" src="1f309.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  milky_way: {
+    keywords: [ "photo", "space", "stars" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0c" src="1f30c.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  stars: {
+    keywords: [ "night", "photo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf20" src="1f320.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sparkler: {
+    keywords: [ "stars", "night", "shine" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf87" src="1f387.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fireworks: {
+    keywords: [ "photo", "festival", "carnival", "congratulations" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf86" src="1f386.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rainbow: {
+    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf08" src="1f308.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  houses: {
+    keywords: [ "buildings", "photo" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd8" src="1f3d8.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  european_castle: {
+    keywords: [ "building", "royalty", "history" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff0" src="1f3f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  japanese_castle: {
+    keywords: [ "photo", "building" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfef" src="1f3ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  stadium: {
+    keywords: [ "photo", "place", "sports", "concert", "venue" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdf" src="1f3df.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  statue_of_liberty: {
+    keywords: [ "american", "newyork" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfd" src="1f5fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  house: {
+    keywords: [ "building", "home" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe0" src="1f3e0.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  house_with_garden: {
+    keywords: [ "home", "plant", "nature" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe1" src="1f3e1.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  derelict_house: {
+    keywords: [ "abandon", "evict", "broken", "building" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfda" src="1f3da.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  office: {
+    keywords: [ "building", "bureau", "work" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe2" src="1f3e2.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  department_store: {
+    keywords: [ "building", "shopping", "mall" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfec" src="1f3ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  post_office: {
+    keywords: [ "building", "envelope", "communication" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe3" src="1f3e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  european_post_office: {
+    keywords: [ "building", "email" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe4" src="1f3e4.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  hospital: {
+    keywords: [ "building", "health", "surgery", "doctor" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe5" src="1f3e5.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bank: {
+    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe6" src="1f3e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  hotel: {
+    keywords: [ "building", "accomodation", "checkin" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe8" src="1f3e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  convenience_store: {
+    keywords: [ "building", "shopping", "groceries" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfea" src="1f3ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  school: {
+    keywords: [ "building", "student", "education", "learn", "teach" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfeb" src="1f3eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  love_hotel: {
+    keywords: [ "like", "affection", "dating" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe9" src="1f3e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  wedding: {
+    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc92" src="1f492.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  classical_building: {
+    keywords: [ "art", "culture", "history" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdb" src="1f3db.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  church: {
+    keywords: [ "building", "religion", "christ" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ea" src="26ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mosque: {
+    keywords: [ "islam", "worship", "minaret" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4c" src="1f54c.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  synagogue: {
+    keywords: [ "judaism", "worship", "temple", "jewish" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4d" src="1f54d.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  kaaba: {
+    keywords: [ "mecca", "mosque", "islam" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4b" src="1f54b.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  shinto_shrine: {
+    keywords: [ "temple", "japan", "kyoto" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26e9" src="26e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  watch: {
+    keywords: [ "time", "accessories" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231a" src="231a.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  iphone: {
+    keywords: [ "technology", "apple", "gadgets", "dial" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf1" src="1f4f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  calling: {
+    keywords: [ "iphone", "incoming" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf2" src="1f4f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  computer: {
+    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbb" src="1f4bb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  keyboard: {
+    keywords: [ "technology", "computer", "type", "input", "text" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2328" src="2328.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  desktop_computer: {
+    keywords: [ "technology", "computing", "screen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda5" src="1f5a5.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  printer: {
+    keywords: [ "paper", "ink" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda8" src="1f5a8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  computer_mouse: {
+    keywords: [ "click" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb1" src="1f5b1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  trackball: {
+    keywords: [ "technology", "trackpad" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb2" src="1f5b2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  joystick: {
+    keywords: [ "game", "play" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd79" src="1f579.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  clamp: {
+    keywords: [ "tool" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddc" src="1f5dc.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  minidisc: {
+    keywords: [ "technology", "record", "data", "disk", "90s" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbd" src="1f4bd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  floppy_disk: {
+    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbe" src="1f4be.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  cd: {
+    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbf" src="1f4bf.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dvd: {
+    keywords: [ "cd", "disk", "disc" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc0" src="1f4c0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  vhs: {
+    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfc" src="1f4fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  camera: {
+    keywords: [ "gadgets", "photography" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf7" src="1f4f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  camera_flash: {
+    keywords: [ "photography", "gadgets" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf8" src="1f4f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  video_camera: {
+    keywords: [ "film", "record" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf9" src="1f4f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  movie_camera: {
+    keywords: [ "film", "record" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa5" src="1f3a5.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  film_projector: {
+    keywords: [ "video", "tape", "record", "movie" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfd" src="1f4fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  film_strip: {
+    keywords: [ "movie" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9e" src="1f39e.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  telephone_receiver: {
+    keywords: [ "technology", "communication", "dial" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcde" src="1f4de.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  phone: {
+    keywords: [ "technology", "communication", "dial", "telephone" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u260e\ufe0f" src="260e.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pager: {
+    keywords: [ "bbcall", "oldschool", "90s" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdf" src="1f4df.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fax: {
+    keywords: [ "communication", "technology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce0" src="1f4e0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  tv: {
+    keywords: [ "technology", "program", "oldschool", "show", "television" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfa" src="1f4fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  radio: {
+    keywords: [ "communication", "music", "podcast", "program" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfb" src="1f4fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  studio_microphone: {
+    keywords: [ "sing", "recording", "artist", "talkshow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf99" src="1f399.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  level_slider: {
+    keywords: [ "scale" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9a" src="1f39a.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  control_knobs: {
+    keywords: [ "dial" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9b" src="1f39b.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  compass: {
+    keywords: [ "magnetic", "navigation", "orienteering" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udded" src="1f9ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  stopwatch: {
+    keywords: [ "time", "deadline" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f1" src="23f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  timer_clock: {
+    keywords: [ "alarm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f2" src="23f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  alarm_clock: {
+    keywords: [ "time", "wake" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f0" src="23f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mantelpiece_clock: {
+    keywords: [ "time" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd70" src="1f570.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hourglass_flowing_sand: {
+    keywords: [ "oldschool", "time", "countdown" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f3" src="23f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hourglass: {
+    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231b" src="231b.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  satellite: {
+    keywords: [ "communication", "future", "radio", "space" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce1" src="1f4e1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  battery: {
+    keywords: [ "power", "energy", "sustain" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0b" src="1f50b.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  electric_plug: {
+    keywords: [ "charger", "power" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0c" src="1f50c.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bulb: {
+    keywords: [ "light", "electricity", "idea" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca1" src="1f4a1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  flashlight: {
+    keywords: [ "dark", "camping", "sight", "night" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd26" src="1f526.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  candle: {
+    keywords: [ "fire", "wax" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd6f" src="1f56f.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fire_extinguisher: {
+    keywords: [ "quench" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddef" src="1f9ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wastebasket: {
+    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd1" src="1f5d1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  oil_drum: {
+    keywords: [ "barrell" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee2" src="1f6e2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  money_with_wings: {
+    keywords: [ "dollar", "bills", "payment", "sale" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb8" src="1f4b8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dollar: {
+    keywords: [ "money", "sales", "bill", "currency" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb5" src="1f4b5.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  yen: {
+    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb4" src="1f4b4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  euro: {
+    keywords: [ "money", "sales", "dollar", "currency" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb6" src="1f4b6.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pound: {
+    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb7" src="1f4b7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  moneybag: {
+    keywords: [ "dollar", "payment", "coins", "sale" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb0" src="1f4b0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  credit_card: {
+    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb3" src="1f4b3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gem: {
+    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8e" src="1f48e.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  balance_scale: {
+    keywords: [ "law", "fairness", "weight" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2696" src="2696.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toolbox: {
+    keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf0" src="1f9f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wrench: {
+    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd27" src="1f527.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer: {
+    keywords: [ "tools", "build", "create" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd28" src="1f528.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer_and_pick: {
+    keywords: [ "tools", "build", "create" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2692" src="2692.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer_and_wrench: {
+    keywords: [ "tools", "build", "create" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee0" src="1f6e0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pick: {
+    keywords: [ "tools", "dig" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26cf" src="26cf.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  nut_and_bolt: {
+    keywords: [ "handy", "tools", "fix" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd29" src="1f529.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gear: {
+    keywords: [ "cog" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2699" src="2699.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  brick: {
+    keywords: [ "bricks" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf1" src="1f9f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chains: {
+    keywords: [ "lock", "arrest" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d3" src="26d3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  magnet: {
+    keywords: [ "attraction", "magnetic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf2" src="1f9f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gun: {
+    keywords: [ "violence", "weapon", "pistol", "revolver" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2b" src="1f52b.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bomb: {
+    keywords: [ "boom", "explode", "explosion", "terrorism" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca3" src="1f4a3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  firecracker: {
+    keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde8" src="1f9e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hocho: {
+    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2a" src="1f52a.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dagger: {
+    keywords: [ "weapon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde1" src="1f5e1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crossed_swords: {
+    keywords: [ "weapon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2694" src="2694.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shield: {
+    keywords: [ "protection", "security" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee1" src="1f6e1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  smoking: {
+    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeac" src="1f6ac.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  skull_and_crossbones: {
+    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2620" src="2620.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  coffin: {
+    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b0" src="26b0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  funeral_urn: {
+    keywords: [ "dead", "die", "death", "rip", "ashes" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b1" src="26b1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  amphora: {
+    keywords: [ "vase", "jar" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udffa" src="1f3fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crystal_ball: {
+    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2e" src="1f52e.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  prayer_beads: {
+    keywords: [ "dhikr", "religious" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcff" src="1f4ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  nazar_amulet: {
+    keywords: [ "bead", "charm" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddff" src="1f9ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  barber: {
+    keywords: [ "hair", "salon", "style" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc88" src="1f488.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  alembic: {
+    keywords: [ "distilling", "science", "experiment", "chemistry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2697" src="2697.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  telescope: {
+    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2d" src="1f52d.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  microscope: {
+    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2c" src="1f52c.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hole: {
+    keywords: [ "embarrassing" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd73" src="1f573.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pill: {
+    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8a" src="1f48a.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  syringe: {
+    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc89" src="1f489.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dna: {
+    keywords: [ "biologist", "genetics", "life" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddec" src="1f9ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  microbe: {
+    keywords: [ "amoeba", "bacteria", "germs" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda0" src="1f9a0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  petri_dish: {
+    keywords: [ "bacteria", "biology", "culture", "lab" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddeb" src="1f9eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  test_tube: {
+    keywords: [ "chemistry", "experiment", "lab", "science" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddea" src="1f9ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  thermometer: {
+    keywords: [ "weather", "temperature", "hot", "cold" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf21" src="1f321.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  broom: {
+    keywords: [ "cleaning", "sweeping", "witch" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf9" src="1f9f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  basket: {
+    keywords: [ "laundry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfa" src="1f9fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toilet_paper: {
+    keywords: [ "roll" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfb" src="1f9fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  label: {
+    keywords: [ "sale", "tag" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff7" src="1f3f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bookmark: {
+    keywords: [ "favorite", "label", "save" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd16" src="1f516.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toilet: {
+    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebd" src="1f6bd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shower: {
+    keywords: [ "clean", "water", "bathroom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebf" src="1f6bf.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bathtub: {
+    keywords: [ "clean", "shower", "bathroom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec1" src="1f6c1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  soap: {
+    keywords: [ "bar", "bathing", "cleaning", "lather" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfc" src="1f9fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  sponge: {
+    keywords: [ "absorbing", "cleaning", "porous" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfd" src="1f9fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lotion_bottle: {
+    keywords: [ "moisturizer", "sunscreen" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf4" src="1f9f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  key: {
+    keywords: [ "lock", "door", "password" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd11" src="1f511.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  old_key: {
+    keywords: [ "lock", "door", "password" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddd" src="1f5dd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  couch_and_lamp: {
+    keywords: [ "read", "chill" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecb" src="1f6cb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  sleeping_bed: {
+    keywords: [ "bed", "rest" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecc" src="1f6cc.png"/>',
+    fitzpatrick_scale: true,
+    category: "objects"
+  },
+  bed: {
+    keywords: [ "sleep", "rest" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecf" src="1f6cf.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  door: {
+    keywords: [ "house", "entry", "exit" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaa" src="1f6aa.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bellhop_bell: {
+    keywords: [ "service" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udece" src="1f6ce.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  teddy_bear: {
+    keywords: [ "plush", "stuffed" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf8" src="1f9f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  framed_picture: {
+    keywords: [ "photography" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddbc" src="1f5bc.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  world_map: {
+    keywords: [ "location", "direction" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfa" src="1f5fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  parasol_on_ground: {
+    keywords: [ "weather", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f1" src="26f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  moyai: {
+    keywords: [ "rock", "easter island", "moai" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddff" src="1f5ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shopping: {
+    keywords: [ "mall", "buy", "purchase" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecd" src="1f6cd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shopping_cart: {
+    keywords: [ "trolley" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded2" src="1f6d2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  balloon: {
+    keywords: [ "party", "celebration", "birthday", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf88" src="1f388.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  flags: {
+    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8f" src="1f38f.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ribbon: {
+    keywords: [ "decoration", "pink", "girl", "bowtie" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf80" src="1f380.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gift: {
+    keywords: [ "present", "birthday", "christmas", "xmas" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf81" src="1f381.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  confetti_ball: {
+    keywords: [ "festival", "party", "birthday", "circus" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8a" src="1f38a.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  tada: {
+    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf89" src="1f389.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dolls: {
+    keywords: [ "japanese", "toy", "kimono" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8e" src="1f38e.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wind_chime: {
+    keywords: [ "nature", "ding", "spring", "bell" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf90" src="1f390.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crossed_flags: {
+    keywords: [ "japanese", "nation", "country", "border" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8c" src="1f38c.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  izakaya_lantern: {
+    keywords: [ "light", "paper", "halloween", "spooky" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfee" src="1f3ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  red_envelope: {
+    keywords: [ "gift" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde7" src="1f9e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  email: {
+    keywords: [ "letter", "postal", "inbox", "communication" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2709\ufe0f" src="2709.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  envelope_with_arrow: {
+    keywords: [ "email", "communication" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce9" src="1f4e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  incoming_envelope: {
+    keywords: [ "email", "inbox" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce8" src="1f4e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  "e-mail": {
+    keywords: [ "communication", "inbox" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce7" src="1f4e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  love_letter: {
+    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8c" src="1f48c.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  postbox: {
+    keywords: [ "email", "letter", "envelope" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcee" src="1f4ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_closed: {
+    keywords: [ "email", "communication", "inbox" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcea" src="1f4ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox: {
+    keywords: [ "email", "inbox", "communication" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udceb" src="1f4eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_with_mail: {
+    keywords: [ "email", "inbox", "communication" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcec" src="1f4ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_with_no_mail: {
+    keywords: [ "email", "inbox" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udced" src="1f4ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  package: {
+    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce6" src="1f4e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  postal_horn: {
+    keywords: [ "instrument", "music" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcef" src="1f4ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  inbox_tray: {
+    keywords: [ "email", "documents" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce5" src="1f4e5.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  outbox_tray: {
+    keywords: [ "inbox", "email" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce4" src="1f4e4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  scroll: {
+    keywords: [ "documents", "ancient", "history", "paper" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdc" src="1f4dc.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  page_with_curl: {
+    keywords: [ "documents", "office", "paper" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc3" src="1f4c3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bookmark_tabs: {
+    keywords: [ "favorite", "save", "order", "tidy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd1" src="1f4d1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  receipt: {
+    keywords: [ "accounting", "expenses" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfe" src="1f9fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bar_chart: {
+    keywords: [ "graph", "presentation", "stats" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcca" src="1f4ca.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chart_with_upwards_trend: {
+    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc8" src="1f4c8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chart_with_downwards_trend: {
+    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc9" src="1f4c9.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  page_facing_up: {
+    keywords: [ "documents", "office", "paper", "information" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc4" src="1f4c4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  date: {
+    keywords: [ "calendar", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc5" src="1f4c5.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  calendar: {
+    keywords: [ "schedule", "date", "planning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc6" src="1f4c6.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  spiral_calendar: {
+    keywords: [ "date", "schedule", "planning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd3" src="1f5d3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_index: {
+    keywords: [ "business", "stationery" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc7" src="1f4c7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_file_box: {
+    keywords: [ "business", "stationery" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc3" src="1f5c3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ballot_box: {
+    keywords: [ "election", "vote" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddf3" src="1f5f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  file_cabinet: {
+    keywords: [ "filing", "organizing" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc4" src="1f5c4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  clipboard: {
+    keywords: [ "stationery", "documents" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccb" src="1f4cb.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  spiral_notepad: {
+    keywords: [ "memo", "stationery" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd2" src="1f5d2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  file_folder: {
+    keywords: [ "documents", "business", "office" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc1" src="1f4c1.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  open_file_folder: {
+    keywords: [ "documents", "load" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc2" src="1f4c2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_index_dividers: {
+    keywords: [ "organizing", "business", "stationery" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc2" src="1f5c2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  newspaper_roll: {
+    keywords: [ "press", "headline" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddde" src="1f5de.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  newspaper: {
+    keywords: [ "press", "headline" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf0" src="1f4f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  notebook: {
+    keywords: [ "stationery", "record", "notes", "paper", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd3" src="1f4d3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  closed_book: {
+    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd5" src="1f4d5.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  green_book: {
+    keywords: [ "read", "library", "knowledge", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd7" src="1f4d7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  blue_book: {
+    keywords: [ "read", "library", "knowledge", "learn", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd8" src="1f4d8.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  orange_book: {
+    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd9" src="1f4d9.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  notebook_with_decorative_cover: {
+    keywords: [ "classroom", "notes", "record", "paper", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd4" src="1f4d4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ledger: {
+    keywords: [ "notes", "paper" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd2" src="1f4d2.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  books: {
+    keywords: [ "literature", "library", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcda" src="1f4da.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  open_book: {
+    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd6" src="1f4d6.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  safety_pin: {
+    keywords: [ "diaper" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf7" src="1f9f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  link: {
+    keywords: [ "rings", "url" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd17" src="1f517.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paperclip: {
+    keywords: [ "documents", "stationery" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcce" src="1f4ce.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paperclips: {
+    keywords: [ "documents", "stationery" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd87" src="1f587.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  scissors: {
+    keywords: [ "stationery", "cut" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2702\ufe0f" src="2702.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  triangular_ruler: {
+    keywords: [ "stationery", "math", "architect", "sketch" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd0" src="1f4d0.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  straight_ruler: {
+    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccf" src="1f4cf.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  abacus: {
+    keywords: [ "calculation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddee" src="1f9ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pushpin: {
+    keywords: [ "stationery", "mark", "here" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccc" src="1f4cc.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  round_pushpin: {
+    keywords: [ "stationery", "location", "map", "here" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccd" src="1f4cd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  triangular_flag_on_post: {
+    keywords: [ "mark", "milestone", "place" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea9" src="1f6a9.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  white_flag: {
+    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3" src="1f3f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  black_flag: {
+    keywords: [ "pirate" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4" src="1f3f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  rainbow_flag: {
+    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3\ufe0f\u200d\ud83c\udf08" src="1f3f3-fe0f-200d-1f308.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  closed_lock_with_key: {
+    keywords: [ "security", "privacy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd10" src="1f510.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lock: {
+    keywords: [ "security", "password", "padlock" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd12" src="1f512.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  unlock: {
+    keywords: [ "privacy", "security" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd13" src="1f513.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lock_with_ink_pen: {
+    keywords: [ "security", "secret" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0f" src="1f50f.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pen: {
+    keywords: [ "stationery", "writing", "write" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8a" src="1f58a.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fountain_pen: {
+    keywords: [ "stationery", "writing", "write" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8b" src="1f58b.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  black_nib: {
+    keywords: [ "pen", "stationery", "writing", "write" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2712\ufe0f" src="2712.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  memo: {
+    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdd" src="1f4dd.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pencil2: {
+    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270f\ufe0f" src="270f.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crayon: {
+    keywords: [ "drawing", "creativity" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8d" src="1f58d.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paintbrush: {
+    keywords: [ "drawing", "creativity", "art" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8c" src="1f58c.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mag: {
+    keywords: [ "search", "zoom", "find", "detective" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0d" src="1f50d.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mag_right: {
+    keywords: [ "search", "zoom", "find", "detective" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0e" src="1f50e.png"/>',
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  heart: {
+    keywords: [ "love", "like", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2764\ufe0f" src="2764.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  orange_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde1" src="1f9e1.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  yellow_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9b" src="1f49b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  green_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9a" src="1f49a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  blue_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc99" src="1f499.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  purple_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9c" src="1f49c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_heart: {
+    keywords: [ "evil" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda4" src="1f5a4.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  broken_heart: {
+    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc94" src="1f494.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_heart_exclamation: {
+    keywords: [ "decoration", "love" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2763" src="2763.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  two_hearts: {
+    keywords: [ "love", "like", "affection", "valentines", "heart" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc95" src="1f495.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  revolving_hearts: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9e" src="1f49e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heartbeat: {
+    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc93" src="1f493.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heartpulse: {
+    keywords: [ "like", "love", "affection", "valentines", "pink" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc97" src="1f497.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sparkling_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc96" src="1f496.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cupid: {
+    keywords: [ "love", "like", "heart", "affection", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc98" src="1f498.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  gift_heart: {
+    keywords: [ "love", "valentines" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9d" src="1f49d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heart_decoration: {
+    keywords: [ "purple-square", "love", "like" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9f" src="1f49f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  peace_symbol: {
+    keywords: [ "hippie" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262e" src="262e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  latin_cross: {
+    keywords: [ "christianity" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u271d" src="271d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  star_and_crescent: {
+    keywords: [ "islam" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262a" src="262a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  om: {
+    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd49" src="1f549.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wheel_of_dharma: {
+    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2638" src="2638.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  star_of_david: {
+    keywords: [ "judaism" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2721" src="2721.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  six_pointed_star: {
+    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2f" src="1f52f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  menorah: {
+    keywords: [ "hanukkah", "candles", "jewish" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4e" src="1f54e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  yin_yang: {
+    keywords: [ "balance" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262f" src="262f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  orthodox_cross: {
+    keywords: [ "suppedaneum", "religion" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2626" src="2626.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  place_of_worship: {
+    keywords: [ "religion", "church", "temple", "prayer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded0" src="1f6d0.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ophiuchus: {
+    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ce" src="26ce.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  aries: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2648" src="2648.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  taurus: {
+    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2649" src="2649.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  gemini: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264a" src="264a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cancer: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264b" src="264b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  leo: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264c" src="264c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  virgo: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264d" src="264d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  libra: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264e" src="264e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  scorpius: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264f" src="264f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sagittarius: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2650" src="2650.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  capricorn: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2651" src="2651.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  aquarius: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2652" src="2652.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  pisces: {
+    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2653" src="2653.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  id: {
+    keywords: [ "purple-square", "words" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd94" src="1f194.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  atom_symbol: {
+    keywords: [ "science", "physics", "chemistry" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269b" src="269b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7a7a: {
+    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude33" src="1f233.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u5272: {
+    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude39" src="1f239.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  radioactive: {
+    keywords: [ "nuclear", "danger" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2622" src="2622.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  biohazard: {
+    keywords: [ "danger" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2623" src="2623.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mobile_phone_off: {
+    keywords: [ "mute", "orange-square", "silence", "quiet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf4" src="1f4f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  vibration_mode: {
+    keywords: [ "orange-square", "phone" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf3" src="1f4f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6709: {
+    keywords: [ "orange-square", "chinese", "have", "kanji" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude36" src="1f236.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7121: {
+    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude1a" src="1f21a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7533: {
+    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude38" src="1f238.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u55b6: {
+    keywords: [ "japanese", "opening hours", "orange-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude3a" src="1f23a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6708: {
+    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude37\ufe0f" src="1f237.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight_pointed_black_star: {
+    keywords: [ "orange-square", "shape", "polygon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2734\ufe0f" src="2734.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  vs: {
+    keywords: [ "words", "orange-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd9a" src="1f19a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  accept: {
+    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude51" src="1f251.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_flower: {
+    keywords: [ "japanese", "spring" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcae" src="1f4ae.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ideograph_advantage: {
+    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude50" src="1f250.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  secret: {
+    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3299\ufe0f" src="3299.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  congratulations: {
+    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3297\ufe0f" src="3297.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u5408: {
+    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude34" src="1f234.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6e80: {
+    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude35" src="1f235.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7981: {
+    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude32" src="1f232.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  a: {
+    keywords: [ "red-square", "alphabet", "letter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd70\ufe0f" src="1f170.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  b: {
+    keywords: [ "red-square", "alphabet", "letter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd71\ufe0f" src="1f171.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ab: {
+    keywords: [ "red-square", "alphabet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd8e" src="1f18e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cl: {
+    keywords: [ "alphabet", "words", "red-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd91" src="1f191.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  o2: {
+    keywords: [ "alphabet", "red-square", "letter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7e\ufe0f" src="1f17e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sos: {
+    keywords: [ "help", "red-square", "words", "emergency", "911" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd98" src="1f198.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_entry: {
+    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d4" src="26d4.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  name_badge: {
+    keywords: [ "fire", "forbid" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdb" src="1f4db.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_entry_sign: {
+    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeab" src="1f6ab.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  x: {
+    keywords: [ "no", "delete", "remove", "cancel", "red" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274c" src="274c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  o: {
+    keywords: [ "circle", "round" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b55" src="2b55.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  stop_sign: {
+    keywords: [ "stop" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded1" src="1f6d1.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  anger: {
+    keywords: [ "angry", "mad" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca2" src="1f4a2.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hotsprings: {
+    keywords: [ "bath", "warm", "relax" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2668\ufe0f" src="2668.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_pedestrians: {
+    keywords: [ "rules", "crossing", "walking", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb7" src="1f6b7.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  do_not_litter: {
+    keywords: [ "trash", "bin", "garbage", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaf" src="1f6af.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_bicycles: {
+    keywords: [ "cyclist", "prohibited", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb3" src="1f6b3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  "non-potable_water": {
+    keywords: [ "drink", "faucet", "tap", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb1" src="1f6b1.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  underage: {
+    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1e" src="1f51e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_mobile_phones: {
+    keywords: [ "iphone", "mute", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf5" src="1f4f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  exclamation: {
+    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2757" src="2757.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grey_exclamation: {
+    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2755" src="2755.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  question: {
+    keywords: [ "doubt", "confused" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2753" src="2753.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grey_question: {
+    keywords: [ "doubts", "gray", "huh", "confused" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2754" src="2754.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  bangbang: {
+    keywords: [ "exclamation", "surprise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u203c\ufe0f" src="203c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  interrobang: {
+    keywords: [ "wat", "punctuation", "surprise" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2049\ufe0f" src="2049.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  low_brightness: {
+    keywords: [ "sun", "afternoon", "warm", "summer" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd05" src="1f505.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  high_brightness: {
+    keywords: [ "sun", "light" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd06" src="1f506.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  trident: {
+    keywords: [ "weapon", "spear" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd31" src="1f531.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  fleur_de_lis: {
+    keywords: [ "decorative", "scout" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269c" src="269c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  part_alternation_mark: {
+    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u303d\ufe0f" src="303d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  warning: {
+    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a0\ufe0f" src="26a0.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  children_crossing: {
+    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb8" src="1f6b8.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  beginner: {
+    keywords: [ "badge", "shield" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd30" src="1f530.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  recycle: {
+    keywords: [ "arrow", "environment", "garbage", "trash" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267b\ufe0f" src="267b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6307: {
+    keywords: [ "chinese", "point", "green-square", "kanji" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude2f" src="1f22f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  chart: {
+    keywords: [ "green-square", "graph", "presentation", "stats" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb9" src="1f4b9.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sparkle: {
+    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2747\ufe0f" src="2747.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight_spoked_asterisk: {
+    keywords: [ "star", "sparkle", "green-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2733\ufe0f" src="2733.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  negative_squared_cross_mark: {
+    keywords: [ "x", "green-square", "no", "deny" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274e" src="274e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_check_mark: {
+    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2705" src="2705.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  diamond_shape_with_a_dot_inside: {
+    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca0" src="1f4a0.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cyclone: {
+    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf00" src="1f300.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loop: {
+    keywords: [ "tape", "cassette" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27bf" src="27bf.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  globe_with_meridians: {
+    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf10" src="1f310.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  m: {
+    keywords: [ "alphabet", "blue-circle", "letter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u24c2\ufe0f" src="24c2.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  atm: {
+    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe7" src="1f3e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sa: {
+    keywords: [ "japanese", "blue-square", "katakana" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude02\ufe0f" src="1f202.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  passport_control: {
+    keywords: [ "custom", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec2" src="1f6c2.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  customs: {
+    keywords: [ "passport", "border", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec3" src="1f6c3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  baggage_claim: {
+    keywords: [ "blue-square", "airport", "transport" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec4" src="1f6c4.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_luggage: {
+    keywords: [ "blue-square", "travel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec5" src="1f6c5.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wheelchair: {
+    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267f" src="267f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_smoking: {
+    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udead" src="1f6ad.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wc: {
+    keywords: [ "toilet", "restroom", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebe" src="1f6be.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  parking: {
+    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7f\ufe0f" src="1f17f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  potable_water: {
+    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb0" src="1f6b0.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mens: {
+    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb9" src="1f6b9.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  womens: {
+    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeba" src="1f6ba.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  baby_symbol: {
+    keywords: [ "orange-square", "child" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebc" src="1f6bc.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  restroom: {
+    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebb" src="1f6bb.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  put_litter_in_its_place: {
+    keywords: [ "blue-square", "sign", "human", "info" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeae" src="1f6ae.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cinema: {
+    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa6" src="1f3a6.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  signal_strength: {
+    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf6" src="1f4f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  koko: {
+    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude01" src="1f201.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ng: {
+    keywords: [ "blue-square", "words", "shape", "icon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd96" src="1f196.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ok: {
+    keywords: [ "good", "agree", "yes", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd97" src="1f197.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  up: {
+    keywords: [ "blue-square", "above", "high" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd99" src="1f199.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cool: {
+    keywords: [ "words", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd92" src="1f192.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  new: {
+    keywords: [ "blue-square", "words", "start" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd95" src="1f195.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  free: {
+    keywords: [ "blue-square", "words" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd93" src="1f193.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  zero: {
+    keywords: [ "0", "numbers", "blue-square", "null" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="0\ufe0f\u20e3" src="30-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  one: {
+    keywords: [ "blue-square", "numbers", "1" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="1\ufe0f\u20e3" src="31-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  two: {
+    keywords: [ "numbers", "2", "prime", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="2\ufe0f\u20e3" src="32-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  three: {
+    keywords: [ "3", "numbers", "prime", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="3\ufe0f\u20e3" src="33-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  four: {
+    keywords: [ "4", "numbers", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="4\ufe0f\u20e3" src="34-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  five: {
+    keywords: [ "5", "numbers", "blue-square", "prime" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="5\ufe0f\u20e3" src="35-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  six: {
+    keywords: [ "6", "numbers", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="6\ufe0f\u20e3" src="36-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  seven: {
+    keywords: [ "7", "numbers", "blue-square", "prime" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="7\ufe0f\u20e3" src="37-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight: {
+    keywords: [ "8", "blue-square", "numbers" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="8\ufe0f\u20e3" src="38-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  nine: {
+    keywords: [ "blue-square", "numbers", "9" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="9\ufe0f\u20e3" src="39-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  keycap_ten: {
+    keywords: [ "numbers", "10", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1f" src="1f51f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  asterisk: {
+    keywords: [ "star", "keycap" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="*\u20e3" src="2a-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eject_button: {
+    keywords: [ "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23cf\ufe0f" src="23cf.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_forward: {
+    keywords: [ "blue-square", "right", "direction", "play" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25b6\ufe0f" src="25b6.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  pause_button: {
+    keywords: [ "pause", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f8" src="23f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  next_track_button: {
+    keywords: [ "forward", "next", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ed" src="23ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  stop_button: {
+    keywords: [ "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f9" src="23f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  record_button: {
+    keywords: [ "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23fa" src="23fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  play_or_pause_button: {
+    keywords: [ "blue-square", "play", "pause" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ef" src="23ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  previous_track_button: {
+    keywords: [ "backward" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ee" src="23ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  fast_forward: {
+    keywords: [ "blue-square", "play", "speed", "continue" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23e9" src="23e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  rewind: {
+    keywords: [ "play", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ea" src="23ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  twisted_rightwards_arrows: {
+    keywords: [ "blue-square", "shuffle", "music", "random" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd00" src="1f500.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  repeat: {
+    keywords: [ "loop", "record" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd01" src="1f501.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  repeat_one: {
+    keywords: [ "blue-square", "loop" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd02" src="1f502.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_backward: {
+    keywords: [ "blue-square", "left", "direction" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25c0\ufe0f" src="25c0.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up_small: {
+    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3c" src="1f53c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_down_small: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3d" src="1f53d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_double_up: {
+    keywords: [ "blue-square", "direction", "top" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23eb" src="23eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_double_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ec" src="23ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_right: {
+    keywords: [ "blue-square", "next" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27a1\ufe0f" src="27a1.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_left: {
+    keywords: [ "blue-square", "previous", "back" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b05\ufe0f" src="2b05.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up: {
+    keywords: [ "blue-square", "continue", "top", "direction" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b06\ufe0f" src="2b06.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b07\ufe0f" src="2b07.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_upper_right: {
+    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2197\ufe0f" src="2197.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_lower_right: {
+    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2198\ufe0f" src="2198.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_lower_left: {
+    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2199\ufe0f" src="2199.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_upper_left: {
+    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2196\ufe0f" src="2196.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up_down: {
+    keywords: [ "blue-square", "direction", "way", "vertical" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2195\ufe0f" src="2195.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_right_arrow: {
+    keywords: [ "shape", "direction", "horizontal", "sideways" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2194\ufe0f" src="2194.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrows_counterclockwise: {
+    keywords: [ "blue-square", "sync", "cycle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd04" src="1f504.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_right_hook: {
+    keywords: [ "blue-square", "return", "rotate", "direction" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21aa\ufe0f" src="21aa.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  leftwards_arrow_with_hook: {
+    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21a9\ufe0f" src="21a9.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_heading_up: {
+    keywords: [ "blue-square", "direction", "top" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2934\ufe0f" src="2934.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_heading_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2935\ufe0f" src="2935.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hash: {
+    keywords: [ "symbol", "blue-square", "twitter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="#\ufe0f\u20e3" src="23-20e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  information_source: {
+    keywords: [ "blue-square", "alphabet", "letter" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2139\ufe0f" src="2139.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  abc: {
+    keywords: [ "blue-square", "alphabet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd24" src="1f524.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  abcd: {
+    keywords: [ "blue-square", "alphabet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd21" src="1f521.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  capital_abcd: {
+    keywords: [ "alphabet", "words", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd20" src="1f520.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  symbols: {
+    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd23" src="1f523.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  musical_note: {
+    keywords: [ "score", "tone", "sound" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb5" src="1f3b5.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  notes: {
+    keywords: [ "music", "score" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb6" src="1f3b6.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wavy_dash: {
+    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3030\ufe0f" src="3030.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  curly_loop: {
+    keywords: [ "scribble", "draw", "shape", "squiggle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27b0" src="27b0.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_check_mark: {
+    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2714\ufe0f" src="2714.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrows_clockwise: {
+    keywords: [ "sync", "cycle", "round", "repeat" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd03" src="1f503.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_plus_sign: {
+    keywords: [ "math", "calculation", "addition", "more", "increase" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2795" src="2795.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_minus_sign: {
+    keywords: [ "math", "calculation", "subtract", "less" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2796" src="2796.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_division_sign: {
+    keywords: [ "divide", "math", "calculation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2797" src="2797.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_multiplication_x: {
+    keywords: [ "math", "calculation" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2716\ufe0f" src="2716.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  infinity: {
+    keywords: [ "forever" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267e" src="267e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_dollar_sign: {
+    keywords: [ "money", "sales", "payment", "currency", "buck" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb2" src="1f4b2.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  currency_exchange: {
+    keywords: [ "money", "sales", "dollar", "travel" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb1" src="1f4b1.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  copyright: {
+    keywords: [ "ip", "license", "circle", "law", "legal" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xa9\ufe0f" src="a9.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  registered: {
+    keywords: [ "alphabet", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xae\ufe0f" src="ae.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  tm: {
+    keywords: [ "trademark", "brand", "law", "legal" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2122\ufe0f" src="2122.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  end: {
+    keywords: [ "words", "arrow" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1a" src="1f51a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  back: {
+    keywords: [ "arrow", "words", "return" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd19" src="1f519.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  on: {
+    keywords: [ "arrow", "words" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1b" src="1f51b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  top: {
+    keywords: [ "words", "blue-square" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1d" src="1f51d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  soon: {
+    keywords: [ "arrow", "words" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1c" src="1f51c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ballot_box_with_check: {
+    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2611\ufe0f" src="2611.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  radio_button: {
+    keywords: [ "input", "old", "music", "circle" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd18" src="1f518.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_circle: {
+    keywords: [ "shape", "round" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26aa" src="26aa.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_circle: {
+    keywords: [ "shape", "button", "round" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ab" src="26ab.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  red_circle: {
+    keywords: [ "shape", "error", "danger" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd34" src="1f534.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_blue_circle: {
+    keywords: [ "shape", "icon", "button" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd35" src="1f535.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_orange_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd38" src="1f538.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_blue_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd39" src="1f539.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_orange_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd36" src="1f536.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_blue_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd37" src="1f537.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_red_triangle: {
+    keywords: [ "shape", "direction", "up", "top" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3a" src="1f53a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_small_square: {
+    keywords: [ "shape", "icon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25aa\ufe0f" src="25aa.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_small_square: {
+    keywords: [ "shape", "icon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25ab\ufe0f" src="25ab.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_large_square: {
+    keywords: [ "shape", "icon", "button" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1b" src="2b1b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_large_square: {
+    keywords: [ "shape", "icon", "stone", "button" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1c" src="2b1c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_red_triangle_down: {
+    keywords: [ "shape", "direction", "bottom" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3b" src="1f53b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_medium_square: {
+    keywords: [ "shape", "button", "icon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fc\ufe0f" src="25fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_medium_square: {
+    keywords: [ "shape", "stone", "icon" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fb\ufe0f" src="25fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_medium_small_square: {
+    keywords: [ "icon", "shape", "button" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fe" src="25fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_medium_small_square: {
+    keywords: [ "shape", "stone", "icon", "button" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fd" src="25fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_square_button: {
+    keywords: [ "shape", "input", "frame" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd32" src="1f532.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_square_button: {
+    keywords: [ "shape", "input" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd33" src="1f533.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  speaker: {
+    keywords: [ "sound", "volume", "silence", "broadcast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd08" src="1f508.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sound: {
+    keywords: [ "volume", "speaker", "broadcast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd09" src="1f509.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loud_sound: {
+    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0a" src="1f50a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mute: {
+    keywords: [ "sound", "volume", "silence", "quiet" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd07" src="1f507.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mega: {
+    keywords: [ "sound", "speaker", "volume" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce3" src="1f4e3.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loudspeaker: {
+    keywords: [ "volume", "sound" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce2" src="1f4e2.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  bell: {
+    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd14" src="1f514.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_bell: {
+    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd15" src="1f515.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_joker: {
+    keywords: [ "poker", "cards", "game", "play", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udccf" src="1f0cf.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mahjong: {
+    keywords: [ "game", "play", "chinese", "kanji" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udc04" src="1f004.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  spades: {
+    keywords: [ "poker", "cards", "suits", "magic" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2660\ufe0f" src="2660.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clubs: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2663\ufe0f" src="2663.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hearts: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2665\ufe0f" src="2665.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  diamonds: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2666\ufe0f" src="2666.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  flower_playing_cards: {
+    keywords: [ "game", "sunset", "red" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb4" src="1f3b4.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  thought_balloon: {
+    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcad" src="1f4ad.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  right_anger_bubble: {
+    keywords: [ "caption", "speech", "thinking", "mad" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddef" src="1f5ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  speech_balloon: {
+    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcac" src="1f4ac.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_speech_bubble: {
+    keywords: [ "words", "message", "talk", "chatting" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde8" src="1f5e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd50" src="1f550.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock2: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd51" src="1f551.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock3: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd52" src="1f552.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock4: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd53" src="1f553.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock5: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd54" src="1f554.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock6: {
+    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd55" src="1f555.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock7: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd56" src="1f556.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock8: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd57" src="1f557.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock9: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd58" src="1f558.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock10: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd59" src="1f559.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock11: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5a" src="1f55a.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock12: {
+    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5b" src="1f55b.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock130: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5c" src="1f55c.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock230: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5d" src="1f55d.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock330: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5e" src="1f55e.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock430: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5f" src="1f55f.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock530: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd60" src="1f560.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock630: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd61" src="1f561.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock730: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd62" src="1f562.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock830: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd63" src="1f563.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock930: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd64" src="1f564.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1030: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd65" src="1f565.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1130: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd66" src="1f566.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1230: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd67" src="1f567.png"/>',
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  afghanistan: {
+    keywords: [ "af", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddeb" src="1f1e6-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  aland_islands: {
+    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfd" src="1f1e6-1f1fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  albania: {
+    keywords: [ "al", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf1" src="1f1e6-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  algeria: {
+    keywords: [ "dz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddff" src="1f1e9-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  american_samoa: {
+    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf8" src="1f1e6-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  andorra: {
+    keywords: [ "ad", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\udde9" src="1f1e6-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  angola: {
+    keywords: [ "ao", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf4" src="1f1e6-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  anguilla: {
+    keywords: [ "ai", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddee" src="1f1e6-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  antarctica: {
+    keywords: [ "aq", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf6" src="1f1e6-1f1f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  antigua_barbuda: {
+    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddec" src="1f1e6-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  argentina: {
+    keywords: [ "ar", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf7" src="1f1e6-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  armenia: {
+    keywords: [ "am", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf2" src="1f1e6-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  aruba: {
+    keywords: [ "aw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfc" src="1f1e6-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  australia: {
+    keywords: [ "au", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfa" src="1f1e6-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  austria: {
+    keywords: [ "at", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf9" src="1f1e6-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  azerbaijan: {
+    keywords: [ "az", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddff" src="1f1e6-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bahamas: {
+    keywords: [ "bs", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf8" src="1f1e7-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bahrain: {
+    keywords: [ "bh", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udded" src="1f1e7-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bangladesh: {
+    keywords: [ "bd", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde9" src="1f1e7-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  barbados: {
+    keywords: [ "bb", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde7" src="1f1e7-1f1e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belarus: {
+    keywords: [ "by", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfe" src="1f1e7-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belgium: {
+    keywords: [ "be", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddea" src="1f1e7-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belize: {
+    keywords: [ "bz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddff" src="1f1e7-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  benin: {
+    keywords: [ "bj", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddef" src="1f1e7-1f1ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bermuda: {
+    keywords: [ "bm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf2" src="1f1e7-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bhutan: {
+    keywords: [ "bt", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf9" src="1f1e7-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bolivia: {
+    keywords: [ "bo", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf4" src="1f1e7-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  caribbean_netherlands: {
+    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf6" src="1f1e7-1f1f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bosnia_herzegovina: {
+    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde6" src="1f1e7-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  botswana: {
+    keywords: [ "bw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfc" src="1f1e7-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  brazil: {
+    keywords: [ "br", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf7" src="1f1e7-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  british_indian_ocean_territory: {
+    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf4" src="1f1ee-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  british_virgin_islands: {
+    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddec" src="1f1fb-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  brunei: {
+    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf3" src="1f1e7-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bulgaria: {
+    keywords: [ "bg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddec" src="1f1e7-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  burkina_faso: {
+    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddeb" src="1f1e7-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  burundi: {
+    keywords: [ "bi", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddee" src="1f1e7-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cape_verde: {
+    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfb" src="1f1e8-1f1fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cambodia: {
+    keywords: [ "kh", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\udded" src="1f1f0-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cameroon: {
+    keywords: [ "cm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf2" src="1f1e8-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  canada: {
+    keywords: [ "ca", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde6" src="1f1e8-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  canary_islands: {
+    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde8" src="1f1ee-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cayman_islands: {
+    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfe" src="1f1f0-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  central_african_republic: {
+    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddeb" src="1f1e8-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  chad: {
+    keywords: [ "td", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde9" src="1f1f9-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  chile: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf1" src="1f1e8-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cn: {
+    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf3" src="1f1e8-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  christmas_island: {
+    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfd" src="1f1e8-1f1fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cocos_islands: {
+    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde8" src="1f1e8-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  colombia: {
+    keywords: [ "co", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf4" src="1f1e8-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  comoros: {
+    keywords: [ "km", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf2" src="1f1f0-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  congo_brazzaville: {
+    keywords: [ "congo", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddec" src="1f1e8-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  congo_kinshasa: {
+    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde9" src="1f1e8-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cook_islands: {
+    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf0" src="1f1e8-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  costa_rica: {
+    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf7" src="1f1e8-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  croatia: {
+    keywords: [ "hr", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf7" src="1f1ed-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cuba: {
+    keywords: [ "cu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfa" src="1f1e8-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  curacao: {
+    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfc" src="1f1e8-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cyprus: {
+    keywords: [ "cy", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfe" src="1f1e8-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  czech_republic: {
+    keywords: [ "cz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddff" src="1f1e8-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  denmark: {
+    keywords: [ "dk", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf0" src="1f1e9-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  djibouti: {
+    keywords: [ "dj", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddef" src="1f1e9-1f1ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  dominica: {
+    keywords: [ "dm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf2" src="1f1e9-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  dominican_republic: {
+    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf4" src="1f1e9-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ecuador: {
+    keywords: [ "ec", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udde8" src="1f1ea-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  egypt: {
+    keywords: [ "eg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddec" src="1f1ea-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  el_salvador: {
+    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfb" src="1f1f8-1f1fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  equatorial_guinea: {
+    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf6" src="1f1ec-1f1f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  eritrea: {
+    keywords: [ "er", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf7" src="1f1ea-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  estonia: {
+    keywords: [ "ee", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddea" src="1f1ea-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ethiopia: {
+    keywords: [ "et", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf9" src="1f1ea-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  eu: {
+    keywords: [ "european", "union", "flag", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddfa" src="1f1ea-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  falkland_islands: {
+    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf0" src="1f1eb-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  faroe_islands: {
+    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf4" src="1f1eb-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  fiji: {
+    keywords: [ "fj", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddef" src="1f1eb-1f1ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  finland: {
+    keywords: [ "fi", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddee" src="1f1eb-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  fr: {
+    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf7" src="1f1eb-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_guiana: {
+    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddeb" src="1f1ec-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_polynesia: {
+    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddeb" src="1f1f5-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_southern_territories: {
+    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddeb" src="1f1f9-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gabon: {
+    keywords: [ "ga", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde6" src="1f1ec-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gambia: {
+    keywords: [ "gm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf2" src="1f1ec-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  georgia: {
+    keywords: [ "ge", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddea" src="1f1ec-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  de: {
+    keywords: [ "german", "nation", "flag", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddea" src="1f1e9-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ghana: {
+    keywords: [ "gh", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udded" src="1f1ec-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gibraltar: {
+    keywords: [ "gi", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddee" src="1f1ec-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  greece: {
+    keywords: [ "gr", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf7" src="1f1ec-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  greenland: {
+    keywords: [ "gl", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf1" src="1f1ec-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  grenada: {
+    keywords: [ "gd", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde9" src="1f1ec-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guadeloupe: {
+    keywords: [ "gp", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf5" src="1f1ec-1f1f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guam: {
+    keywords: [ "gu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfa" src="1f1ec-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guatemala: {
+    keywords: [ "gt", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf9" src="1f1ec-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guernsey: {
+    keywords: [ "gg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddec" src="1f1ec-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guinea: {
+    keywords: [ "gn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf3" src="1f1ec-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guinea_bissau: {
+    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfc" src="1f1ec-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guyana: {
+    keywords: [ "gy", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfe" src="1f1ec-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  haiti: {
+    keywords: [ "ht", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf9" src="1f1ed-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  honduras: {
+    keywords: [ "hn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf3" src="1f1ed-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  hong_kong: {
+    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf0" src="1f1ed-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  hungary: {
+    keywords: [ "hu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddfa" src="1f1ed-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iceland: {
+    keywords: [ "is", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf8" src="1f1ee-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  india: {
+    keywords: [ "in", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf3" src="1f1ee-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  indonesia: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde9" src="1f1ee-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iran: {
+    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf7" src="1f1ee-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iraq: {
+    keywords: [ "iq", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf6" src="1f1ee-1f1f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ireland: {
+    keywords: [ "ie", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddea" src="1f1ee-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  isle_of_man: {
+    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf2" src="1f1ee-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  israel: {
+    keywords: [ "il", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf1" src="1f1ee-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  it: {
+    keywords: [ "italy", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf9" src="1f1ee-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cote_divoire: {
+    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddee" src="1f1e8-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jamaica: {
+    keywords: [ "jm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf2" src="1f1ef-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jp: {
+    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf5" src="1f1ef-1f1f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jersey: {
+    keywords: [ "je", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddea" src="1f1ef-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jordan: {
+    keywords: [ "jo", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf4" src="1f1ef-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kazakhstan: {
+    keywords: [ "kz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddff" src="1f1f0-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kenya: {
+    keywords: [ "ke", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddea" src="1f1f0-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kiribati: {
+    keywords: [ "ki", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddee" src="1f1f0-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kosovo: {
+    keywords: [ "xk", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfd\ud83c\uddf0" src="1f1fd-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kuwait: {
+    keywords: [ "kw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfc" src="1f1f0-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kyrgyzstan: {
+    keywords: [ "kg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddec" src="1f1f0-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  laos: {
+    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde6" src="1f1f1-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  latvia: {
+    keywords: [ "lv", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfb" src="1f1f1-1f1fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lebanon: {
+    keywords: [ "lb", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde7" src="1f1f1-1f1e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lesotho: {
+    keywords: [ "ls", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf8" src="1f1f1-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  liberia: {
+    keywords: [ "lr", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf7" src="1f1f1-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  libya: {
+    keywords: [ "ly", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfe" src="1f1f1-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  liechtenstein: {
+    keywords: [ "li", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddee" src="1f1f1-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lithuania: {
+    keywords: [ "lt", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf9" src="1f1f1-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  luxembourg: {
+    keywords: [ "lu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfa" src="1f1f1-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  macau: {
+    keywords: [ "macao", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf4" src="1f1f2-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  macedonia: {
+    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf0" src="1f1f2-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  madagascar: {
+    keywords: [ "mg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddec" src="1f1f2-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malawi: {
+    keywords: [ "mw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfc" src="1f1f2-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malaysia: {
+    keywords: [ "my", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfe" src="1f1f2-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  maldives: {
+    keywords: [ "mv", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfb" src="1f1f2-1f1fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mali: {
+    keywords: [ "ml", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf1" src="1f1f2-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malta: {
+    keywords: [ "mt", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf9" src="1f1f2-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  marshall_islands: {
+    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udded" src="1f1f2-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  martinique: {
+    keywords: [ "mq", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf6" src="1f1f2-1f1f6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mauritania: {
+    keywords: [ "mr", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf7" src="1f1f2-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mauritius: {
+    keywords: [ "mu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfa" src="1f1f2-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mayotte: {
+    keywords: [ "yt", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddf9" src="1f1fe-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mexico: {
+    keywords: [ "mx", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfd" src="1f1f2-1f1fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  micronesia: {
+    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf2" src="1f1eb-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  moldova: {
+    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde9" src="1f1f2-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  monaco: {
+    keywords: [ "mc", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde8" src="1f1f2-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mongolia: {
+    keywords: [ "mn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf3" src="1f1f2-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  montenegro: {
+    keywords: [ "me", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddea" src="1f1f2-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  montserrat: {
+    keywords: [ "ms", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf8" src="1f1f2-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  morocco: {
+    keywords: [ "ma", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde6" src="1f1f2-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mozambique: {
+    keywords: [ "mz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddff" src="1f1f2-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  myanmar: {
+    keywords: [ "mm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf2" src="1f1f2-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  namibia: {
+    keywords: [ "na", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde6" src="1f1f3-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nauru: {
+    keywords: [ "nr", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf7" src="1f1f3-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nepal: {
+    keywords: [ "np", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf5" src="1f1f3-1f1f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  netherlands: {
+    keywords: [ "nl", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf1" src="1f1f3-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  new_caledonia: {
+    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde8" src="1f1f3-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  new_zealand: {
+    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddff" src="1f1f3-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nicaragua: {
+    keywords: [ "ni", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddee" src="1f1f3-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  niger: {
+    keywords: [ "ne", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddea" src="1f1f3-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nigeria: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddec" src="1f1f3-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  niue: {
+    keywords: [ "nu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddfa" src="1f1f3-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  norfolk_island: {
+    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddeb" src="1f1f3-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  northern_mariana_islands: {
+    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf5" src="1f1f2-1f1f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  north_korea: {
+    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf5" src="1f1f0-1f1f5.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  norway: {
+    keywords: [ "no", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf4" src="1f1f3-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  oman: {
+    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf4\ud83c\uddf2" src="1f1f4-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pakistan: {
+    keywords: [ "pk", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf0" src="1f1f5-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  palau: {
+    keywords: [ "pw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfc" src="1f1f5-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  palestinian_territories: {
+    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf8" src="1f1f5-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  panama: {
+    keywords: [ "pa", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udde6" src="1f1f5-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  papua_new_guinea: {
+    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddec" src="1f1f5-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  paraguay: {
+    keywords: [ "py", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfe" src="1f1f5-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  peru: {
+    keywords: [ "pe", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddea" src="1f1f5-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  philippines: {
+    keywords: [ "ph", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udded" src="1f1f5-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pitcairn_islands: {
+    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf3" src="1f1f5-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  poland: {
+    keywords: [ "pl", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf1" src="1f1f5-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  portugal: {
+    keywords: [ "pt", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf9" src="1f1f5-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  puerto_rico: {
+    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf7" src="1f1f5-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  qatar: {
+    keywords: [ "qa", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf6\ud83c\udde6" src="1f1f6-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  reunion: {
+    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddea" src="1f1f7-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  romania: {
+    keywords: [ "ro", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf4" src="1f1f7-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ru: {
+    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfa" src="1f1f7-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  rwanda: {
+    keywords: [ "rw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfc" src="1f1f7-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_barthelemy: {
+    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf1" src="1f1e7-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_helena: {
+    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udded" src="1f1f8-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_kitts_nevis: {
+    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf3" src="1f1f0-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_lucia: {
+    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde8" src="1f1f1-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_pierre_miquelon: {
+    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf2" src="1f1f5-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_vincent_grenadines: {
+    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde8" src="1f1fb-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  samoa: {
+    keywords: [ "ws", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddf8" src="1f1fc-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  san_marino: {
+    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf2" src="1f1f8-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sao_tome_principe: {
+    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf9" src="1f1f8-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  saudi_arabia: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde6" src="1f1f8-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  senegal: {
+    keywords: [ "sn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf3" src="1f1f8-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  serbia: {
+    keywords: [ "rs", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf8" src="1f1f7-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  seychelles: {
+    keywords: [ "sc", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde8" src="1f1f8-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sierra_leone: {
+    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf1" src="1f1f8-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  singapore: {
+    keywords: [ "sg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddec" src="1f1f8-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sint_maarten: {
+    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfd" src="1f1f8-1f1fd.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  slovakia: {
+    keywords: [ "sk", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf0" src="1f1f8-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  slovenia: {
+    keywords: [ "si", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddee" src="1f1f8-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  solomon_islands: {
+    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde7" src="1f1f8-1f1e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  somalia: {
+    keywords: [ "so", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf4" src="1f1f8-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_africa: {
+    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\udde6" src="1f1ff-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_georgia_south_sandwich_islands: {
+    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf8" src="1f1ec-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kr: {
+    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf7" src="1f1f0-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_sudan: {
+    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf8" src="1f1f8-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  es: {
+    keywords: [ "spain", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf8" src="1f1ea-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sri_lanka: {
+    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf0" src="1f1f1-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sudan: {
+    keywords: [ "sd", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde9" src="1f1f8-1f1e9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  suriname: {
+    keywords: [ "sr", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf7" src="1f1f8-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  swaziland: {
+    keywords: [ "sz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddff" src="1f1f8-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sweden: {
+    keywords: [ "se", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddea" src="1f1f8-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  switzerland: {
+    keywords: [ "ch", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udded" src="1f1e8-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  syria: {
+    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfe" src="1f1f8-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  taiwan: {
+    keywords: [ "tw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfc" src="1f1f9-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tajikistan: {
+    keywords: [ "tj", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddef" src="1f1f9-1f1ef.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tanzania: {
+    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddff" src="1f1f9-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  thailand: {
+    keywords: [ "th", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udded" src="1f1f9-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  timor_leste: {
+    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf1" src="1f1f9-1f1f1.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  togo: {
+    keywords: [ "tg", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddec" src="1f1f9-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tokelau: {
+    keywords: [ "tk", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf0" src="1f1f9-1f1f0.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tonga: {
+    keywords: [ "to", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf4" src="1f1f9-1f1f4.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  trinidad_tobago: {
+    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf9" src="1f1f9-1f1f9.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tunisia: {
+    keywords: [ "tn", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf3" src="1f1f9-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tr: {
+    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf7" src="1f1f9-1f1f7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  turkmenistan: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf2" src="1f1f9-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  turks_caicos_islands: {
+    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde8" src="1f1f9-1f1e8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tuvalu: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfb" src="1f1f9-1f1fb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uganda: {
+    keywords: [ "ug", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddec" src="1f1fa-1f1ec.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ukraine: {
+    keywords: [ "ua", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\udde6" src="1f1fa-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  united_arab_emirates: {
+    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddea" src="1f1e6-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uk: {
+    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde7" src="1f1ec-1f1e7.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  england: {
+    keywords: [ "flag", "english" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f" src="1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  scotland: {
+    keywords: [ "flag", "scottish" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f" src="1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  wales: {
+    keywords: [ "flag", "welsh" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f" src="1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  us: {
+    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf8" src="1f1fa-1f1f8.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  us_virgin_islands: {
+    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddee" src="1f1fb-1f1ee.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uruguay: {
+    keywords: [ "uy", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddfe" src="1f1fa-1f1fe.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uzbekistan: {
+    keywords: [ "uz", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddff" src="1f1fa-1f1ff.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vanuatu: {
+    keywords: [ "vu", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddfa" src="1f1fb-1f1fa.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vatican_city: {
+    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde6" src="1f1fb-1f1e6.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  venezuela: {
+    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddea" src="1f1fb-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vietnam: {
+    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddf3" src="1f1fb-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  wallis_futuna: {
+    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddeb" src="1f1fc-1f1eb.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  western_sahara: {
+    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udded" src="1f1ea-1f1ed.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  yemen: {
+    keywords: [ "ye", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddea" src="1f1fe-1f1ea.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  zambia: {
+    keywords: [ "zm", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddf2" src="1f1ff-1f1f2.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  zimbabwe: {
+    keywords: [ "zw", "flag", "nation", "country", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddfc" src="1f1ff-1f1fc.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  united_nations: {
+    keywords: [ "un", "flag", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf3" src="1f1fa-1f1f3.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pirate_flag: {
+    keywords: [ "skull", "crossbones", "flag", "banner" ],
+    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\u200d\u2620\ufe0f" src="1f3f4-200d-2620-fe0f.png"/>',
+    fitzpatrick_scale: false,
+    category: "flags"
+  }
+});
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojiimages.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojiimages.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..a0451629e5469119a68ddf382938fcb9f156d2e5
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojiimages.min.js
@@ -0,0 +1,3 @@
+// Source: npm package: emojilib
+// Images provided by twemoji: https://github.com/twitter/twemoji
+window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaf" src="1f4af.png"/>',fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd22" src="1f522.png"/>',fitzpatrick_scale:!1,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude00" src="1f600.png"/>',fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2c" src="1f62c.png"/>',fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude01" src="1f601.png"/>',fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude02" src="1f602.png"/>',fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd23" src="1f923.png"/>',fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd73" src="1f973.png"/>',fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude03" src="1f603.png"/>',fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude04" src="1f604.png"/>',fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude05" src="1f605.png"/>',fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude06" src="1f606.png"/>',fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude07" src="1f607.png"/>',fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude09" src="1f609.png"/>',fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0a" src="1f60a.png"/>',fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude42" src="1f642.png"/>',fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude43" src="1f643.png"/>',fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u263a\ufe0f" src="263a.png"/>',fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0b" src="1f60b.png"/>',fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0c" src="1f60c.png"/>',fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0d" src="1f60d.png"/>',fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd70" src="1f970.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude18" src="1f618.png"/>',fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude17" src="1f617.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude19" src="1f619.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1a" src="1f61a.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1c" src="1f61c.png"/>',fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2a" src="1f92a.png"/>',fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd28" src="1f928.png"/>',fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd0" src="1f9d0.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1d" src="1f61d.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1b" src="1f61b.png"/>',fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd11" src="1f911.png"/>',fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd13" src="1f913.png"/>',fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0e" src="1f60e.png"/>',fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd29" src="1f929.png"/>',fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd21" src="1f921.png"/>',fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd20" src="1f920.png"/>',fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd17" src="1f917.png"/>',fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0f" src="1f60f.png"/>',fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude36" src="1f636.png"/>',fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude10" src="1f610.png"/>',fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude11" src="1f611.png"/>',fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude12" src="1f612.png"/>',fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude44" src="1f644.png"/>',fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd14" src="1f914.png"/>',fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd25" src="1f925.png"/>',fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2d" src="1f92d.png"/>',fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2b" src="1f92b.png"/>',fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2c" src="1f92c.png"/>',fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2f" src="1f92f.png"/>',fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude33" src="1f633.png"/>',fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1e" src="1f61e.png"/>',fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1f" src="1f61f.png"/>',fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude20" src="1f620.png"/>',fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude21" src="1f621.png"/>',fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude14" src="1f614.png"/>',fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude15" src="1f615.png"/>',fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude41" src="1f641.png"/>',fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2639" src="2639.png"/>',fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude23" src="1f623.png"/>',fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude16" src="1f616.png"/>',fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2b" src="1f62b.png"/>',fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude29" src="1f629.png"/>',fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7a" src="1f97a.png"/>',fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude24" src="1f624.png"/>',fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2e" src="1f62e.png"/>',fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude31" src="1f631.png"/>',fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude28" src="1f628.png"/>',fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude30" src="1f630.png"/>',fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2f" src="1f62f.png"/>',fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude26" src="1f626.png"/>',fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude27" src="1f627.png"/>',fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude22" src="1f622.png"/>',fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude25" src="1f625.png"/>',fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd24" src="1f924.png"/>',fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2a" src="1f62a.png"/>',fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude13" src="1f613.png"/>',fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd75" src="1f975.png"/>',fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd76" src="1f976.png"/>',fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2d" src="1f62d.png"/>',fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude35" src="1f635.png"/>',fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude32" src="1f632.png"/>',fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd10" src="1f910.png"/>',fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd22" src="1f922.png"/>',fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd27" src="1f927.png"/>',fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2e" src="1f92e.png"/>',fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude37" src="1f637.png"/>',fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd12" src="1f912.png"/>',fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd15" src="1f915.png"/>',fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd74" src="1f974.png"/>',fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude34" src="1f634.png"/>',fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca4" src="1f4a4.png"/>',fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca9" src="1f4a9.png"/>',fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude08" src="1f608.png"/>',fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7f" src="1f47f.png"/>',fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc79" src="1f479.png"/>',fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7a" src="1f47a.png"/>',fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc80" src="1f480.png"/>',fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7b" src="1f47b.png"/>',fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7d" src="1f47d.png"/>',fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd16" src="1f916.png"/>',fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3a" src="1f63a.png"/>',fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude38" src="1f638.png"/>',fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude39" src="1f639.png"/>',fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3b" src="1f63b.png"/>',fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3c" src="1f63c.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3d" src="1f63d.png"/>',fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude40" src="1f640.png"/>',fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3f" src="1f63f.png"/>',fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3e" src="1f63e.png"/>',fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd32" src="1f932.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4c" src="1f64c.png"/>',fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4f" src="1f44f.png"/>',fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4b" src="1f44b.png"/>',fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd19" src="1f919.png"/>',fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4d" src="1f44d.png"/>',fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4e" src="1f44e.png"/>',fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4a" src="1f44a.png"/>',fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270a" src="270a.png"/>',fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1b" src="1f91b.png"/>',fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1c" src="1f91c.png"/>',fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270c" src="270c.png"/>',fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4c" src="1f44c.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270b" src="270b.png"/>',fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1a" src="1f91a.png"/>',fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc50" src="1f450.png"/>',fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaa" src="1f4aa.png"/>',fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4f" src="1f64f.png"/>',fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb6" src="1f9b6.png"/>',fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb5" src="1f9b5.png"/>',fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1d" src="1f91d.png"/>',fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u261d" src="261d.png"/>',fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc46" src="1f446.png"/>',fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc47" src="1f447.png"/>',fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc48" src="1f448.png"/>',fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc49" src="1f449.png"/>',fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd95" src="1f595.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd90" src="1f590.png"/>',fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1f" src="1f91f.png"/>',fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd18" src="1f918.png"/>',fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1e" src="1f91e.png"/>',fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd96" src="1f596.png"/>',fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270d" src="270d.png"/>',fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd33" src="1f933.png"/>',fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc85" src="1f485.png"/>',fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc44" src="1f444.png"/>',fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb7" src="1f9b7.png"/>',fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc45" src="1f445.png"/>',fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc42" src="1f442.png"/>',fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc43" src="1f443.png"/>',fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc41" src="1f441.png"/>',fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc40" src="1f440.png"/>',fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde0" src="1f9e0.png"/>',fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc64" src="1f464.png"/>',fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc65" src="1f465.png"/>',fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde3" src="1f5e3.png"/>',fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc76" src="1f476.png"/>',fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd2" src="1f9d2.png"/>',fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc66" src="1f466.png"/>',fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc67" src="1f467.png"/>',fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd1" src="1f9d1.png"/>',fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68" src="1f468.png"/>',fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69" src="1f469.png"/>',fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71\u200d\u2640\ufe0f" src="1f471-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71" src="1f471.png"/>',fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd4" src="1f9d4.png"/>',fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd3" src="1f9d3.png"/>',fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc74" src="1f474.png"/>',fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc75" src="1f475.png"/>',fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc72" src="1f472.png"/>',fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd5" src="1f9d5.png"/>',fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73\u200d\u2640\ufe0f" src="1f473-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73" src="1f473.png"/>',fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e\u200d\u2640\ufe0f" src="1f46e-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e" src="1f46e.png"/>',fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77\u200d\u2640\ufe0f" src="1f477-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77" src="1f477.png"/>',fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82\u200d\u2640\ufe0f" src="1f482-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82" src="1f482.png"/>',fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75\ufe0f\u200d\u2640\ufe0f" src="1f575-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75" src="1f575.png"/>',fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2695\ufe0f" src="1f469-200d-2695-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2695\ufe0f" src="1f468-200d-2695-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf3e" src="1f469-200d-1f33e.png"/>',fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf3e" src="1f468-200d-1f33e.png"/>',fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf73" src="1f469-200d-1f373.png"/>',fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf73" src="1f468-200d-1f373.png"/>',fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf93" src="1f469-200d-1f393.png"/>',fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf93" src="1f468-200d-1f393.png"/>',fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa4" src="1f469-200d-1f3a4.png"/>',fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa4" src="1f468-200d-1f3a4.png"/>',fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfeb" src="1f469-200d-1f3eb.png"/>',fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfeb" src="1f468-200d-1f3eb.png"/>',fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfed" src="1f469-200d-1f3ed.png"/>',fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfed" src="1f468-200d-1f3ed.png"/>',fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbb" src="1f469-200d-1f4bb.png"/>',fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbb" src="1f468-200d-1f4bb.png"/>',fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbc" src="1f469-200d-1f4bc.png"/>',fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbc" src="1f468-200d-1f4bc.png"/>',fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd27" src="1f469-200d-1f527.png"/>',fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd27" src="1f468-200d-1f527.png"/>',fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd2c" src="1f469-200d-1f52c.png"/>',fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd2c" src="1f468-200d-1f52c.png"/>',fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa8" src="1f469-200d-1f3a8.png"/>',fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa8" src="1f468-200d-1f3a8.png"/>',fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude92" src="1f469-200d-1f692.png"/>',fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude92" src="1f468-200d-1f692.png"/>',fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2708\ufe0f" src="1f469-200d-2708-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2708\ufe0f" src="1f468-200d-2708-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude80" src="1f469-200d-1f680.png"/>',fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude80" src="1f468-200d-1f680.png"/>',fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2696\ufe0f" src="1f469-200d-2696-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2696\ufe0f" src="1f468-200d-2696-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2640\ufe0f" src="1f9b8-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2642\ufe0f" src="1f9b8-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2640\ufe0f" src="1f9b9-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2642\ufe0f" src="1f9b9-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd36" src="1f936.png"/>',fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf85" src="1f385.png"/>',fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2640\ufe0f" src="1f9d9-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2642\ufe0f" src="1f9d9-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2640\ufe0f" src="1f9dd-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2642\ufe0f" src="1f9dd-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2640\ufe0f" src="1f9db-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2642\ufe0f" src="1f9db-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2640\ufe0f" src="1f9df-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2642\ufe0f" src="1f9df-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2640\ufe0f" src="1f9de-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2642\ufe0f" src="1f9de-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2640\ufe0f" src="1f9dc-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2642\ufe0f" src="1f9dc-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2640\ufe0f" src="1f9da-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2642\ufe0f" src="1f9da-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7c" src="1f47c.png"/>',fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd30" src="1f930.png"/>',fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd31" src="1f931.png"/>',fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc78" src="1f478.png"/>',fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd34" src="1f934.png"/>',fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc70" src="1f470.png"/>',fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd35" src="1f935.png"/>',fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3\u200d\u2640\ufe0f" src="1f3c3-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3" src="1f3c3.png"/>',fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6\u200d\u2640\ufe0f" src="1f6b6-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6" src="1f6b6.png"/>',fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc83" src="1f483.png"/>',fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd7a" src="1f57a.png"/>',fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f" src="1f46f.png"/>',fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f\u200d\u2642\ufe0f" src="1f46f-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6b" src="1f46b.png"/>',fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6c" src="1f46c.png"/>',fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6d" src="1f46d.png"/>',fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47\u200d\u2640\ufe0f" src="1f647-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47" src="1f647.png"/>',fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2642\ufe0f" src="1f926-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2640\ufe0f" src="1f926-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37" src="1f937.png"/>',fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37\u200d\u2642\ufe0f" src="1f937-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81" src="1f481.png"/>',fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81\u200d\u2642\ufe0f" src="1f481-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45" src="1f645.png"/>',fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45\u200d\u2642\ufe0f" src="1f645-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46" src="1f646.png"/>',fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46\u200d\u2642\ufe0f" src="1f646-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b" src="1f64b.png"/>',fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b\u200d\u2642\ufe0f" src="1f64b-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e" src="1f64e.png"/>',fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e\u200d\u2642\ufe0f" src="1f64e-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d" src="1f64d.png"/>',fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d\u200d\u2642\ufe0f" src="1f64d-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87" src="1f487.png"/>',fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87\u200d\u2642\ufe0f" src="1f487-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86" src="1f486.png"/>',fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86\u200d\u2642\ufe0f" src="1f486-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2640\ufe0f" src="1f9d6-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2642\ufe0f" src="1f9d6-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc91" src="1f491.png"/>',fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f469.png"/>',fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f468.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8f" src="1f48f.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6a" src="1f46a.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf6" src="1f9f6.png"/>',fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf5" src="1f9f5.png"/>',fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde5" src="1f9e5.png"/>',fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7c" src="1f97c.png"/>',fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5a" src="1f45a.png"/>',fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc55" src="1f455.png"/>',fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc56" src="1f456.png"/>',fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc54" src="1f454.png"/>',fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc57" src="1f457.png"/>',fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc59" src="1f459.png"/>',fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc58" src="1f458.png"/>',fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc84" src="1f484.png"/>',fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8b" src="1f48b.png"/>',fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc63" src="1f463.png"/>',fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7f" src="1f97f.png"/>',fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc60" src="1f460.png"/>',fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc61" src="1f461.png"/>',fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc62" src="1f462.png"/>',fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5e" src="1f45e.png"/>',fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5f" src="1f45f.png"/>',fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7e" src="1f97e.png"/>',fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde6" src="1f9e6.png"/>',fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde4" src="1f9e4.png"/>',fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde3" src="1f9e3.png"/>',fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc52" src="1f452.png"/>',fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa9" src="1f3a9.png"/>',fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde2" src="1f9e2.png"/>',fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d1" src="26d1.png"/>',fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf93" src="1f393.png"/>',fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc51" src="1f451.png"/>',fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf92" src="1f392.png"/>',fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf3" src="1f9f3.png"/>',fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5d" src="1f45d.png"/>',fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5b" src="1f45b.png"/>',fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5c" src="1f45c.png"/>',fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbc" src="1f4bc.png"/>',fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc53" src="1f453.png"/>',fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd76" src="1f576.png"/>',fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7d" src="1f97d.png"/>',fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8d" src="1f48d.png"/>',fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf02" src="1f302.png"/>',fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc36" src="1f436.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc31" src="1f431.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2d" src="1f42d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc39" src="1f439.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc30" src="1f430.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8a" src="1f98a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3b" src="1f43b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3c" src="1f43c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc28" src="1f428.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2f" src="1f42f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd81" src="1f981.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2e" src="1f42e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc37" src="1f437.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3d" src="1f43d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc38" src="1f438.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd91" src="1f991.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc19" src="1f419.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd90" src="1f990.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc35" src="1f435.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8d" src="1f98d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude48" src="1f648.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude49" src="1f649.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4a" src="1f64a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc12" src="1f412.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc14" src="1f414.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc27" src="1f427.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc26" src="1f426.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc24" src="1f424.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc23" src="1f423.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc25" src="1f425.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd86" src="1f986.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd85" src="1f985.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd89" src="1f989.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd87" src="1f987.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3a" src="1f43a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc17" src="1f417.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc34" src="1f434.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd84" src="1f984.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1d" src="1f41d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1b" src="1f41b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8b" src="1f98b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0c" src="1f40c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1e" src="1f41e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1c" src="1f41c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd97" src="1f997.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd77" src="1f577.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd82" src="1f982.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd80" src="1f980.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0d" src="1f40d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8e" src="1f98e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd96" src="1f996.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd95" src="1f995.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc22" src="1f422.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc20" src="1f420.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1f" src="1f41f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc21" src="1f421.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2c" src="1f42c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd88" src="1f988.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc33" src="1f433.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0b" src="1f40b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0a" src="1f40a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc06" src="1f406.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd93" src="1f993.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc05" src="1f405.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc03" src="1f403.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc02" src="1f402.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc04" src="1f404.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8c" src="1f98c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2a" src="1f42a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2b" src="1f42b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd92" src="1f992.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc18" src="1f418.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8f" src="1f98f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc10" src="1f410.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0f" src="1f40f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc11" src="1f411.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0e" src="1f40e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc16" src="1f416.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc00" src="1f400.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc01" src="1f401.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc13" src="1f413.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd83" src="1f983.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4a" src="1f54a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc15" src="1f415.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc29" src="1f429.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc08" src="1f408.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc07" src="1f407.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3f" src="1f43f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd94" src="1f994.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9d" src="1f99d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd99" src="1f999.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9b" src="1f99b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd98" src="1f998.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda1" src="1f9a1.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda2" src="1f9a2.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9a" src="1f99a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9c" src="1f99c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9e" src="1f99e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9f" src="1f99f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3e" src="1f43e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc09" src="1f409.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc32" src="1f432.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf35" src="1f335.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf84" src="1f384.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf32" src="1f332.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf33" src="1f333.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf34" src="1f334.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf31" src="1f331.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3f" src="1f33f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2618" src="2618.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf40" src="1f340.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8d" src="1f38d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8b" src="1f38b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf43" src="1f343.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf42" src="1f342.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf41" src="1f341.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3e" src="1f33e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3a" src="1f33a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3b" src="1f33b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf39" src="1f339.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd40" src="1f940.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf37" src="1f337.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3c" src="1f33c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf38" src="1f338.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc90" src="1f490.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf44" src="1f344.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf30" src="1f330.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf83" src="1f383.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1a" src="1f41a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd78" src="1f578.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0e" src="1f30e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0d" src="1f30d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0f" src="1f30f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf15" src="1f315.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf16" src="1f316.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf17" src="1f317.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf18" src="1f318.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf11" src="1f311.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf12" src="1f312.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf13" src="1f313.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf14" src="1f314.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1a" src="1f31a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1d" src="1f31d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1b" src="1f31b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1c" src="1f31c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1e" src="1f31e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf19" src="1f319.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b50" src="2b50.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1f" src="1f31f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcab" src="1f4ab.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2728" src="2728.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2604" src="2604.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2600\ufe0f" src="2600.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf24" src="1f324.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c5" src="26c5.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf25" src="1f325.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf26" src="1f326.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2601\ufe0f" src="2601.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf27" src="1f327.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c8" src="26c8.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf29" src="1f329.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a1" src="26a1.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd25" src="1f525.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca5" src="1f4a5.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2744\ufe0f" src="2744.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf28" src="1f328.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c4" src="26c4.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2603" src="2603.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2c" src="1f32c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca8" src="1f4a8.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2a" src="1f32a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2b" src="1f32b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2602" src="2602.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2614" src="2614.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca7" src="1f4a7.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca6" src="1f4a6.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0a" src="1f30a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4f" src="1f34f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4e" src="1f34e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf50" src="1f350.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4a" src="1f34a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4b" src="1f34b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4c" src="1f34c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf49" src="1f349.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf47" src="1f347.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf53" src="1f353.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf48" src="1f348.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf52" src="1f352.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf51" src="1f351.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4d" src="1f34d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd65" src="1f965.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5d" src="1f95d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6d" src="1f96d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd51" src="1f951.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd66" src="1f966.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf45" src="1f345.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf46" src="1f346.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd52" src="1f952.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd55" src="1f955.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf36" src="1f336.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd54" src="1f954.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3d" src="1f33d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6c" src="1f96c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf60" src="1f360.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5c" src="1f95c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6f" src="1f36f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd50" src="1f950.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5e" src="1f35e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd56" src="1f956.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6f" src="1f96f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd68" src="1f968.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc0" src="1f9c0.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5a" src="1f95a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd53" src="1f953.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd69" src="1f969.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5e" src="1f95e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf57" src="1f357.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf56" src="1f356.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb4" src="1f9b4.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf64" src="1f364.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf73" src="1f373.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf54" src="1f354.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5f" src="1f35f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd59" src="1f959.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2d" src="1f32d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf55" src="1f355.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6a" src="1f96a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6b" src="1f96b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5d" src="1f35d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2e" src="1f32e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2f" src="1f32f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd57" src="1f957.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd58" src="1f958.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5c" src="1f35c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf72" src="1f372.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf65" src="1f365.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd60" src="1f960.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf63" src="1f363.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf71" src="1f371.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5b" src="1f35b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf59" src="1f359.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5a" src="1f35a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf58" src="1f358.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf62" src="1f362.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf61" src="1f361.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf67" src="1f367.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf68" src="1f368.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf66" src="1f366.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd67" src="1f967.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf70" src="1f370.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc1" src="1f9c1.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6e" src="1f96e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf82" src="1f382.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6e" src="1f36e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6c" src="1f36c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6d" src="1f36d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6b" src="1f36b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7f" src="1f37f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5f" src="1f95f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf69" src="1f369.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6a" src="1f36a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5b" src="1f95b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7a" src="1f37a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7b" src="1f37b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd42" src="1f942.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf77" src="1f377.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd43" src="1f943.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf78" src="1f378.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf79" src="1f379.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7e" src="1f37e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf76" src="1f376.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf75" src="1f375.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd64" src="1f964.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2615" src="2615.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7c" src="1f37c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc2" src="1f9c2.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd44" src="1f944.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf74" src="1f374.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7d" src="1f37d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd63" src="1f963.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd61" src="1f961.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd62" src="1f962.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26bd" src="26bd.png"/>',fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc0" src="1f3c0.png"/>',fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc8" src="1f3c8.png"/>',fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26be" src="26be.png"/>',fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4e" src="1f94e.png"/>',fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbe" src="1f3be.png"/>',fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd0" src="1f3d0.png"/>',fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc9" src="1f3c9.png"/>',fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4f" src="1f94f.png"/>',fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb1" src="1f3b1.png"/>',fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f3" src="26f3.png"/>',fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f" src="1f3cc-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc" src="1f3cc.png"/>',fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd3" src="1f3d3.png"/>',fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff8" src="1f3f8.png"/>',fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd45" src="1f945.png"/>',fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd2" src="1f3d2.png"/>',fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd1" src="1f3d1.png"/>',fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4d" src="1f94d.png"/>',fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcf" src="1f3cf.png"/>',fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbf" src="1f3bf.png"/>',fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f7" src="26f7.png"/>',fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc2" src="1f3c2.png"/>',fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3a" src="1f93a.png"/>',fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2640\ufe0f" src="1f93c-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2642\ufe0f" src="1f93c-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2640\ufe0f" src="1f938-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2642\ufe0f" src="1f938-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2640\ufe0f" src="1f93e-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2642\ufe0f" src="1f93e-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f8" src="26f8.png"/>',fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4c" src="1f94c.png"/>',fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef9" src="1f6f9.png"/>',fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef7" src="1f6f7.png"/>',fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff9" src="1f3f9.png"/>',fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa3" src="1f3a3.png"/>',fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4a" src="1f94a.png"/>',fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4b" src="1f94b.png"/>',fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3\u200d\u2640\ufe0f" src="1f6a3-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3" src="1f6a3.png"/>',fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2640\ufe0f" src="1f9d7-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2642\ufe0f" src="1f9d7-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca\u200d\u2640\ufe0f" src="1f3ca-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca" src="1f3ca.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2640\ufe0f" src="1f93d-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2642\ufe0f" src="1f93d-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2640\ufe0f" src="1f9d8-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2642\ufe0f" src="1f9d8-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4\u200d\u2640\ufe0f" src="1f3c4-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4" src="1f3c4.png"/>',fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec0" src="1f6c0.png"/>',fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9\ufe0f\u200d\u2640\ufe0f" src="26f9-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9" src="26f9.png"/>',fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f" src="1f3cb-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb" src="1f3cb.png"/>',fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4\u200d\u2640\ufe0f" src="1f6b4-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4" src="1f6b4.png"/>',fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5\u200d\u2640\ufe0f" src="1f6b5-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5" src="1f6b5.png"/>',fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc7" src="1f3c7.png"/>',fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd74" src="1f574.png"/>',fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc6" src="1f3c6.png"/>',fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbd" src="1f3bd.png"/>',fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc5" src="1f3c5.png"/>',fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf96" src="1f396.png"/>',fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd47" src="1f947.png"/>',fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd48" src="1f948.png"/>',fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd49" src="1f949.png"/>',fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf97" src="1f397.png"/>',fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff5" src="1f3f5.png"/>',fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfab" src="1f3ab.png"/>',fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9f" src="1f39f.png"/>',fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfad" src="1f3ad.png"/>',fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa8" src="1f3a8.png"/>',fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaa" src="1f3aa.png"/>',fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2640\ufe0f" src="1f939-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2642\ufe0f" src="1f939-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa4" src="1f3a4.png"/>',fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa7" src="1f3a7.png"/>',fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbc" src="1f3bc.png"/>',fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb9" src="1f3b9.png"/>',fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd41" src="1f941.png"/>',fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb7" src="1f3b7.png"/>',fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfba" src="1f3ba.png"/>',fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb8" src="1f3b8.png"/>',fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbb" src="1f3bb.png"/>',fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfac" src="1f3ac.png"/>',fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfae" src="1f3ae.png"/>',fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7e" src="1f47e.png"/>',fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaf" src="1f3af.png"/>',fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb2" src="1f3b2.png"/>',fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],char:"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb0" src="1f3b0.png"/>',fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde9" src="1f9e9.png"/>',fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb3" src="1f3b3.png"/>',fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude97" src="1f697.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude95" src="1f695.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude99" src="1f699.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8c" src="1f68c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8e" src="1f68e.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfce" src="1f3ce.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude93" src="1f693.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude91" src="1f691.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude92" src="1f692.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude90" src="1f690.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9a" src="1f69a.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9b" src="1f69b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9c" src="1f69c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef4" src="1f6f4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcd" src="1f3cd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb2" src="1f6b2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef5" src="1f6f5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea8" src="1f6a8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude94" src="1f694.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8d" src="1f68d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude98" src="1f698.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude96" src="1f696.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea1" src="1f6a1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea0" src="1f6a0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9f" src="1f69f.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude83" src="1f683.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8b" src="1f68b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9d" src="1f69d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude84" src="1f684.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude85" src="1f685.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude88" src="1f688.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9e" src="1f69e.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude82" src="1f682.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude86" src="1f686.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude87" src="1f687.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8a" src="1f68a.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude89" src="1f689.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef8" src="1f6f8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude81" src="1f681.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee9" src="1f6e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2708\ufe0f" src="2708.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeeb" src="1f6eb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeec" src="1f6ec.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f5" src="26f5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee5" src="1f6e5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea4" src="1f6a4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f4" src="26f4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef3" src="1f6f3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude80" src="1f680.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef0" src="1f6f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcba" src="1f4ba.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef6" src="1f6f6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2693" src="2693.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea7" src="1f6a7.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fd" src="26fd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8f" src="1f68f.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea6" src="1f6a6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea5" src="1f6a5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc1" src="1f3c1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea2" src="1f6a2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa1" src="1f3a1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa2" src="1f3a2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa0" src="1f3a0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd7" src="1f3d7.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf01" src="1f301.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfc" src="1f5fc.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfed" src="1f3ed.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f2" src="26f2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf91" src="1f391.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f0" src="26f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd4" src="1f3d4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfb" src="1f5fb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0b" src="1f30b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfe" src="1f5fe.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd5" src="1f3d5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fa" src="26fa.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfde" src="1f3de.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee3" src="1f6e3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee4" src="1f6e4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf05" src="1f305.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf04" src="1f304.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdc" src="1f3dc.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd6" src="1f3d6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdd" src="1f3dd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf07" src="1f307.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf06" src="1f306.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd9" src="1f3d9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf03" src="1f303.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf09" src="1f309.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0c" src="1f30c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf20" src="1f320.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf87" src="1f387.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf86" src="1f386.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf08" src="1f308.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd8" src="1f3d8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff0" src="1f3f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfef" src="1f3ef.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdf" src="1f3df.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfd" src="1f5fd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe0" src="1f3e0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe1" src="1f3e1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfda" src="1f3da.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe2" src="1f3e2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfec" src="1f3ec.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe3" src="1f3e3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe4" src="1f3e4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe5" src="1f3e5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe6" src="1f3e6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe8" src="1f3e8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfea" src="1f3ea.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfeb" src="1f3eb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe9" src="1f3e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc92" src="1f492.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdb" src="1f3db.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ea" src="26ea.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4c" src="1f54c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4d" src="1f54d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4b" src="1f54b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26e9" src="26e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231a" src="231a.png"/>',fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf1" src="1f4f1.png"/>',fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf2" src="1f4f2.png"/>',fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbb" src="1f4bb.png"/>',fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2328" src="2328.png"/>',fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda5" src="1f5a5.png"/>',fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda8" src="1f5a8.png"/>',fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb1" src="1f5b1.png"/>',fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb2" src="1f5b2.png"/>',fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd79" src="1f579.png"/>',fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddc" src="1f5dc.png"/>',fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbd" src="1f4bd.png"/>',fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbe" src="1f4be.png"/>',fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbf" src="1f4bf.png"/>',fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc0" src="1f4c0.png"/>',fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfc" src="1f4fc.png"/>',fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf7" src="1f4f7.png"/>',fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf8" src="1f4f8.png"/>',fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf9" src="1f4f9.png"/>',fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa5" src="1f3a5.png"/>',fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfd" src="1f4fd.png"/>',fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9e" src="1f39e.png"/>',fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcde" src="1f4de.png"/>',fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u260e\ufe0f" src="260e.png"/>',fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdf" src="1f4df.png"/>',fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce0" src="1f4e0.png"/>',fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfa" src="1f4fa.png"/>',fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfb" src="1f4fb.png"/>',fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf99" src="1f399.png"/>',fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9a" src="1f39a.png"/>',fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9b" src="1f39b.png"/>',fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udded" src="1f9ed.png"/>',fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f1" src="23f1.png"/>',fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f2" src="23f2.png"/>',fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f0" src="23f0.png"/>',fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd70" src="1f570.png"/>',fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f3" src="23f3.png"/>',fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231b" src="231b.png"/>',fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce1" src="1f4e1.png"/>',fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0b" src="1f50b.png"/>',fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0c" src="1f50c.png"/>',fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca1" src="1f4a1.png"/>',fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd26" src="1f526.png"/>',fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd6f" src="1f56f.png"/>',fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddef" src="1f9ef.png"/>',fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd1" src="1f5d1.png"/>',fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee2" src="1f6e2.png"/>',fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb8" src="1f4b8.png"/>',fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb5" src="1f4b5.png"/>',fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb4" src="1f4b4.png"/>',fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb6" src="1f4b6.png"/>',fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb7" src="1f4b7.png"/>',fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb0" src="1f4b0.png"/>',fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb3" src="1f4b3.png"/>',fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8e" src="1f48e.png"/>',fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2696" src="2696.png"/>',fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf0" src="1f9f0.png"/>',fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd27" src="1f527.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd28" src="1f528.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2692" src="2692.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee0" src="1f6e0.png"/>',fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26cf" src="26cf.png"/>',fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd29" src="1f529.png"/>',fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2699" src="2699.png"/>',fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf1" src="1f9f1.png"/>',fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d3" src="26d3.png"/>',fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf2" src="1f9f2.png"/>',fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2b" src="1f52b.png"/>',fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca3" src="1f4a3.png"/>',fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde8" src="1f9e8.png"/>',fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2a" src="1f52a.png"/>',fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde1" src="1f5e1.png"/>',fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2694" src="2694.png"/>',fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee1" src="1f6e1.png"/>',fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeac" src="1f6ac.png"/>',fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2620" src="2620.png"/>',fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b0" src="26b0.png"/>',fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b1" src="26b1.png"/>',fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udffa" src="1f3fa.png"/>',fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2e" src="1f52e.png"/>',fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcff" src="1f4ff.png"/>',fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddff" src="1f9ff.png"/>',fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc88" src="1f488.png"/>',fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2697" src="2697.png"/>',fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2d" src="1f52d.png"/>',fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2c" src="1f52c.png"/>',fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd73" src="1f573.png"/>',fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8a" src="1f48a.png"/>',fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc89" src="1f489.png"/>',fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddec" src="1f9ec.png"/>',fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda0" src="1f9a0.png"/>',fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddeb" src="1f9eb.png"/>',fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddea" src="1f9ea.png"/>',fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf21" src="1f321.png"/>',fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf9" src="1f9f9.png"/>',fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfa" src="1f9fa.png"/>',fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfb" src="1f9fb.png"/>',fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff7" src="1f3f7.png"/>',fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd16" src="1f516.png"/>',fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebd" src="1f6bd.png"/>',fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebf" src="1f6bf.png"/>',fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec1" src="1f6c1.png"/>',fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfc" src="1f9fc.png"/>',fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfd" src="1f9fd.png"/>',fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf4" src="1f9f4.png"/>',fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd11" src="1f511.png"/>',fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddd" src="1f5dd.png"/>',fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecb" src="1f6cb.png"/>',fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecc" src="1f6cc.png"/>',fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecf" src="1f6cf.png"/>',fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaa" src="1f6aa.png"/>',fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udece" src="1f6ce.png"/>',fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf8" src="1f9f8.png"/>',fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddbc" src="1f5bc.png"/>',fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfa" src="1f5fa.png"/>',fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f1" src="26f1.png"/>',fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddff" src="1f5ff.png"/>',fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecd" src="1f6cd.png"/>',fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded2" src="1f6d2.png"/>',fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf88" src="1f388.png"/>',fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8f" src="1f38f.png"/>',fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf80" src="1f380.png"/>',fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf81" src="1f381.png"/>',fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8a" src="1f38a.png"/>',fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf89" src="1f389.png"/>',fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8e" src="1f38e.png"/>',fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf90" src="1f390.png"/>',fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8c" src="1f38c.png"/>',fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfee" src="1f3ee.png"/>',fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde7" src="1f9e7.png"/>',fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2709\ufe0f" src="2709.png"/>',fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce9" src="1f4e9.png"/>',fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce8" src="1f4e8.png"/>',fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce7" src="1f4e7.png"/>',fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8c" src="1f48c.png"/>',fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcee" src="1f4ee.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcea" src="1f4ea.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udceb" src="1f4eb.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcec" src="1f4ec.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udced" src="1f4ed.png"/>',fitzpatrick_scale:!1,category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce6" src="1f4e6.png"/>',fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcef" src="1f4ef.png"/>',fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce5" src="1f4e5.png"/>',fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce4" src="1f4e4.png"/>',fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdc" src="1f4dc.png"/>',fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc3" src="1f4c3.png"/>',fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd1" src="1f4d1.png"/>',fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfe" src="1f9fe.png"/>',fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcca" src="1f4ca.png"/>',fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc8" src="1f4c8.png"/>',fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc9" src="1f4c9.png"/>',fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc4" src="1f4c4.png"/>',fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc5" src="1f4c5.png"/>',fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc6" src="1f4c6.png"/>',fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd3" src="1f5d3.png"/>',fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc7" src="1f4c7.png"/>',fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc3" src="1f5c3.png"/>',fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddf3" src="1f5f3.png"/>',fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc4" src="1f5c4.png"/>',fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccb" src="1f4cb.png"/>',fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd2" src="1f5d2.png"/>',fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc1" src="1f4c1.png"/>',fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc2" src="1f4c2.png"/>',fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc2" src="1f5c2.png"/>',fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddde" src="1f5de.png"/>',fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf0" src="1f4f0.png"/>',fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd3" src="1f4d3.png"/>',fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd5" src="1f4d5.png"/>',fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd7" src="1f4d7.png"/>',fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd8" src="1f4d8.png"/>',fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd9" src="1f4d9.png"/>',fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd4" src="1f4d4.png"/>',fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd2" src="1f4d2.png"/>',fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcda" src="1f4da.png"/>',fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd6" src="1f4d6.png"/>',fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf7" src="1f9f7.png"/>',fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd17" src="1f517.png"/>',fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcce" src="1f4ce.png"/>',fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd87" src="1f587.png"/>',fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2702\ufe0f" src="2702.png"/>',fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd0" src="1f4d0.png"/>',fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccf" src="1f4cf.png"/>',fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddee" src="1f9ee.png"/>',fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccc" src="1f4cc.png"/>',fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccd" src="1f4cd.png"/>',fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea9" src="1f6a9.png"/>',fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3" src="1f3f3.png"/>',fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4" src="1f3f4.png"/>',fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3\ufe0f\u200d\ud83c\udf08" src="1f3f3-fe0f-200d-1f308.png"/>',fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd10" src="1f510.png"/>',fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd12" src="1f512.png"/>',fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd13" src="1f513.png"/>',fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0f" src="1f50f.png"/>',fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8a" src="1f58a.png"/>',fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8b" src="1f58b.png"/>',fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2712\ufe0f" src="2712.png"/>',fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdd" src="1f4dd.png"/>',fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270f\ufe0f" src="270f.png"/>',fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8d" src="1f58d.png"/>',fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8c" src="1f58c.png"/>',fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0d" src="1f50d.png"/>',fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0e" src="1f50e.png"/>',fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2764\ufe0f" src="2764.png"/>',fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde1" src="1f9e1.png"/>',fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9b" src="1f49b.png"/>',fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9a" src="1f49a.png"/>',fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc99" src="1f499.png"/>',fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9c" src="1f49c.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda4" src="1f5a4.png"/>',fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc94" src="1f494.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2763" src="2763.png"/>',fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc95" src="1f495.png"/>',fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9e" src="1f49e.png"/>',fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc93" src="1f493.png"/>',fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc97" src="1f497.png"/>',fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc96" src="1f496.png"/>',fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc98" src="1f498.png"/>',fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9d" src="1f49d.png"/>',fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9f" src="1f49f.png"/>',fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262e" src="262e.png"/>',fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u271d" src="271d.png"/>',fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262a" src="262a.png"/>',fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd49" src="1f549.png"/>',fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2638" src="2638.png"/>',fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2721" src="2721.png"/>',fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2f" src="1f52f.png"/>',fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4e" src="1f54e.png"/>',fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262f" src="262f.png"/>',fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2626" src="2626.png"/>',fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded0" src="1f6d0.png"/>',fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ce" src="26ce.png"/>',fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2648" src="2648.png"/>',fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2649" src="2649.png"/>',fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264a" src="264a.png"/>',fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264b" src="264b.png"/>',fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264c" src="264c.png"/>',fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264d" src="264d.png"/>',fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264e" src="264e.png"/>',fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264f" src="264f.png"/>',fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2650" src="2650.png"/>',fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2651" src="2651.png"/>',fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2652" src="2652.png"/>',fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2653" src="2653.png"/>',fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd94" src="1f194.png"/>',fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269b" src="269b.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude33" src="1f233.png"/>',fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude39" src="1f239.png"/>',fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2622" src="2622.png"/>',fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2623" src="2623.png"/>',fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf4" src="1f4f4.png"/>',fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf3" src="1f4f3.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude36" src="1f236.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude1a" src="1f21a.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude38" src="1f238.png"/>',fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude3a" src="1f23a.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude37\ufe0f" src="1f237.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2734\ufe0f" src="2734.png"/>',fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd9a" src="1f19a.png"/>',fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude51" src="1f251.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcae" src="1f4ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude50" src="1f250.png"/>',fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3299\ufe0f" src="3299.png"/>',fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3297\ufe0f" src="3297.png"/>',fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude34" src="1f234.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude35" src="1f235.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude32" src="1f232.png"/>',fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd70\ufe0f" src="1f170.png"/>',fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd71\ufe0f" src="1f171.png"/>',fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd8e" src="1f18e.png"/>',fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd91" src="1f191.png"/>',fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7e\ufe0f" src="1f17e.png"/>',fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd98" src="1f198.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d4" src="26d4.png"/>',fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdb" src="1f4db.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeab" src="1f6ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274c" src="274c.png"/>',fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b55" src="2b55.png"/>',fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded1" src="1f6d1.png"/>',fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca2" src="1f4a2.png"/>',fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2668\ufe0f" src="2668.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb7" src="1f6b7.png"/>',fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaf" src="1f6af.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb3" src="1f6b3.png"/>',fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb1" src="1f6b1.png"/>',fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1e" src="1f51e.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf5" src="1f4f5.png"/>',fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2757" src="2757.png"/>',fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2755" src="2755.png"/>',fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2753" src="2753.png"/>',fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2754" src="2754.png"/>',fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u203c\ufe0f" src="203c.png"/>',fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2049\ufe0f" src="2049.png"/>',fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd05" src="1f505.png"/>',fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd06" src="1f506.png"/>',fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd31" src="1f531.png"/>',fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269c" src="269c.png"/>',fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u303d\ufe0f" src="303d.png"/>',fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a0\ufe0f" src="26a0.png"/>',fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb8" src="1f6b8.png"/>',fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd30" src="1f530.png"/>',fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267b\ufe0f" src="267b.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude2f" src="1f22f.png"/>',fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb9" src="1f4b9.png"/>',fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2747\ufe0f" src="2747.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2733\ufe0f" src="2733.png"/>',fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274e" src="274e.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2705" src="2705.png"/>',fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca0" src="1f4a0.png"/>',fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf00" src="1f300.png"/>',fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27bf" src="27bf.png"/>',fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf10" src="1f310.png"/>',fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u24c2\ufe0f" src="24c2.png"/>',fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe7" src="1f3e7.png"/>',fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude02\ufe0f" src="1f202.png"/>',fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec2" src="1f6c2.png"/>',fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec3" src="1f6c3.png"/>',fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec4" src="1f6c4.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec5" src="1f6c5.png"/>',fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267f" src="267f.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udead" src="1f6ad.png"/>',fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebe" src="1f6be.png"/>',fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7f\ufe0f" src="1f17f.png"/>',fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb0" src="1f6b0.png"/>',fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb9" src="1f6b9.png"/>',fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeba" src="1f6ba.png"/>',fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebc" src="1f6bc.png"/>',fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebb" src="1f6bb.png"/>',fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeae" src="1f6ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa6" src="1f3a6.png"/>',fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf6" src="1f4f6.png"/>',fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude01" src="1f201.png"/>',fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd96" src="1f196.png"/>',fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd97" src="1f197.png"/>',fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd99" src="1f199.png"/>',fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd92" src="1f192.png"/>',fitzpatrick_scale:!1,category:"symbols"},new:{keywords:["blue-square","words","start"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd95" src="1f195.png"/>',fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd93" src="1f193.png"/>',fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="0\ufe0f\u20e3" src="30-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="1\ufe0f\u20e3" src="31-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="2\ufe0f\u20e3" src="32-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="3\ufe0f\u20e3" src="33-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="4\ufe0f\u20e3" src="34-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="5\ufe0f\u20e3" src="35-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="6\ufe0f\u20e3" src="36-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="7\ufe0f\u20e3" src="37-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="8\ufe0f\u20e3" src="38-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="9\ufe0f\u20e3" src="39-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1f" src="1f51f.png"/>',fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="*\u20e3" src="2a-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23cf\ufe0f" src="23cf.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25b6\ufe0f" src="25b6.png"/>',fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f8" src="23f8.png"/>',fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ed" src="23ed.png"/>',fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f9" src="23f9.png"/>',fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23fa" src="23fa.png"/>',fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ef" src="23ef.png"/>',fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ee" src="23ee.png"/>',fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23e9" src="23e9.png"/>',fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ea" src="23ea.png"/>',fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd00" src="1f500.png"/>',fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd01" src="1f501.png"/>',fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd02" src="1f502.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25c0\ufe0f" src="25c0.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3c" src="1f53c.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3d" src="1f53d.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23eb" src="23eb.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ec" src="23ec.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27a1\ufe0f" src="27a1.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b05\ufe0f" src="2b05.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b06\ufe0f" src="2b06.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b07\ufe0f" src="2b07.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2197\ufe0f" src="2197.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2198\ufe0f" src="2198.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2199\ufe0f" src="2199.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2196\ufe0f" src="2196.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2195\ufe0f" src="2195.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2194\ufe0f" src="2194.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd04" src="1f504.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21aa\ufe0f" src="21aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21a9\ufe0f" src="21a9.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2934\ufe0f" src="2934.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2935\ufe0f" src="2935.png"/>',fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="#\ufe0f\u20e3" src="23-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2139\ufe0f" src="2139.png"/>',fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd24" src="1f524.png"/>',fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd21" src="1f521.png"/>',fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd20" src="1f520.png"/>',fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd23" src="1f523.png"/>',fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb5" src="1f3b5.png"/>',fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb6" src="1f3b6.png"/>',fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3030\ufe0f" src="3030.png"/>',fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27b0" src="27b0.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2714\ufe0f" src="2714.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd03" src="1f503.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2795" src="2795.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2796" src="2796.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2797" src="2797.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2716\ufe0f" src="2716.png"/>',fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267e" src="267e.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb2" src="1f4b2.png"/>',fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb1" src="1f4b1.png"/>',fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xa9\ufe0f" src="a9.png"/>',fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xae\ufe0f" src="ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2122\ufe0f" src="2122.png"/>',fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1a" src="1f51a.png"/>',fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd19" src="1f519.png"/>',fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1b" src="1f51b.png"/>',fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1d" src="1f51d.png"/>',fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1c" src="1f51c.png"/>',fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2611\ufe0f" src="2611.png"/>',fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd18" src="1f518.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26aa" src="26aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ab" src="26ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd34" src="1f534.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd35" src="1f535.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd38" src="1f538.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd39" src="1f539.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd36" src="1f536.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd37" src="1f537.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3a" src="1f53a.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25aa\ufe0f" src="25aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25ab\ufe0f" src="25ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1b" src="2b1b.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1c" src="2b1c.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3b" src="1f53b.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fc\ufe0f" src="25fc.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fb\ufe0f" src="25fb.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fe" src="25fe.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fd" src="25fd.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd32" src="1f532.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd33" src="1f533.png"/>',fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd08" src="1f508.png"/>',fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd09" src="1f509.png"/>',fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0a" src="1f50a.png"/>',fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd07" src="1f507.png"/>',fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce3" src="1f4e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce2" src="1f4e2.png"/>',fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd14" src="1f514.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd15" src="1f515.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udccf" src="1f0cf.png"/>',fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udc04" src="1f004.png"/>',fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2660\ufe0f" src="2660.png"/>',fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2663\ufe0f" src="2663.png"/>',fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2665\ufe0f" src="2665.png"/>',fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2666\ufe0f" src="2666.png"/>',fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb4" src="1f3b4.png"/>',fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcad" src="1f4ad.png"/>',fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddef" src="1f5ef.png"/>',fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcac" src="1f4ac.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde8" src="1f5e8.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd50" src="1f550.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd51" src="1f551.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd52" src="1f552.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd53" src="1f553.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd54" src="1f554.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd55" src="1f555.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd56" src="1f556.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd57" src="1f557.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd58" src="1f558.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd59" src="1f559.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5a" src="1f55a.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5b" src="1f55b.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5c" src="1f55c.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5d" src="1f55d.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5e" src="1f55e.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5f" src="1f55f.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd60" src="1f560.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd61" src="1f561.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd62" src="1f562.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd63" src="1f563.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd64" src="1f564.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd65" src="1f565.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd66" src="1f566.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd67" src="1f567.png"/>',fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddeb" src="1f1e6-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfd" src="1f1e6-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf1" src="1f1e6-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddff" src="1f1e9-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf8" src="1f1e6-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\udde9" src="1f1e6-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf4" src="1f1e6-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddee" src="1f1e6-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf6" src="1f1e6-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddec" src="1f1e6-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf7" src="1f1e6-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf2" src="1f1e6-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfc" src="1f1e6-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfa" src="1f1e6-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf9" src="1f1e6-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddff" src="1f1e6-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf8" src="1f1e7-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udded" src="1f1e7-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde9" src="1f1e7-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde7" src="1f1e7-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfe" src="1f1e7-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddea" src="1f1e7-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddff" src="1f1e7-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddef" src="1f1e7-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf2" src="1f1e7-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf9" src="1f1e7-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf4" src="1f1e7-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf6" src="1f1e7-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde6" src="1f1e7-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfc" src="1f1e7-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf7" src="1f1e7-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf4" src="1f1ee-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddec" src="1f1fb-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf3" src="1f1e7-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddec" src="1f1e7-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddeb" src="1f1e7-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddee" src="1f1e7-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfb" src="1f1e8-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\udded" src="1f1f0-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf2" src="1f1e8-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde6" src="1f1e8-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde8" src="1f1ee-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfe" src="1f1f0-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddeb" src="1f1e8-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde9" src="1f1f9-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf1" src="1f1e8-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf3" src="1f1e8-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfd" src="1f1e8-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde8" src="1f1e8-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf4" src="1f1e8-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf2" src="1f1f0-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddec" src="1f1e8-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde9" src="1f1e8-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf0" src="1f1e8-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf7" src="1f1e8-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf7" src="1f1ed-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfa" src="1f1e8-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfc" src="1f1e8-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfe" src="1f1e8-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddff" src="1f1e8-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf0" src="1f1e9-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddef" src="1f1e9-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf2" src="1f1e9-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf4" src="1f1e9-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udde8" src="1f1ea-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddec" src="1f1ea-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfb" src="1f1f8-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf6" src="1f1ec-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf7" src="1f1ea-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddea" src="1f1ea-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf9" src="1f1ea-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddfa" src="1f1ea-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf0" src="1f1eb-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf4" src="1f1eb-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddef" src="1f1eb-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddee" src="1f1eb-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf7" src="1f1eb-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddeb" src="1f1ec-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddeb" src="1f1f5-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddeb" src="1f1f9-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde6" src="1f1ec-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf2" src="1f1ec-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddea" src="1f1ec-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddea" src="1f1e9-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udded" src="1f1ec-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddee" src="1f1ec-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf7" src="1f1ec-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf1" src="1f1ec-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde9" src="1f1ec-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf5" src="1f1ec-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfa" src="1f1ec-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf9" src="1f1ec-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddec" src="1f1ec-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf3" src="1f1ec-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfc" src="1f1ec-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfe" src="1f1ec-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf9" src="1f1ed-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf3" src="1f1ed-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf0" src="1f1ed-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddfa" src="1f1ed-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf8" src="1f1ee-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf3" src="1f1ee-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde9" src="1f1ee-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf7" src="1f1ee-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf6" src="1f1ee-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddea" src="1f1ee-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf2" src="1f1ee-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf1" src="1f1ee-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf9" src="1f1ee-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddee" src="1f1e8-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf2" src="1f1ef-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf5" src="1f1ef-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddea" src="1f1ef-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf4" src="1f1ef-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddff" src="1f1f0-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddea" src="1f1f0-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddee" src="1f1f0-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfd\ud83c\uddf0" src="1f1fd-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfc" src="1f1f0-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddec" src="1f1f0-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde6" src="1f1f1-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfb" src="1f1f1-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde7" src="1f1f1-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf8" src="1f1f1-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf7" src="1f1f1-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfe" src="1f1f1-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddee" src="1f1f1-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf9" src="1f1f1-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfa" src="1f1f1-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf4" src="1f1f2-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf0" src="1f1f2-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddec" src="1f1f2-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfc" src="1f1f2-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfe" src="1f1f2-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfb" src="1f1f2-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf1" src="1f1f2-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf9" src="1f1f2-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udded" src="1f1f2-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf6" src="1f1f2-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf7" src="1f1f2-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfa" src="1f1f2-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddf9" src="1f1fe-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfd" src="1f1f2-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf2" src="1f1eb-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde9" src="1f1f2-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde8" src="1f1f2-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf3" src="1f1f2-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddea" src="1f1f2-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf8" src="1f1f2-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde6" src="1f1f2-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddff" src="1f1f2-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf2" src="1f1f2-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde6" src="1f1f3-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf7" src="1f1f3-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf5" src="1f1f3-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf1" src="1f1f3-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde8" src="1f1f3-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddff" src="1f1f3-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddee" src="1f1f3-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddea" src="1f1f3-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddec" src="1f1f3-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddfa" src="1f1f3-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddeb" src="1f1f3-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf5" src="1f1f2-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf5" src="1f1f0-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf4" src="1f1f3-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf4\ud83c\uddf2" src="1f1f4-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf0" src="1f1f5-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfc" src="1f1f5-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf8" src="1f1f5-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udde6" src="1f1f5-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddec" src="1f1f5-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfe" src="1f1f5-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddea" src="1f1f5-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udded" src="1f1f5-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf3" src="1f1f5-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf1" src="1f1f5-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf9" src="1f1f5-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf7" src="1f1f5-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf6\ud83c\udde6" src="1f1f6-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddea" src="1f1f7-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf4" src="1f1f7-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfa" src="1f1f7-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfc" src="1f1f7-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf1" src="1f1e7-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udded" src="1f1f8-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf3" src="1f1f0-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde8" src="1f1f1-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf2" src="1f1f5-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde8" src="1f1fb-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddf8" src="1f1fc-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf2" src="1f1f8-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf9" src="1f1f8-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde6" src="1f1f8-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf3" src="1f1f8-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf8" src="1f1f7-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde8" src="1f1f8-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf1" src="1f1f8-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddec" src="1f1f8-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfd" src="1f1f8-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf0" src="1f1f8-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddee" src="1f1f8-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde7" src="1f1f8-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf4" src="1f1f8-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\udde6" src="1f1ff-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf8" src="1f1ec-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf7" src="1f1f0-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf8" src="1f1f8-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf8" src="1f1ea-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf0" src="1f1f1-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde9" src="1f1f8-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf7" src="1f1f8-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddff" src="1f1f8-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddea" src="1f1f8-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udded" src="1f1e8-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfe" src="1f1f8-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfc" src="1f1f9-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddef" src="1f1f9-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddff" src="1f1f9-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udded" src="1f1f9-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf1" src="1f1f9-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddec" src="1f1f9-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf0" src="1f1f9-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf4" src="1f1f9-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf9" src="1f1f9-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf3" src="1f1f9-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf7" src="1f1f9-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf2" src="1f1f9-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde8" src="1f1f9-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfb" src="1f1f9-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddec" src="1f1fa-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\udde6" src="1f1fa-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddea" src="1f1e6-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde7" src="1f1ec-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f" src="1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f" src="1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f" src="1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf8" src="1f1fa-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddee" src="1f1fb-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddfe" src="1f1fa-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddff" src="1f1fa-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddfa" src="1f1fb-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde6" src="1f1fb-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddea" src="1f1fb-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddf3" src="1f1fb-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddeb" src="1f1fc-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udded" src="1f1ea-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddea" src="1f1fe-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddf2" src="1f1ff-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddfc" src="1f1ff-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf3" src="1f1fa-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\u200d\u2620\ufe0f" src="1f3f4-200d-2620-fe0f.png"/>',fitzpatrick_scale:!1,category:"flags"}});
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojis.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojis.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf7f472bfddc1bbdf06f6ef5dcf45c2895fc6f39
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojis.js
@@ -0,0 +1,9423 @@
+// Source: npm package: emojilib, file:emojis.json
+window.tinymce.Resource.add("tinymce.plugins.emoticons", {
+  grinning: {
+    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
+    char: "\ud83d\ude00",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  grimacing: {
+    keywords: [ "face", "grimace", "teeth" ],
+    char: "\ud83d\ude2c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  grin: {
+    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
+    char: "\ud83d\ude01",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  joy: {
+    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
+    char: "\ud83d\ude02",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rofl: {
+    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
+    char: "\ud83e\udd23",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  partying: {
+    keywords: [ "face", "celebration", "woohoo" ],
+    char: "\ud83e\udd73",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiley: {
+    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
+    char: "\ud83d\ude03",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smile: {
+    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
+    char: "\ud83d\ude04",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sweat_smile: {
+    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
+    char: "\ud83d\ude05",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  laughing: {
+    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
+    char: "\ud83d\ude06",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  innocent: {
+    keywords: [ "face", "angel", "heaven", "halo" ],
+    char: "\ud83d\ude07",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  wink: {
+    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
+    char: "\ud83d\ude09",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  blush: {
+    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
+    char: "\ud83d\ude0a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  slightly_smiling_face: {
+    keywords: [ "face", "smile" ],
+    char: "\ud83d\ude42",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  upside_down_face: {
+    keywords: [ "face", "flipped", "silly", "smile" ],
+    char: "\ud83d\ude43",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  relaxed: {
+    keywords: [ "face", "blush", "massage", "happiness" ],
+    char: "\u263a\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  yum: {
+    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
+    char: "\ud83d\ude0b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  relieved: {
+    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
+    char: "\ud83d\ude0c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  heart_eyes: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
+    char: "\ud83d\ude0d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiling_face_with_three_hearts: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ],
+    char: "\ud83e\udd70",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_heart: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
+    char: "\ud83d\ude18",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing: {
+    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
+    char: "\ud83d\ude17",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_smiling_eyes: {
+    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
+    char: "\ud83d\ude19",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_closed_eyes: {
+    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
+    char: "\ud83d\ude1a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue_winking_eye: {
+    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
+    char: "\ud83d\ude1c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zany: {
+    keywords: [ "face", "goofy", "crazy" ],
+    char: "\ud83e\udd2a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  raised_eyebrow: {
+    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
+    char: "\ud83e\udd28",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  monocle: {
+    keywords: [ "face", "stuffy", "wealthy" ],
+    char: "\ud83e\uddd0",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue_closed_eyes: {
+    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
+    char: "\ud83d\ude1d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  stuck_out_tongue: {
+    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
+    char: "\ud83d\ude1b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  money_mouth_face: {
+    keywords: [ "face", "rich", "dollar", "money" ],
+    char: "\ud83e\udd11",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  nerd_face: {
+    keywords: [ "face", "nerdy", "geek", "dork" ],
+    char: "\ud83e\udd13",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sunglasses: {
+    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
+    char: "\ud83d\ude0e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  star_struck: {
+    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
+    char: "\ud83e\udd29",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  clown_face: {
+    keywords: [ "face" ],
+    char: "\ud83e\udd21",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cowboy_hat_face: {
+    keywords: [ "face", "cowgirl", "hat" ],
+    char: "\ud83e\udd20",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hugs: {
+    keywords: [ "face", "smile", "hug" ],
+    char: "\ud83e\udd17",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smirk: {
+    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
+    char: "\ud83d\ude0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  no_mouth: {
+    keywords: [ "face", "hellokitty" ],
+    char: "\ud83d\ude36",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  neutral_face: {
+    keywords: [ "indifference", "meh", ":|", "neutral" ],
+    char: "\ud83d\ude10",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  expressionless: {
+    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
+    char: "\ud83d\ude11",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  unamused: {
+    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
+    char: "\ud83d\ude12",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  roll_eyes: {
+    keywords: [ "face", "eyeroll", "frustrated" ],
+    char: "\ud83d\ude44",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  thinking: {
+    keywords: [ "face", "hmmm", "think", "consider" ],
+    char: "\ud83e\udd14",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  lying_face: {
+    keywords: [ "face", "lie", "pinocchio" ],
+    char: "\ud83e\udd25",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hand_over_mouth: {
+    keywords: [ "face", "whoops", "shock", "surprise" ],
+    char: "\ud83e\udd2d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  shushing: {
+    keywords: [ "face", "quiet", "shhh" ],
+    char: "\ud83e\udd2b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  symbols_over_mouth: {
+    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
+    char: "\ud83e\udd2c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  exploding_head: {
+    keywords: [ "face", "shocked", "mind", "blown" ],
+    char: "\ud83e\udd2f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  flushed: {
+    keywords: [ "face", "blush", "shy", "flattered" ],
+    char: "\ud83d\ude33",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  disappointed: {
+    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
+    char: "\ud83d\ude1e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  worried: {
+    keywords: [ "face", "concern", "nervous", ":(" ],
+    char: "\ud83d\ude1f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  angry: {
+    keywords: [ "mad", "face", "annoyed", "frustrated" ],
+    char: "\ud83d\ude20",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rage: {
+    keywords: [ "angry", "mad", "hate", "despise" ],
+    char: "\ud83d\ude21",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pensive: {
+    keywords: [ "face", "sad", "depressed", "upset" ],
+    char: "\ud83d\ude14",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  confused: {
+    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
+    char: "\ud83d\ude15",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  slightly_frowning_face: {
+    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
+    char: "\ud83d\ude41",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  frowning_face: {
+    keywords: [ "face", "sad", "upset", "frown" ],
+    char: "\u2639",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  persevere: {
+    keywords: [ "face", "sick", "no", "upset", "oops" ],
+    char: "\ud83d\ude23",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  confounded: {
+    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
+    char: "\ud83d\ude16",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tired_face: {
+    keywords: [ "sick", "whine", "upset", "frustrated" ],
+    char: "\ud83d\ude2b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  weary: {
+    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
+    char: "\ud83d\ude29",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pleading: {
+    keywords: [ "face", "begging", "mercy" ],
+    char: "\ud83e\udd7a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  triumph: {
+    keywords: [ "face", "gas", "phew", "proud", "pride" ],
+    char: "\ud83d\ude24",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  open_mouth: {
+    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
+    char: "\ud83d\ude2e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scream: {
+    keywords: [ "face", "munch", "scared", "omg" ],
+    char: "\ud83d\ude31",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  fearful: {
+    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
+    char: "\ud83d\ude28",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cold_sweat: {
+    keywords: [ "face", "nervous", "sweat" ],
+    char: "\ud83d\ude30",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hushed: {
+    keywords: [ "face", "woo", "shh" ],
+    char: "\ud83d\ude2f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  frowning: {
+    keywords: [ "face", "aw", "what" ],
+    char: "\ud83d\ude26",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  anguished: {
+    keywords: [ "face", "stunned", "nervous" ],
+    char: "\ud83d\ude27",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cry: {
+    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
+    char: "\ud83d\ude22",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  disappointed_relieved: {
+    keywords: [ "face", "phew", "sweat", "nervous" ],
+    char: "\ud83d\ude25",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  drooling_face: {
+    keywords: [ "face" ],
+    char: "\ud83e\udd24",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sleepy: {
+    keywords: [ "face", "tired", "rest", "nap" ],
+    char: "\ud83d\ude2a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sweat: {
+    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
+    char: "\ud83d\ude13",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hot: {
+    keywords: [ "face", "feverish", "heat", "red", "sweating" ],
+    char: "\ud83e\udd75",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  cold: {
+    keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ],
+    char: "\ud83e\udd76",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sob: {
+    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
+    char: "\ud83d\ude2d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dizzy_face: {
+    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
+    char: "\ud83d\ude35",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  astonished: {
+    keywords: [ "face", "xox", "surprised", "poisoned" ],
+    char: "\ud83d\ude32",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zipper_mouth_face: {
+    keywords: [ "face", "sealed", "zipper", "secret" ],
+    char: "\ud83e\udd10",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  nauseated_face: {
+    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
+    char: "\ud83e\udd22",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sneezing_face: {
+    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
+    char: "\ud83e\udd27",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  vomiting: {
+    keywords: [ "face", "sick" ],
+    char: "\ud83e\udd2e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mask: {
+    keywords: [ "face", "sick", "ill", "disease" ],
+    char: "\ud83d\ude37",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  face_with_thermometer: {
+    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
+    char: "\ud83e\udd12",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  face_with_head_bandage: {
+    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
+    char: "\ud83e\udd15",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  woozy: {
+    keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ],
+    char: "\ud83e\udd74",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sleeping: {
+    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
+    char: "\ud83d\ude34",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  zzz: {
+    keywords: [ "sleepy", "tired", "dream" ],
+    char: "\ud83d\udca4",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  poop: {
+    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
+    char: "\ud83d\udca9",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiling_imp: {
+    keywords: [ "devil", "horns" ],
+    char: "\ud83d\ude08",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  imp: {
+    keywords: [ "devil", "angry", "horns" ],
+    char: "\ud83d\udc7f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  japanese_ogre: {
+    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
+    char: "\ud83d\udc79",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  japanese_goblin: {
+    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
+    char: "\ud83d\udc7a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  skull: {
+    keywords: [ "dead", "skeleton", "creepy", "death" ],
+    char: "\ud83d\udc80",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ghost: {
+    keywords: [ "halloween", "spooky", "scary" ],
+    char: "\ud83d\udc7b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  alien: {
+    keywords: [ "UFO", "paul", "weird", "outer_space" ],
+    char: "\ud83d\udc7d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  robot: {
+    keywords: [ "computer", "machine", "bot" ],
+    char: "\ud83e\udd16",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smiley_cat: {
+    keywords: [ "animal", "cats", "happy", "smile" ],
+    char: "\ud83d\ude3a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smile_cat: {
+    keywords: [ "animal", "cats", "smile" ],
+    char: "\ud83d\ude38",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  joy_cat: {
+    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
+    char: "\ud83d\ude39",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  heart_eyes_cat: {
+    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
+    char: "\ud83d\ude3b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  smirk_cat: {
+    keywords: [ "animal", "cats", "smirk" ],
+    char: "\ud83d\ude3c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kissing_cat: {
+    keywords: [ "animal", "cats", "kiss" ],
+    char: "\ud83d\ude3d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scream_cat: {
+    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
+    char: "\ud83d\ude40",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  crying_cat_face: {
+    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
+    char: "\ud83d\ude3f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pouting_cat: {
+    keywords: [ "animal", "cats" ],
+    char: "\ud83d\ude3e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  palms_up: {
+    keywords: [ "hands", "gesture", "cupped", "prayer" ],
+    char: "\ud83e\udd32",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hands: {
+    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
+    char: "\ud83d\ude4c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  clap: {
+    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
+    char: "\ud83d\udc4f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  wave: {
+    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
+    char: "\ud83d\udc4b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  call_me_hand: {
+    keywords: [ "hands", "gesture" ],
+    char: "\ud83e\udd19",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  "+1": {
+    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
+    char: "\ud83d\udc4d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  "-1": {
+    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
+    char: "\ud83d\udc4e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  facepunch: {
+    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
+    char: "\ud83d\udc4a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist: {
+    keywords: [ "fingers", "hand", "grasp" ],
+    char: "\u270a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist_left: {
+    keywords: [ "hand", "fistbump" ],
+    char: "\ud83e\udd1b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fist_right: {
+    keywords: [ "hand", "fistbump" ],
+    char: "\ud83e\udd1c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  v: {
+    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
+    char: "\u270c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_hand: {
+    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
+    char: "\ud83d\udc4c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hand: {
+    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
+    char: "\u270b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_back_of_hand: {
+    keywords: [ "fingers", "raised", "backhand" ],
+    char: "\ud83e\udd1a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  open_hands: {
+    keywords: [ "fingers", "butterfly", "hands", "open" ],
+    char: "\ud83d\udc50",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  muscle: {
+    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
+    char: "\ud83d\udcaa",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pray: {
+    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
+    char: "\ud83d\ude4f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  foot: {
+    keywords: [ "kick", "stomp" ],
+    char: "\ud83e\uddb6",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  leg: {
+    keywords: [ "kick", "limb" ],
+    char: "\ud83e\uddb5",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  handshake: {
+    keywords: [ "agreement", "shake" ],
+    char: "\ud83e\udd1d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  point_up: {
+    keywords: [ "hand", "fingers", "direction", "up" ],
+    char: "\u261d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_up_2: {
+    keywords: [ "fingers", "hand", "direction", "up" ],
+    char: "\ud83d\udc46",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_down: {
+    keywords: [ "fingers", "hand", "direction", "down" ],
+    char: "\ud83d\udc47",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_left: {
+    keywords: [ "direction", "fingers", "hand", "left" ],
+    char: "\ud83d\udc48",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  point_right: {
+    keywords: [ "fingers", "hand", "direction", "right" ],
+    char: "\ud83d\udc49",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  fu: {
+    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
+    char: "\ud83d\udd95",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raised_hand_with_fingers_splayed: {
+    keywords: [ "hand", "fingers", "palm" ],
+    char: "\ud83d\udd90",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  love_you: {
+    keywords: [ "hand", "fingers", "gesture" ],
+    char: "\ud83e\udd1f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  metal: {
+    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
+    char: "\ud83e\udd18",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  crossed_fingers: {
+    keywords: [ "good", "lucky" ],
+    char: "\ud83e\udd1e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  vulcan_salute: {
+    keywords: [ "hand", "fingers", "spock", "star trek" ],
+    char: "\ud83d\udd96",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  writing_hand: {
+    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
+    char: "\u270d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  selfie: {
+    keywords: [ "camera", "phone" ],
+    char: "\ud83e\udd33",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  nail_care: {
+    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
+    char: "\ud83d\udc85",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  lips: {
+    keywords: [ "mouth", "kiss" ],
+    char: "\ud83d\udc44",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tooth: {
+    keywords: [ "teeth", "dentist" ],
+    char: "\ud83e\uddb7",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tongue: {
+    keywords: [ "mouth", "playful" ],
+    char: "\ud83d\udc45",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ear: {
+    keywords: [ "face", "hear", "sound", "listen" ],
+    char: "\ud83d\udc42",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  nose: {
+    keywords: [ "smell", "sniff" ],
+    char: "\ud83d\udc43",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  eye: {
+    keywords: [ "face", "look", "see", "watch", "stare" ],
+    char: "\ud83d\udc41",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  eyes: {
+    keywords: [ "look", "watch", "stalk", "peek", "see" ],
+    char: "\ud83d\udc40",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  brain: {
+    keywords: [ "smart", "intelligent" ],
+    char: "\ud83e\udde0",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bust_in_silhouette: {
+    keywords: [ "user", "person", "human" ],
+    char: "\ud83d\udc64",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  busts_in_silhouette: {
+    keywords: [ "user", "person", "human", "group", "team" ],
+    char: "\ud83d\udc65",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  speaking_head: {
+    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
+    char: "\ud83d\udde3",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  baby: {
+    keywords: [ "child", "boy", "girl", "toddler" ],
+    char: "\ud83d\udc76",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  child: {
+    keywords: [ "gender-neutral", "young" ],
+    char: "\ud83e\uddd2",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  boy: {
+    keywords: [ "man", "male", "guy", "teenager" ],
+    char: "\ud83d\udc66",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  girl: {
+    keywords: [ "female", "woman", "teenager" ],
+    char: "\ud83d\udc67",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  adult: {
+    keywords: [ "gender-neutral", "person" ],
+    char: "\ud83e\uddd1",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man: {
+    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
+    char: "\ud83d\udc68",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman: {
+    keywords: [ "female", "girls", "lady" ],
+    char: "\ud83d\udc69",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  blonde_woman: {
+    keywords: [ "woman", "female", "girl", "blonde", "person" ],
+    char: "\ud83d\udc71\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  blonde_man: {
+    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
+    char: "\ud83d\udc71",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bearded_person: {
+    keywords: [ "person", "bewhiskered" ],
+    char: "\ud83e\uddd4",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_adult: {
+    keywords: [ "human", "elder", "senior", "gender-neutral" ],
+    char: "\ud83e\uddd3",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_man: {
+    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
+    char: "\ud83d\udc74",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  older_woman: {
+    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
+    char: "\ud83d\udc75",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_with_gua_pi_mao: {
+    keywords: [ "male", "boy", "chinese" ],
+    char: "\ud83d\udc72",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_with_headscarf: {
+    keywords: [ "female", "hijab", "mantilla", "tichel" ],
+    char: "\ud83e\uddd5",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_with_turban: {
+    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
+    char: "\ud83d\udc73\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_with_turban: {
+    keywords: [ "male", "indian", "hinduism", "arabs" ],
+    char: "\ud83d\udc73",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  policewoman: {
+    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
+    char: "\ud83d\udc6e\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  policeman: {
+    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
+    char: "\ud83d\udc6e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  construction_worker_woman: {
+    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
+    char: "\ud83d\udc77\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  construction_worker_man: {
+    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
+    char: "\ud83d\udc77",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  guardswoman: {
+    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
+    char: "\ud83d\udc82\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  guardsman: {
+    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
+    char: "\ud83d\udc82",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  female_detective: {
+    keywords: [ "human", "spy", "detective", "female", "woman" ],
+    char: "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  male_detective: {
+    keywords: [ "human", "spy", "detective" ],
+    char: "\ud83d\udd75",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_health_worker: {
+    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\u2695\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_health_worker: {
+    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
+    char: "\ud83d\udc68\u200d\u2695\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_farmer: {
+    keywords: [ "rancher", "gardener", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udf3e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_farmer: {
+    keywords: [ "rancher", "gardener", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udf3e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_cook: {
+    keywords: [ "chef", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udf73",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_cook: {
+    keywords: [ "chef", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udf73",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_student: {
+    keywords: [ "graduate", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udf93",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_student: {
+    keywords: [ "graduate", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udf93",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_singer: {
+    keywords: [ "rockstar", "entertainer", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udfa4",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_singer: {
+    keywords: [ "rockstar", "entertainer", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udfa4",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_teacher: {
+    keywords: [ "instructor", "professor", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udfeb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_teacher: {
+    keywords: [ "instructor", "professor", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udfeb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_factory_worker: {
+    keywords: [ "assembly", "industrial", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udfed",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_factory_worker: {
+    keywords: [ "assembly", "industrial", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udfed",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_technologist: {
+    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
+    char: "\ud83d\udc69\u200d\ud83d\udcbb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_technologist: {
+    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
+    char: "\ud83d\udc68\u200d\ud83d\udcbb",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_office_worker: {
+    keywords: [ "business", "manager", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83d\udcbc",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_office_worker: {
+    keywords: [ "business", "manager", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83d\udcbc",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_mechanic: {
+    keywords: [ "plumber", "woman", "human", "wrench" ],
+    char: "\ud83d\udc69\u200d\ud83d\udd27",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_mechanic: {
+    keywords: [ "plumber", "man", "human", "wrench" ],
+    char: "\ud83d\udc68\u200d\ud83d\udd27",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_scientist: {
+    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83d\udd2c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_scientist: {
+    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83d\udd2c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_artist: {
+    keywords: [ "painter", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83c\udfa8",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_artist: {
+    keywords: [ "painter", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83c\udfa8",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_firefighter: {
+    keywords: [ "fireman", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83d\ude92",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_firefighter: {
+    keywords: [ "fireman", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83d\ude92",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_pilot: {
+    keywords: [ "aviator", "plane", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\u2708\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_pilot: {
+    keywords: [ "aviator", "plane", "man", "human" ],
+    char: "\ud83d\udc68\u200d\u2708\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_astronaut: {
+    keywords: [ "space", "rocket", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\ud83d\ude80",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_astronaut: {
+    keywords: [ "space", "rocket", "man", "human" ],
+    char: "\ud83d\udc68\u200d\ud83d\ude80",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_judge: {
+    keywords: [ "justice", "court", "woman", "human" ],
+    char: "\ud83d\udc69\u200d\u2696\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_judge: {
+    keywords: [ "justice", "court", "man", "human" ],
+    char: "\ud83d\udc68\u200d\u2696\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_superhero: {
+    keywords: [ "woman", "female", "good", "heroine", "superpowers" ],
+    char: "\ud83e\uddb8\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_superhero: {
+    keywords: [ "man", "male", "good", "hero", "superpowers" ],
+    char: "\ud83e\uddb8\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_supervillain: {
+    keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ],
+    char: "\ud83e\uddb9\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_supervillain: {
+    keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ],
+    char: "\ud83e\uddb9\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  mrs_claus: {
+    keywords: [ "woman", "female", "xmas", "mother christmas" ],
+    char: "\ud83e\udd36",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  santa: {
+    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
+    char: "\ud83c\udf85",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  sorceress: {
+    keywords: [ "woman", "female", "mage", "witch" ],
+    char: "\ud83e\uddd9\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  wizard: {
+    keywords: [ "man", "male", "mage", "sorcerer" ],
+    char: "\ud83e\uddd9\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_elf: {
+    keywords: [ "woman", "female" ],
+    char: "\ud83e\udddd\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_elf: {
+    keywords: [ "man", "male" ],
+    char: "\ud83e\udddd\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_vampire: {
+    keywords: [ "woman", "female" ],
+    char: "\ud83e\udddb\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_vampire: {
+    keywords: [ "man", "male", "dracula" ],
+    char: "\ud83e\udddb\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_zombie: {
+    keywords: [ "woman", "female", "undead", "walking dead" ],
+    char: "\ud83e\udddf\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  man_zombie: {
+    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
+    char: "\ud83e\udddf\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  woman_genie: {
+    keywords: [ "woman", "female" ],
+    char: "\ud83e\uddde\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  man_genie: {
+    keywords: [ "man", "male" ],
+    char: "\ud83e\uddde\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mermaid: {
+    keywords: [ "woman", "female", "merwoman", "ariel" ],
+    char: "\ud83e\udddc\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  merman: {
+    keywords: [ "man", "male", "triton" ],
+    char: "\ud83e\udddc\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_fairy: {
+    keywords: [ "woman", "female" ],
+    char: "\ud83e\uddda\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_fairy: {
+    keywords: [ "man", "male" ],
+    char: "\ud83e\uddda\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  angel: {
+    keywords: [ "heaven", "wings", "halo" ],
+    char: "\ud83d\udc7c",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pregnant_woman: {
+    keywords: [ "baby" ],
+    char: "\ud83e\udd30",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  breastfeeding: {
+    keywords: [ "nursing", "baby" ],
+    char: "\ud83e\udd31",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  princess: {
+    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
+    char: "\ud83d\udc78",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  prince: {
+    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
+    char: "\ud83e\udd34",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bride_with_veil: {
+    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
+    char: "\ud83d\udc70",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_in_tuxedo: {
+    keywords: [ "couple", "marriage", "wedding", "groom" ],
+    char: "\ud83e\udd35",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  running_woman: {
+    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
+    char: "\ud83c\udfc3\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  running_man: {
+    keywords: [ "man", "walking", "exercise", "race", "running" ],
+    char: "\ud83c\udfc3",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  walking_woman: {
+    keywords: [ "human", "feet", "steps", "woman", "female" ],
+    char: "\ud83d\udeb6\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  walking_man: {
+    keywords: [ "human", "feet", "steps" ],
+    char: "\ud83d\udeb6",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  dancer: {
+    keywords: [ "female", "girl", "woman", "fun" ],
+    char: "\ud83d\udc83",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_dancing: {
+    keywords: [ "male", "boy", "fun", "dancer" ],
+    char: "\ud83d\udd7a",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  dancing_women: {
+    keywords: [ "female", "bunny", "women", "girls" ],
+    char: "\ud83d\udc6f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dancing_men: {
+    keywords: [ "male", "bunny", "men", "boys" ],
+    char: "\ud83d\udc6f\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple: {
+    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
+    char: "\ud83d\udc6b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  two_men_holding_hands: {
+    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
+    char: "\ud83d\udc6c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  two_women_holding_hands: {
+    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
+    char: "\ud83d\udc6d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bowing_woman: {
+    keywords: [ "woman", "female", "girl" ],
+    char: "\ud83d\ude47\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  bowing_man: {
+    keywords: [ "man", "male", "boy" ],
+    char: "\ud83d\ude47",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_facepalming: {
+    keywords: [ "man", "male", "boy", "disbelief" ],
+    char: "\ud83e\udd26\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_facepalming: {
+    keywords: [ "woman", "female", "girl", "disbelief" ],
+    char: "\ud83e\udd26\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_shrugging: {
+    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
+    char: "\ud83e\udd37",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_shrugging: {
+    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
+    char: "\ud83e\udd37\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  tipping_hand_woman: {
+    keywords: [ "female", "girl", "woman", "human", "information" ],
+    char: "\ud83d\udc81",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  tipping_hand_man: {
+    keywords: [ "male", "boy", "man", "human", "information" ],
+    char: "\ud83d\udc81\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  no_good_woman: {
+    keywords: [ "female", "girl", "woman", "nope" ],
+    char: "\ud83d\ude45",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  no_good_man: {
+    keywords: [ "male", "boy", "man", "nope" ],
+    char: "\ud83d\ude45\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_woman: {
+    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
+    char: "\ud83d\ude46",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  ok_man: {
+    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
+    char: "\ud83d\ude46\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raising_hand_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    char: "\ud83d\ude4b",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  raising_hand_man: {
+    keywords: [ "male", "boy", "man" ],
+    char: "\ud83d\ude4b\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pouting_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    char: "\ud83d\ude4e",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  pouting_man: {
+    keywords: [ "male", "boy", "man" ],
+    char: "\ud83d\ude4e\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  frowning_woman: {
+    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
+    char: "\ud83d\ude4d",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  frowning_man: {
+    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
+    char: "\ud83d\ude4d\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  haircut_woman: {
+    keywords: [ "female", "girl", "woman" ],
+    char: "\ud83d\udc87",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  haircut_man: {
+    keywords: [ "male", "boy", "man" ],
+    char: "\ud83d\udc87\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  massage_woman: {
+    keywords: [ "female", "girl", "woman", "head" ],
+    char: "\ud83d\udc86",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  massage_man: {
+    keywords: [ "male", "boy", "man", "head" ],
+    char: "\ud83d\udc86\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  woman_in_steamy_room: {
+    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
+    char: "\ud83e\uddd6\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  man_in_steamy_room: {
+    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
+    char: "\ud83e\uddd6\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "people"
+  },
+  couple_with_heart_woman_man: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    char: "\ud83d\udc91",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple_with_heart_woman_woman: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    char: "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couple_with_heart_man_man: {
+    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
+    char: "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_man_woman: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    char: "\ud83d\udc8f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_woman_woman: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    char: "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  couplekiss_man_man: {
+    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
+    char: "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_boy: {
+    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
+    char: "\ud83d\udc6a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl: {
+    keywords: [ "home", "parents", "people", "human", "child" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_woman_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_woman_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_boy_boy: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_man_girl_girl: {
+    keywords: [ "home", "parents", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_boy: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_boy_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_woman_girl_girl: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_boy: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl: {
+    keywords: [ "home", "parent", "people", "human", "child" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_boy_boy: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  family_man_girl_girl: {
+    keywords: [ "home", "parent", "people", "human", "children" ],
+    char: "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  yarn: {
+    keywords: [ "ball", "crochet", "knit" ],
+    char: "\ud83e\uddf6",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  thread: {
+    keywords: [ "needle", "sewing", "spool", "string" ],
+    char: "\ud83e\uddf5",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  coat: {
+    keywords: [ "jacket" ],
+    char: "\ud83e\udde5",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  labcoat: {
+    keywords: [ "doctor", "experiment", "scientist", "chemist" ],
+    char: "\ud83e\udd7c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  womans_clothes: {
+    keywords: [ "fashion", "shopping_bags", "female" ],
+    char: "\ud83d\udc5a",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tshirt: {
+    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
+    char: "\ud83d\udc55",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  jeans: {
+    keywords: [ "fashion", "shopping" ],
+    char: "\ud83d\udc56",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  necktie: {
+    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
+    char: "\ud83d\udc54",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dress: {
+    keywords: [ "clothes", "fashion", "shopping" ],
+    char: "\ud83d\udc57",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  bikini: {
+    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
+    char: "\ud83d\udc59",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kimono: {
+    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
+    char: "\ud83d\udc58",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  lipstick: {
+    keywords: [ "female", "girl", "fashion", "woman" ],
+    char: "\ud83d\udc84",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  kiss: {
+    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc8b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  footprints: {
+    keywords: [ "feet", "tracking", "walking", "beach" ],
+    char: "\ud83d\udc63",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  flat_shoe: {
+    keywords: [ "ballet", "slip-on", "slipper" ],
+    char: "\ud83e\udd7f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  high_heel: {
+    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
+    char: "\ud83d\udc60",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  sandal: {
+    keywords: [ "shoes", "fashion", "flip flops" ],
+    char: "\ud83d\udc61",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  boot: {
+    keywords: [ "shoes", "fashion" ],
+    char: "\ud83d\udc62",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mans_shoe: {
+    keywords: [ "fashion", "male" ],
+    char: "\ud83d\udc5e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  athletic_shoe: {
+    keywords: [ "shoes", "sports", "sneakers" ],
+    char: "\ud83d\udc5f",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  hiking_boot: {
+    keywords: [ "backpacking", "camping", "hiking" ],
+    char: "\ud83e\udd7e",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  socks: {
+    keywords: [ "stockings", "clothes" ],
+    char: "\ud83e\udde6",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  gloves: {
+    keywords: [ "hands", "winter", "clothes" ],
+    char: "\ud83e\udde4",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  scarf: {
+    keywords: [ "neck", "winter", "clothes" ],
+    char: "\ud83e\udde3",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  womans_hat: {
+    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
+    char: "\ud83d\udc52",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  tophat: {
+    keywords: [ "magic", "gentleman", "classy", "circus" ],
+    char: "\ud83c\udfa9",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  billed_hat: {
+    keywords: [ "cap", "baseball" ],
+    char: "\ud83e\udde2",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  rescue_worker_helmet: {
+    keywords: [ "construction", "build" ],
+    char: "\u26d1",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  mortar_board: {
+    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
+    char: "\ud83c\udf93",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  crown: {
+    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
+    char: "\ud83d\udc51",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  school_satchel: {
+    keywords: [ "student", "education", "bag", "backpack" ],
+    char: "\ud83c\udf92",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  luggage: {
+    keywords: [ "packing", "travel" ],
+    char: "\ud83e\uddf3",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  pouch: {
+    keywords: [ "bag", "accessories", "shopping" ],
+    char: "\ud83d\udc5d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  purse: {
+    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
+    char: "\ud83d\udc5b",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  handbag: {
+    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
+    char: "\ud83d\udc5c",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  briefcase: {
+    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
+    char: "\ud83d\udcbc",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  eyeglasses: {
+    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
+    char: "\ud83d\udc53",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dark_sunglasses: {
+    keywords: [ "face", "cool", "accessories" ],
+    char: "\ud83d\udd76",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  goggles: {
+    keywords: [ "eyes", "protection", "safety" ],
+    char: "\ud83e\udd7d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  ring: {
+    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
+    char: "\ud83d\udc8d",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  closed_umbrella: {
+    keywords: [ "weather", "rain", "drizzle" ],
+    char: "\ud83c\udf02",
+    fitzpatrick_scale: false,
+    category: "people"
+  },
+  dog: {
+    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
+    char: "\ud83d\udc36",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cat: {
+    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
+    char: "\ud83d\udc31",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mouse: {
+    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
+    char: "\ud83d\udc2d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hamster: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc39",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rabbit: {
+    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
+    char: "\ud83d\udc30",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fox_face: {
+    keywords: [ "animal", "nature", "face" ],
+    char: "\ud83e\udd8a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bear: {
+    keywords: [ "animal", "nature", "wild" ],
+    char: "\ud83d\udc3b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  panda_face: {
+    keywords: [ "animal", "nature", "panda" ],
+    char: "\ud83d\udc3c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  koala: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc28",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tiger: {
+    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
+    char: "\ud83d\udc2f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lion: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83e\udd81",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cow: {
+    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
+    char: "\ud83d\udc2e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig: {
+    keywords: [ "animal", "oink", "nature" ],
+    char: "\ud83d\udc37",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig_nose: {
+    keywords: [ "animal", "oink" ],
+    char: "\ud83d\udc3d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  frog: {
+    keywords: [ "animal", "nature", "croak", "toad" ],
+    char: "\ud83d\udc38",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  squid: {
+    keywords: [ "animal", "nature", "ocean", "sea" ],
+    char: "\ud83e\udd91",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  octopus: {
+    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
+    char: "\ud83d\udc19",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shrimp: {
+    keywords: [ "animal", "ocean", "nature", "seafood" ],
+    char: "\ud83e\udd90",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  monkey_face: {
+    keywords: [ "animal", "nature", "circus" ],
+    char: "\ud83d\udc35",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  gorilla: {
+    keywords: [ "animal", "nature", "circus" ],
+    char: "\ud83e\udd8d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  see_no_evil: {
+    keywords: [ "monkey", "animal", "nature", "haha" ],
+    char: "\ud83d\ude48",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hear_no_evil: {
+    keywords: [ "animal", "monkey", "nature" ],
+    char: "\ud83d\ude49",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  speak_no_evil: {
+    keywords: [ "monkey", "animal", "nature", "omg" ],
+    char: "\ud83d\ude4a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  monkey: {
+    keywords: [ "animal", "nature", "banana", "circus" ],
+    char: "\ud83d\udc12",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chicken: {
+    keywords: [ "animal", "cluck", "nature", "bird" ],
+    char: "\ud83d\udc14",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  penguin: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc27",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bird: {
+    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
+    char: "\ud83d\udc26",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  baby_chick: {
+    keywords: [ "animal", "chicken", "bird" ],
+    char: "\ud83d\udc24",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hatching_chick: {
+    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
+    char: "\ud83d\udc23",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hatched_chick: {
+    keywords: [ "animal", "chicken", "baby", "bird" ],
+    char: "\ud83d\udc25",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  duck: {
+    keywords: [ "animal", "nature", "bird", "mallard" ],
+    char: "\ud83e\udd86",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  eagle: {
+    keywords: [ "animal", "nature", "bird" ],
+    char: "\ud83e\udd85",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  owl: {
+    keywords: [ "animal", "nature", "bird", "hoot" ],
+    char: "\ud83e\udd89",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bat: {
+    keywords: [ "animal", "nature", "blind", "vampire" ],
+    char: "\ud83e\udd87",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wolf: {
+    keywords: [ "animal", "nature", "wild" ],
+    char: "\ud83d\udc3a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  boar: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc17",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  horse: {
+    keywords: [ "animal", "brown", "nature" ],
+    char: "\ud83d\udc34",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  unicorn: {
+    keywords: [ "animal", "nature", "mystical" ],
+    char: "\ud83e\udd84",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  honeybee: {
+    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
+    char: "\ud83d\udc1d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bug: {
+    keywords: [ "animal", "insect", "nature", "worm" ],
+    char: "\ud83d\udc1b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  butterfly: {
+    keywords: [ "animal", "insect", "nature", "caterpillar" ],
+    char: "\ud83e\udd8b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snail: {
+    keywords: [ "slow", "animal", "shell" ],
+    char: "\ud83d\udc0c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  beetle: {
+    keywords: [ "animal", "insect", "nature", "ladybug" ],
+    char: "\ud83d\udc1e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ant: {
+    keywords: [ "animal", "insect", "nature", "bug" ],
+    char: "\ud83d\udc1c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  grasshopper: {
+    keywords: [ "animal", "cricket", "chirp" ],
+    char: "\ud83e\udd97",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  spider: {
+    keywords: [ "animal", "arachnid" ],
+    char: "\ud83d\udd77",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  scorpion: {
+    keywords: [ "animal", "arachnid" ],
+    char: "\ud83e\udd82",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crab: {
+    keywords: [ "animal", "crustacean" ],
+    char: "\ud83e\udd80",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snake: {
+    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
+    char: "\ud83d\udc0d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lizard: {
+    keywords: [ "animal", "nature", "reptile" ],
+    char: "\ud83e\udd8e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  "t-rex": {
+    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
+    char: "\ud83e\udd96",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sauropod: {
+    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
+    char: "\ud83e\udd95",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  turtle: {
+    keywords: [ "animal", "slow", "nature", "tortoise" ],
+    char: "\ud83d\udc22",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tropical_fish: {
+    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
+    char: "\ud83d\udc20",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fish: {
+    keywords: [ "animal", "food", "nature" ],
+    char: "\ud83d\udc1f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  blowfish: {
+    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
+    char: "\ud83d\udc21",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dolphin: {
+    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
+    char: "\ud83d\udc2c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shark: {
+    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
+    char: "\ud83e\udd88",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  whale: {
+    keywords: [ "animal", "nature", "sea", "ocean" ],
+    char: "\ud83d\udc33",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  whale2: {
+    keywords: [ "animal", "nature", "sea", "ocean" ],
+    char: "\ud83d\udc0b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crocodile: {
+    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
+    char: "\ud83d\udc0a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  leopard: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc06",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  zebra: {
+    keywords: [ "animal", "nature", "stripes", "safari" ],
+    char: "\ud83e\udd93",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tiger2: {
+    keywords: [ "animal", "nature", "roar" ],
+    char: "\ud83d\udc05",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  water_buffalo: {
+    keywords: [ "animal", "nature", "ox", "cow" ],
+    char: "\ud83d\udc03",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ox: {
+    keywords: [ "animal", "cow", "beef" ],
+    char: "\ud83d\udc02",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cow2: {
+    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
+    char: "\ud83d\udc04",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  deer: {
+    keywords: [ "animal", "nature", "horns", "venison" ],
+    char: "\ud83e\udd8c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dromedary_camel: {
+    keywords: [ "animal", "hot", "desert", "hump" ],
+    char: "\ud83d\udc2a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  camel: {
+    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
+    char: "\ud83d\udc2b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  giraffe: {
+    keywords: [ "animal", "nature", "spots", "safari" ],
+    char: "\ud83e\udd92",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  elephant: {
+    keywords: [ "animal", "nature", "nose", "th", "circus" ],
+    char: "\ud83d\udc18",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rhinoceros: {
+    keywords: [ "animal", "nature", "horn" ],
+    char: "\ud83e\udd8f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  goat: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc10",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ram: {
+    keywords: [ "animal", "sheep", "nature" ],
+    char: "\ud83d\udc0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sheep: {
+    keywords: [ "animal", "nature", "wool", "shipit" ],
+    char: "\ud83d\udc11",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  racehorse: {
+    keywords: [ "animal", "gamble", "luck" ],
+    char: "\ud83d\udc0e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  pig2: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83d\udc16",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rat: {
+    keywords: [ "animal", "mouse", "rodent" ],
+    char: "\ud83d\udc00",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mouse2: {
+    keywords: [ "animal", "nature", "rodent" ],
+    char: "\ud83d\udc01",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rooster: {
+    keywords: [ "animal", "nature", "chicken" ],
+    char: "\ud83d\udc13",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  turkey: {
+    keywords: [ "animal", "bird" ],
+    char: "\ud83e\udd83",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dove: {
+    keywords: [ "animal", "bird" ],
+    char: "\ud83d\udd4a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dog2: {
+    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
+    char: "\ud83d\udc15",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  poodle: {
+    keywords: [ "dog", "animal", "101", "nature", "pet" ],
+    char: "\ud83d\udc29",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cat2: {
+    keywords: [ "animal", "meow", "pet", "cats" ],
+    char: "\ud83d\udc08",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rabbit2: {
+    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
+    char: "\ud83d\udc07",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chipmunk: {
+    keywords: [ "animal", "nature", "rodent", "squirrel" ],
+    char: "\ud83d\udc3f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hedgehog: {
+    keywords: [ "animal", "nature", "spiny" ],
+    char: "\ud83e\udd94",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  raccoon: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83e\udd9d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  llama: {
+    keywords: [ "animal", "nature", "alpaca" ],
+    char: "\ud83e\udd99",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hippopotamus: {
+    keywords: [ "animal", "nature" ],
+    char: "\ud83e\udd9b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  kangaroo: {
+    keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ],
+    char: "\ud83e\udd98",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  badger: {
+    keywords: [ "animal", "nature", "honey" ],
+    char: "\ud83e\udda1",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  swan: {
+    keywords: [ "animal", "nature", "bird" ],
+    char: "\ud83e\udda2",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  peacock: {
+    keywords: [ "animal", "nature", "peahen", "bird" ],
+    char: "\ud83e\udd9a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  parrot: {
+    keywords: [ "animal", "nature", "bird", "pirate", "talk" ],
+    char: "\ud83e\udd9c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  lobster: {
+    keywords: [ "animal", "nature", "bisque", "claws", "seafood" ],
+    char: "\ud83e\udd9e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mosquito: {
+    keywords: [ "animal", "nature", "insect", "malaria" ],
+    char: "\ud83e\udd9f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  paw_prints: {
+    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
+    char: "\ud83d\udc3e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dragon: {
+    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
+    char: "\ud83d\udc09",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dragon_face: {
+    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
+    char: "\ud83d\udc32",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cactus: {
+    keywords: [ "vegetable", "plant", "nature" ],
+    char: "\ud83c\udf35",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  christmas_tree: {
+    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
+    char: "\ud83c\udf84",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  evergreen_tree: {
+    keywords: [ "plant", "nature" ],
+    char: "\ud83c\udf32",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  deciduous_tree: {
+    keywords: [ "plant", "nature" ],
+    char: "\ud83c\udf33",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  palm_tree: {
+    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
+    char: "\ud83c\udf34",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  seedling: {
+    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
+    char: "\ud83c\udf31",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  herb: {
+    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
+    char: "\ud83c\udf3f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shamrock: {
+    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
+    char: "\u2618",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  four_leaf_clover: {
+    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
+    char: "\ud83c\udf40",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bamboo: {
+    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
+    char: "\ud83c\udf8d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tanabata_tree: {
+    keywords: [ "plant", "nature", "branch", "summer" ],
+    char: "\ud83c\udf8b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  leaves: {
+    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
+    char: "\ud83c\udf43",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fallen_leaf: {
+    keywords: [ "nature", "plant", "vegetable", "leaves" ],
+    char: "\ud83c\udf42",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  maple_leaf: {
+    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
+    char: "\ud83c\udf41",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ear_of_rice: {
+    keywords: [ "nature", "plant" ],
+    char: "\ud83c\udf3e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  hibiscus: {
+    keywords: [ "plant", "vegetable", "flowers", "beach" ],
+    char: "\ud83c\udf3a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sunflower: {
+    keywords: [ "nature", "plant", "fall" ],
+    char: "\ud83c\udf3b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  rose: {
+    keywords: [ "flowers", "valentines", "love", "spring" ],
+    char: "\ud83c\udf39",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wilted_flower: {
+    keywords: [ "plant", "nature", "flower" ],
+    char: "\ud83e\udd40",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tulip: {
+    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
+    char: "\ud83c\udf37",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  blossom: {
+    keywords: [ "nature", "flowers", "yellow" ],
+    char: "\ud83c\udf3c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cherry_blossom: {
+    keywords: [ "nature", "plant", "spring", "flower" ],
+    char: "\ud83c\udf38",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  bouquet: {
+    keywords: [ "flowers", "nature", "spring" ],
+    char: "\ud83d\udc90",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  mushroom: {
+    keywords: [ "plant", "vegetable" ],
+    char: "\ud83c\udf44",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  chestnut: {
+    keywords: [ "food", "squirrel" ],
+    char: "\ud83c\udf30",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  jack_o_lantern: {
+    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
+    char: "\ud83c\udf83",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  shell: {
+    keywords: [ "nature", "sea", "beach" ],
+    char: "\ud83d\udc1a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  spider_web: {
+    keywords: [ "animal", "insect", "arachnid", "silk" ],
+    char: "\ud83d\udd78",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_americas: {
+    keywords: [ "globe", "world", "USA", "international" ],
+    char: "\ud83c\udf0e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_africa: {
+    keywords: [ "globe", "world", "international" ],
+    char: "\ud83c\udf0d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  earth_asia: {
+    keywords: [ "globe", "world", "east", "international" ],
+    char: "\ud83c\udf0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  full_moon: {
+    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf15",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waning_gibbous_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
+    char: "\ud83c\udf16",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  last_quarter_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf17",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waning_crescent_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf18",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  new_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf11",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waxing_crescent_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf12",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  first_quarter_moon: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf13",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  waxing_gibbous_moon: {
+    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
+    char: "\ud83c\udf14",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  new_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf1a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  full_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf1d",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  first_quarter_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf1b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  last_quarter_moon_with_face: {
+    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
+    char: "\ud83c\udf1c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_with_face: {
+    keywords: [ "nature", "morning", "sky" ],
+    char: "\ud83c\udf1e",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  crescent_moon: {
+    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
+    char: "\ud83c\udf19",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  star: {
+    keywords: [ "night", "yellow" ],
+    char: "\u2b50",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  star2: {
+    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
+    char: "\ud83c\udf1f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dizzy: {
+    keywords: [ "star", "sparkle", "shoot", "magic" ],
+    char: "\ud83d\udcab",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sparkles: {
+    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
+    char: "\u2728",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  comet: {
+    keywords: [ "space" ],
+    char: "\u2604",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sunny: {
+    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
+    char: "\u2600\ufe0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_small_cloud: {
+    keywords: [ "weather" ],
+    char: "\ud83c\udf24",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  partly_sunny: {
+    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
+    char: "\u26c5",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_large_cloud: {
+    keywords: [ "weather" ],
+    char: "\ud83c\udf25",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sun_behind_rain_cloud: {
+    keywords: [ "weather" ],
+    char: "\ud83c\udf26",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud: {
+    keywords: [ "weather", "sky" ],
+    char: "\u2601\ufe0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_rain: {
+    keywords: [ "weather" ],
+    char: "\ud83c\udf27",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_lightning_and_rain: {
+    keywords: [ "weather", "lightning" ],
+    char: "\u26c8",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_lightning: {
+    keywords: [ "weather", "thunder" ],
+    char: "\ud83c\udf29",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  zap: {
+    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
+    char: "\u26a1",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fire: {
+    keywords: [ "hot", "cook", "flame" ],
+    char: "\ud83d\udd25",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  boom: {
+    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
+    char: "\ud83d\udca5",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowflake: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
+    char: "\u2744\ufe0f",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  cloud_with_snow: {
+    keywords: [ "weather" ],
+    char: "\ud83c\udf28",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowman: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
+    char: "\u26c4",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  snowman_with_snow: {
+    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
+    char: "\u2603",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  wind_face: {
+    keywords: [ "gust", "air" ],
+    char: "\ud83c\udf2c",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  dash: {
+    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
+    char: "\ud83d\udca8",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  tornado: {
+    keywords: [ "weather", "cyclone", "twister" ],
+    char: "\ud83c\udf2a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  fog: {
+    keywords: [ "weather" ],
+    char: "\ud83c\udf2b",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  open_umbrella: {
+    keywords: [ "weather", "spring" ],
+    char: "\u2602",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  umbrella: {
+    keywords: [ "rainy", "weather", "spring" ],
+    char: "\u2614",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  droplet: {
+    keywords: [ "water", "drip", "faucet", "spring" ],
+    char: "\ud83d\udca7",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  sweat_drops: {
+    keywords: [ "water", "drip", "oops" ],
+    char: "\ud83d\udca6",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  ocean: {
+    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
+    char: "\ud83c\udf0a",
+    fitzpatrick_scale: false,
+    category: "animals_and_nature"
+  },
+  green_apple: {
+    keywords: [ "fruit", "nature" ],
+    char: "\ud83c\udf4f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  apple: {
+    keywords: [ "fruit", "mac", "school" ],
+    char: "\ud83c\udf4e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pear: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: "\ud83c\udf50",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tangerine: {
+    keywords: [ "food", "fruit", "nature", "orange" ],
+    char: "\ud83c\udf4a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  lemon: {
+    keywords: [ "fruit", "nature" ],
+    char: "\ud83c\udf4b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  banana: {
+    keywords: [ "fruit", "food", "monkey" ],
+    char: "\ud83c\udf4c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  watermelon: {
+    keywords: [ "fruit", "food", "picnic", "summer" ],
+    char: "\ud83c\udf49",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  grapes: {
+    keywords: [ "fruit", "food", "wine" ],
+    char: "\ud83c\udf47",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  strawberry: {
+    keywords: [ "fruit", "food", "nature" ],
+    char: "\ud83c\udf53",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  melon: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: "\ud83c\udf48",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cherries: {
+    keywords: [ "food", "fruit" ],
+    char: "\ud83c\udf52",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  peach: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: "\ud83c\udf51",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pineapple: {
+    keywords: [ "fruit", "nature", "food" ],
+    char: "\ud83c\udf4d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  coconut: {
+    keywords: [ "fruit", "nature", "food", "palm" ],
+    char: "\ud83e\udd65",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  kiwi_fruit: {
+    keywords: [ "fruit", "food" ],
+    char: "\ud83e\udd5d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  mango: {
+    keywords: [ "fruit", "food", "tropical" ],
+    char: "\ud83e\udd6d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  avocado: {
+    keywords: [ "fruit", "food" ],
+    char: "\ud83e\udd51",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  broccoli: {
+    keywords: [ "fruit", "food", "vegetable" ],
+    char: "\ud83e\udd66",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tomato: {
+    keywords: [ "fruit", "vegetable", "nature", "food" ],
+    char: "\ud83c\udf45",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  eggplant: {
+    keywords: [ "vegetable", "nature", "food", "aubergine" ],
+    char: "\ud83c\udf46",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cucumber: {
+    keywords: [ "fruit", "food", "pickle" ],
+    char: "\ud83e\udd52",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  carrot: {
+    keywords: [ "vegetable", "food", "orange" ],
+    char: "\ud83e\udd55",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hot_pepper: {
+    keywords: [ "food", "spicy", "chilli", "chili" ],
+    char: "\ud83c\udf36",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  potato: {
+    keywords: [ "food", "tuber", "vegatable", "starch" ],
+    char: "\ud83e\udd54",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  corn: {
+    keywords: [ "food", "vegetable", "plant" ],
+    char: "\ud83c\udf3d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  leafy_greens: {
+    keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ],
+    char: "\ud83e\udd6c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sweet_potato: {
+    keywords: [ "food", "nature" ],
+    char: "\ud83c\udf60",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  peanuts: {
+    keywords: [ "food", "nut" ],
+    char: "\ud83e\udd5c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  honey_pot: {
+    keywords: [ "bees", "sweet", "kitchen" ],
+    char: "\ud83c\udf6f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  croissant: {
+    keywords: [ "food", "bread", "french" ],
+    char: "\ud83e\udd50",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bread: {
+    keywords: [ "food", "wheat", "breakfast", "toast" ],
+    char: "\ud83c\udf5e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  baguette_bread: {
+    keywords: [ "food", "bread", "french" ],
+    char: "\ud83e\udd56",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bagel: {
+    keywords: [ "food", "bread", "bakery", "schmear" ],
+    char: "\ud83e\udd6f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pretzel: {
+    keywords: [ "food", "bread", "twisted" ],
+    char: "\ud83e\udd68",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cheese: {
+    keywords: [ "food", "chadder" ],
+    char: "\ud83e\uddc0",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  egg: {
+    keywords: [ "food", "chicken", "breakfast" ],
+    char: "\ud83e\udd5a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bacon: {
+    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
+    char: "\ud83e\udd53",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  steak: {
+    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
+    char: "\ud83e\udd69",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pancakes: {
+    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
+    char: "\ud83e\udd5e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  poultry_leg: {
+    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
+    char: "\ud83c\udf57",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  meat_on_bone: {
+    keywords: [ "good", "food", "drumstick" ],
+    char: "\ud83c\udf56",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bone: {
+    keywords: [ "skeleton" ],
+    char: "\ud83e\uddb4",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fried_shrimp: {
+    keywords: [ "food", "animal", "appetizer", "summer" ],
+    char: "\ud83c\udf64",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fried_egg: {
+    keywords: [ "food", "breakfast", "kitchen", "egg" ],
+    char: "\ud83c\udf73",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hamburger: {
+    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
+    char: "\ud83c\udf54",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fries: {
+    keywords: [ "chips", "snack", "fast food" ],
+    char: "\ud83c\udf5f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  stuffed_flatbread: {
+    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
+    char: "\ud83e\udd59",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  hotdog: {
+    keywords: [ "food", "frankfurter" ],
+    char: "\ud83c\udf2d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pizza: {
+    keywords: [ "food", "party" ],
+    char: "\ud83c\udf55",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sandwich: {
+    keywords: [ "food", "lunch", "bread" ],
+    char: "\ud83e\udd6a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  canned_food: {
+    keywords: [ "food", "soup" ],
+    char: "\ud83e\udd6b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  spaghetti: {
+    keywords: [ "food", "italian", "noodle" ],
+    char: "\ud83c\udf5d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  taco: {
+    keywords: [ "food", "mexican" ],
+    char: "\ud83c\udf2e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  burrito: {
+    keywords: [ "food", "mexican" ],
+    char: "\ud83c\udf2f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  green_salad: {
+    keywords: [ "food", "healthy", "lettuce" ],
+    char: "\ud83e\udd57",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  shallow_pan_of_food: {
+    keywords: [ "food", "cooking", "casserole", "paella" ],
+    char: "\ud83e\udd58",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  ramen: {
+    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
+    char: "\ud83c\udf5c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  stew: {
+    keywords: [ "food", "meat", "soup" ],
+    char: "\ud83c\udf72",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fish_cake: {
+    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
+    char: "\ud83c\udf65",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fortune_cookie: {
+    keywords: [ "food", "prophecy" ],
+    char: "\ud83e\udd60",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sushi: {
+    keywords: [ "food", "fish", "japanese", "rice" ],
+    char: "\ud83c\udf63",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bento: {
+    keywords: [ "food", "japanese", "box" ],
+    char: "\ud83c\udf71",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  curry: {
+    keywords: [ "food", "spicy", "hot", "indian" ],
+    char: "\ud83c\udf5b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice_ball: {
+    keywords: [ "food", "japanese" ],
+    char: "\ud83c\udf59",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice: {
+    keywords: [ "food", "china", "asian" ],
+    char: "\ud83c\udf5a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  rice_cracker: {
+    keywords: [ "food", "japanese" ],
+    char: "\ud83c\udf58",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  oden: {
+    keywords: [ "food", "japanese" ],
+    char: "\ud83c\udf62",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  dango: {
+    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
+    char: "\ud83c\udf61",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  shaved_ice: {
+    keywords: [ "hot", "dessert", "summer" ],
+    char: "\ud83c\udf67",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  ice_cream: {
+    keywords: [ "food", "hot", "dessert" ],
+    char: "\ud83c\udf68",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  icecream: {
+    keywords: [ "food", "hot", "dessert", "summer" ],
+    char: "\ud83c\udf66",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  pie: {
+    keywords: [ "food", "dessert", "pastry" ],
+    char: "\ud83e\udd67",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cake: {
+    keywords: [ "food", "dessert" ],
+    char: "\ud83c\udf70",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cupcake: {
+    keywords: [ "food", "dessert", "bakery", "sweet" ],
+    char: "\ud83e\uddc1",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  moon_cake: {
+    keywords: [ "food", "autumn" ],
+    char: "\ud83e\udd6e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  birthday: {
+    keywords: [ "food", "dessert", "cake" ],
+    char: "\ud83c\udf82",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  custard: {
+    keywords: [ "dessert", "food" ],
+    char: "\ud83c\udf6e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  candy: {
+    keywords: [ "snack", "dessert", "sweet", "lolly" ],
+    char: "\ud83c\udf6c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  lollipop: {
+    keywords: [ "food", "snack", "candy", "sweet" ],
+    char: "\ud83c\udf6d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  chocolate_bar: {
+    keywords: [ "food", "snack", "dessert", "sweet" ],
+    char: "\ud83c\udf6b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  popcorn: {
+    keywords: [ "food", "movie theater", "films", "snack" ],
+    char: "\ud83c\udf7f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  dumpling: {
+    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
+    char: "\ud83e\udd5f",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  doughnut: {
+    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
+    char: "\ud83c\udf69",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cookie: {
+    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
+    char: "\ud83c\udf6a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  milk_glass: {
+    keywords: [ "beverage", "drink", "cow" ],
+    char: "\ud83e\udd5b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  beer: {
+    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
+    char: "\ud83c\udf7a",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  beers: {
+    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
+    char: "\ud83c\udf7b",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  clinking_glasses: {
+    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
+    char: "\ud83e\udd42",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  wine_glass: {
+    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
+    char: "\ud83c\udf77",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tumbler_glass: {
+    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
+    char: "\ud83e\udd43",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cocktail: {
+    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
+    char: "\ud83c\udf78",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tropical_drink: {
+    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
+    char: "\ud83c\udf79",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  champagne: {
+    keywords: [ "drink", "wine", "bottle", "celebration" ],
+    char: "\ud83c\udf7e",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  sake: {
+    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
+    char: "\ud83c\udf76",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  tea: {
+    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
+    char: "\ud83c\udf75",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  cup_with_straw: {
+    keywords: [ "drink", "soda" ],
+    char: "\ud83e\udd64",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  coffee: {
+    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
+    char: "\u2615",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  baby_bottle: {
+    keywords: [ "food", "container", "milk" ],
+    char: "\ud83c\udf7c",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  salt: {
+    keywords: [ "condiment", "shaker" ],
+    char: "\ud83e\uddc2",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  spoon: {
+    keywords: [ "cutlery", "kitchen", "tableware" ],
+    char: "\ud83e\udd44",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  fork_and_knife: {
+    keywords: [ "cutlery", "kitchen" ],
+    char: "\ud83c\udf74",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  plate_with_cutlery: {
+    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
+    char: "\ud83c\udf7d",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  bowl_with_spoon: {
+    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
+    char: "\ud83e\udd63",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  takeout_box: {
+    keywords: [ "food", "leftovers" ],
+    char: "\ud83e\udd61",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  chopsticks: {
+    keywords: [ "food" ],
+    char: "\ud83e\udd62",
+    fitzpatrick_scale: false,
+    category: "food_and_drink"
+  },
+  soccer: {
+    keywords: [ "sports", "football" ],
+    char: "\u26bd",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  basketball: {
+    keywords: [ "sports", "balls", "NBA" ],
+    char: "\ud83c\udfc0",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  football: {
+    keywords: [ "sports", "balls", "NFL" ],
+    char: "\ud83c\udfc8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  baseball: {
+    keywords: [ "sports", "balls" ],
+    char: "\u26be",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  softball: {
+    keywords: [ "sports", "balls" ],
+    char: "\ud83e\udd4e",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  tennis: {
+    keywords: [ "sports", "balls", "green" ],
+    char: "\ud83c\udfbe",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  volleyball: {
+    keywords: [ "sports", "balls" ],
+    char: "\ud83c\udfd0",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rugby_football: {
+    keywords: [ "sports", "team" ],
+    char: "\ud83c\udfc9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  flying_disc: {
+    keywords: [ "sports", "frisbee", "ultimate" ],
+    char: "\ud83e\udd4f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "8ball": {
+    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
+    char: "\ud83c\udfb1",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golf: {
+    keywords: [ "sports", "business", "flag", "hole", "summer" ],
+    char: "\u26f3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golfing_woman: {
+    keywords: [ "sports", "business", "woman", "female" ],
+    char: "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  golfing_man: {
+    keywords: [ "sports", "business" ],
+    char: "\ud83c\udfcc",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  ping_pong: {
+    keywords: [ "sports", "pingpong" ],
+    char: "\ud83c\udfd3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  badminton: {
+    keywords: [ "sports" ],
+    char: "\ud83c\udff8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  goal_net: {
+    keywords: [ "sports" ],
+    char: "\ud83e\udd45",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ice_hockey: {
+    keywords: [ "sports" ],
+    char: "\ud83c\udfd2",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  field_hockey: {
+    keywords: [ "sports" ],
+    char: "\ud83c\udfd1",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  lacrosse: {
+    keywords: [ "sports", "ball", "stick" ],
+    char: "\ud83e\udd4d",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  cricket: {
+    keywords: [ "sports" ],
+    char: "\ud83c\udfcf",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ski: {
+    keywords: [ "sports", "winter", "cold", "snow" ],
+    char: "\ud83c\udfbf",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  skier: {
+    keywords: [ "sports", "winter", "snow" ],
+    char: "\u26f7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  snowboarder: {
+    keywords: [ "sports", "winter" ],
+    char: "\ud83c\udfc2",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  person_fencing: {
+    keywords: [ "sports", "fencing", "sword" ],
+    char: "\ud83e\udd3a",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  women_wrestling: {
+    keywords: [ "sports", "wrestlers" ],
+    char: "\ud83e\udd3c\u200d\u2640\ufe0f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  men_wrestling: {
+    keywords: [ "sports", "wrestlers" ],
+    char: "\ud83e\udd3c\u200d\u2642\ufe0f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  woman_cartwheeling: {
+    keywords: [ "gymnastics" ],
+    char: "\ud83e\udd38\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_cartwheeling: {
+    keywords: [ "gymnastics" ],
+    char: "\ud83e\udd38\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_playing_handball: {
+    keywords: [ "sports" ],
+    char: "\ud83e\udd3e\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_playing_handball: {
+    keywords: [ "sports" ],
+    char: "\ud83e\udd3e\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  ice_skate: {
+    keywords: [ "sports" ],
+    char: "\u26f8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  curling_stone: {
+    keywords: [ "sports" ],
+    char: "\ud83e\udd4c",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  skateboard: {
+    keywords: [ "board" ],
+    char: "\ud83d\udef9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  sled: {
+    keywords: [ "sleigh", "luge", "toboggan" ],
+    char: "\ud83d\udef7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  bow_and_arrow: {
+    keywords: [ "sports" ],
+    char: "\ud83c\udff9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  fishing_pole_and_fish: {
+    keywords: [ "food", "hobby", "summer" ],
+    char: "\ud83c\udfa3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  boxing_glove: {
+    keywords: [ "sports", "fighting" ],
+    char: "\ud83e\udd4a",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  martial_arts_uniform: {
+    keywords: [ "judo", "karate", "taekwondo" ],
+    char: "\ud83e\udd4b",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rowing_woman: {
+    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
+    char: "\ud83d\udea3\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  rowing_man: {
+    keywords: [ "sports", "hobby", "water", "ship" ],
+    char: "\ud83d\udea3",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  climbing_woman: {
+    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
+    char: "\ud83e\uddd7\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  climbing_man: {
+    keywords: [ "sports", "hobby", "man", "male", "rock" ],
+    char: "\ud83e\uddd7\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  swimming_woman: {
+    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
+    char: "\ud83c\udfca\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  swimming_man: {
+    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
+    char: "\ud83c\udfca",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_playing_water_polo: {
+    keywords: [ "sports", "pool" ],
+    char: "\ud83e\udd3d\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_playing_water_polo: {
+    keywords: [ "sports", "pool" ],
+    char: "\ud83e\udd3d\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  woman_in_lotus_position: {
+    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
+    char: "\ud83e\uddd8\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_in_lotus_position: {
+    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
+    char: "\ud83e\uddd8\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  surfing_woman: {
+    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
+    char: "\ud83c\udfc4\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  surfing_man: {
+    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
+    char: "\ud83c\udfc4",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  bath: {
+    keywords: [ "clean", "shower", "bathroom" ],
+    char: "\ud83d\udec0",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  basketball_woman: {
+    keywords: [ "sports", "human", "woman", "female" ],
+    char: "\u26f9\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  basketball_man: {
+    keywords: [ "sports", "human" ],
+    char: "\u26f9",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  weight_lifting_woman: {
+    keywords: [ "sports", "training", "exercise", "woman", "female" ],
+    char: "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  weight_lifting_man: {
+    keywords: [ "sports", "training", "exercise" ],
+    char: "\ud83c\udfcb",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  biking_woman: {
+    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
+    char: "\ud83d\udeb4\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  biking_man: {
+    keywords: [ "sports", "bike", "exercise", "hipster" ],
+    char: "\ud83d\udeb4",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  mountain_biking_woman: {
+    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
+    char: "\ud83d\udeb5\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  mountain_biking_man: {
+    keywords: [ "transportation", "sports", "human", "race", "bike" ],
+    char: "\ud83d\udeb5",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  horse_racing: {
+    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
+    char: "\ud83c\udfc7",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  business_suit_levitating: {
+    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
+    char: "\ud83d\udd74",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  trophy: {
+    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
+    char: "\ud83c\udfc6",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  running_shirt_with_sash: {
+    keywords: [ "play", "pageant" ],
+    char: "\ud83c\udfbd",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  medal_sports: {
+    keywords: [ "award", "winning" ],
+    char: "\ud83c\udfc5",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  medal_military: {
+    keywords: [ "award", "winning", "army" ],
+    char: "\ud83c\udf96",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "1st_place_medal": {
+    keywords: [ "award", "winning", "first" ],
+    char: "\ud83e\udd47",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "2nd_place_medal": {
+    keywords: [ "award", "second" ],
+    char: "\ud83e\udd48",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  "3rd_place_medal": {
+    keywords: [ "award", "third" ],
+    char: "\ud83e\udd49",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  reminder_ribbon: {
+    keywords: [ "sports", "cause", "support", "awareness" ],
+    char: "\ud83c\udf97",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  rosette: {
+    keywords: [ "flower", "decoration", "military" ],
+    char: "\ud83c\udff5",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  ticket: {
+    keywords: [ "event", "concert", "pass" ],
+    char: "\ud83c\udfab",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  tickets: {
+    keywords: [ "sports", "concert", "entrance" ],
+    char: "\ud83c\udf9f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  performing_arts: {
+    keywords: [ "acting", "theater", "drama" ],
+    char: "\ud83c\udfad",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  art: {
+    keywords: [ "design", "paint", "draw", "colors" ],
+    char: "\ud83c\udfa8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  circus_tent: {
+    keywords: [ "festival", "carnival", "party" ],
+    char: "\ud83c\udfaa",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  woman_juggling: {
+    keywords: [ "juggle", "balance", "skill", "multitask" ],
+    char: "\ud83e\udd39\u200d\u2640\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  man_juggling: {
+    keywords: [ "juggle", "balance", "skill", "multitask" ],
+    char: "\ud83e\udd39\u200d\u2642\ufe0f",
+    fitzpatrick_scale: true,
+    category: "activity"
+  },
+  microphone: {
+    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
+    char: "\ud83c\udfa4",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  headphones: {
+    keywords: [ "music", "score", "gadgets" ],
+    char: "\ud83c\udfa7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  musical_score: {
+    keywords: [ "treble", "clef", "compose" ],
+    char: "\ud83c\udfbc",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  musical_keyboard: {
+    keywords: [ "piano", "instrument", "compose" ],
+    char: "\ud83c\udfb9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  drum: {
+    keywords: [ "music", "instrument", "drumsticks", "snare" ],
+    char: "\ud83e\udd41",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  saxophone: {
+    keywords: [ "music", "instrument", "jazz", "blues" ],
+    char: "\ud83c\udfb7",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  trumpet: {
+    keywords: [ "music", "brass" ],
+    char: "\ud83c\udfba",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  guitar: {
+    keywords: [ "music", "instrument" ],
+    char: "\ud83c\udfb8",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  violin: {
+    keywords: [ "music", "instrument", "orchestra", "symphony" ],
+    char: "\ud83c\udfbb",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  clapper: {
+    keywords: [ "movie", "film", "record" ],
+    char: "\ud83c\udfac",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  video_game: {
+    keywords: [ "play", "console", "PS4", "controller" ],
+    char: "\ud83c\udfae",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  space_invader: {
+    keywords: [ "game", "arcade", "play" ],
+    char: "\ud83d\udc7e",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  dart: {
+    keywords: [ "game", "play", "bar", "target", "bullseye" ],
+    char: "\ud83c\udfaf",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  game_die: {
+    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
+    char: "\ud83c\udfb2",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  chess_pawn: {
+    keywords: [ "expendable" ],
+    char: "\u265f",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  slot_machine: {
+    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
+    char: "\ud83c\udfb0",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  jigsaw: {
+    keywords: [ "interlocking", "puzzle", "piece" ],
+    char: "\ud83e\udde9",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  bowling: {
+    keywords: [ "sports", "fun", "play" ],
+    char: "\ud83c\udfb3",
+    fitzpatrick_scale: false,
+    category: "activity"
+  },
+  red_car: {
+    keywords: [ "red", "transportation", "vehicle" ],
+    char: "\ud83d\ude97",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  taxi: {
+    keywords: [ "uber", "vehicle", "cars", "transportation" ],
+    char: "\ud83d\ude95",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  blue_car: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude99",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bus: {
+    keywords: [ "car", "vehicle", "transportation" ],
+    char: "\ud83d\ude8c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  trolleybus: {
+    keywords: [ "bart", "transportation", "vehicle" ],
+    char: "\ud83d\ude8e",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  racing_car: {
+    keywords: [ "sports", "race", "fast", "formula", "f1" ],
+    char: "\ud83c\udfce",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  police_car: {
+    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
+    char: "\ud83d\ude93",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ambulance: {
+    keywords: [ "health", "911", "hospital" ],
+    char: "\ud83d\ude91",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fire_engine: {
+    keywords: [ "transportation", "cars", "vehicle" ],
+    char: "\ud83d\ude92",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  minibus: {
+    keywords: [ "vehicle", "car", "transportation" ],
+    char: "\ud83d\ude90",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  truck: {
+    keywords: [ "cars", "transportation" ],
+    char: "\ud83d\ude9a",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  articulated_lorry: {
+    keywords: [ "vehicle", "cars", "transportation", "express" ],
+    char: "\ud83d\ude9b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tractor: {
+    keywords: [ "vehicle", "car", "farming", "agriculture" ],
+    char: "\ud83d\ude9c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  kick_scooter: {
+    keywords: [ "vehicle", "kick", "razor" ],
+    char: "\ud83d\udef4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motorcycle: {
+    keywords: [ "race", "sports", "fast" ],
+    char: "\ud83c\udfcd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bike: {
+    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
+    char: "\ud83d\udeb2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motor_scooter: {
+    keywords: [ "vehicle", "vespa", "sasha" ],
+    char: "\ud83d\udef5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rotating_light: {
+    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
+    char: "\ud83d\udea8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_police_car: {
+    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
+    char: "\ud83d\ude94",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_bus: {
+    keywords: [ "vehicle", "transportation" ],
+    char: "\ud83d\ude8d",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_automobile: {
+    keywords: [ "car", "vehicle", "transportation" ],
+    char: "\ud83d\ude98",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  oncoming_taxi: {
+    keywords: [ "vehicle", "cars", "uber" ],
+    char: "\ud83d\ude96",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  aerial_tramway: {
+    keywords: [ "transportation", "vehicle", "ski" ],
+    char: "\ud83d\udea1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_cableway: {
+    keywords: [ "transportation", "vehicle", "ski" ],
+    char: "\ud83d\udea0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  suspension_railway: {
+    keywords: [ "vehicle", "transportation" ],
+    char: "\ud83d\ude9f",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  railway_car: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude83",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  train: {
+    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
+    char: "\ud83d\ude8b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  monorail: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude9d",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bullettrain_side: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude84",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bullettrain_front: {
+    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
+    char: "\ud83d\ude85",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  light_rail: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude88",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_railway: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude9e",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  steam_locomotive: {
+    keywords: [ "transportation", "vehicle", "train" ],
+    char: "\ud83d\ude82",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  train2: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude86",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  metro: {
+    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
+    char: "\ud83d\ude87",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tram: {
+    keywords: [ "transportation", "vehicle" ],
+    char: "\ud83d\ude8a",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  station: {
+    keywords: [ "transportation", "vehicle", "public" ],
+    char: "\ud83d\ude89",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flying_saucer: {
+    keywords: [ "transportation", "vehicle", "ufo" ],
+    char: "\ud83d\udef8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  helicopter: {
+    keywords: [ "transportation", "vehicle", "fly" ],
+    char: "\ud83d\ude81",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  small_airplane: {
+    keywords: [ "flight", "transportation", "fly", "vehicle" ],
+    char: "\ud83d\udee9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  airplane: {
+    keywords: [ "vehicle", "transportation", "flight", "fly" ],
+    char: "\u2708\ufe0f",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flight_departure: {
+    keywords: [ "airport", "flight", "landing" ],
+    char: "\ud83d\udeeb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  flight_arrival: {
+    keywords: [ "airport", "flight", "boarding" ],
+    char: "\ud83d\udeec",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sailboat: {
+    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
+    char: "\u26f5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motor_boat: {
+    keywords: [ "ship" ],
+    char: "\ud83d\udee5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  speedboat: {
+    keywords: [ "ship", "transportation", "vehicle", "summer" ],
+    char: "\ud83d\udea4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ferry: {
+    keywords: [ "boat", "ship", "yacht" ],
+    char: "\u26f4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  passenger_ship: {
+    keywords: [ "yacht", "cruise", "ferry" ],
+    char: "\ud83d\udef3",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rocket: {
+    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
+    char: "\ud83d\ude80",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  artificial_satellite: {
+    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
+    char: "\ud83d\udef0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  seat: {
+    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
+    char: "\ud83d\udcba",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  canoe: {
+    keywords: [ "boat", "paddle", "water", "ship" ],
+    char: "\ud83d\udef6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  anchor: {
+    keywords: [ "ship", "ferry", "sea", "boat" ],
+    char: "\u2693",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  construction: {
+    keywords: [ "wip", "progress", "caution", "warning" ],
+    char: "\ud83d\udea7",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fuelpump: {
+    keywords: [ "gas station", "petroleum" ],
+    char: "\u26fd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  busstop: {
+    keywords: [ "transportation", "wait" ],
+    char: "\ud83d\ude8f",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  vertical_traffic_light: {
+    keywords: [ "transportation", "driving" ],
+    char: "\ud83d\udea6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  traffic_light: {
+    keywords: [ "transportation", "signal" ],
+    char: "\ud83d\udea5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  checkered_flag: {
+    keywords: [ "contest", "finishline", "race", "gokart" ],
+    char: "\ud83c\udfc1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ship: {
+    keywords: [ "transportation", "titanic", "deploy" ],
+    char: "\ud83d\udea2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  ferris_wheel: {
+    keywords: [ "photo", "carnival", "londoneye" ],
+    char: "\ud83c\udfa1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  roller_coaster: {
+    keywords: [ "carnival", "playground", "photo", "fun" ],
+    char: "\ud83c\udfa2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  carousel_horse: {
+    keywords: [ "photo", "carnival" ],
+    char: "\ud83c\udfa0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  building_construction: {
+    keywords: [ "wip", "working", "progress" ],
+    char: "\ud83c\udfd7",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  foggy: {
+    keywords: [ "photo", "mountain" ],
+    char: "\ud83c\udf01",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tokyo_tower: {
+    keywords: [ "photo", "japanese" ],
+    char: "\ud83d\uddfc",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  factory: {
+    keywords: [ "building", "industry", "pollution", "smoke" ],
+    char: "\ud83c\udfed",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fountain: {
+    keywords: [ "photo", "summer", "water", "fresh" ],
+    char: "\u26f2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rice_scene: {
+    keywords: [ "photo", "japan", "asia", "tsukimi" ],
+    char: "\ud83c\udf91",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain: {
+    keywords: [ "photo", "nature", "environment" ],
+    char: "\u26f0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mountain_snow: {
+    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
+    char: "\ud83c\udfd4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mount_fuji: {
+    keywords: [ "photo", "mountain", "nature", "japanese" ],
+    char: "\ud83d\uddfb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  volcano: {
+    keywords: [ "photo", "nature", "disaster" ],
+    char: "\ud83c\udf0b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  japan: {
+    keywords: [ "nation", "country", "japanese", "asia" ],
+    char: "\ud83d\uddfe",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  camping: {
+    keywords: [ "photo", "outdoors", "tent" ],
+    char: "\ud83c\udfd5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  tent: {
+    keywords: [ "photo", "camping", "outdoors" ],
+    char: "\u26fa",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  national_park: {
+    keywords: [ "photo", "environment", "nature" ],
+    char: "\ud83c\udfde",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  motorway: {
+    keywords: [ "road", "cupertino", "interstate", "highway" ],
+    char: "\ud83d\udee3",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  railway_track: {
+    keywords: [ "train", "transportation" ],
+    char: "\ud83d\udee4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sunrise: {
+    keywords: [ "morning", "view", "vacation", "photo" ],
+    char: "\ud83c\udf05",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sunrise_over_mountains: {
+    keywords: [ "view", "vacation", "photo" ],
+    char: "\ud83c\udf04",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  desert: {
+    keywords: [ "photo", "warm", "saharah" ],
+    char: "\ud83c\udfdc",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  beach_umbrella: {
+    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
+    char: "\ud83c\udfd6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  desert_island: {
+    keywords: [ "photo", "tropical", "mojito" ],
+    char: "\ud83c\udfdd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  city_sunrise: {
+    keywords: [ "photo", "good morning", "dawn" ],
+    char: "\ud83c\udf07",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  city_sunset: {
+    keywords: [ "photo", "evening", "sky", "buildings" ],
+    char: "\ud83c\udf06",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  cityscape: {
+    keywords: [ "photo", "night life", "urban" ],
+    char: "\ud83c\udfd9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  night_with_stars: {
+    keywords: [ "evening", "city", "downtown" ],
+    char: "\ud83c\udf03",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bridge_at_night: {
+    keywords: [ "photo", "sanfrancisco" ],
+    char: "\ud83c\udf09",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  milky_way: {
+    keywords: [ "photo", "space", "stars" ],
+    char: "\ud83c\udf0c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  stars: {
+    keywords: [ "night", "photo" ],
+    char: "\ud83c\udf20",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  sparkler: {
+    keywords: [ "stars", "night", "shine" ],
+    char: "\ud83c\udf87",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  fireworks: {
+    keywords: [ "photo", "festival", "carnival", "congratulations" ],
+    char: "\ud83c\udf86",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  rainbow: {
+    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
+    char: "\ud83c\udf08",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  houses: {
+    keywords: [ "buildings", "photo" ],
+    char: "\ud83c\udfd8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  european_castle: {
+    keywords: [ "building", "royalty", "history" ],
+    char: "\ud83c\udff0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  japanese_castle: {
+    keywords: [ "photo", "building" ],
+    char: "\ud83c\udfef",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  stadium: {
+    keywords: [ "photo", "place", "sports", "concert", "venue" ],
+    char: "\ud83c\udfdf",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  statue_of_liberty: {
+    keywords: [ "american", "newyork" ],
+    char: "\ud83d\uddfd",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  house: {
+    keywords: [ "building", "home" ],
+    char: "\ud83c\udfe0",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  house_with_garden: {
+    keywords: [ "home", "plant", "nature" ],
+    char: "\ud83c\udfe1",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  derelict_house: {
+    keywords: [ "abandon", "evict", "broken", "building" ],
+    char: "\ud83c\udfda",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  office: {
+    keywords: [ "building", "bureau", "work" ],
+    char: "\ud83c\udfe2",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  department_store: {
+    keywords: [ "building", "shopping", "mall" ],
+    char: "\ud83c\udfec",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  post_office: {
+    keywords: [ "building", "envelope", "communication" ],
+    char: "\ud83c\udfe3",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  european_post_office: {
+    keywords: [ "building", "email" ],
+    char: "\ud83c\udfe4",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  hospital: {
+    keywords: [ "building", "health", "surgery", "doctor" ],
+    char: "\ud83c\udfe5",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  bank: {
+    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
+    char: "\ud83c\udfe6",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  hotel: {
+    keywords: [ "building", "accomodation", "checkin" ],
+    char: "\ud83c\udfe8",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  convenience_store: {
+    keywords: [ "building", "shopping", "groceries" ],
+    char: "\ud83c\udfea",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  school: {
+    keywords: [ "building", "student", "education", "learn", "teach" ],
+    char: "\ud83c\udfeb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  love_hotel: {
+    keywords: [ "like", "affection", "dating" ],
+    char: "\ud83c\udfe9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  wedding: {
+    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
+    char: "\ud83d\udc92",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  classical_building: {
+    keywords: [ "art", "culture", "history" ],
+    char: "\ud83c\udfdb",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  church: {
+    keywords: [ "building", "religion", "christ" ],
+    char: "\u26ea",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  mosque: {
+    keywords: [ "islam", "worship", "minaret" ],
+    char: "\ud83d\udd4c",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  synagogue: {
+    keywords: [ "judaism", "worship", "temple", "jewish" ],
+    char: "\ud83d\udd4d",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  kaaba: {
+    keywords: [ "mecca", "mosque", "islam" ],
+    char: "\ud83d\udd4b",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  shinto_shrine: {
+    keywords: [ "temple", "japan", "kyoto" ],
+    char: "\u26e9",
+    fitzpatrick_scale: false,
+    category: "travel_and_places"
+  },
+  watch: {
+    keywords: [ "time", "accessories" ],
+    char: "\u231a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  iphone: {
+    keywords: [ "technology", "apple", "gadgets", "dial" ],
+    char: "\ud83d\udcf1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  calling: {
+    keywords: [ "iphone", "incoming" ],
+    char: "\ud83d\udcf2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  computer: {
+    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
+    char: "\ud83d\udcbb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  keyboard: {
+    keywords: [ "technology", "computer", "type", "input", "text" ],
+    char: "\u2328",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  desktop_computer: {
+    keywords: [ "technology", "computing", "screen" ],
+    char: "\ud83d\udda5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  printer: {
+    keywords: [ "paper", "ink" ],
+    char: "\ud83d\udda8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  computer_mouse: {
+    keywords: [ "click" ],
+    char: "\ud83d\uddb1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  trackball: {
+    keywords: [ "technology", "trackpad" ],
+    char: "\ud83d\uddb2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  joystick: {
+    keywords: [ "game", "play" ],
+    char: "\ud83d\udd79",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  clamp: {
+    keywords: [ "tool" ],
+    char: "\ud83d\udddc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  minidisc: {
+    keywords: [ "technology", "record", "data", "disk", "90s" ],
+    char: "\ud83d\udcbd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  floppy_disk: {
+    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
+    char: "\ud83d\udcbe",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  cd: {
+    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
+    char: "\ud83d\udcbf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dvd: {
+    keywords: [ "cd", "disk", "disc" ],
+    char: "\ud83d\udcc0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  vhs: {
+    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
+    char: "\ud83d\udcfc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  camera: {
+    keywords: [ "gadgets", "photography" ],
+    char: "\ud83d\udcf7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  camera_flash: {
+    keywords: [ "photography", "gadgets" ],
+    char: "\ud83d\udcf8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  video_camera: {
+    keywords: [ "film", "record" ],
+    char: "\ud83d\udcf9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  movie_camera: {
+    keywords: [ "film", "record" ],
+    char: "\ud83c\udfa5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  film_projector: {
+    keywords: [ "video", "tape", "record", "movie" ],
+    char: "\ud83d\udcfd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  film_strip: {
+    keywords: [ "movie" ],
+    char: "\ud83c\udf9e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  telephone_receiver: {
+    keywords: [ "technology", "communication", "dial" ],
+    char: "\ud83d\udcde",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  phone: {
+    keywords: [ "technology", "communication", "dial", "telephone" ],
+    char: "\u260e\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pager: {
+    keywords: [ "bbcall", "oldschool", "90s" ],
+    char: "\ud83d\udcdf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fax: {
+    keywords: [ "communication", "technology" ],
+    char: "\ud83d\udce0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  tv: {
+    keywords: [ "technology", "program", "oldschool", "show", "television" ],
+    char: "\ud83d\udcfa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  radio: {
+    keywords: [ "communication", "music", "podcast", "program" ],
+    char: "\ud83d\udcfb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  studio_microphone: {
+    keywords: [ "sing", "recording", "artist", "talkshow" ],
+    char: "\ud83c\udf99",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  level_slider: {
+    keywords: [ "scale" ],
+    char: "\ud83c\udf9a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  control_knobs: {
+    keywords: [ "dial" ],
+    char: "\ud83c\udf9b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  compass: {
+    keywords: [ "magnetic", "navigation", "orienteering" ],
+    char: "\ud83e\udded",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  stopwatch: {
+    keywords: [ "time", "deadline" ],
+    char: "\u23f1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  timer_clock: {
+    keywords: [ "alarm" ],
+    char: "\u23f2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  alarm_clock: {
+    keywords: [ "time", "wake" ],
+    char: "\u23f0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mantelpiece_clock: {
+    keywords: [ "time" ],
+    char: "\ud83d\udd70",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hourglass_flowing_sand: {
+    keywords: [ "oldschool", "time", "countdown" ],
+    char: "\u23f3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hourglass: {
+    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
+    char: "\u231b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  satellite: {
+    keywords: [ "communication", "future", "radio", "space" ],
+    char: "\ud83d\udce1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  battery: {
+    keywords: [ "power", "energy", "sustain" ],
+    char: "\ud83d\udd0b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  electric_plug: {
+    keywords: [ "charger", "power" ],
+    char: "\ud83d\udd0c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bulb: {
+    keywords: [ "light", "electricity", "idea" ],
+    char: "\ud83d\udca1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  flashlight: {
+    keywords: [ "dark", "camping", "sight", "night" ],
+    char: "\ud83d\udd26",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  candle: {
+    keywords: [ "fire", "wax" ],
+    char: "\ud83d\udd6f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fire_extinguisher: {
+    keywords: [ "quench" ],
+    char: "\ud83e\uddef",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wastebasket: {
+    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
+    char: "\ud83d\uddd1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  oil_drum: {
+    keywords: [ "barrell" ],
+    char: "\ud83d\udee2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  money_with_wings: {
+    keywords: [ "dollar", "bills", "payment", "sale" ],
+    char: "\ud83d\udcb8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dollar: {
+    keywords: [ "money", "sales", "bill", "currency" ],
+    char: "\ud83d\udcb5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  yen: {
+    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
+    char: "\ud83d\udcb4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  euro: {
+    keywords: [ "money", "sales", "dollar", "currency" ],
+    char: "\ud83d\udcb6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pound: {
+    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
+    char: "\ud83d\udcb7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  moneybag: {
+    keywords: [ "dollar", "payment", "coins", "sale" ],
+    char: "\ud83d\udcb0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  credit_card: {
+    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
+    char: "\ud83d\udcb3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gem: {
+    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
+    char: "\ud83d\udc8e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  balance_scale: {
+    keywords: [ "law", "fairness", "weight" ],
+    char: "\u2696",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toolbox: {
+    keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ],
+    char: "\ud83e\uddf0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wrench: {
+    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
+    char: "\ud83d\udd27",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer: {
+    keywords: [ "tools", "build", "create" ],
+    char: "\ud83d\udd28",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer_and_pick: {
+    keywords: [ "tools", "build", "create" ],
+    char: "\u2692",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hammer_and_wrench: {
+    keywords: [ "tools", "build", "create" ],
+    char: "\ud83d\udee0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pick: {
+    keywords: [ "tools", "dig" ],
+    char: "\u26cf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  nut_and_bolt: {
+    keywords: [ "handy", "tools", "fix" ],
+    char: "\ud83d\udd29",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gear: {
+    keywords: [ "cog" ],
+    char: "\u2699",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  brick: {
+    keywords: [ "bricks" ],
+    char: "\ud83e\uddf1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chains: {
+    keywords: [ "lock", "arrest" ],
+    char: "\u26d3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  magnet: {
+    keywords: [ "attraction", "magnetic" ],
+    char: "\ud83e\uddf2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gun: {
+    keywords: [ "violence", "weapon", "pistol", "revolver" ],
+    char: "\ud83d\udd2b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bomb: {
+    keywords: [ "boom", "explode", "explosion", "terrorism" ],
+    char: "\ud83d\udca3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  firecracker: {
+    keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ],
+    char: "\ud83e\udde8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hocho: {
+    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
+    char: "\ud83d\udd2a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dagger: {
+    keywords: [ "weapon" ],
+    char: "\ud83d\udde1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crossed_swords: {
+    keywords: [ "weapon" ],
+    char: "\u2694",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shield: {
+    keywords: [ "protection", "security" ],
+    char: "\ud83d\udee1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  smoking: {
+    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
+    char: "\ud83d\udeac",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  skull_and_crossbones: {
+    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
+    char: "\u2620",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  coffin: {
+    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
+    char: "\u26b0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  funeral_urn: {
+    keywords: [ "dead", "die", "death", "rip", "ashes" ],
+    char: "\u26b1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  amphora: {
+    keywords: [ "vase", "jar" ],
+    char: "\ud83c\udffa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crystal_ball: {
+    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
+    char: "\ud83d\udd2e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  prayer_beads: {
+    keywords: [ "dhikr", "religious" ],
+    char: "\ud83d\udcff",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  nazar_amulet: {
+    keywords: [ "bead", "charm" ],
+    char: "\ud83e\uddff",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  barber: {
+    keywords: [ "hair", "salon", "style" ],
+    char: "\ud83d\udc88",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  alembic: {
+    keywords: [ "distilling", "science", "experiment", "chemistry" ],
+    char: "\u2697",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  telescope: {
+    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
+    char: "\ud83d\udd2d",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  microscope: {
+    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
+    char: "\ud83d\udd2c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  hole: {
+    keywords: [ "embarrassing" ],
+    char: "\ud83d\udd73",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pill: {
+    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
+    char: "\ud83d\udc8a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  syringe: {
+    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
+    char: "\ud83d\udc89",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dna: {
+    keywords: [ "biologist", "genetics", "life" ],
+    char: "\ud83e\uddec",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  microbe: {
+    keywords: [ "amoeba", "bacteria", "germs" ],
+    char: "\ud83e\udda0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  petri_dish: {
+    keywords: [ "bacteria", "biology", "culture", "lab" ],
+    char: "\ud83e\uddeb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  test_tube: {
+    keywords: [ "chemistry", "experiment", "lab", "science" ],
+    char: "\ud83e\uddea",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  thermometer: {
+    keywords: [ "weather", "temperature", "hot", "cold" ],
+    char: "\ud83c\udf21",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  broom: {
+    keywords: [ "cleaning", "sweeping", "witch" ],
+    char: "\ud83e\uddf9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  basket: {
+    keywords: [ "laundry" ],
+    char: "\ud83e\uddfa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toilet_paper: {
+    keywords: [ "roll" ],
+    char: "\ud83e\uddfb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  label: {
+    keywords: [ "sale", "tag" ],
+    char: "\ud83c\udff7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bookmark: {
+    keywords: [ "favorite", "label", "save" ],
+    char: "\ud83d\udd16",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  toilet: {
+    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
+    char: "\ud83d\udebd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shower: {
+    keywords: [ "clean", "water", "bathroom" ],
+    char: "\ud83d\udebf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bathtub: {
+    keywords: [ "clean", "shower", "bathroom" ],
+    char: "\ud83d\udec1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  soap: {
+    keywords: [ "bar", "bathing", "cleaning", "lather" ],
+    char: "\ud83e\uddfc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  sponge: {
+    keywords: [ "absorbing", "cleaning", "porous" ],
+    char: "\ud83e\uddfd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lotion_bottle: {
+    keywords: [ "moisturizer", "sunscreen" ],
+    char: "\ud83e\uddf4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  key: {
+    keywords: [ "lock", "door", "password" ],
+    char: "\ud83d\udd11",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  old_key: {
+    keywords: [ "lock", "door", "password" ],
+    char: "\ud83d\udddd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  couch_and_lamp: {
+    keywords: [ "read", "chill" ],
+    char: "\ud83d\udecb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  sleeping_bed: {
+    keywords: [ "bed", "rest" ],
+    char: "\ud83d\udecc",
+    fitzpatrick_scale: true,
+    category: "objects"
+  },
+  bed: {
+    keywords: [ "sleep", "rest" ],
+    char: "\ud83d\udecf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  door: {
+    keywords: [ "house", "entry", "exit" ],
+    char: "\ud83d\udeaa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bellhop_bell: {
+    keywords: [ "service" ],
+    char: "\ud83d\udece",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  teddy_bear: {
+    keywords: [ "plush", "stuffed" ],
+    char: "\ud83e\uddf8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  framed_picture: {
+    keywords: [ "photography" ],
+    char: "\ud83d\uddbc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  world_map: {
+    keywords: [ "location", "direction" ],
+    char: "\ud83d\uddfa",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  parasol_on_ground: {
+    keywords: [ "weather", "summer" ],
+    char: "\u26f1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  moyai: {
+    keywords: [ "rock", "easter island", "moai" ],
+    char: "\ud83d\uddff",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shopping: {
+    keywords: [ "mall", "buy", "purchase" ],
+    char: "\ud83d\udecd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  shopping_cart: {
+    keywords: [ "trolley" ],
+    char: "\ud83d\uded2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  balloon: {
+    keywords: [ "party", "celebration", "birthday", "circus" ],
+    char: "\ud83c\udf88",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  flags: {
+    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
+    char: "\ud83c\udf8f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ribbon: {
+    keywords: [ "decoration", "pink", "girl", "bowtie" ],
+    char: "\ud83c\udf80",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  gift: {
+    keywords: [ "present", "birthday", "christmas", "xmas" ],
+    char: "\ud83c\udf81",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  confetti_ball: {
+    keywords: [ "festival", "party", "birthday", "circus" ],
+    char: "\ud83c\udf8a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  tada: {
+    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
+    char: "\ud83c\udf89",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  dolls: {
+    keywords: [ "japanese", "toy", "kimono" ],
+    char: "\ud83c\udf8e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  wind_chime: {
+    keywords: [ "nature", "ding", "spring", "bell" ],
+    char: "\ud83c\udf90",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crossed_flags: {
+    keywords: [ "japanese", "nation", "country", "border" ],
+    char: "\ud83c\udf8c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  izakaya_lantern: {
+    keywords: [ "light", "paper", "halloween", "spooky" ],
+    char: "\ud83c\udfee",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  red_envelope: {
+    keywords: [ "gift" ],
+    char: "\ud83e\udde7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  email: {
+    keywords: [ "letter", "postal", "inbox", "communication" ],
+    char: "\u2709\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  envelope_with_arrow: {
+    keywords: [ "email", "communication" ],
+    char: "\ud83d\udce9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  incoming_envelope: {
+    keywords: [ "email", "inbox" ],
+    char: "\ud83d\udce8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  "e-mail": {
+    keywords: [ "communication", "inbox" ],
+    char: "\ud83d\udce7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  love_letter: {
+    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
+    char: "\ud83d\udc8c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  postbox: {
+    keywords: [ "email", "letter", "envelope" ],
+    char: "\ud83d\udcee",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_closed: {
+    keywords: [ "email", "communication", "inbox" ],
+    char: "\ud83d\udcea",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox: {
+    keywords: [ "email", "inbox", "communication" ],
+    char: "\ud83d\udceb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_with_mail: {
+    keywords: [ "email", "inbox", "communication" ],
+    char: "\ud83d\udcec",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mailbox_with_no_mail: {
+    keywords: [ "email", "inbox" ],
+    char: "\ud83d\udced",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  package: {
+    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
+    char: "\ud83d\udce6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  postal_horn: {
+    keywords: [ "instrument", "music" ],
+    char: "\ud83d\udcef",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  inbox_tray: {
+    keywords: [ "email", "documents" ],
+    char: "\ud83d\udce5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  outbox_tray: {
+    keywords: [ "inbox", "email" ],
+    char: "\ud83d\udce4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  scroll: {
+    keywords: [ "documents", "ancient", "history", "paper" ],
+    char: "\ud83d\udcdc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  page_with_curl: {
+    keywords: [ "documents", "office", "paper" ],
+    char: "\ud83d\udcc3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bookmark_tabs: {
+    keywords: [ "favorite", "save", "order", "tidy" ],
+    char: "\ud83d\udcd1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  receipt: {
+    keywords: [ "accounting", "expenses" ],
+    char: "\ud83e\uddfe",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  bar_chart: {
+    keywords: [ "graph", "presentation", "stats" ],
+    char: "\ud83d\udcca",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chart_with_upwards_trend: {
+    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
+    char: "\ud83d\udcc8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  chart_with_downwards_trend: {
+    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
+    char: "\ud83d\udcc9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  page_facing_up: {
+    keywords: [ "documents", "office", "paper", "information" ],
+    char: "\ud83d\udcc4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  date: {
+    keywords: [ "calendar", "schedule" ],
+    char: "\ud83d\udcc5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  calendar: {
+    keywords: [ "schedule", "date", "planning" ],
+    char: "\ud83d\udcc6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  spiral_calendar: {
+    keywords: [ "date", "schedule", "planning" ],
+    char: "\ud83d\uddd3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_index: {
+    keywords: [ "business", "stationery" ],
+    char: "\ud83d\udcc7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_file_box: {
+    keywords: [ "business", "stationery" ],
+    char: "\ud83d\uddc3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ballot_box: {
+    keywords: [ "election", "vote" ],
+    char: "\ud83d\uddf3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  file_cabinet: {
+    keywords: [ "filing", "organizing" ],
+    char: "\ud83d\uddc4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  clipboard: {
+    keywords: [ "stationery", "documents" ],
+    char: "\ud83d\udccb",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  spiral_notepad: {
+    keywords: [ "memo", "stationery" ],
+    char: "\ud83d\uddd2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  file_folder: {
+    keywords: [ "documents", "business", "office" ],
+    char: "\ud83d\udcc1",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  open_file_folder: {
+    keywords: [ "documents", "load" ],
+    char: "\ud83d\udcc2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  card_index_dividers: {
+    keywords: [ "organizing", "business", "stationery" ],
+    char: "\ud83d\uddc2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  newspaper_roll: {
+    keywords: [ "press", "headline" ],
+    char: "\ud83d\uddde",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  newspaper: {
+    keywords: [ "press", "headline" ],
+    char: "\ud83d\udcf0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  notebook: {
+    keywords: [ "stationery", "record", "notes", "paper", "study" ],
+    char: "\ud83d\udcd3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  closed_book: {
+    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
+    char: "\ud83d\udcd5",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  green_book: {
+    keywords: [ "read", "library", "knowledge", "study" ],
+    char: "\ud83d\udcd7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  blue_book: {
+    keywords: [ "read", "library", "knowledge", "learn", "study" ],
+    char: "\ud83d\udcd8",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  orange_book: {
+    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
+    char: "\ud83d\udcd9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  notebook_with_decorative_cover: {
+    keywords: [ "classroom", "notes", "record", "paper", "study" ],
+    char: "\ud83d\udcd4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  ledger: {
+    keywords: [ "notes", "paper" ],
+    char: "\ud83d\udcd2",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  books: {
+    keywords: [ "literature", "library", "study" ],
+    char: "\ud83d\udcda",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  open_book: {
+    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
+    char: "\ud83d\udcd6",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  safety_pin: {
+    keywords: [ "diaper" ],
+    char: "\ud83e\uddf7",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  link: {
+    keywords: [ "rings", "url" ],
+    char: "\ud83d\udd17",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paperclip: {
+    keywords: [ "documents", "stationery" ],
+    char: "\ud83d\udcce",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paperclips: {
+    keywords: [ "documents", "stationery" ],
+    char: "\ud83d\udd87",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  scissors: {
+    keywords: [ "stationery", "cut" ],
+    char: "\u2702\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  triangular_ruler: {
+    keywords: [ "stationery", "math", "architect", "sketch" ],
+    char: "\ud83d\udcd0",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  straight_ruler: {
+    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
+    char: "\ud83d\udccf",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  abacus: {
+    keywords: [ "calculation" ],
+    char: "\ud83e\uddee",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pushpin: {
+    keywords: [ "stationery", "mark", "here" ],
+    char: "\ud83d\udccc",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  round_pushpin: {
+    keywords: [ "stationery", "location", "map", "here" ],
+    char: "\ud83d\udccd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  triangular_flag_on_post: {
+    keywords: [ "mark", "milestone", "place" ],
+    char: "\ud83d\udea9",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  white_flag: {
+    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
+    char: "\ud83c\udff3",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  black_flag: {
+    keywords: [ "pirate" ],
+    char: "\ud83c\udff4",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  rainbow_flag: {
+    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
+    char: "\ud83c\udff3\ufe0f\u200d\ud83c\udf08",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  closed_lock_with_key: {
+    keywords: [ "security", "privacy" ],
+    char: "\ud83d\udd10",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lock: {
+    keywords: [ "security", "password", "padlock" ],
+    char: "\ud83d\udd12",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  unlock: {
+    keywords: [ "privacy", "security" ],
+    char: "\ud83d\udd13",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  lock_with_ink_pen: {
+    keywords: [ "security", "secret" ],
+    char: "\ud83d\udd0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pen: {
+    keywords: [ "stationery", "writing", "write" ],
+    char: "\ud83d\udd8a",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  fountain_pen: {
+    keywords: [ "stationery", "writing", "write" ],
+    char: "\ud83d\udd8b",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  black_nib: {
+    keywords: [ "pen", "stationery", "writing", "write" ],
+    char: "\u2712\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  memo: {
+    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
+    char: "\ud83d\udcdd",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  pencil2: {
+    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
+    char: "\u270f\ufe0f",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  crayon: {
+    keywords: [ "drawing", "creativity" ],
+    char: "\ud83d\udd8d",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  paintbrush: {
+    keywords: [ "drawing", "creativity", "art" ],
+    char: "\ud83d\udd8c",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mag: {
+    keywords: [ "search", "zoom", "find", "detective" ],
+    char: "\ud83d\udd0d",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  mag_right: {
+    keywords: [ "search", "zoom", "find", "detective" ],
+    char: "\ud83d\udd0e",
+    fitzpatrick_scale: false,
+    category: "objects"
+  },
+  heart: {
+    keywords: [ "love", "like", "valentines" ],
+    char: "\u2764\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  orange_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83e\udde1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  yellow_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc9b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  green_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc9a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  blue_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc99",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  purple_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc9c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_heart: {
+    keywords: [ "evil" ],
+    char: "\ud83d\udda4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  broken_heart: {
+    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
+    char: "\ud83d\udc94",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_heart_exclamation: {
+    keywords: [ "decoration", "love" ],
+    char: "\u2763",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  two_hearts: {
+    keywords: [ "love", "like", "affection", "valentines", "heart" ],
+    char: "\ud83d\udc95",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  revolving_hearts: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc9e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heartbeat: {
+    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
+    char: "\ud83d\udc93",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heartpulse: {
+    keywords: [ "like", "love", "affection", "valentines", "pink" ],
+    char: "\ud83d\udc97",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sparkling_heart: {
+    keywords: [ "love", "like", "affection", "valentines" ],
+    char: "\ud83d\udc96",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cupid: {
+    keywords: [ "love", "like", "heart", "affection", "valentines" ],
+    char: "\ud83d\udc98",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  gift_heart: {
+    keywords: [ "love", "valentines" ],
+    char: "\ud83d\udc9d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heart_decoration: {
+    keywords: [ "purple-square", "love", "like" ],
+    char: "\ud83d\udc9f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  peace_symbol: {
+    keywords: [ "hippie" ],
+    char: "\u262e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  latin_cross: {
+    keywords: [ "christianity" ],
+    char: "\u271d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  star_and_crescent: {
+    keywords: [ "islam" ],
+    char: "\u262a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  om: {
+    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
+    char: "\ud83d\udd49",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wheel_of_dharma: {
+    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
+    char: "\u2638",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  star_of_david: {
+    keywords: [ "judaism" ],
+    char: "\u2721",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  six_pointed_star: {
+    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
+    char: "\ud83d\udd2f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  menorah: {
+    keywords: [ "hanukkah", "candles", "jewish" ],
+    char: "\ud83d\udd4e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  yin_yang: {
+    keywords: [ "balance" ],
+    char: "\u262f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  orthodox_cross: {
+    keywords: [ "suppedaneum", "religion" ],
+    char: "\u2626",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  place_of_worship: {
+    keywords: [ "religion", "church", "temple", "prayer" ],
+    char: "\ud83d\uded0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ophiuchus: {
+    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
+    char: "\u26ce",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  aries: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: "\u2648",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  taurus: {
+    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
+    char: "\u2649",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  gemini: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: "\u264a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cancer: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: "\u264b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  leo: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: "\u264c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  virgo: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: "\u264d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  libra: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: "\u264e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  scorpius: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
+    char: "\u264f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sagittarius: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: "\u2650",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  capricorn: {
+    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
+    char: "\u2651",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  aquarius: {
+    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
+    char: "\u2652",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  pisces: {
+    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
+    char: "\u2653",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  id: {
+    keywords: [ "purple-square", "words" ],
+    char: "\ud83c\udd94",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  atom_symbol: {
+    keywords: [ "science", "physics", "chemistry" ],
+    char: "\u269b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7a7a: {
+    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
+    char: "\ud83c\ude33",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u5272: {
+    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
+    char: "\ud83c\ude39",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  radioactive: {
+    keywords: [ "nuclear", "danger" ],
+    char: "\u2622",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  biohazard: {
+    keywords: [ "danger" ],
+    char: "\u2623",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mobile_phone_off: {
+    keywords: [ "mute", "orange-square", "silence", "quiet" ],
+    char: "\ud83d\udcf4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  vibration_mode: {
+    keywords: [ "orange-square", "phone" ],
+    char: "\ud83d\udcf3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6709: {
+    keywords: [ "orange-square", "chinese", "have", "kanji" ],
+    char: "\ud83c\ude36",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7121: {
+    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
+    char: "\ud83c\ude1a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7533: {
+    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
+    char: "\ud83c\ude38",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u55b6: {
+    keywords: [ "japanese", "opening hours", "orange-square" ],
+    char: "\ud83c\ude3a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6708: {
+    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
+    char: "\ud83c\ude37\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight_pointed_black_star: {
+    keywords: [ "orange-square", "shape", "polygon" ],
+    char: "\u2734\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  vs: {
+    keywords: [ "words", "orange-square" ],
+    char: "\ud83c\udd9a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  accept: {
+    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
+    char: "\ud83c\ude51",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_flower: {
+    keywords: [ "japanese", "spring" ],
+    char: "\ud83d\udcae",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ideograph_advantage: {
+    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
+    char: "\ud83c\ude50",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  secret: {
+    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
+    char: "\u3299\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  congratulations: {
+    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
+    char: "\u3297\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u5408: {
+    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
+    char: "\ud83c\ude34",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6e80: {
+    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
+    char: "\ud83c\ude35",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u7981: {
+    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
+    char: "\ud83c\ude32",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  a: {
+    keywords: [ "red-square", "alphabet", "letter" ],
+    char: "\ud83c\udd70\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  b: {
+    keywords: [ "red-square", "alphabet", "letter" ],
+    char: "\ud83c\udd71\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ab: {
+    keywords: [ "red-square", "alphabet" ],
+    char: "\ud83c\udd8e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cl: {
+    keywords: [ "alphabet", "words", "red-square" ],
+    char: "\ud83c\udd91",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  o2: {
+    keywords: [ "alphabet", "red-square", "letter" ],
+    char: "\ud83c\udd7e\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sos: {
+    keywords: [ "help", "red-square", "words", "emergency", "911" ],
+    char: "\ud83c\udd98",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_entry: {
+    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
+    char: "\u26d4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  name_badge: {
+    keywords: [ "fire", "forbid" ],
+    char: "\ud83d\udcdb",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_entry_sign: {
+    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
+    char: "\ud83d\udeab",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  x: {
+    keywords: [ "no", "delete", "remove", "cancel", "red" ],
+    char: "\u274c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  o: {
+    keywords: [ "circle", "round" ],
+    char: "\u2b55",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  stop_sign: {
+    keywords: [ "stop" ],
+    char: "\ud83d\uded1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  anger: {
+    keywords: [ "angry", "mad" ],
+    char: "\ud83d\udca2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hotsprings: {
+    keywords: [ "bath", "warm", "relax" ],
+    char: "\u2668\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_pedestrians: {
+    keywords: [ "rules", "crossing", "walking", "circle" ],
+    char: "\ud83d\udeb7",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  do_not_litter: {
+    keywords: [ "trash", "bin", "garbage", "circle" ],
+    char: "\ud83d\udeaf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_bicycles: {
+    keywords: [ "cyclist", "prohibited", "circle" ],
+    char: "\ud83d\udeb3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  "non-potable_water": {
+    keywords: [ "drink", "faucet", "tap", "circle" ],
+    char: "\ud83d\udeb1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  underage: {
+    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
+    char: "\ud83d\udd1e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_mobile_phones: {
+    keywords: [ "iphone", "mute", "circle" ],
+    char: "\ud83d\udcf5",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  exclamation: {
+    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
+    char: "\u2757",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grey_exclamation: {
+    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
+    char: "\u2755",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  question: {
+    keywords: [ "doubt", "confused" ],
+    char: "\u2753",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  grey_question: {
+    keywords: [ "doubts", "gray", "huh", "confused" ],
+    char: "\u2754",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  bangbang: {
+    keywords: [ "exclamation", "surprise" ],
+    char: "\u203c\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  interrobang: {
+    keywords: [ "wat", "punctuation", "surprise" ],
+    char: "\u2049\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  100: {
+    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
+    char: "\ud83d\udcaf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  low_brightness: {
+    keywords: [ "sun", "afternoon", "warm", "summer" ],
+    char: "\ud83d\udd05",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  high_brightness: {
+    keywords: [ "sun", "light" ],
+    char: "\ud83d\udd06",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  trident: {
+    keywords: [ "weapon", "spear" ],
+    char: "\ud83d\udd31",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  fleur_de_lis: {
+    keywords: [ "decorative", "scout" ],
+    char: "\u269c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  part_alternation_mark: {
+    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
+    char: "\u303d\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  warning: {
+    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
+    char: "\u26a0\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  children_crossing: {
+    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
+    char: "\ud83d\udeb8",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  beginner: {
+    keywords: [ "badge", "shield" ],
+    char: "\ud83d\udd30",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  recycle: {
+    keywords: [ "arrow", "environment", "garbage", "trash" ],
+    char: "\u267b\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  u6307: {
+    keywords: [ "chinese", "point", "green-square", "kanji" ],
+    char: "\ud83c\ude2f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  chart: {
+    keywords: [ "green-square", "graph", "presentation", "stats" ],
+    char: "\ud83d\udcb9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sparkle: {
+    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
+    char: "\u2747\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight_spoked_asterisk: {
+    keywords: [ "star", "sparkle", "green-square" ],
+    char: "\u2733\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  negative_squared_cross_mark: {
+    keywords: [ "x", "green-square", "no", "deny" ],
+    char: "\u274e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_check_mark: {
+    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
+    char: "\u2705",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  diamond_shape_with_a_dot_inside: {
+    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
+    char: "\ud83d\udca0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cyclone: {
+    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
+    char: "\ud83c\udf00",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loop: {
+    keywords: [ "tape", "cassette" ],
+    char: "\u27bf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  globe_with_meridians: {
+    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
+    char: "\ud83c\udf10",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  m: {
+    keywords: [ "alphabet", "blue-circle", "letter" ],
+    char: "\u24c2\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  atm: {
+    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
+    char: "\ud83c\udfe7",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sa: {
+    keywords: [ "japanese", "blue-square", "katakana" ],
+    char: "\ud83c\ude02\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  passport_control: {
+    keywords: [ "custom", "blue-square" ],
+    char: "\ud83d\udec2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  customs: {
+    keywords: [ "passport", "border", "blue-square" ],
+    char: "\ud83d\udec3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  baggage_claim: {
+    keywords: [ "blue-square", "airport", "transport" ],
+    char: "\ud83d\udec4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_luggage: {
+    keywords: [ "blue-square", "travel" ],
+    char: "\ud83d\udec5",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wheelchair: {
+    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
+    char: "\u267f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_smoking: {
+    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
+    char: "\ud83d\udead",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wc: {
+    keywords: [ "toilet", "restroom", "blue-square" ],
+    char: "\ud83d\udebe",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  parking: {
+    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
+    char: "\ud83c\udd7f\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  potable_water: {
+    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
+    char: "\ud83d\udeb0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mens: {
+    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
+    char: "\ud83d\udeb9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  womens: {
+    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
+    char: "\ud83d\udeba",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  baby_symbol: {
+    keywords: [ "orange-square", "child" ],
+    char: "\ud83d\udebc",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  restroom: {
+    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
+    char: "\ud83d\udebb",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  put_litter_in_its_place: {
+    keywords: [ "blue-square", "sign", "human", "info" ],
+    char: "\ud83d\udeae",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cinema: {
+    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
+    char: "\ud83c\udfa6",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  signal_strength: {
+    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
+    char: "\ud83d\udcf6",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  koko: {
+    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
+    char: "\ud83c\ude01",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ng: {
+    keywords: [ "blue-square", "words", "shape", "icon" ],
+    char: "\ud83c\udd96",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ok: {
+    keywords: [ "good", "agree", "yes", "blue-square" ],
+    char: "\ud83c\udd97",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  up: {
+    keywords: [ "blue-square", "above", "high" ],
+    char: "\ud83c\udd99",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  cool: {
+    keywords: [ "words", "blue-square" ],
+    char: "\ud83c\udd92",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  new: {
+    keywords: [ "blue-square", "words", "start" ],
+    char: "\ud83c\udd95",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  free: {
+    keywords: [ "blue-square", "words" ],
+    char: "\ud83c\udd93",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  zero: {
+    keywords: [ "0", "numbers", "blue-square", "null" ],
+    char: "0\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  one: {
+    keywords: [ "blue-square", "numbers", "1" ],
+    char: "1\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  two: {
+    keywords: [ "numbers", "2", "prime", "blue-square" ],
+    char: "2\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  three: {
+    keywords: [ "3", "numbers", "prime", "blue-square" ],
+    char: "3\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  four: {
+    keywords: [ "4", "numbers", "blue-square" ],
+    char: "4\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  five: {
+    keywords: [ "5", "numbers", "blue-square", "prime" ],
+    char: "5\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  six: {
+    keywords: [ "6", "numbers", "blue-square" ],
+    char: "6\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  seven: {
+    keywords: [ "7", "numbers", "blue-square", "prime" ],
+    char: "7\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eight: {
+    keywords: [ "8", "blue-square", "numbers" ],
+    char: "8\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  nine: {
+    keywords: [ "blue-square", "numbers", "9" ],
+    char: "9\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  keycap_ten: {
+    keywords: [ "numbers", "10", "blue-square" ],
+    char: "\ud83d\udd1f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  asterisk: {
+    keywords: [ "star", "keycap" ],
+    char: "*\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  1234: {
+    keywords: [ "numbers", "blue-square" ],
+    char: "\ud83d\udd22",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  eject_button: {
+    keywords: [ "blue-square" ],
+    char: "\u23cf\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_forward: {
+    keywords: [ "blue-square", "right", "direction", "play" ],
+    char: "\u25b6\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  pause_button: {
+    keywords: [ "pause", "blue-square" ],
+    char: "\u23f8",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  next_track_button: {
+    keywords: [ "forward", "next", "blue-square" ],
+    char: "\u23ed",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  stop_button: {
+    keywords: [ "blue-square" ],
+    char: "\u23f9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  record_button: {
+    keywords: [ "blue-square" ],
+    char: "\u23fa",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  play_or_pause_button: {
+    keywords: [ "blue-square", "play", "pause" ],
+    char: "\u23ef",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  previous_track_button: {
+    keywords: [ "backward" ],
+    char: "\u23ee",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  fast_forward: {
+    keywords: [ "blue-square", "play", "speed", "continue" ],
+    char: "\u23e9",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  rewind: {
+    keywords: [ "play", "blue-square" ],
+    char: "\u23ea",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  twisted_rightwards_arrows: {
+    keywords: [ "blue-square", "shuffle", "music", "random" ],
+    char: "\ud83d\udd00",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  repeat: {
+    keywords: [ "loop", "record" ],
+    char: "\ud83d\udd01",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  repeat_one: {
+    keywords: [ "blue-square", "loop" ],
+    char: "\ud83d\udd02",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_backward: {
+    keywords: [ "blue-square", "left", "direction" ],
+    char: "\u25c0\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up_small: {
+    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
+    char: "\ud83d\udd3c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_down_small: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: "\ud83d\udd3d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_double_up: {
+    keywords: [ "blue-square", "direction", "top" ],
+    char: "\u23eb",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_double_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: "\u23ec",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_right: {
+    keywords: [ "blue-square", "next" ],
+    char: "\u27a1\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_left: {
+    keywords: [ "blue-square", "previous", "back" ],
+    char: "\u2b05\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up: {
+    keywords: [ "blue-square", "continue", "top", "direction" ],
+    char: "\u2b06\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: "\u2b07\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_upper_right: {
+    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
+    char: "\u2197\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_lower_right: {
+    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
+    char: "\u2198\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_lower_left: {
+    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
+    char: "\u2199\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_upper_left: {
+    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
+    char: "\u2196\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_up_down: {
+    keywords: [ "blue-square", "direction", "way", "vertical" ],
+    char: "\u2195\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_right_arrow: {
+    keywords: [ "shape", "direction", "horizontal", "sideways" ],
+    char: "\u2194\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrows_counterclockwise: {
+    keywords: [ "blue-square", "sync", "cycle" ],
+    char: "\ud83d\udd04",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_right_hook: {
+    keywords: [ "blue-square", "return", "rotate", "direction" ],
+    char: "\u21aa\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  leftwards_arrow_with_hook: {
+    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
+    char: "\u21a9\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_heading_up: {
+    keywords: [ "blue-square", "direction", "top" ],
+    char: "\u2934\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrow_heading_down: {
+    keywords: [ "blue-square", "direction", "bottom" ],
+    char: "\u2935\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hash: {
+    keywords: [ "symbol", "blue-square", "twitter" ],
+    char: "#\ufe0f\u20e3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  information_source: {
+    keywords: [ "blue-square", "alphabet", "letter" ],
+    char: "\u2139\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  abc: {
+    keywords: [ "blue-square", "alphabet" ],
+    char: "\ud83d\udd24",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  abcd: {
+    keywords: [ "blue-square", "alphabet" ],
+    char: "\ud83d\udd21",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  capital_abcd: {
+    keywords: [ "alphabet", "words", "blue-square" ],
+    char: "\ud83d\udd20",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  symbols: {
+    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
+    char: "\ud83d\udd23",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  musical_note: {
+    keywords: [ "score", "tone", "sound" ],
+    char: "\ud83c\udfb5",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  notes: {
+    keywords: [ "music", "score" ],
+    char: "\ud83c\udfb6",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  wavy_dash: {
+    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
+    char: "\u3030\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  curly_loop: {
+    keywords: [ "scribble", "draw", "shape", "squiggle" ],
+    char: "\u27b0",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_check_mark: {
+    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
+    char: "\u2714\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  arrows_clockwise: {
+    keywords: [ "sync", "cycle", "round", "repeat" ],
+    char: "\ud83d\udd03",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_plus_sign: {
+    keywords: [ "math", "calculation", "addition", "more", "increase" ],
+    char: "\u2795",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_minus_sign: {
+    keywords: [ "math", "calculation", "subtract", "less" ],
+    char: "\u2796",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_division_sign: {
+    keywords: [ "divide", "math", "calculation" ],
+    char: "\u2797",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_multiplication_x: {
+    keywords: [ "math", "calculation" ],
+    char: "\u2716\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  infinity: {
+    keywords: [ "forever" ],
+    char: "\u267e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  heavy_dollar_sign: {
+    keywords: [ "money", "sales", "payment", "currency", "buck" ],
+    char: "\ud83d\udcb2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  currency_exchange: {
+    keywords: [ "money", "sales", "dollar", "travel" ],
+    char: "\ud83d\udcb1",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  copyright: {
+    keywords: [ "ip", "license", "circle", "law", "legal" ],
+    char: "\xa9\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  registered: {
+    keywords: [ "alphabet", "circle" ],
+    char: "\xae\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  tm: {
+    keywords: [ "trademark", "brand", "law", "legal" ],
+    char: "\u2122\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  end: {
+    keywords: [ "words", "arrow" ],
+    char: "\ud83d\udd1a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  back: {
+    keywords: [ "arrow", "words", "return" ],
+    char: "\ud83d\udd19",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  on: {
+    keywords: [ "arrow", "words" ],
+    char: "\ud83d\udd1b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  top: {
+    keywords: [ "words", "blue-square" ],
+    char: "\ud83d\udd1d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  soon: {
+    keywords: [ "arrow", "words" ],
+    char: "\ud83d\udd1c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  ballot_box_with_check: {
+    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
+    char: "\u2611\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  radio_button: {
+    keywords: [ "input", "old", "music", "circle" ],
+    char: "\ud83d\udd18",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_circle: {
+    keywords: [ "shape", "round" ],
+    char: "\u26aa",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_circle: {
+    keywords: [ "shape", "button", "round" ],
+    char: "\u26ab",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  red_circle: {
+    keywords: [ "shape", "error", "danger" ],
+    char: "\ud83d\udd34",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_blue_circle: {
+    keywords: [ "shape", "icon", "button" ],
+    char: "\ud83d\udd35",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_orange_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: "\ud83d\udd38",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_blue_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: "\ud83d\udd39",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_orange_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: "\ud83d\udd36",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  large_blue_diamond: {
+    keywords: [ "shape", "jewel", "gem" ],
+    char: "\ud83d\udd37",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_red_triangle: {
+    keywords: [ "shape", "direction", "up", "top" ],
+    char: "\ud83d\udd3a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_small_square: {
+    keywords: [ "shape", "icon" ],
+    char: "\u25aa\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_small_square: {
+    keywords: [ "shape", "icon" ],
+    char: "\u25ab\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_large_square: {
+    keywords: [ "shape", "icon", "button" ],
+    char: "\u2b1b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_large_square: {
+    keywords: [ "shape", "icon", "stone", "button" ],
+    char: "\u2b1c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  small_red_triangle_down: {
+    keywords: [ "shape", "direction", "bottom" ],
+    char: "\ud83d\udd3b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_medium_square: {
+    keywords: [ "shape", "button", "icon" ],
+    char: "\u25fc\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_medium_square: {
+    keywords: [ "shape", "stone", "icon" ],
+    char: "\u25fb\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_medium_small_square: {
+    keywords: [ "icon", "shape", "button" ],
+    char: "\u25fe",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_medium_small_square: {
+    keywords: [ "shape", "stone", "icon", "button" ],
+    char: "\u25fd",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_square_button: {
+    keywords: [ "shape", "input", "frame" ],
+    char: "\ud83d\udd32",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  white_square_button: {
+    keywords: [ "shape", "input" ],
+    char: "\ud83d\udd33",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  speaker: {
+    keywords: [ "sound", "volume", "silence", "broadcast" ],
+    char: "\ud83d\udd08",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  sound: {
+    keywords: [ "volume", "speaker", "broadcast" ],
+    char: "\ud83d\udd09",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loud_sound: {
+    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
+    char: "\ud83d\udd0a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mute: {
+    keywords: [ "sound", "volume", "silence", "quiet" ],
+    char: "\ud83d\udd07",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mega: {
+    keywords: [ "sound", "speaker", "volume" ],
+    char: "\ud83d\udce3",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  loudspeaker: {
+    keywords: [ "volume", "sound" ],
+    char: "\ud83d\udce2",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  bell: {
+    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
+    char: "\ud83d\udd14",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  no_bell: {
+    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
+    char: "\ud83d\udd15",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  black_joker: {
+    keywords: [ "poker", "cards", "game", "play", "magic" ],
+    char: "\ud83c\udccf",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  mahjong: {
+    keywords: [ "game", "play", "chinese", "kanji" ],
+    char: "\ud83c\udc04",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  spades: {
+    keywords: [ "poker", "cards", "suits", "magic" ],
+    char: "\u2660\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clubs: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    char: "\u2663\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  hearts: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    char: "\u2665\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  diamonds: {
+    keywords: [ "poker", "cards", "magic", "suits" ],
+    char: "\u2666\ufe0f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  flower_playing_cards: {
+    keywords: [ "game", "sunset", "red" ],
+    char: "\ud83c\udfb4",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  thought_balloon: {
+    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
+    char: "\ud83d\udcad",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  right_anger_bubble: {
+    keywords: [ "caption", "speech", "thinking", "mad" ],
+    char: "\ud83d\uddef",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  speech_balloon: {
+    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
+    char: "\ud83d\udcac",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  left_speech_bubble: {
+    keywords: [ "words", "message", "talk", "chatting" ],
+    char: "\ud83d\udde8",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd50",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock2: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd51",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock3: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd52",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock4: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd53",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock5: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd54",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock6: {
+    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
+    char: "\ud83d\udd55",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock7: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd56",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock8: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd57",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock9: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd58",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock10: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd59",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock11: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd5a",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock12: {
+    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
+    char: "\ud83d\udd5b",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock130: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd5c",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock230: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd5d",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock330: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd5e",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock430: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd5f",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock530: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd60",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock630: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd61",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock730: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd62",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock830: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd63",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock930: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd64",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1030: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd65",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1130: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd66",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  clock1230: {
+    keywords: [ "time", "late", "early", "schedule" ],
+    char: "\ud83d\udd67",
+    fitzpatrick_scale: false,
+    category: "symbols"
+  },
+  afghanistan: {
+    keywords: [ "af", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  aland_islands: {
+    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  albania: {
+    keywords: [ "al", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  algeria: {
+    keywords: [ "dz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde9\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  american_samoa: {
+    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  andorra: {
+    keywords: [ "ad", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  angola: {
+    keywords: [ "ao", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  anguilla: {
+    keywords: [ "ai", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  antarctica: {
+    keywords: [ "aq", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  antigua_barbuda: {
+    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  argentina: {
+    keywords: [ "ar", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  armenia: {
+    keywords: [ "am", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  aruba: {
+    keywords: [ "aw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  australia: {
+    keywords: [ "au", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  austria: {
+    keywords: [ "at", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  azerbaijan: {
+    keywords: [ "az", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bahamas: {
+    keywords: [ "bs", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bahrain: {
+    keywords: [ "bh", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bangladesh: {
+    keywords: [ "bd", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  barbados: {
+    keywords: [ "bb", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belarus: {
+    keywords: [ "by", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belgium: {
+    keywords: [ "be", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  belize: {
+    keywords: [ "bz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  benin: {
+    keywords: [ "bj", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bermuda: {
+    keywords: [ "bm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bhutan: {
+    keywords: [ "bt", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bolivia: {
+    keywords: [ "bo", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  caribbean_netherlands: {
+    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bosnia_herzegovina: {
+    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  botswana: {
+    keywords: [ "bw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  brazil: {
+    keywords: [ "br", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  british_indian_ocean_territory: {
+    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  british_virgin_islands: {
+    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  brunei: {
+    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  bulgaria: {
+    keywords: [ "bg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  burkina_faso: {
+    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  burundi: {
+    keywords: [ "bi", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cape_verde: {
+    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cambodia: {
+    keywords: [ "kh", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cameroon: {
+    keywords: [ "cm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  canada: {
+    keywords: [ "ca", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  canary_islands: {
+    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cayman_islands: {
+    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  central_african_republic: {
+    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  chad: {
+    keywords: [ "td", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  chile: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cn: {
+    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  christmas_island: {
+    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cocos_islands: {
+    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  colombia: {
+    keywords: [ "co", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  comoros: {
+    keywords: [ "km", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  congo_brazzaville: {
+    keywords: [ "congo", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  congo_kinshasa: {
+    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cook_islands: {
+    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  costa_rica: {
+    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  croatia: {
+    keywords: [ "hr", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udded\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cuba: {
+    keywords: [ "cu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  curacao: {
+    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cyprus: {
+    keywords: [ "cy", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  czech_republic: {
+    keywords: [ "cz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  denmark: {
+    keywords: [ "dk", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde9\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  djibouti: {
+    keywords: [ "dj", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde9\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  dominica: {
+    keywords: [ "dm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde9\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  dominican_republic: {
+    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde9\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ecuador: {
+    keywords: [ "ec", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  egypt: {
+    keywords: [ "eg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  el_salvador: {
+    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  equatorial_guinea: {
+    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  eritrea: {
+    keywords: [ "er", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  estonia: {
+    keywords: [ "ee", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ethiopia: {
+    keywords: [ "et", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  eu: {
+    keywords: [ "european", "union", "flag", "banner" ],
+    char: "\ud83c\uddea\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  falkland_islands: {
+    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddeb\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  faroe_islands: {
+    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddeb\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  fiji: {
+    keywords: [ "fj", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddeb\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  finland: {
+    keywords: [ "fi", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddeb\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  fr: {
+    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
+    char: "\ud83c\uddeb\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_guiana: {
+    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_polynesia: {
+    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  french_southern_territories: {
+    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gabon: {
+    keywords: [ "ga", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gambia: {
+    keywords: [ "gm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  georgia: {
+    keywords: [ "ge", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  de: {
+    keywords: [ "german", "nation", "flag", "country", "banner" ],
+    char: "\ud83c\udde9\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ghana: {
+    keywords: [ "gh", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  gibraltar: {
+    keywords: [ "gi", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  greece: {
+    keywords: [ "gr", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  greenland: {
+    keywords: [ "gl", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  grenada: {
+    keywords: [ "gd", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guadeloupe: {
+    keywords: [ "gp", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guam: {
+    keywords: [ "gu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guatemala: {
+    keywords: [ "gt", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guernsey: {
+    keywords: [ "gg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guinea: {
+    keywords: [ "gn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guinea_bissau: {
+    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  guyana: {
+    keywords: [ "gy", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  haiti: {
+    keywords: [ "ht", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udded\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  honduras: {
+    keywords: [ "hn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udded\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  hong_kong: {
+    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udded\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  hungary: {
+    keywords: [ "hu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udded\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iceland: {
+    keywords: [ "is", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  india: {
+    keywords: [ "in", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  indonesia: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iran: {
+    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  iraq: {
+    keywords: [ "iq", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ireland: {
+    keywords: [ "ie", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  isle_of_man: {
+    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  israel: {
+    keywords: [ "il", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  it: {
+    keywords: [ "italy", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddee\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  cote_divoire: {
+    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jamaica: {
+    keywords: [ "jm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddef\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jp: {
+    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
+    char: "\ud83c\uddef\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jersey: {
+    keywords: [ "je", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddef\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  jordan: {
+    keywords: [ "jo", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddef\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kazakhstan: {
+    keywords: [ "kz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kenya: {
+    keywords: [ "ke", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kiribati: {
+    keywords: [ "ki", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kosovo: {
+    keywords: [ "xk", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfd\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kuwait: {
+    keywords: [ "kw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kyrgyzstan: {
+    keywords: [ "kg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  laos: {
+    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  latvia: {
+    keywords: [ "lv", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lebanon: {
+    keywords: [ "lb", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lesotho: {
+    keywords: [ "ls", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  liberia: {
+    keywords: [ "lr", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  libya: {
+    keywords: [ "ly", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  liechtenstein: {
+    keywords: [ "li", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  lithuania: {
+    keywords: [ "lt", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  luxembourg: {
+    keywords: [ "lu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  macau: {
+    keywords: [ "macao", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  macedonia: {
+    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  madagascar: {
+    keywords: [ "mg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malawi: {
+    keywords: [ "mw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malaysia: {
+    keywords: [ "my", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  maldives: {
+    keywords: [ "mv", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mali: {
+    keywords: [ "ml", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  malta: {
+    keywords: [ "mt", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  marshall_islands: {
+    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  martinique: {
+    keywords: [ "mq", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mauritania: {
+    keywords: [ "mr", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mauritius: {
+    keywords: [ "mu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mayotte: {
+    keywords: [ "yt", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfe\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mexico: {
+    keywords: [ "mx", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  micronesia: {
+    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddeb\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  moldova: {
+    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  monaco: {
+    keywords: [ "mc", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mongolia: {
+    keywords: [ "mn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  montenegro: {
+    keywords: [ "me", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  montserrat: {
+    keywords: [ "ms", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  morocco: {
+    keywords: [ "ma", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  mozambique: {
+    keywords: [ "mz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  myanmar: {
+    keywords: [ "mm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  namibia: {
+    keywords: [ "na", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nauru: {
+    keywords: [ "nr", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nepal: {
+    keywords: [ "np", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  netherlands: {
+    keywords: [ "nl", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  new_caledonia: {
+    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  new_zealand: {
+    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nicaragua: {
+    keywords: [ "ni", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  niger: {
+    keywords: [ "ne", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  nigeria: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  niue: {
+    keywords: [ "nu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  norfolk_island: {
+    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  northern_mariana_islands: {
+    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf2\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  north_korea: {
+    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddf5",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  norway: {
+    keywords: [ "no", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf3\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  oman: {
+    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf4\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pakistan: {
+    keywords: [ "pk", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  palau: {
+    keywords: [ "pw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  palestinian_territories: {
+    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  panama: {
+    keywords: [ "pa", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  papua_new_guinea: {
+    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  paraguay: {
+    keywords: [ "py", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  peru: {
+    keywords: [ "pe", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  philippines: {
+    keywords: [ "ph", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pitcairn_islands: {
+    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  poland: {
+    keywords: [ "pl", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  portugal: {
+    keywords: [ "pt", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  puerto_rico: {
+    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  qatar: {
+    keywords: [ "qa", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf6\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  reunion: {
+    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf7\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  romania: {
+    keywords: [ "ro", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf7\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ru: {
+    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf7\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  rwanda: {
+    keywords: [ "rw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf7\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_barthelemy: {
+    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde7\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_helena: {
+    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_kitts_nevis: {
+    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_lucia: {
+    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_pierre_miquelon: {
+    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf5\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  st_vincent_grenadines: {
+    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  samoa: {
+    keywords: [ "ws", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfc\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  san_marino: {
+    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sao_tome_principe: {
+    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  saudi_arabia: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  senegal: {
+    keywords: [ "sn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  serbia: {
+    keywords: [ "rs", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf7\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  seychelles: {
+    keywords: [ "sc", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sierra_leone: {
+    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  singapore: {
+    keywords: [ "sg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sint_maarten: {
+    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddfd",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  slovakia: {
+    keywords: [ "sk", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  slovenia: {
+    keywords: [ "si", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  solomon_islands: {
+    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  somalia: {
+    keywords: [ "so", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_africa: {
+    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddff\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_georgia_south_sandwich_islands: {
+    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddec\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  kr: {
+    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
+    char: "\ud83c\uddf0\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  south_sudan: {
+    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  es: {
+    keywords: [ "spain", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sri_lanka: {
+    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf1\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sudan: {
+    keywords: [ "sd", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\udde9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  suriname: {
+    keywords: [ "sr", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  swaziland: {
+    keywords: [ "sz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  sweden: {
+    keywords: [ "se", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  switzerland: {
+    keywords: [ "ch", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde8\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  syria: {
+    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf8\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  taiwan: {
+    keywords: [ "tw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tajikistan: {
+    keywords: [ "tj", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddef",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tanzania: {
+    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  thailand: {
+    keywords: [ "th", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  timor_leste: {
+    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf1",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  togo: {
+    keywords: [ "tg", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tokelau: {
+    keywords: [ "tk", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf0",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tonga: {
+    keywords: [ "to", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf4",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  trinidad_tobago: {
+    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf9",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tunisia: {
+    keywords: [ "tn", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tr: {
+    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  turkmenistan: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  turks_caicos_islands: {
+    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\udde8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  tuvalu: {
+    keywords: [ "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddf9\ud83c\uddfb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uganda: {
+    keywords: [ "ug", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfa\ud83c\uddec",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  ukraine: {
+    keywords: [ "ua", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfa\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  united_arab_emirates: {
+    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\udde6\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uk: {
+    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
+    char: "\ud83c\uddec\ud83c\udde7",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  england: {
+    keywords: [ "flag", "english" ],
+    char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  scotland: {
+    keywords: [ "flag", "scottish" ],
+    char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  wales: {
+    keywords: [ "flag", "welsh" ],
+    char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  us: {
+    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfa\ud83c\uddf8",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  us_virgin_islands: {
+    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\uddee",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uruguay: {
+    keywords: [ "uy", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfa\ud83c\uddfe",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  uzbekistan: {
+    keywords: [ "uz", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfa\ud83c\uddff",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vanuatu: {
+    keywords: [ "vu", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\uddfa",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vatican_city: {
+    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\udde6",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  venezuela: {
+    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  vietnam: {
+    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfb\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  wallis_futuna: {
+    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfc\ud83c\uddeb",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  western_sahara: {
+    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddea\ud83c\udded",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  yemen: {
+    keywords: [ "ye", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddfe\ud83c\uddea",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  zambia: {
+    keywords: [ "zm", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddff\ud83c\uddf2",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  zimbabwe: {
+    keywords: [ "zw", "flag", "nation", "country", "banner" ],
+    char: "\ud83c\uddff\ud83c\uddfc",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  united_nations: {
+    keywords: [ "un", "flag", "banner" ],
+    char: "\ud83c\uddfa\ud83c\uddf3",
+    fitzpatrick_scale: false,
+    category: "flags"
+  },
+  pirate_flag: {
+    keywords: [ "skull", "crossbones", "flag", "banner" ],
+    char: "\ud83c\udff4\u200d\u2620\ufe0f",
+    fitzpatrick_scale: false,
+    category: "flags"
+  }
+});
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..42cea9ab402c49fd15591275d0e0373e2834acc0
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js
@@ -0,0 +1,2 @@
+// Source: npm package: emojilib, file:emojis.json
+window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:"\ud83e\udd73",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:"\ud83e\udd70",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],char:"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],char:"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],char:"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],char:"\ud83e\udd7a",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],char:"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],char:"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],char:"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:"\ud83e\udd75",fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:"\ud83e\udd76",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],char:"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:"\ud83e\udd74",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],char:"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],char:"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],char:"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],char:"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],char:"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],char:"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],char:"\ud83e\uddb6",fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],char:"\ud83e\uddb5",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],char:"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],char:"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],char:"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],char:"\ud83e\uddb7",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],char:"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],char:"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],char:"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],char:"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],char:"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],char:"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],char:"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],char:"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:"\ud83e\uddb8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:"\ud83e\uddb8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:"\ud83e\uddb9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:"\ud83e\uddb9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],char:"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],char:"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],char:"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],char:"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],char:"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],char:"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],char:"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],char:"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],char:"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],char:"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],char:"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],char:"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:"\ud83e\udd26\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],char:"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],char:"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:"\ud83e\uddf6",fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:"\ud83e\uddf5",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],char:"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:"\ud83e\udd7c",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],char:"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:"\ud83e\udd7f",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],char:"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],char:"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:"\ud83e\udd7e",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],char:"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],char:"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],char:"\ud83e\uddf3",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:"\ud83e\udd7d",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:"\ud83e\udd9d",fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:"\ud83e\udd99",fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:"\ud83e\udd9b",fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:"\ud83e\udd98",fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:"\ud83e\udda1",fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:"\ud83e\udda2",fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:"\ud83e\udd9a",fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:"\ud83e\udd9c",fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:"\ud83e\udd9e",fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:"\ud83e\udd9f",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],char:"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],char:"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:"\ud83e\udd6d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:"\ud83e\udd6c",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:"\ud83e\udd6f",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],char:"\ud83e\uddb4",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],char:"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],char:"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],char:"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],char:"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],char:"\ud83e\uddc1",fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],char:"\ud83e\udd6e",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],char:"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],char:"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],char:"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],char:"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],char:"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],char:"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],char:"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],char:"\ud83e\uddc2",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],char:"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],char:"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],char:"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],char:"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],char:"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],char:"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],char:"\u26be",fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],char:"\ud83e\udd4e",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],char:"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],char:"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],char:"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],char:"\ud83e\udd4f",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],char:"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],char:"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],char:"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],char:"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],char:"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],char:"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],char:"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],char:"\ud83e\udd4d",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],char:"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],char:"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],char:"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],char:"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],char:"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],char:"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],char:"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],char:"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],char:"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],char:"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],char:"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],char:"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],char:"\ud83d\udef9",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],char:"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],char:"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],char:"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],char:"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],char:"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],char:"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],char:"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],char:"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],char:"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],char:"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],char:"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],char:"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],char:"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],char:"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],char:"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],char:"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],char:"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],char:"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],char:"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],char:"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],char:"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],char:"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],char:"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],char:"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],char:"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],char:"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],char:"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],char:"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],char:"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],char:"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],char:"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],char:"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],char:"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],char:"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],char:"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],char:"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],char:"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],char:"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],char:"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],char:"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],char:"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],char:"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],char:"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],char:"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],char:"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],char:"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],char:"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],char:"\ud83e\udde9",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],char:"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],char:"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],char:"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],char:"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],char:"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],char:"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],char:"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],char:"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],char:"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],char:"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],char:"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],char:"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],char:"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],char:"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],char:"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],char:"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],char:"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],char:"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],char:"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],char:"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],char:"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],char:"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],char:"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],char:"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],char:"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],char:"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],char:"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],char:"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],char:"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],char:"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],char:"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],char:"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],char:"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],char:"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],char:"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],char:"\ud83e\udded",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],char:"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],char:"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],char:"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],char:"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],char:"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],char:"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],char:"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],char:"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],char:"\ud83e\uddef",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],char:"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],char:"\u2696",fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],char:"\ud83e\uddf0",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],char:"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],char:"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],char:"\u2699",fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],char:"\ud83e\uddf1",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],char:"\u26d3",fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],char:"\ud83e\uddf2",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],char:"\ud83e\udde8",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],char:"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],char:"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],char:"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],char:"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],char:"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],char:"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],char:"\ud83e\uddff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],char:"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],char:"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],char:"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],char:"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],char:"\ud83e\uddec",fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],char:"\ud83e\udda0",fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],char:"\ud83e\uddeb",fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],char:"\ud83e\uddea",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],char:"\ud83e\uddf9",fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],char:"\ud83e\uddfa",fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],char:"\ud83e\uddfb",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],char:"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],char:"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],char:"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],char:"\ud83e\uddfc",fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],char:"\ud83e\uddfd",fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],char:"\ud83e\uddf4",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],char:"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],char:"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],char:"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],char:"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],char:"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],char:"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],char:"\ud83e\uddf8",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],char:"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],char:"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],char:"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],char:"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],char:"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],char:"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],char:"\ud83e\udde7",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],char:"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],char:"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],char:"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],char:"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],char:"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],char:"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],char:"\ud83e\uddfe",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],char:"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],char:"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],char:"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],char:"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],char:"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],char:"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],char:"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],char:"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],char:"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],char:"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],char:"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],char:"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],char:"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],char:"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],char:"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],char:"\ud83e\uddf7",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],char:"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],char:"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],char:"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],char:"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],char:"\ud83e\uddee",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],char:"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],char:"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],char:"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],char:"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],char:"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],char:"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],char:"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],char:"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],char:"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],char:"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],char:"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],char:"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],char:"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],char:"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],char:"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],char:"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],char:"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],char:"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],char:"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],char:"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],char:"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],char:"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],char:"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],char:"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],char:"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],char:"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],char:"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],char:"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],char:"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],char:"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],char:"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],char:"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],char:"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],char:"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],char:"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],char:"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],char:"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],char:"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],char:"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],char:"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],char:"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},new:{keywords:["blue-square","words","start"],char:"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],char:"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],char:"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],char:"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],char:"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],char:"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],char:"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],char:"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],char:"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],char:"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],char:"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],char:"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],char:"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],char:"\u267e",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],char:"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],char:"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],char:"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],char:"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],char:"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],char:"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],char:"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],char:"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],char:"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],char:"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],char:"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],char:"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],char:"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],char:"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],char:"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],char:"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],char:"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],char:"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],char:"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],char:"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],char:"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],char:"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],char:"\ud83c\uddfa\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],char:"\ud83c\udff4\u200d\u2620\ufe0f",fitzpatrick_scale:!1,category:"flags"}});
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..6fe1d42c56b93e894e15a34744cb42d6a5a1e627
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/emoticons/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function r(){}function i(t){return function(){return t}}function t(t){return t}function n(){return c}var m,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=i(!1),a=i(!(m=null)),c={fold:function(t,n){return t()},isSome:l,isNone:a,getOr:t,getOrThunk:o,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:o,map:n,each:r,bind:n,exists:l,forall:a,filter:function(){return c},toArray:function(){return[]},toString:i("none()")};function o(t){return t()}function g(t){var n=t;return{get:function(){return n},set:function(t){n=t}}}function d(t,n){for(var e=k(t),o=0,r=e.length;o<r;o++){var i=e[o];n(t[i],i)}}function h(t,n){return j.call(t,n)}function s(){var t,n,e=(t=r,n=g(O.none()),{clear:function(){o(),n.set(O.none())},isSet:function(){return n.get().isSome()},get:function(){return n.get()},set:function(t){o(),n.set(O.some(t))}});function o(){return n.get().each(t)}return C(C({},e),{on:function(t){return e.get().each(t)}})}function f(t,n){return-1!==t.indexOf(n)}function v(i,r,t){var a=s(),c=s(),f=i.getParam("emoticons_images_url","https://twemoji.maxcdn.com/v/13.0.1/72x72/","string");i.on("init",function(){_.load(t,r).then(function(t){var n,e,o,l,s,r=(n=i.getParam("emoticons_append",{},"object"),e=function(t){return C({keywords:[],category:"user"},t)},A(n,function(t,n){return{k:n,v:e(t)}}));o=w(t,r),l={},s=[],d(o,function(t,n){var e,o,r,i,a,c={title:n,keywords:t.keywords,char:(i=(r=t).char).length>=(a="<img").length&&i.substr(0,0+a.length)===a?r.char.replace(/src="([^"]+)"/,function(t,n){return'src="'+f+n+'"'}):r.char,category:h(e=D,o=t.category)?e[o]:o},u=void 0!==l[c.category]?l[c.category]:[];l[c.category]=u.concat([c]),s.push(c)}),a.set(l),c.set(s)},function(t){console.log("Failed to load emoticons: "+t),a.set({}),c.set([])})});function e(){return c.get().getOr([])}function u(){return a.isSet()&&c.isSet()}return{listCategories:function(){return[P].concat(k(a.get().getOr({})))},hasLoaded:u,waitForLoad:function(){return u()?x.resolve(!0):new x(function(t,n){var e=15,o=T.setInterval(function(){u()?(T.clearInterval(o),t(!0)):--e<0&&(console.log("Could not load emojis from url: "+r),T.clearInterval(o),n(!1))},100)})},listAll:e,listCategory:function(n){return n===P?e():a.get().bind(function(t){return O.from(t[n])}).getOr([])}}}function y(t,n,e){for(var o,r,i=[],a=n.toLowerCase(),c=e.fold(function(){return l},function(n){return function(t){return n<=t}}),u=0;u<t.length&&(0!==n.length&&(o=t[u],r=a,!f(o.title.toLowerCase(),r)&&!function(t){for(var n=0,e=t.length;n<e;n++)if(f(t[n].toLowerCase(),r))return 1}(o.keywords))||(i.push({value:t[u].char,text:t[u].title,icon:t[u].char}),!c(i.length)));u++);return i}function p(o,i){var e,r,t={pattern:"",results:y(i.listAll(),"",O.some(300))},a=g(P),c=(e=function(t){var n,e=(n=t).getData(),o=a.get(),r=y(i.listCategory(o),e[S],o===P?O.some(300):O.none());n.setData({results:r})},r=null,{cancel:u,throttle:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];u(),r=setTimeout(function(){r=null,e.apply(null,t)},200)}});function u(){m===r||(clearTimeout(r),r=null)}function n(){return{title:"Emoticons",size:"normal",body:{type:"tabpanel",tabs:function(t){for(var n=t.length,e=new Array(n),o=0;o<n;o++){var r=t[o];e[o]={title:r,name:r,items:[l,s]}}return e}(i.listCategories())},initialData:t,onTabChange:function(t,n){a.set(n.newTabName),c.throttle(t)},onChange:c.throttle,onAction:function(t,n){var e;"results"===n.name&&(e=n.value,o.insertContent(e),t.close())},buttons:[{type:"cancel",text:"Close",primary:!0}]}}var l={label:"Search",type:"input",name:S},s={type:"collection",name:"results"},f=o.windowManager.open(n());f.focus(S),i.hasLoaded()||(f.block("Loading emoticons..."),i.waitForLoad().then(function(){f.redial(n()),c.throttle(f),f.focus(S),f.unblock()}).catch(function(t){f.redial({title:"Emoticons",body:{type:"panel",items:[{type:"alertbanner",level:"error",icon:"warning",text:"<p>Could not load emoticons</p>"}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),f.focus(S),f.unblock()}))}function b(t){t.on("PreInit",function(){t.parser.addAttributeFilter("data-emoticon",function(t){!function(t){for(var n,e=0,o=t.length;e<o;e++)(n=t[e]).attr("data-mce-resize","false"),n.attr("data-mce-placeholder","1")}(t)})})}function w(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(0===t.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<t.length;o++){var r,i=t[o];for(r in i)h(i,r)&&(e[r]=(e[r],i[r]))}return e}var u=function(e){function t(){return r}function n(t){return t(e)}var o=i(e),r={fold:function(t,n){return n(e)},isSome:a,isNone:l,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:t,orThunk:t,map:function(t){return u(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?r:c},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},O={some:u,none:n,from:function(t){return null==t?c:u(t)}},C=function(){return(C=Object.assign||function(t){for(var n,e=1,o=arguments.length;e<o;e++)for(var r in n=arguments[e])Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);return t}).apply(this,arguments)},k=Object.keys,j=Object.hasOwnProperty,A=function(t,o){var r={};return d(t,function(t,n){var e=o(t,n);r[e.k]=e.v}),r},_=tinymce.util.Tools.resolve("tinymce.Resource"),T=tinymce.util.Tools.resolve("tinymce.util.Delay"),x=tinymce.util.Tools.resolve("tinymce.util.Promise"),P="All",D={symbols:"Symbols",people:"People",animals_and_nature:"Animals and Nature",food_and_drink:"Food and Drink",activity:"Activity",travel_and_places:"Travel and Places",objects:"Objects",flags:"Flags",user:"User Defined"},S="pattern";e.add("emoticons",function(t,n){var e,o,r,i,a,c,u,l,s=(o=n,r=(e=t).getParam("emoticons_database","emojis","string"),e.getParam("emoticons_database_url",o+"/js/"+r+e.suffix+".js","string")),f=t.getParam("emoticons_database_id","tinymce.plugins.emoticons","string"),m=v(t,s,f);function g(){return c.execCommand("mceEmoticons")}a=m,(i=t).addCommand("mceEmoticons",function(){return p(i,a)}),(c=t).ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:g}),c.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:g}),l=m,(u=t).ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(t,n){return l.waitForLoad().then(function(){return y(l.listAll(),t,O.some(n))})},onAction:function(t,n,e){u.selection.setRng(n),u.insertContent(e),t.hide()}}),b(t)})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/fullpage/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/fullpage/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c530240f5cde11332d964ae00e8c11ec2f4ef210
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/fullpage/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function i(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function _(e){return e.getParam("fullpage_hide_in_source_view")}function b(e){return e.getParam("fullpage_default_encoding")}function k(e){return e.getParam("fullpage_default_font_family")}function x(e){return e.getParam("fullpage_default_font_size")}function C(e,t){return n({validate:!1,root_name:"#document"},e.schema).parse(t,{format:"xhtml"})}function c(u,m){u.addCommand("mceFullPageProperties",function(){var l,i,o,e,t,n,r,a,c,s;function d(e,t){return e.attr(t)||""}t=l=u,n=(i=m).get(),c=C(t,n),(s={}).fontface=k(t),s.fontsize=x(t),7===(r=c.firstChild).type&&(s.xml_pi=!0,(a=/encoding="([^"]+)"/.exec(r.value))&&(s.docencoding=a[1])),(r=c.getAll("#doctype")[0])&&(s.doctype="<!DOCTYPE"+r.value+">"),(r=c.getAll("title")[0])&&r.firstChild&&(s.title=r.firstChild.value),w.each(c.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?s[n.toLowerCase()]=e.attr("content"):"Content-Type"===l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")))&&(s.docencoding=t[1])}),(r=c.getAll("html")[0])&&(s.langcode=d(r,"lang")||d(r,"xml:lang")),s.stylesheets=[],w.each(c.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&s.stylesheets.push(e.attr("href"))}),(r=c.getAll("body")[0])&&(s.langdir=d(r,"dir"),s.style=d(r,"style"),s.visited_color=d(r,"vlink"),s.link_color=d(r,"link"),s.active_color=d(r,"alink")),o=s,e=g(g({},{title:"",keywords:"",description:"",robots:"",author:"",docencoding:""}),o),l.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:e,onSubmit:function(e){var t=e.getData(),n=function(e,o,t){function n(e,t,n){e.attr(t,n||void 0)}function r(e){s.firstChild?s.insert(e,s.firstChild):s.append(e)}var a,l,i=e.dom,c=C(e,t),s=c.getAll("head")[0];s||(a=c.getAll("html")[0],s=new f("head",1),a.firstChild?a.insert(s,a.firstChild,!0):a.append(s)),a=c.firstChild,o.xml_pi?(l='version="1.0"',o.docencoding&&(l+=' encoding="'+o.docencoding+'"'),7!==a.type&&(a=new f("xml",7),c.insert(a,c.firstChild,!0)),a.value=l):a&&7===a.type&&a.remove(),a=c.getAll("#doctype")[0],o.doctype?(a||(a=new f("#doctype",10),o.xml_pi?c.insert(a,c.firstChild):r(a)),a.value=o.doctype.substring(9,o.doctype.length-1)):a&&a.remove(),a=null,w.each(c.getAll("meta"),function(e){"Content-Type"===e.attr("http-equiv")&&(a=e)}),o.docencoding?(a||((a=new f("meta",1)).attr("http-equiv","Content-Type"),a.shortEnded=!0,r(a)),a.attr("content","text/html; charset="+o.docencoding)):a&&a.remove(),a=c.getAll("title")[0],o.title?(a?a.empty():r(a=new f("title",1)),a.append(new f("#text",3)).value=o.title):a&&a.remove(),w.each("keywords,description,author,copyright,robots".split(","),function(e){for(var t,n=c.getAll("meta"),l=o[e],i=0;i<n.length;i++)if((t=n[i]).attr("name")===e)return void(l?t.attr("content",l):t.remove());l&&((a=new f("meta",1)).attr("name",e),a.attr("content",l),a.shortEnded=!0,r(a))});var d={};w.each(c.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&(d[e.attr("href")]=e)}),w.each(o.stylesheets,function(e){d[e]||((a=new f("link",1)).attr({rel:"stylesheet",text:"text/css",href:e}),a.shortEnded=!0,r(a)),delete d[e]}),w.each(d,function(e){e.remove()}),(a=c.getAll("body")[0])&&(n(a,"dir",o.langdir),n(a,"style",o.style),n(a,"vlink",o.visited_color),n(a,"link",o.link_color),n(a,"alink",o.active_color),i.setAttribs(e.getBody(),{style:o.style,dir:o.dir,vLink:o.visited_color,link:o.link_color,aLink:o.active_color})),(a=c.getAll("html")[0])&&(n(a,"lang",o.langcode),n(a,"xml:lang",o.langcode)),s.firstChild||s.remove();var u=p({validate:!1,indent:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(c);return u.substring(0,u.indexOf("</body>"))}(l,w.extend(o,t),i.get());i.set(n),e.close()}})})}function A(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})}function s(e,t,n,l){var i,o,r,a,c,s,d,u,m,g,f,p,h,y="",v=e.dom;l.selection||(a=e.getParam("protect"),c=l.content,w.each(a,function(e){c=c.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})}),r=c,"raw"===l.format&&t.get()||l.source_view&&_(e)||(-1!==(i=(r=(r=0!==r.length||l.source_view?r:w.trim(t.get())+"\n"+w.trim(r)+"\n"+w.trim(n.get())).replace(/<(\/?)BODY/gi,"<$1body")).indexOf("<body"))?(i=r.indexOf(">",i),t.set(A(r.substring(0,i+1))),-1===(o=r.indexOf("</body",i))&&(o=r.length),l.content=w.trim(r.substring(i+1,o)),n.set(A(r.substring(o)))):(t.set((h=p="",(g=e).getParam("fullpage_default_xml_pi")&&(p+='<?xml version="1.0" encoding="'+(b(g)||"ISO-8859-1")+'" ?>\n'),p+=g.getParam("fullpage_default_doctype","<!DOCTYPE html>"),p+="\n<html>\n<head>\n",(f=g.getParam("fullpage_default_title"))&&(p+="<title>"+f+"</title>\n"),(f=b(g))&&(p+='<meta http-equiv="Content-Type" content="text/html; charset='+f+'" />\n'),(f=k(g))&&(h+="font-family: "+f+";"),(f=x(g))&&(h+="font-size: "+f+";"),(f=g.getParam("fullpage_default_text_color"))&&(h+="color: "+f+";"),p+="</head>\n<body"+(h?' style="'+h+'"':"")+">\n")),n.set("\n</body>\n</html>")),s=C(e,t.get()),P(s.getAll("style"),function(e){e.firstChild&&(y+=e.firstChild.value)}),(d=s.getAll("body")[0])&&v.setAttribs(e.getBody(),{style:d.attr("style")||"",dir:d.attr("dir")||"",vLink:d.attr("vlink")||"",link:d.attr("link")||"",aLink:d.attr("alink")||""}),v.remove("fullpage_styles"),u=e.getDoc().getElementsByTagName("head")[0],y&&v.add(u,"style",{id:"fullpage_styles"}).appendChild(document.createTextNode(y)),m={},w.each(u.getElementsByTagName("link"),function(e){"stylesheet"===e.rel&&e.getAttribute("data-mce-fullpage")&&(m[e.href]=e)}),w.each(s.getAll("link"),function(e){var t=e.attr("href");if(!t)return!0;m[t]||"stylesheet"!==e.attr("rel")||v.add(u,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete m[t]}),w.each(m,function(e){e.parentNode.removeChild(e)})))}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=function(){return(g=Object.assign||function(e){for(var t,n=1,l=arguments.length;n<l;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},w=tinymce.util.Tools.resolve("tinymce.util.Tools"),n=tinymce.util.Tools.resolve("tinymce.html.DomParser"),f=tinymce.util.Tools.resolve("tinymce.html.Node"),p=tinymce.util.Tools.resolve("tinymce.html.Serializer"),P=w.each;e.add("fullpage",function(e){console.warn("The fullpage plugin has been deprecated and marked for removal in TinyMCE 6.0");var t,o,r,a,n=i(""),l=i("");c(e,n),(t=e).ui.registry.addButton("fullpage",{tooltip:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),t.ui.registry.addMenuItem("fullpage",{text:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),r=n,a=l,(o=e).on("BeforeSetContent",function(e){s(o,r,a,e)}),o.on("GetContent",function(e){var t,n,l,i;t=o,n=r.get(),l=a.get(),"html"!==(i=e).format||i.selection||i.source_view&&_(t)||(i.content=(w.trim(n)+"\n"+w.trim(i.content)+"\n"+w.trim(l)).replace(/<!--mce:protected ([\s\S]*?)-->/g,function(e,t){return unescape(t)}))})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..98d3d5d6fbf8c7e69fafe535513e245ab4270146
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function c(n){var e=n;return{get:function(){return e},set:function(n){e=n}}}function n(r){return function(n){return t=typeof(e=n),(null===e?"null":"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t)===r;var e,t}}function e(e){return function(n){return typeof n===e}}function l(n){return!(null==n)}function f(){}function u(n){return function(){return n}}function t(n){return n}var r=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=n("string"),d=n("array"),o=e("boolean"),h=e("function"),i=e("number");function s(){return p}var g=u(!1),m=u(!0),p={fold:function(n,e){return n()},isSome:g,isNone:m,getOr:t,getOrThunk:v,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(void 0),or:t,orThunk:v,map:s,each:f,bind:s,exists:g,forall:m,filter:function(){return p},toArray:function(){return[]},toString:u("none()")};function v(n){return n()}function y(n){function e(){return t.get().each(n)}var t=c(C.none());return{clear:function(){e(),t.set(C.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(n){e(),t.set(C.some(n))}}}function w(){return y(function(n){return n.unbind()})}function O(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var u=n[o];r[o]=e(u,o)}return r}function A(n,e){for(var t=0,r=n.length;t<r;t++)e(n[t],t)}function b(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var u=n[r];e(u,r)&&t.push(u)}return t}function S(n){return void 0!==n.style&&h(n.style.getPropertyValue)}function E(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var T=function(t){function n(){return o}function e(n){return n(t)}var r=u(t),o={fold:function(n,e){return e(t)},isSome:m,isNone:g,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return T(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:p},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},C={some:T,none:s,from:function(n){return null==n?p:T(n)}},F=function(){return(F=Object.assign||function(n){for(var e,t=1,r=arguments.length;t<r;t++)for(var o in e=arguments[t])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}).apply(this,arguments)},x=Array.prototype.push,D=Object.keys,M={fromHtml:function(n,e){var t=(e||document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return E(t.childNodes[0])},fromTag:function(n,e){var t=(e||document).createElement(n);return E(t)},fromText:function(n,e){var t=(e||document).createTextNode(n);return E(t)},fromDom:E,fromPoint:function(n,e,t){return C.from(n.dom.elementFromPoint(e,t)).map(E)}};function k(e){return function(n){return n.dom.nodeType===e}}function N(n,e){var t=n.dom;if(1!==t.nodeType)return!1;var r=t;if(void 0!==r.matches)return r.matches(e);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(e);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(e);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function P(n){return M.fromDom(n.dom.ownerDocument)}function L(n){var e,t=on(n);return nn(e=t)&&l(e.dom.host)?C.some(t):C.none()}function H(n){return M.fromDom(n.dom.host)}function q(n,e,t){!function(n,e,t){if(!(a(t)||o(t)||i(t)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}(n.dom,e,t)}function R(n,e){var t=n.dom.getAttribute(e);return null===t?void 0:t}function V(n,e){n.dom.removeAttribute(e)}function j(n,e){var i=n.dom;!function(n){for(var e,t=D(n),r=0,o=t.length;r<o;r++){var u=t[r];e=n[u],function(n,e,t){if(!a(t))throw console.error("Invalid call to CSS.set. Property ",e,":: Value ",t,":: Element ",n),new Error("CSS value must be a string: "+t);S(n)&&n.style.setProperty(e,t)}(i,u,e)}}(e)}function W(n){function e(){return n.stopPropagation()}function t(){return n.preventDefault()}var r,o,u=M.fromDom(function(n){if(rn()&&l(n.target)){var e=M.fromDom(n.target);if(Q(e)&&un(e)&&n.composed&&n.composedPath){var t=n.composedPath();if(t)return 0<(r=t).length?C.some(r[0]):C.none()}}var r;return C.from(n.target)}(n).getOr(n.target)),i=(r=t,o=e,function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return r(o.apply(null,n))});return{target:u,x:n.clientX,y:n.clientY,stop:e,prevent:t,kill:i,raw:n}}function B(n,e,t){return o=e,u=!1,i=an,l=t,c=function(n){i(n)&&l(W(n))},(r=n).dom.addEventListener(o,c,u),{unbind:function(r){for(var o=[],n=1;n<arguments.length;n++)o[n-1]=arguments[n];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=o.concat(n);return r.apply(null,t)}}(fn,r,o,c,u)};var r,o,u,i,l,c}function z(n){var e=void 0===n?window:n;return C.from(e.visualViewport)}function I(n,e,t,r){return{x:n,y:e,width:t,height:r,right:n+t,bottom:e+r}}function U(t,r,n){return z(n).map(function(n){function e(n){return r(W(n))}return n.addEventListener(t,e),{unbind:function(){return n.removeEventListener(t,e)}}}).getOrThunk(function(){return{unbind:f}})}function K(n,e){n.fire("FullscreenStateChanged",{state:e})}function X(n){return n.getParam("fullscreen_native",!1,"boolean")}function Y(n){return n.dom===(void 0!==(e=P(n).dom).fullscreenElement?e.fullscreenElement:void 0!==e.msFullscreenElement?e.msFullscreenElement:void 0!==e.webkitFullscreenElement?e.webkitFullscreenElement:null);var e}function _(n,e){return r=function(n){return N(n,e)},b((t=n,C.from(t.dom.parentNode).map(M.fromDom).map(en).map(function(n){return b(n,function(n){return t.dom!==n.dom})}).getOr([])),r);var t,r}function G(o,n,e){function t(r){return function(n){var e=R(n,"style"),t=void 0===e?"no-styles":e.trim();t===r||(q(n,pn,t),j(n,o.parseStyle(r)))}}var r,u,i,l,c,f,a=(f=function(n){return N(n,"*")},b(function(n,e){for(var t=h(e)?e:g,r=n.dom,o=[];null!==r.parentNode&&void 0!==r.parentNode;){var u=r.parentNode,i=M.fromDom(u);if(o.push(i),!0===t(i))break;r=u}return o}(n,void 0),f)),s=function(n){for(var e=[],t=0,r=n.length;t<r;++t){if(!d(n[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+n);x.apply(e,n[t])}return e}(O(a,function(n){return _(n,"*:not(.tox-silver-sink)")})),m=(u="background-color",i=(r=e).dom,void 0!==(c=""!==(l=window.getComputedStyle(i).getPropertyValue(u))||ln(r)?l:cn(i,u))&&""!==c?"background-color:"+c+"!important":"background-color:rgb(255,255,255)!important;");A(s,t("display:none!important;")),A(a,t(vn+yn+m)),t((!0===wn?"":vn)+yn+m)(n)}function J(t,r){return function(e){function n(n){return e.setActive(n.state)}return e.setActive(null!==r.get()),t.on("FullscreenStateChanged",n),function(){return t.off("FullscreenStateChanged",n)}}}"undefined"!=typeof window||Function("return this;")();var Q=k(1),Z=k(3),$=k(9),nn=k(11),en=function(n){return O(n.dom.childNodes,M.fromDom)},tn=h(Element.prototype.attachShadow)&&h(Node.prototype.getRootNode),rn=u(tn),on=tn?function(n){return M.fromDom(n.dom.getRootNode())}:function(n){return $(n)?n:P(n)},un=function(n){return l(n.dom.shadowRoot)},ln=function(n){var e=Z(n)?n.dom.parentNode:n.dom;if(null==e||null===e.ownerDocument)return!1;var t,r,o=e.ownerDocument;return L(M.fromDom(e)).fold(function(){return o.body.contains(e)},(t=ln,r=H,function(n){return t(r(n))}))},cn=function(n,e){return S(n)?n.style.getPropertyValue(e):""},fn=function(n,e,t,r){n.dom.removeEventListener(e,t,r)},an=m,sn=function(t,r){return{left:t,top:r,translate:function(n,e){return sn(t+n,r+e)}}},mn=sn,dn=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),hn=tinymce.util.Tools.resolve("tinymce.Env"),gn=tinymce.util.Tools.resolve("tinymce.util.Delay"),pn="data-ephox-mobile-fullscreen-style",vn="position:absolute!important;",yn="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",wn=hn.os.isAndroid(),bn=dn.DOM,Sn=z().fold(function(){return{bind:f,unbind:f}},function(e){var t,r=(t=y(f),F(F({},t),{on:function(n){return t.get().each(n)}})),o=w(),u=w(),i=gn.throttle(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0,window.requestAnimationFrame(function(){r.on(function(n){return j(n,{top:e.offsetTop+"px",left:e.offsetLeft+"px",height:e.height+"px",width:e.width+"px"})})})},50);return{bind:function(n){r.set(n),i(),o.set(U("resize",i)),u.set(U("scroll",i))},unbind:function(){r.on(function(){o.clear(),u.clear()}),r.clear()}}}),En=function(o,u){function i(e){e(y,"tox-fullscreen"),e(w,"tox-fullscreen"),e(b,"tox-fullscreen"),L(S).map(function(n){return H(n).dom}).each(function(n){e(n,"tox-fullscreen"),e(n,"tox-shadowhost")})}function n(){var t,n,e,r;x&&(t=o.dom,n="["+pn+"]",A(1!==(e=r=document).nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount?[]:O(r.querySelectorAll(n),M.fromDom),function(n){var e=R(n,pn);"no-styles"!==e?j(n,t.parseStyle(e)):V(n,"style"),V(n,pn)})),i(bn.removeClass),Sn.unbind(),C.from(u.get()).each(function(n){return n.fullscreenChangeHandler.unbind()})}var e,t,r,l,c,f,a,s,m,d,h,g,p,v,y=document.body,w=document.documentElement,b=o.getContainer(),S=M.fromDom(b),E=L(f=M.fromDom(o.getElement())).map(H).getOrThunk(function(){var n=P(f).dom.body;if(null==n)throw new Error("Body is not available yet");return M.fromDom(n)}),T=u.get(),F=M.fromDom(o.getBody()),x=hn.deviceType.isTouch(),D=b.style,k=o.iframeElement.style;T?(T.fullscreenChangeHandler.unbind(),X(o)&&Y(E)&&((l=P(E).dom).exitFullscreen?l.exitFullscreen():l.msExitFullscreen?l.msExitFullscreen():l.webkitCancelFullScreen&&l.webkitCancelFullScreen()),k.width=T.iframeWidth,k.height=T.iframeHeight,D.width=T.containerWidth,D.height=T.containerHeight,D.top=T.containerTop,D.left=T.containerLeft,r=T.scrollPos,window.scrollTo(r.x,r.y),u.set(null),K(o,!1),n(),o.off("remove",n)):(e=B(P(E),void 0!==document.fullscreenElement?"fullscreenchange":void 0!==document.msFullscreenElement?"MSFullscreenChange":void 0!==document.webkitFullscreenElement?"webkitfullscreenchange":"fullscreenchange",function(n){X(o)&&(Y(E)||null===u.get()||En(o,u))}),t={scrollPos:(a=window,g=void 0===a?window:a,p=g.document,d=(m=void 0!==(s=M.fromDom(p))?s.dom:document).body.scrollLeft||m.documentElement.scrollLeft,h=m.body.scrollTop||m.documentElement.scrollTop,v=mn(d,h),z(g).fold(function(){var n=g.document.documentElement,e=n.clientWidth,t=n.clientHeight;return I(v.left,v.top,e,t)},function(n){return I(Math.max(n.pageLeft,v.left),Math.max(n.pageTop,v.top),n.width,n.height)})),containerWidth:D.width,containerHeight:D.height,containerTop:D.top,containerLeft:D.left,iframeWidth:k.width,iframeHeight:k.height,fullscreenChangeHandler:e},x&&G(o.dom,S,F),k.width=k.height="100%",D.width=D.height="",i(bn.addClass),Sn.bind(S),o.on("remove",n),u.set(t),X(o)&&((c=E.dom).requestFullscreen?c.requestFullscreen():c.msRequestFullscreen?c.msRequestFullscreen():c.webkitRequestFullScreen&&c.webkitRequestFullScreen()),K(o,!0))};r.add("fullscreen",function(n){var e,t,r,o,u,i=c(null);return n.inline||(t=i,(e=n).addCommand("mceFullScreen",function(){En(e,t)}),(r=n).ui.registry.addToggleMenuItem("fullscreen",{text:"Fullscreen",icon:"fullscreen",shortcut:"Meta+Shift+F",onAction:l,onSetup:J(r,o=i)}),r.ui.registry.addToggleButton("fullscreen",{tooltip:"Fullscreen",icon:"fullscreen",onAction:l,onSetup:J(r,o)}),n.addShortcut("Meta+Shift+F","","mceFullScreen")),u=i,{isFullscreen:function(){return null!==u.get()}};function l(){return r.execCommand("mceFullScreen")}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/help/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/help/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..2256dc4e566b18ab842525b703598475418d8aae
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/help/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function i(e){return function(){return e}}function e(e){return e}function t(){return s}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),y=function(){return(y=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},u=i(!1),r=i(!0),s={fold:function(e,t){return e()},isSome:u,isNone:r,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:a,map:t,each:function(){},bind:t,exists:u,forall:r,filter:function(){return s},toArray:function(){return[]},toString:i("none()")};function a(e){return e()}function b(e,t){for(var n=e.length,a=new Array(n),o=0;o<n;o++){var i=e[o];a[o]=t(i,o)}return a}function f(e){var n=m.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl ",access:"Shift + Alt "},t=b(e.split("+"),function(e){var t=e.toLowerCase().trim();return A(n,t)?n[t]:e});return m.mac?t.join("").replace(/\s/,""):t.join("+")}function k(e){function a(e){return'<a href="'+e.url+'" target="_blank" rel="noopener">'+e.name+"</a>"}var t,o,n,i,r,s,l,c;return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[null==e?"":'<div data-mce-tabstop="1" tabindex="-1">'+(s=b((i=w((n=o=e).plugins),void 0===(r=n.getParam("forced_plugins"))?i:function(e){for(var t=[],n=0,a=e.length;n<a;n++){var o=e[n];(function(e,t){return-1<h.call(e,t)})(r,o)||t.push(o)}return t}(i)),function(e){return"<li>"+(t=o,n=e,function(e,t,n){for(var a=0,o=e.length;a<o;a++){var i=e[a];if(t(i,a))return v.some(i);if(n(i,a))break}return v.none()}(d,function(e){return e.key===n},u).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?a(e()):n},function(e){return a({name:e.name,url:"https://www.tiny.cloud/docs/plugins/"+e.type+"/"+e.slug})}))+"</li>";var t,n}),l=s.length,c=s.join(""),"<p><b>"+C.translate(["Plugins installed ({0}):",l])+"</b></p><ul>"+c+"</ul>")+"</div>",(t=b(["Accessibility Checker","Advanced Code Editor","Advanced Tables","Case Change","Checklist","Export","Tiny Comments","Tiny Drive","Enhanced Media Embed","Format Painter","Link Checker","Mentions","MoxieManager","Page Embed","Permanent Pen","PowerPaste","Spell Checker Pro"],function(e){return"<li>"+C.translate(e)+"</li>"}).join(""),'<div data-mce-tabstop="1" tabindex="-1"><p><b>'+C.translate("Premium plugins:")+"</b></p><ul>"+t+'<li class="tox-help__more-link" "><a href="https://www.tiny.cloud/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+C.translate("Learn more...")+"</a></li></ul></div>")].join("")}]}}function l(d,g){return function(){var e,t,n,a,o,i,r,s,l,c,u,h=(e=d,t=g,r={name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:b(x,function(e){var t=b(e.shortcuts,f).join(" or ");return[e.action,t]})}]},s={name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"<h1>Editor UI keyboard navigation</h1>\n\n<h2>Activating keyboard navigation</h2>\n\n<p>The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:</p>\n<ul>\n  <li>Focus the menubar: Alt + F9 (Windows) or &#x2325;F9 (MacOS)</li>\n  <li>Focus the toolbar: Alt + F10 (Windows) or &#x2325;F10 (MacOS)</li>\n  <li>Focus the footer: Alt + F11 (Windows) or &#x2325;F11 (MacOS)</li>\n</ul>\n\n<p>Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline. </p>\n\n<h2>Moving between UI sections</h2>\n\n<p>When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:</p>\n<ul>\n  <li>the menubar</li>\n  <li>each group of the toolbar </li>\n  <li>the sidebar</li>\n  <li>the element path in the footer </li>\n  <li>the wordcount toggle button in the footer </li>\n  <li>the branding link in the footer </li>\n  <li>the editor resize handle in the footer</li>\n</ul>\n\n<p>Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.</p>\n\n<h2>Moving within UI sections</h2>\n\n<p>Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:</p>\n<ul>\n  <li>moving between menus in the menubar</li>\n  <li>moving between buttons in a toolbar group</li>\n  <li>moving between items in the element path</li>\n</ul>\n\n<p>In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group. </p>\n\n<h1>Executing buttons</h1>\n\n<p>To execute a button, navigate the selection to the desired button and hit space or enter.</p>\n\n<h1>Opening, navigating and closing menus</h1>\n\n<p>When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.</p>\n\n<p>To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.</p>\n\n<h1>Context toolbars and menus</h1>\n\n<p>To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or &#x2303;F9 (MacOS).</p>\n\n<p>Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.</p>\n\n<h1>Dialog navigation</h1>\n\n<p>There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.</p>\n\n<p>When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.</p>\n\n<p>When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.</p>"}]},l=k(e),a=T.majorVersion,o=T.minorVersion,i=0===a.indexOf("@")?"X.X.X":a+"."+o,c={name:"versions",title:"Version",items:[{type:"htmlpanel",html:"<p>"+C.translate(["You are using {0}",'<a href="https://www.tiny.cloud/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+i+"</a>"])+"</p>",presets:"document"}]},u=y(((n={})[r.name]=r,n[s.name]=s,n[l.name]=l,n[c.name]=c,n),t.get()),v.from(e.getParam("help_tabs")).fold(function(){return-1!==(n=(t=w(e=u)).indexOf("versions"))&&(t.splice(n,1),t.push("versions")),{tabs:e,names:t};var e,t,n},function(e){return t=u,n={},a=b(e,function(e){return"string"==typeof e?(A(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name}),{tabs:n,names:a};var t,n,a})),m=h.tabs,p=function(e){for(var t=[],n=function(e){t.push(e)},a=0;a<e.length;a++)e[a].each(n);return t}(b(h.names,function(e){return A(t=m,n=e)?v.from(t[n]):v.none();var t,n}));d.windowManager.open({title:"Help",size:"medium",body:{type:"tabpanel",tabs:p},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})}}var c=function(n){function e(){return o}function t(e){return e(n)}var a=i(n),o={fold:function(e,t){return t(n)},isSome:r,isNone:u,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return c(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:s},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},v={some:c,none:t,from:function(e){return null==e?s:c(e)}},h=Array.prototype.indexOf,w=Object.keys,o=Object.hasOwnProperty,A=function(e,t){return o.call(e,t)},m=tinymce.util.Tools.resolve("tinymce.Env"),x=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Heading 1"},{shortcuts:["Access + 2"],action:"Heading 2"},{shortcuts:["Access + 3"],action:"Heading 3"},{shortcuts:["Access + 4"],action:"Heading 4"},{shortcuts:["Access + 5"],action:"Heading 5"},{shortcuts:["Access + 6"],action:"Heading 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],C=tinymce.util.Tools.resolve("tinymce.util.I18n"),p="premium",d=b([{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"},{key:"advcode",name:"Advanced Code Editor*",type:p},{key:"formatpainter",name:"Format Painter*",type:p},{key:"powerpaste",name:"PowerPaste*",type:p},{key:"tinydrive",name:"Tiny Drive*",type:p},{key:"tinymcespellchecker",name:"Spell Checker Pro*",type:p},{key:"a11ychecker",name:"Accessibility Checker*",type:p},{key:"linkchecker",name:"Link Checker*",type:p},{key:"mentions",name:"Mentions*",type:p},{key:"mediaembed",name:"Enhanced Media Embed*",type:p},{key:"checklist",name:"Checklist*",type:p},{key:"casechange",name:"Case Change*",type:p},{key:"permanentpen",name:"Permanent Pen*",type:p},{key:"pageembed",name:"Page Embed*",type:p},{key:"tinycomments",name:"Tiny Comments*",type:p,slug:"comments"},{key:"advtable",name:"Advanced Tables*",type:p},{key:"autocorrect",name:"Autocorrect*",type:p},{key:"export",name:"Export*",type:p}],function(e){return y(y({},e),{type:e.type||"opensource",slug:e.slug||e.key})}),T=tinymce.util.Tools.resolve("tinymce.EditorManager");n.add("help",function(e){var t,n,a,o=(t={},{get:function(){return t},set:function(e){t=e}}),i={addTab:function(e){var t=n.get();t[e.name]=e,n.set(t)}},r=l(e,n=o),s=r;return(a=e).ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:s}),a.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:s}),e.addCommand("mceHelp",r),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),i})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/hr/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/hr/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c30351267a1a8f4142ab256db0dc2dc6d0197a3e
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/hr/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("hr",function(n){var o,t;function e(){return t.execCommand("InsertHorizontalRule")}(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"<hr />")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:e}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:e})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/image/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/image/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..605c1cbc738b0f28d76bbba9053ed7e027e51104
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/image/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function D(e){return!(null==e)}function l(){}function i(e){return function(){return e}}function n(e){return e}function r(){return g}var a,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),y=function(){return(y=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},T=e("string"),s=e("object"),c=e("array"),N=t("boolean"),w=t("function"),u=t("number"),m=i(!1),d=i(!(a=null)),g={fold:function(e,t){return e()},isSome:m,isNone:d,getOr:n,getOrThunk:p,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:n,orThunk:p,map:r,each:l,bind:r,exists:m,forall:d,filter:function(){return g},toArray:function(){return[]},toString:i("none()")};function p(e){return e()}function f(e,i,o,l){return function(e){for(var t=v(e),n=0,r=t.length;n<r;n++){var a=t[n];!function(e,t){(i(e,t)?o:l)(e,t)}(e[a],a)}}(e),1}function h(e,t){return A.call(e,t)}function S(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!c(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);U.apply(t,e[n])}return t}var b=function(n){function e(){return a}function t(e){return e(n)}var r=i(n),a={fold:function(e,t){return t(n)},isSome:d,isNone:m,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return b(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:g},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},L={some:b,none:r,from:function(e){return null==e?g:b(e)}},v=Object.keys,A=Object.hasOwnProperty,U=Array.prototype.push;function C(e,t,n){!function(e,t,n){if(!(T(n)||N(n)||u(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}(e.dom,t,n)}function I(e){return e.getParam("image_dimensions",!0,"boolean")}function x(e,t){return Math.max(parseInt(e,10),parseInt(t,10))}function O(e){return e&&e.replace(/px$/,"")}function P(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e}function _(e){if(e.margin){var t=String(e.margin).split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e}function E(e){return"IMG"===e.nodeName&&(e.hasAttribute("data-mce-object")||e.hasAttribute("data-mce-placeholder"))}function R(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?O(e.style.marginLeft):""}function k(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?O(e.style.marginTop):""}function z(e){return e.style.borderWidth?O(e.style.borderWidth):""}function M(e,t){return e.hasAttribute(t)?e.getAttribute(t):""}function j(e,t){return e.style[t]||""}function B(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName}function H(e,t,n){""===n?e.removeAttribute(t):e.setAttribute(t,n)}function F(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")}function G(e,r){return function(e,t,n){e.style[t]?(e.style[t]=P(n),F(e,r)):H(e,t,n)}}function W(e,t){return e.style[t]?O(e.style[t]):M(e,t)}function V(e,t){var n=P(t);e.style.marginLeft=n,e.style.marginRight=n}function $(e,t){var n=P(t);e.style.marginTop=n,e.style.marginBottom=n}function J(e,t){var n=P(t);e.style.borderWidth=n}function K(e,t){e.style.borderStyle=t}function X(e){return"FIGURE"===e.nodeName}function Z(e){return 0===we.getAttrib(e,"alt").length&&"presentation"===we.getAttrib(e,"role")}function q(){return{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1}}function Q(e,t){return{src:M(t,"src"),alt:Z(n=t)?"":M(n,"alt"),title:M(t,"title"),width:W(t,"width"),height:W(t,"height"),class:M(t,"class"),style:e(M(t,"style")),caption:B(t),hspace:R(t),vspace:k(t),border:z(t),borderStyle:j(t,"borderStyle"),isDecorative:Z(t)};var n}function Y(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])}function ee(r,a){return function(e,t,n){r(e,n),F(e,a)}}function te(e,t){var n=_(e.dom.styles.parse(t)),r=e.dom.styles.parse(e.dom.styles.serialize(n));return e.dom.styles.serialize(r)}function ne(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||E(t))?null:t}function re(n,e){var r,t,a=n.dom,i=(f(n.schema.getTextBlockElements(),function(e,t){return!n.schema.isValidChild(t,"figure")},(r=t={},function(e,t){r[t]=e}),l),t),o=a.getParent(e.parentNode,function(e){return h(t=i,n=e.nodeName)&&null!=t[n];var t,n},n.getBody());return o?a.split(o,e):e}function ae(r,e){var t=function(e){var t=document.createElement("img");if(Ue(function(e){return te(r,e)},y(y({},e),{caption:!1}),t),Se(t,e.alt,e.isDecorative),e.caption){var n=we.create("figure",{class:"image"});return n.appendChild(t),n.appendChild(we.create("figcaption",{contentEditable:"true"},"Caption")),n.contentEditable="false",n}return t}(e);r.dom.setAttrib(t,"data-mce-id","__mcenew"),r.focus(),r.selection.setContent(t.outerHTML);var n,a=r.dom.select('*[data-mce-id="__mcenew"]')[0];r.dom.setAttrib(a,"data-mce-id",null),X(a)?(n=re(r,a),r.selection.select(n)):r.selection.select(a)}function ie(e){return T(e.value)?e.value:""}function oe(t){return void 0===t&&(t=ie),function(e){return e?L.from(e).map(function(e){return Oe(e,t)}):L.none()}}function le(e){var t=e.imageList.map(function(e){return{name:"images",type:"listbox",label:"Image list",items:e}}),n={name:"alt",type:"input",label:"Alternative description",disabled:e.hasAccessibilityOptions&&e.image.isDecorative},r=e.classList.map(function(e){return{name:"classes",type:"listbox",label:"Class",items:e}});return S([[{name:"src",type:"urlinput",filetype:"image",label:"Source"}],t.toArray(),e.hasAccessibilityOptions&&e.hasDescription?[{type:"label",label:"Accessibility",items:[{name:"isDecorative",type:"checkbox",label:"Image is decorative"}]}]:[],e.hasDescription?[n]:[],e.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],e.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[y(y({},e.classList.isSome()&&e.hasImageCaption?{type:"grid",columns:2}:{type:"panel"}),{items:S([r.toArray(),e.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])})]])}function se(e){return{src:{value:e.src,meta:{}},images:e.src,alt:e.alt,title:e.title,dimensions:{width:e.width,height:e.height},classes:e.class,caption:e.caption,style:e.style,vspace:e.vspace,border:e.border,hspace:e.hspace,borderstyle:e.borderStyle,fileinput:[],isDecorative:e.isDecorative}}function ce(e,t){return{src:e.src.value,alt:0===e.alt.length&&t?null:e.alt,title:e.title,width:e.dimensions.width,height:e.dimensions.height,class:e.classes,style:e.style,caption:e.caption,hspace:e.hspace,vspace:e.vspace,border:e.border,borderStyle:e.borderstyle,isDecorative:e.isDecorative}}function ue(e,t,n,r){var a,i,o,l,s,c,u,m,d,g,p,f,h,b,y,v,A,D,w,S,U,C,I,x,O;U=t,I=(C=r).getData(),x=U,O=I.src.value,(/^(?:[a-zA-Z]+:)?\/\//.test(O)?L.none():x.prependURL.bind(function(e){return O.substring(0,e.length)!==e?L.some(e+O):L.none()})).each(function(e){C.setData({src:{value:e,meta:I.src.meta}})}),h=t,w=(b=r).getData(),void 0!==(S=w.src.meta)&&(y=Ce({},w),A=y,D=S,(v=h).hasDescription&&T(D.alt)&&(A.alt=D.alt),v.hasAccessibilityOptions&&(A.isDecorative=D.isDecorative||A.isDecorative||!1),v.hasImageTitle&&T(D.title)&&(A.title=D.title),v.hasDimensions&&(T(D.width)&&(A.dimensions.width=D.width),T(D.height)&&(A.dimensions.height=D.height)),T(D.class)&&Pe(v.classList,D.class).each(function(e){A.classes=e.value}),v.hasImageCaption&&N(D.caption)&&(A.caption=D.caption),v.hasAdvTab&&(T(D.style)&&(A.style=D.style),T(D.vspace)&&(A.vspace=D.vspace),T(D.border)&&(A.border=D.border),T(D.hspace)&&(A.hspace=D.hspace),T(D.borderstyle)&&(A.borderstyle=D.borderstyle)),b.setData(y)),a=e,i=t,o=n,c=(s=(l=r).getData()).src.value,(u=s.src.meta||{}).width||u.height||!i.hasDimensions||(0<c.length?a.imageSize(c).then(function(e){o.open&&l.setData({dimensions:e})}).catch(function(e){return console.error(e)}):l.setData({dimensions:{width:"",height:""}})),m=t,d=n,p=(g=r).getData(),f=Pe(m.imageList,p.src.value),d.prevImage=f,g.setData({images:f.map(function(e){return e.value}).getOr("")})}function me(l,s,t,c){var e,n=c.getData();c.block("Uploading image"),(0<(e=n.fileinput).length?L.some(e[0]):L.none()).fold(function(){c.unblock()},function(n){function r(){c.unblock(),URL.revokeObjectURL(i)}function a(e){c.setData({src:{value:e,meta:{}}}),c.showTab("general"),ue(l,s,t,c)}var i=URL.createObjectURL(n),o=n;new Ae(function(e,t){var n=new FileReader;n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(o)}).then(function(e){var t=l.createBlobCache(n,i,e);s.automaticUploads?l.uploadImage(t).then(function(e){a(e.url),r()}).catch(function(e){r(),l.alertErr(e)}):(l.addToBlobCache(t),a(t.blobUri()),c.unblock())})})}function de(S,U,C){return function(e,t){var n,r,a,i,o,l,s,c,u,m,d,g,p,f,h,b,y,v,A,D,w;"src"===t.name?ue(S,U,C,e):"images"===t.name?(c=S,u=U,m=C,g=(d=e).getData(),(p=Pe(u.imageList,g.images)).each(function(e){""===g.alt||m.prevImage.map(function(e){return e.text===g.alt}).getOr(!1)?""===e.value?d.setData({src:e,alt:m.prevAlt}):d.setData({src:e,alt:e.text}):d.setData({src:e})}),m.prevImage=p,ue(c,u,m,d)):"alt"===t.name?C.prevAlt=e.getData().alt:"style"===t.name?(o=S,s=(l=e).getData(),y=o.parseStyle,v=o.serializeStyle,D=_(y((A=s).style)),(w=Ce({},A)).vspace=D["margin-top"]&&D["margin-bottom"]&&D["margin-top"]===D["margin-bottom"]?O(String(D["margin-top"])):"",w.hspace=D["margin-right"]&&D["margin-left"]&&D["margin-right"]===D["margin-left"]?O(String(D["margin-right"])):"",w.border=D["border-width"]?O(String(D["border-width"])):"",w.borderstyle=D["border-style"]?String(D["border-style"]):"",w.style=v(y(v(D))),l.setData(w)):"vspace"===t.name||"hspace"===t.name||"border"===t.name||"borderstyle"===t.name?(n=S,a=Ce(se(U.image),(r=e).getData()),f=n.normalizeCss,h=ce(a,!1),H(b=document.createElement("img"),"style",h.style),!R(b)&&""===h.hspace||V(b,h.hspace),!k(b)&&""===h.vspace||$(b,h.vspace),!z(b)&&""===h.border||J(b,h.border),!j(b,"borderStyle")&&""===h.borderStyle||K(b,h.borderStyle),i=f(b.getAttribute("style")),r.setData({style:i})):"fileinput"===t.name?me(S,U,C,e):"isDecorative"===t.name&&(e.getData().isDecorative?e.disable("alt"):e.enable("alt"))}}function ge(v){var t,n,r,a,i,o,l,s,c,A={onSubmit:function(n){return function(e){var t=Ce(se(n.image),e.getData());c.execCommand("mceUpdateImage",!1,ce(t,n.hasAccessibilityOptions)),c.editorUpload.uploadImagesAuto(),e.close()}},imageSize:function(e){return a=s.documentBaseURI.toAbsolute(e),new Ae(function(t){function n(e){r.onload=r.onerror=null,r.parentNode&&r.parentNode.removeChild(r),t(e)}var r=document.createElement("img");r.onload=function(){var e=x(r.width,r.clientWidth),t=x(r.height,r.clientHeight);n(Ae.resolve({width:e,height:t}))},r.onerror=function(){n(Ae.reject("Failed to get image dimensions for: "+a))};var e=r.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left="0px",e.width=e.height="auto",document.body.appendChild(r),r.src=a}).then(function(e){return{width:String(e.width),height:String(e.height)}});var a},addToBlobCache:function(e){l.editorUpload.blobCache.add(e)},createBlobCache:function(e,t,n){return o.editorUpload.blobCache.create({blob:e,blobUri:t,name:e.name?e.name.replace(/\.[^\.]+$/,""):null,filename:e.name,base64:n.split(",")[1]})},alertErr:function(e){i.windowManager.alert(e)},normalizeCss:function(e){return te(a,e)},parseStyle:function(e){return r.dom.parseStyle(e)},serializeStyle:function(e,t){return n.dom.serializeStyle(e,t)},uploadImage:(t=n=r=a=i=o=l=s=c=v,function(e){return Ie(t).upload([e],!1).then(function(e){return 0===e.length?Ae.reject("Failed to upload image"):!1===e[0].status?Ae.reject(e[0].error.message):e[0]})})};return{open:function(){var i,r,t,e,a,n,o,l,s,c,u,m,d,g,p,f,h,b,y;r=v,a=Ne(function(e){return r.convertURL(e.value||e.url,"src")}),n=new Ae(function(t){var n=function(e){t(a(e).map(function(e){return S([[{text:"None",value:""}],e])}))},e=r.getParam("image_list",!1);T(e)?De.send({url:e,success:function(e){n(JSON.parse(e))}}):w(e)?e(n):n(e)}),o=Le(r.getParam("image_class_list")),l=r.getParam("image_advtab",!1,"boolean"),s=r.getParam("image_uploadtab",!0,"boolean"),c=D(r.getParam("images_upload_url")),u=D(r.getParam("images_upload_handler")),m=(e=ne(t=r))?Q(function(e){return te(t,e)},e):q(),d=r.getParam("image_description",!0,"boolean"),g=r.getParam("image_title",!1,"boolean"),p=I(r),f=r.getParam("image_caption",!1,"boolean"),h=r.getParam("a11y_advanced_options",!1,"boolean"),b=r.getParam("automatic_uploads",!0,"boolean"),y=L.some(r.getParam("image_prepend_url","","string")).filter(function(e){return T(e)&&0<e.length}),n.then(function(e){return{image:m,imageList:e,classList:o,hasAdvTab:l,hasUploadTab:s,hasUploadUrl:c,hasUploadHandler:u,hasDescription:d,hasImageTitle:g,hasDimensions:p,hasImageCaption:f,prependURL:y,hasAccessibilityOptions:h,automaticUploads:b}}).then((i=A,function(e){var t,n,r,a={prevImage:Pe((t=e).imageList,t.image.src),prevAlt:t.image.alt,open:!0};return{title:"Insert/Edit Image",size:"normal",body:(r=e).hasAdvTab||r.hasUploadUrl||r.hasUploadHandler?{type:"tabpanel",tabs:S([[Ee(r)],r.hasAdvTab?[_e(r)]:[],r.hasUploadTab&&(r.hasUploadUrl||r.hasUploadHandler)?[ke(r)]:[]])}:{type:"panel",items:Re(r)},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:se(e.image),onSubmit:i.onSubmit(e),onChange:de(i,e,a),onClose:(n=a,function(){n.open=!1})}})).then(v.windowManager.open)}}}function pe(b){b.addCommand("mceImage",ge(b).open),b.addCommand("mceUpdateImage",function(e,h){b.undoManager.transact(function(){var t,e,n,r,a,i,o,l,s,c,u,m,d,g,p;function f(){g.onload=g.onerror=null,m.selection&&(m.selection.select(g),m.nodeChanged())}e=h,(l=ne(t=b))?(n=Q(function(e){return te(t,e)},l),(r=y(y({},n),e)).src?(c=r,p=ne(s=t),Ue(function(e){return te(s,e)},c,p),s.dom.setAttrib(p,"src",p.getAttribute("src")),X(p.parentNode)?(u=p.parentNode,re(s,u),s.selection.select(p.parentNode)):(s.selection.select(p),m=s,d=c,(g=p).onload=function(){d.width||d.height||!I(m)||m.dom.setAttribs(g,{width:String(g.clientWidth),height:String(g.clientHeight)}),f()},g.onerror=f)):(a=t,(i=l)&&(o=a.dom.is(i.parentNode,"figure.image")?i.parentNode:i,a.dom.remove(o),a.focus(),a.nodeChanged(),a.dom.isEmpty(a.getBody())&&(a.setContent(""),a.selection.setCursorLocation())))):e.src&&ae(t,y(y({},q()),e))})})}function fe(i){return function(e){for(var t=e.length,n=function(e){e.attr("contenteditable",i?"true":null)};t--;){var r,a=e[t];(r=a.attr("class"))&&/\bimage\b/.test(r)&&(a.attr("contenteditable",i?"false":null),xe.each(a.getAll("figcaption"),n))}}}"undefined"!=typeof window||Function("return this;")();function he(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var be,ye=he,ve=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Ae=tinymce.util.Tools.resolve("tinymce.util.Promise"),De=tinymce.util.Tools.resolve("tinymce.util.XHR"),we=ve.DOM,Se=function(e,t,n){n?(we.setAttrib(e,"role","presentation"),C(ye(e),"alt","")):(a===t?ye(e).dom.removeAttribute("alt"):C(ye(e),"alt",t),"presentation"===we.getAttrib(e,"role")&&we.setAttrib(e,"role",""))},Ue=function(e,t,n){var r=Q(e,n);Y(n,r,t,"caption",function(e,t,n){return B(r=e)?(o=r.parentNode,we.insertAfter(r,o),we.remove(o)):(a=r,i=we.create("figure",{class:"image"}),we.insertAfter(i,a),i.appendChild(a),i.appendChild(we.create("figcaption",{contentEditable:"true"},"Caption")),i.contentEditable="false"),0;var r,a,i,o}),Y(n,r,t,"src",H),Y(n,r,t,"title",H),Y(n,r,t,"width",G(0,e)),Y(n,r,t,"height",G(0,e)),Y(n,r,t,"class",H),Y(n,r,t,"style",ee(function(e,t){return H(e,"style",t),0},e)),Y(n,r,t,"hspace",ee(V,e)),Y(n,r,t,"vspace",ee($,e)),Y(n,r,t,"border",ee(J,e)),Y(n,r,t,"borderStyle",ee(K,e)),t.alt===r.alt&&t.isDecorative===r.isDecorative||Se(n,t.alt,t.isDecorative)},Ce=(be=function(e,t){return s(e)&&s(t)?Ce(e,t):t},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var a,i=e[r];for(a in i)h(i,a)&&(n[a]=be(n[a],i[a]))}return n}),Ie=tinymce.util.Tools.resolve("tinymce.util.ImageUploader"),xe=tinymce.util.Tools.resolve("tinymce.util.Tools"),Oe=function(e,i){var o=[];return xe.each(e,function(e){var t,n,r,a=T((t=e).text)?t.text:T(t.title)?t.title:"";void 0!==e.menu?(n=Oe(e.menu,i),o.push({text:a,items:n})):(r=i(e),o.push({text:a,value:r}))}),o},Te=function(e,a){return function(e){for(var t,n=0;n<e.length;n++){var r=h(t=e[n],"items")?Te(t.items,a):t.value===a?L.some(t):L.none();if(r.isSome())return r}return L.none()}(e)},Ne=oe,Le=function(e){return oe(ie)(e)},Pe=function(e,t){return e.bind(function(e){return Te(e,t)})},_e=function(e){return{title:"Advanced",name:"advanced",items:[{type:"input",label:"Style",name:"style"},{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"listbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}},Ee=function(e){return{title:"General",name:"general",items:le(e)}},Re=le,ke=function(e){return{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput"}]}};o.add("image",function(e){var t,n;(t=e).on("PreInit",function(){t.parser.addNodeFilter("figure",fe(!0)),t.serializer.addNodeFilter("figure",fe(!1))}),(n=e).ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:ge(n).open,onSetup:function(e){return n.selection.selectorChangedWithUnbind("img:not([data-mce-object],[data-mce-placeholder]),figure.image",e.setActive).unbind}}),n.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:ge(n).open}),n.ui.registry.addContextMenu("image",{update:function(e){return X(e)||"IMG"===e.nodeName&&!E(e)?["image"]:[]}}),pe(e)})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/imagetools/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/imagetools/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..603206ef1682e346b32a335dacf98531686aa559
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/imagetools/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function c(t){var e=t;return{get:function(){return e},set:function(t){e=t}}}function h(t){return null!=t}function r(){}function i(t){return function(){return t}}function t(t){return t}function e(){return d}function s(t){return n=typeof(e=t),"array"==(null===e?"null":"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n);var e,n}var n,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(t){return typeof t===n},u=i(!(n="function")),f=i(!0),d={fold:function(t,e){return t()},isSome:u,isNone:f,getOr:t,getOrThunk:m,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:m,map:e,each:r,bind:e,exists:u,forall:f,filter:function(){return d},toArray:function(){return[]},toString:i("none()")};function m(t){return t()}function g(t,e){return _(document.createElement("canvas"),t,e)}function p(t){var e=g(t.width,t.height);return A(e).drawImage(t,0,0),e}var v,y,w,b,E,I=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:f,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return I(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:d},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:I,none:e,from:function(t){return null==t?d:I(t)}},A=function(t){return t.getContext("2d")},_=function(t,e,n){return t.width=e,t.height=n,t},R=window.Promise||(v=window,y=x.immediateFn||"function"==typeof v.setImmediate&&v.setImmediate||function(t){return setTimeout(t,1)},w=function(n,r){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n.apply(r,t)}},b=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},E=function(t,e,n){var r=!1;try{t(function(t){r||(r=!0,e(t))},function(t){r||(r=!0,n(t))})}catch(t){if(r)return;r=!0,n(t)}},x.prototype.catch=function(t){return this.then(null,t)},x.prototype.then=function(n,r){var o=this;return new x(function(t,e){U.call(o,new O(n,r,t,e))})},x.all=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var u=Array.prototype.slice.call(1===t.length&&b(t[0])?t[0]:t);return new x(function(r,o){if(0===u.length)return r([]);for(var i=u.length,a=function(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){a(e,t)},o)}u[e]=t,0==--i&&r(u)}catch(t){o(t)}},t=0;t<u.length;t++)a(t,u[t])})},x.resolve=function(e){return e&&"object"==typeof e&&e.constructor===x?e:new x(function(t){t(e)})},x.reject=function(n){return new x(function(t,e){e(n)})},x.race=function(o){return new x(function(t,e){for(var n=0,r=o;n<r.length;n++)r[n].then(t,e)})},x);function x(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],E(t,w(j,this),w(S,this))}function U(n){var r=this;null!==this._state?y(function(){var t,e=r._state?n.onFulfilled:n.onRejected;if(null!==e){try{t=e(r._value)}catch(t){return void n.reject(t)}n.resolve(t)}else(r._state?n.resolve:n.reject)(r._value)}):this._deferreds.push(n)}function j(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void E(w(e,t),w(j,this),w(S,this))}this._state=!0,this._value=t,M.call(this)}catch(t){S.call(this,t)}}function S(t){this._state=!1,this._value=t,M.call(this)}function M(){for(var t=0,e=this._deferreds;t<e.length;t++){var n=e[t];U.call(this,n)}this._deferreds=[]}function O(t,e,n,r){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.resolve=n,this.reject=r}function L(u){return new R(function(t,e){function n(){o.removeEventListener("load",i),o.removeEventListener("error",a)}var r=URL.createObjectURL(u),o=new Image,i=function(){n(),t(o)},a=function(){n(),e("Unable to load data of type "+u.type+": "+r)};o.addEventListener("load",i),o.addEventListener("error",a),o.src=r,o.complete&&setTimeout(i,0)})}function k(t,r,o){return r=r||"image/png",a(HTMLCanvasElement.prototype.toBlob)?new R(function(e,n){t.toBlob(function(t){t?e(t):n()},r,o)}):N(t.toDataURL(r,o))}function P(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n)}function C(t,e){return function(t,e,n){for(var r=0,o=t.length;r<o;r++){var i=t[r];if(e(i,r))return T.some(i);if(n(i,r))break}return T.none()}(t,e,u)}var B=function(r){return new R(function(t,e){var n=new XMLHttpRequest;n.open("GET",r,!0),n.responseType="blob",n.onload=function(){200===this.status&&t(this.response)},n.onerror=function(){var t;e(0===this.status?((t=new Error("No access to download image")).code=18,t.name="SecurityError",t):new Error("Error "+this.status+" downloading image"))},n.send()})},N=function(h){return new R(function(t,e){!function(){var t=h.split(","),e=/data:([^;]+)/.exec(t[0]);if(!e)return T.none();for(var n=e[1],r=t[1],o=atob(r),i=o.length,a=Math.ceil(i/1024),u=new Array(a),c=0;c<a;++c){for(var s=1024*c,l=Math.min(1024+s,i),f=new Array(l-s),d=s,m=0;d<l;++m,++d)f[m]=o[d].charCodeAt(0);u[c]=new Uint8Array(f)}return T.some(new Blob(u,{type:n}))}().fold(function(){e("uri is not base64: "+h)},t)})},D=function(t){URL.revokeObjectURL(t.src)},F=L,H=Array.prototype.indexOf,z=Object.keys;function q(t,e,n){function r(e,n){return t.then(function(t){return t.toDataURL(e||"image/png",n)})}return{getType:i(e.type),toBlob:function(){return R.resolve(e)},toDataURL:i(n),toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return k(t,e,n)})},toAdjustedDataURL:r,toAdjustedBase64:function(t,e){return r(t,e).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(p)}}}function $(e,t){return k(e,t).then(function(t){return q(R.resolve(e),t,e.toDataURL())})}function W(t,e){void 0===e&&(e=2);var n=Math.pow(10,e),r=Math.round(t*n);return Math.ceil(r/n)}function V(e,n,r){return void 0===r&&(r=!1),new R(function(t){var a=new XMLHttpRequest;a.onreadystatechange=function(){4===a.readyState&&t({status:a.status,blob:a.response})},a.open("GET",e,!0),a.withCredentials=r,function(t){for(var e,n=z(t),r=0,o=n.length;r<o;r++){var i=n[r];e=t[i],a.setRequestHeader(i,e)}}(n),a.responseType="blob",a.send()})}function G(t){var e,n=(e=t,"ImageProxy HTTP error: "+C(rt,function(t){return e===t.code}).fold(i("Unknown ImageProxy error"),function(t){return t.message}));return R.reject(n)}function J(e){return C(ot,function(t){return t.type===e}).fold(i("Unknown service error"),function(t){return t.message})}function K(t){return"ImageProxy Service error: "+function(t){try{return T.some(JSON.parse(t))}catch(t){return T.none()}}(t).bind(function(t){return n=function(t,e){return h(t)?t[e]:void 0},r=t,P(["error","type"],function(t,e){r=n(r,t)}),e=r,T.from(e).map(J);var n,r,e}).getOr("Invalid JSON in service error message")}function X(t){return t<200||300<=t}function Q(t,e){var n,r,o,i={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":e};return V((r=e,o=-1===(n=t).indexOf("?")?"?":"&",/[?&]apiKey=/.test(n)?n:n+o+"apiKey="+encodeURIComponent(r)),i).then(function(t){return X(t.status)?(e=t.status,"application/json"!==(null==(n=t.blob)?void 0:n.type)||400!==e&&403!==e&&404!==e&&500!==e?G(e):(r=n,new R(function(t,e){var n=new FileReader;n.onload=function(){t(n.result)},n.onerror=function(t){e(t)},n.readAsText(r)}).then(function(t){var e=K(t);return R.reject(e)}))):R.resolve(t.blob);var r,e,n})}function Y(t,e,n){return void 0===n&&(n=!1),e?Q(t,e):V(t,{},n).then(function(t){return X(t.status)?G(t.status):R.resolve(t.blob)})}function Z(e){return n=e,new R(function(t){var e=new FileReader;e.onloadend=function(){t(e.result)},e.readAsDataURL(n)}).then(function(t){return q(L(e).then(function(t){D(t);var e=g(t.naturalWidth||t.width,t.naturalHeight||t.height);return A(e).drawImage(t,0,0),e}),e,t)});var n}!function(a){if(!s(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};P(a,function(t,r){var e=z(t);if(1!==e.length)throw new Error("one and only one name per case");var i=e[0],o=t[i];if(void 0!==n[i])throw new Error("duplicate key detected:"+i);if("cata"===i)throw new Error("cannot have a case named cata (sorry)");if(!s(o))throw new Error("case arguments must be an array");u.push(i),n[i]=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=n.length;if(e!==o.length)throw new Error("Wrong number of arguments to case "+i+". Expected "+o.length+" ("+o+"), got "+e);return{fold:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(t.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+t.length);return t[r].apply(null,n)},match:function(t){var o=z(t);if(u.length!==o.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+o.join(","));if(!function(t){for(var e,n=0,r=t.length;n<r;++n)if(!0!==(e=t[n],function(t,e){return-1<H.call(t,e)}(o,e)))return;return 1}(u))throw new Error("Not all branches were specified when using match. Specified: "+o.join(", ")+"\nRequired: "+u.join(", "));return t[i].apply(null,n)},log:function(t){console.log(t,{constructors:u,constructor:i,params:n})}}}})}([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);function tt(t){if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}}var et=function(t,e,n){var r=(n<0?360+n:n)*Math.PI/180,o=t.width,i=t.height,a=Math.sin(r),u=Math.cos(r),c=W(Math.abs(o*u)+Math.abs(i*a)),s=W(Math.abs(o*a)+Math.abs(i*u)),l=g(c,s),f=A(l);return f.translate(c/2,s/2),f.rotate(r),f.drawImage(t,-o/2,-i/2),$(l,e)},nt=function(t,e,n){var r=g(t.width,t.height),o=A(r);return"v"===n?(o.scale(1,-1),o.drawImage(t,0,-r.height)):(o.scale(-1,1),o.drawImage(t,-r.width,0)),$(r,e)},rt=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],ot=[{type:"not_found",message:"Failed to load image."},{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],it={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",t),new Error("HTML must have a single root node");return tt(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);return tt(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return tt(n)},fromDom:tt,fromPoint:function(t,e,n){return T.from(t.dom.elementFromPoint(e,n)).map(tt)}};function at(t){return t.getParam("imagetools_proxy")}function ut(t){function e(t){return/^[0-9\.]+px$/.test(t)}var n=t.style.width,r=t.style.height;return n||r?e(n)&&e(r)?{w:parseInt(n,10),h:parseInt(r,10)}:null:(n=t.width,r=t.height,n&&r?{w:parseInt(n,10),h:parseInt(r,10)}:null)}function ct(t){return{w:t.naturalWidth,h:t.naturalHeight}}function st(t){return e=it.fromDom(t),n="img",r=function(r){return function(t){var e=r.dom;if(1!==e.nodeType)return!1;var n=e;if(void 0!==n.matches)return n.matches(t);if(void 0!==n.msMatchesSelector)return n.msMatchesSelector(t);if(void 0!==n.webkitMatchesSelector)return n.webkitMatchesSelector(t);if(void 0!==n.mozMatchesSelector)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}(n)},C(e.dom.childNodes,function(t){return r(it.fromDom(t))}).map(it.fromDom);var e,n,r}function lt(t,e){return t.dom.is(e,"figure")}function ft(t,e){return t.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")}function dt(e,t){function n(t){return ft(e,t)&&(jt(e,t)||St(e,t)||h(at(e)))}return lt(e,t)?st(t).bind(function(t){return n(t.dom)?T.some(t.dom):T.none()}):n(t)?T.some(t):T.none()}function mt(t,e){t.notificationManager.open({text:e,type:"error"})}function ht(t){var e=t.selection.getNode(),n=t.dom.getParent(e,"figure.image");return null!==n&&lt(t,n)?st(n):ft(t,e)?T.some(it.fromDom(e)):T.none()}function gt(t,e,n){var r=e.match(/(?:\/|^)(([^\/\?]+)\.(?:[a-z0-9.]+))(?:\?|$)/i);return h(r)?t.dom.encode(r[n]):null}function pt(t,e){if(St(t,e))return Y(e.src,null,(n=e,-1!==l.inArray(t.getParam("imagetools_credentials_hosts",[],"string[]"),new xt(n.src).host)));var n,r;if(jt(t,e))return(0===(r=e.src).indexOf("data:")?N:B)(r);var o=at(t);return Y(o+(-1===o.indexOf("?")?"?":"&")+"url="+encodeURIComponent(e.src),t.getParam("api_key",t.getParam("imagetools_api_key","","string"),"string"),!1)}function vt(t,e){var n,r,o=t.editorUpload.blobCache.getByUri(e.src);return o?Rt.resolve(o.blob()):(n=t,r=e,T.from(n.getParam("imagetools_fetch_image",null,"function")).fold(function(){return pt(n,r)},function(t){return t(r)}))}function yt(t){_t.clearTimeout(t.get())}function wt(u,c,s,l,f,d,m){return s.toBlob().then(function(t){var e,n,o,r=u.editorUpload.blobCache,i=d.src,a=c.type===t.type;return u.getParam("images_reuse_filename",!1,"boolean")&&(n=h(o=r.getByUri(i))?(i=o.uri(),e=o.name(),o.filename()):(e=gt(u,i,2),gt(u,i,1))),o=r.create({id:"imagetools"+Ut++,blob:t,base64:s.toBase64(),uri:i,name:e,filename:a?n:void 0}),r.add(o),u.undoManager.transact(function(){var r=function(){var t,e,n;u.$(d).off("load",r),u.nodeChanged(),l?u.editorUpload.uploadImagesAuto():(yt(f),t=u,e=f,n=_t.setEditorTimeout(t,function(){t.editorUpload.uploadImagesAuto()},t.getParam("images_upload_timeout",3e4,"number")),e.set(n))};u.$(d).on("load",r),m&&u.$(d).attr({width:m.w,height:m.h}),u.$(d).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})}function bt(r,o,t,i){return function(){return ht(r).fold(function(){mt(r,"Could not find selected image")},function(n){return r._scanForImages().then(function(){return vt(r,n.dom)}).then(function(e){return Z(e).then(t).then(function(t){return wt(r,e,t,!1,o,n.dom,i)})}).catch(function(t){mt(r,t)})})}}function Et(e,n,r){return function(){var t=ht(e).map(function(t){var e=ut(t.dom);return e?{w:e.h,h:e.w}:null}).getOrNull();return bt(e,n,function(t){return n=r,(e=t).toCanvas().then(function(t){return et(t,e.getType(),n)});var e,n},t)()}}function It(t,e,r){return function(){return bt(t,e,function(t){return n=r,(e=t).toCanvas().then(function(t){return nt(t,e.getType(),n)});var e,n})()}}function Tt(s,l){return function(){var n=ht(s),i=n.map(function(t){return ct(t.dom)});n.each(function(e){dt(s,e.dom).each(function(t){vt(s,e.dom).then(function(t){var e={blob:t,url:URL.createObjectURL(t)};s.windowManager.open({title:"Edit Image",size:"large",body:{type:"panel",items:[{type:"imagetools",name:"imagetools",label:"Edit Image",currentState:e}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,disabled:!0}],onSubmit:function(t){var o=t.getData().imagetools.blob;n.each(function(r){i.each(function(t){var e,n,a,u,c;e=s,n=l,a=r.dom,u=t,F(c=o).then(function(t){var e,n,r,o,i=ct(t);return u.w===i.w&&u.h===i.h||ut(a)&&(e=a,(n=i)&&(r=e.style.width,o=e.style.height,(r||o)&&(e.style.width=n.w+"px",e.style.height=n.h+"px",e.removeAttribute("data-mce-style")),r=e.width,o=e.height,(r||o)&&(e.setAttribute("width",String(n.w)),e.setAttribute("height",String(n.h))))),URL.revokeObjectURL(t.src),c}).then(Z).then(function(t){return wt(e,c,t,!0,n,a)})})}),t.close()},onCancel:r,onAction:function(t,e){switch(e.name){case"save-state":e.value?t.enable("save"):t.disable("save");break;case"disable":t.disable("save"),t.disable("cancel");break;case"enable":t.enable("cancel")}}})})})})}}function At(e){function n(t){return function(){return e.execCommand(t)}}function t(){return ht(e).exists(function(t){return dt(e,t.dom).isSome()})}function r(e){function i(t){return e.setDisabled(!t)}return i(t()),o=o.concat([i]),function(){o=function(t){for(var e=[],n=0,r=t.length;n<r;n++){var o=t[n];o!==i&&e.push(o)}return e}(o)}}var o=[];e.on("NodeChange",function(){var e=t();P(o,function(t){return t(e)})}),e.ui.registry.addButton("rotateleft",{tooltip:"Rotate counterclockwise",icon:"rotate-left",onAction:n("mceImageRotateLeft"),onSetup:r}),e.ui.registry.addButton("rotateright",{tooltip:"Rotate clockwise",icon:"rotate-right",onAction:n("mceImageRotateRight"),onSetup:r}),e.ui.registry.addButton("flipv",{tooltip:"Flip vertically",icon:"flip-vertically",onAction:n("mceImageFlipVertical"),onSetup:r}),e.ui.registry.addButton("fliph",{tooltip:"Flip horizontally",icon:"flip-horizontally",onAction:n("mceImageFlipHorizontal"),onSetup:r}),e.ui.registry.addButton("editimage",{tooltip:"Edit image",icon:"edit-image",onAction:n("mceEditImage"),onSetup:r}),e.ui.registry.addButton("imageoptions",{tooltip:"Image options",icon:"image",onAction:n("mceImage")}),e.ui.registry.addContextMenu("imagetools",{update:function(t){return dt(e,t).map(function(t){return{text:"Edit image",icon:"edit-image",onAction:n("mceEditImage")}}).toArray()}})}"undefined"!=typeof window||Function("return this;")();var _t=tinymce.util.Tools.resolve("tinymce.util.Delay"),Rt=tinymce.util.Tools.resolve("tinymce.util.Promise"),xt=tinymce.util.Tools.resolve("tinymce.util.URI"),Ut=0,jt=function(t,e){var n=e.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new xt(n).host===t.documentBaseURI.host},St=function(t,e){return-1!==l.inArray(t.getParam("imagetools_cors_hosts",[],"string[]"),new xt(e.src).host)};o.add("imagetools",function(t){var e,r,o,i,n=c(0),a=c(null),u=t;l.each({mceImageRotateLeft:Et(u,n,-90),mceImageRotateRight:Et(u,n,90),mceImageFlipVertical:It(u,n,"v"),mceImageFlipHorizontal:It(u,n,"h"),mceEditImage:Tt(u,n)},function(t,e){u.addCommand(e,t)}),At(t),(e=t).ui.registry.addContextToolbar("imagetools",{items:e.getParam("imagetools_toolbar","rotateleft rotateright flipv fliph editimage imageoptions"),predicate:function(t){return dt(e,t).isSome()},position:"node",scope:"node"}),o=n,i=a,(r=t).on("NodeChange",function(t){var e=i.get(),n=dt(r,t.element);e&&!n.exists(function(t){return e.src===t.src})&&(yt(o),r.editorUpload.uploadImagesAuto(),i.set(null)),n.each(i.set)})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/importcss/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/importcss/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..ca5326f97b6903cf2729d0a87dae80799a522a25
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/importcss/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function t(n){return function(t){return r=typeof(e=t),(null===e?"null":"object"==r&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":r)===n;var e,r}}function y(t){return t.getParam("importcss_selector_converter")}function u(e){return l(e)?function(t){return-1!==t.indexOf(e)}:e instanceof RegExp?function(t){return e.test(t)}:e}function h(t,e){var r,n=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(n){var o=n[1],i=n[2].substr(1).split(".").join(" "),c=x.makeMap("a,img");return n[1]?(r={title:e},t.schema.getTextBlockElements()[o]?r.block=o:t.schema.getBlockElements()[o]||c[o.toLowerCase()]?r.selector=o:r.inline=o):n[2]&&(r={inline:"span",title:e.substr(1),classes:i}),!1!==t.getParam("importcss_merge_classes")?r.classes=i:r.attributes={class:i},r}}function d(t,e){return null===e||!1!==t.getParam("importcss_exclusive")}function r(v){v.on("init",function(){function o(t,e){if(f=t,p=g,!(d(v,m=e)?f in p:f in m.selectors)){a=t,l=g,d(v,u=e)?l[a]=!0:u.selectors[a]=!0;var r=(i=(o=v).plugins.importcss,c=t,((s=e)&&s.selector_converter?s.selector_converter:y(o)?y(o):function(){return h(o,c)}).call(i,c,s));if(r){var n=r.name||_.DOM.uniqueId();return v.formatter.register(n,r),{title:r.title,format:n}}}var o,i,c,s,a,u,l,f,m,p;return null}var e,r,n,t,i=(e=[],r=[],n={},{addItemToGroup:function(t,e){n[t]?n[t].push(e):(r.push(t),n[t]=[e])},addItem:function(t){e.push(t)},toFormats:function(){return function(t){for(var e=[],r=0,n=t.length;r<n;++r){if(!f(t[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+t);P.apply(e,t[r])}return e}(function(t,e){for(var r=t.length,n=new Array(r),o=0;o<r;o++){var i=t[o];n[o]=e(i,o)}return n}(r,function(t){var e=n[t];return 0===e.length?[]:[{title:t,items:e}]})).concat(e)}}),g={},c=u(v.getParam("importcss_selector_filter")),s=(t=v.getParam("importcss_groups"),x.map(t,function(t){return x.extend({},t,{original:t,selectors:{},filter:u(t.filter)})}));x.each(function(c,t,s){var a=[],r={},u=function(t,e){var r,n,o=n=t.href,i=p.cacheSuffix;if((n=o=l(o)?o.replace("?"+i,"").replace("&"+i,""):o)&&s(n,e)&&!function(t,e){var r,n=!1!==(r=t.getParam("skin"))&&(r||"oxide");if(n){var o=t.getParam("skin_url"),i=o?t.documentBaseURI.toAbsolute(o):m.baseURL+"/skins/ui/"+n,c=m.baseURL+"/skins/content/";return e===i+"/content"+(t.inline?".inline":"")+".min.css"||-1!==e.indexOf(c)}}(c,n)){x.each(t.imports,function(t){u(t,!0)});try{r=t.cssRules||t.rules}catch(t){}x.each(r,function(t){t.styleSheet?u(t.styleSheet,!0):t.selectorText&&x.each(t.selectorText.split(","),function(t){a.push(x.trim(t))})})}};x.each(c.contentCSS,function(t){r[t]=!0}),s=s||function(t,e){return e||r[t]};try{x.each(t.styleSheets,function(t){u(t)})}catch(t){}return a}(v,v.getDoc(),u(v.getParam("importcss_file_filter"))),function(r){var t,e,n;-1===r.indexOf(".mce-")&&(c&&!c(r)||(n=r,0<(t=x.grep(s,function(t){return!t.filter||t.filter(n)})).length?x.each(t,function(t){var e=o(r,t);e&&i.addItemToGroup(t.title,e)}):(e=o(r,null))&&i.addItem(e)))});var a=i.toFormats();v.fire("addStyleModifications",{items:a,replace:!v.getParam("importcss_append")})})}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=t("string"),f=t("array"),_=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),m=tinymce.util.Tools.resolve("tinymce.EditorManager"),p=tinymce.util.Tools.resolve("tinymce.Env"),x=tinymce.util.Tools.resolve("tinymce.util.Tools"),P=Array.prototype.push;e.add("importcss",function(t){return r(t),e=t,{convertSelectorToFormat:function(t){return h(e,t)}};var e})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1996ca8e772a8f9df5935671581ce09a2724d84
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function m(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function s(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function r(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function l(e,t,n){return void 0===n&&(n=new Date),(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",r(n.getMonth()+1,2))).replace("%d",r(n.getDate(),2))).replace("%H",""+r(n.getHours(),2))).replace("%M",""+r(n.getMinutes(),2))).replace("%S",""+r(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(u[n.getMonth()]))).replace("%b",""+e.translate(o[n.getMonth()]))).replace("%A",""+e.translate(i[n.getDay()]))).replace("%a",""+e.translate(a[n.getDay()]))).replace("%%","%")}function d(e,t){var n,r,a,i,o,u;e.getParam("insertdatetime_element",!1)?(n=l(e,t),r=/%[HMSIp]/.test(t)?l(e,"%Y-%m-%dT%H:%M"):l(e,"%Y-%m-%d"),(a=e.dom.getParent(e.selection.getStart(),"time"))?(o=a,u=(i=e).dom.create("time",{datetime:r},n),o.parentNode.insertBefore(u,o),i.dom.remove(o),i.selection.select(u,!0),i.selection.collapse(!1)):e.insertContent('<time datetime="'+r+'">'+n+"</time>")):e.insertContent(l(e,t))}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),i="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),o="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),u="January February March April May June July August September October November December".split(" "),p=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("insertdatetime",function(e){var t,n,r,a,i,o,u,c;(t=e).addCommand("mceInsertDate",function(){d(t,t.getParam("insertdatetime_dateformat",t.translate("%Y-%m-%d")))}),t.addCommand("mceInsertTime",function(){d(t,m(t))}),u=s(n=e),r=0<(o=s(i=n)).length?o[0]:m(i),a=r,c={get:function(){return a},set:function(e){a=e}},n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===c.get()},fetch:function(e){e(p.map(u,function(e){return{type:"choiceitem",text:l(n,e),value:e}}))},onAction:function(e){d(n,c.get())},onItemAction:function(e,t){c.set(t),d(n,t)}}),n.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return p.map(u,function(e){return{type:"menuitem",text:l(n,e),onAction:(t=e,function(){c.set(t),d(n,t)})};var t})}})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..303c60bbb01e1886be6bf52135c7d929f03aca1f
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("legacyoutput",function(e){var s,t;console.warn("The legacyoutput plugin has been deprecated and marked for removal in TinyMCE 6.0"),(t=s=e).settings.inline_styles=!1,t.getParam("fontsize_formats")||(t.settings.fontsize_formats="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t.getParam("font_formats")||(t.settings.font_formats="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),s.on("PreInit",function(){var e=s,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=l.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),a=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all",preserve_attributes:["class","style"]},{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all",preserve_attributes:["class","style"]},{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return String(l.inArray(i,e.value)+1)}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),l.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),l.each(t.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/link/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/link/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..7c4603a85e902cd44de901b8cc7eb172279a31a5
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/link/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function t(r){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e)===r;var n,e}}function n(n){return function(t){return typeof t===n}}function h(){}function i(t){return function(){return t}}function e(t){return t}function r(t,n){return t===n}function o(){return v}var u,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK"),l=t("string"),d=t("array"),s=function(t){return u===t},f=n("boolean"),p=n("function"),m=i(!1),g=i(!(u=null)),v={fold:function(t,n){return t()},isSome:m,isNone:g,getOr:e,getOrThunk:k,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:k,map:o,each:h,bind:o,exists:m,forall:g,filter:function(){return v},toArray:function(){return[]},toString:i("none()")};function k(t){return t()}function y(t,o,i){return function(t){for(var n,e=0,r=t.length;e<r;e++)n=t[e],i=o(i,n,e)}(t),i}function x(t){for(var n=[],e=0,r=t.length;e<r;++e){if(!d(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);at.apply(n,t[e])}return n}function b(t,n){for(var e=0;e<t.length;e++){var r=n(t[e],e);if(r.isSome())return r}return it.none()}function O(t,n,e){return void 0===e&&(e=r),t.exists(function(t){return e(t,n)})}function w(t,n){return t?it.some(n):it.none()}function C(t){var n=t.getParam("link_assume_external_targets",!1);return f(n)&&n?1:!l(n)||"http"!==n&&"https"!==n?0:n}function N(t){return t.getParam("default_link_target")}function A(t){return t.getParam("target_list",!0)}function P(t){return t.getParam("rel_list",[],"array")}function T(t){return t.getParam("allow_unsafe_link_target",!1,"boolean")}function S(t){return l(t.value)?t.value:""}function _(n){return void 0===n&&(n=S),function(t){return it.from(t).map(function(t){return ct(t,n)})}}function R(t,i,u,a){return function(t){for(var n=mt(t),e=0,r=n.length;e<r;e++){var o=n[e];!function(t,n){(i(t,n)?u:a)(t,n)}(t[o],o)}}(t),1}function D(t,n){return gt.call(t,n)}function L(t){return t&&"a"===t.nodeName.toLowerCase()}function E(t){return L(t)&&!!ht(t)}function M(t,n){if(t.collapsed)return[];for(var e=t.cloneContents(),r=new dt(e.firstChild,e),o=[],i=e.firstChild;n(i)&&o.push(i),i=r.next(););return o}function U(t){return/^\w+:/i.test(t)}function B(t,n){function e(t){return t.filter(function(t){return-1===lt.inArray(o,t)})}var r,o=["noopener"],i=t?t.split(/\s+/):[],u=n?0<(r=e(r=i)).length?r.concat(o):o:e(i);return 0<u.length?lt.trim(u.sort().join(" ")):""}function I(t,n){return n=n||t.selection.getNode(),pt(n)?t.dom.select("a[href]",n)[0]:t.dom.getParent(n,"a[href]")}function K(t,n){return(n?n.innerText||n.textContent:t.getContent({format:"text"})).replace(/\uFEFF/g,"")}function z(t){return 0<lt.grep(t,E).length}function j(t){var n=t.schema.getTextInlineElements();return 0===M(t.selection.getRng(),function(t){return 1===t.nodeType&&!L(t)&&!D(n,t.nodeName.toLowerCase())}).length}function V(l,c,f){var t,n,e,r,o,i,u,s=l.selection.getNode(),m=I(l,s),g=(n=l,e=y(["title","rel","class","target"],function(n,e){return t[e].each(function(t){n[e]=0<t.length?t:null}),n},{href:(t=f).href}),u=st({},e),0<P(n).length||!1!==T(n)||(r=B(u.rel,"_blank"===u.target),u.rel=r||null),it.from(u.target).isNone()&&!1===A(n)&&(u.target=N(n)),u.href=(o=u.href,"http"!==(i=C(n))&&"https"!==i||U(o)?o:i+"://"+o),u);l.undoManager.transact(function(){var n,t,e,r,o,i,u,a;f.href===c.href&&c.attach(),m?(l.focus(),o=l,i=m,u=f.text,a=g,u.each(function(t){D(i,"innerText")?i.innerText=t:i.textContent=t}),o.dom.setAttribs(i,a),o.selection.select(i)):(n=l,e=f.text,r=g,pt(t=s)?kt(n,t,r):e.fold(function(){n.execCommand("mceInsertLink",!1,r)},function(t){n.insertContent(n.dom.createHTML("a",r,n.dom.encode(t)))}))})}function q(t,n,e){var r,o,i,u,a,l,c,f;t.hasPlugin("rtc",!0)?t.execCommand("createlink",!1,(i=e.class,u=e.href,a=e.rel,l=e.target,c=e.text,f=e.title,R({class:i.getOrNull(),href:u,rel:a.getOrNull(),target:l.getOrNull(),text:c.getOrNull(),title:f.getOrNull()},function(t,n){return!1===s(t)},(r=o={},function(t,n){r[n]=t}),h),o)):V(t,n,e)}function F(t){var l;t.hasPlugin("rtc",!0)?t.execCommand("unlink"):(l=t).undoManager.transact(function(){var t,n,e,r,o,i,u,a=l.selection.getNode();pt(a)?vt(l,a):(n=(t=l).dom,r=(e=t.selection).getBookmark(),o=e.getRng().cloneRange(),i=n.getParent(o.startContainer,"a[href]",t.getBody()),u=n.getParent(o.endContainer,"a[href]",t.getBody()),i&&o.setStartBefore(i),u&&o.setEndAfter(u),e.setRng(o),t.execCommand("unlink"),e.moveToBookmark(r)),l.focus()})}function W(t){var n=t.href;return 0<n.indexOf("@")&&-1===n.indexOf("/")&&-1===n.indexOf("mailto:")?it.some({message:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",preprocess:function(t){return st(st({},t),{href:"mailto:"+n})}}):it.none()}function H(t,n,e){var r=t.getAttrib(n,e);return null!==r&&0<r.length?it.some(r):it.none()}function G(d){var t,n=I(t=d);At(t,n).then(function(t){var n,e,i,u,r=function(t){var e=t.getData();if(!e.url.value)return F(i),void t.close();function n(n){return it.from(e[n]).filter(function(t){return!O(u.anchor[n],t)})}var r={href:e.url.value,text:n("text"),target:n("target"),rel:n("rel"),class:n("linkClass"),title:n("title")},o={href:e.url.value,attach:void 0!==e.url.meta&&e.url.meta.attach?e.url.meta.attach:h};wt(i,r).then(function(t){q(i,o,t)}),t.close()},o=i=d,a=(n=u=t).anchor.text.map(function(){return{name:"text",type:"input",label:"Text to display"}}).toArray(),l=n.flags.titleEnabled?[{name:"title",type:"input",label:"Title"}]:[],c=it.from(N(o)),f=n.anchor,s={url:{value:e=f.url.getOr(""),meta:{original:{value:e}}},text:f.text.getOr(""),title:f.title.getOr(""),anchor:e,link:e,rel:f.rel.getOr(""),target:f.target.or(c).getOr(""),linkClass:f.linkClass.getOr("")},m=n.catalogs,g=xt(s,m);return{title:"Insert/Edit Link",size:"normal",body:{type:"panel",items:x([[{name:"url",type:"urlinput",filetype:"file",label:"URL"}],a,l,function(t){for(var n=[],e=function(t){n.push(t)},r=0;r<t.length;r++)t[r].each(e);return n}([m.anchor.map(ft.createUi("anchor","Anchors")),m.rels.map(ft.createUi("rel","Rel")),m.targets.map(ft.createUi("target","Open link in...")),m.link.map(ft.createUi("link","Link list")),m.classes.map(ft.createUi("linkClass","Class"))])])},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:s,onChange:function(n,t){var e=t.name;g.onChange(n.getData,{name:e}).each(function(t){n.setData(t)})},onSubmit:r}}).then(function(t){d.windowManager.open(t)})}function J(t,n){return t.dom.getParent(n,"a[href]")}function X(t){return J(t,t.selection.getStart())}function $(t,n){var e,r;n&&(e=ht(n),/^#/.test(e)?(r=t.$(e)).length&&t.selection.scrollIntoView(r[0],!0):function(t){var n=document.createElement("a");n.target="_blank",n.href=t,n.rel="noreferrer noopener";var e,r,o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),e=n,r=o,document.body.appendChild(e),e.dispatchEvent(r),document.body.removeChild(e)}(n.href))}function Q(t){return function(){G(t)}}function Y(t){return function(){$(t,X(t))}}function Z(t,n){return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}function tt(e){return function(t){function n(){return t.setActive(!e.mode.isReadOnly()&&null!==I(e,e.selection.getNode()))}return n(),Z(e,n)}}function nt(e){return function(t){function n(){return t.setDisabled(null===I(e,e.selection.getNode()))}return n(),Z(e,n)}}function et(r){return function(n){function e(t){return z(t)||0<M(r.selection.getRng(),E).length}var t=r.dom.getParents(r.selection.getStart());return n.setDisabled(!e(t)),Z(r,function(t){return n.setDisabled(!e(t.parents))})}}function rt(t){var n=x(function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var i=t[o];r[o]=n(i,o)}return r}(t.dom.select("a:not([href])"),function(t){var n=t.name||t.id;return n?[{text:n,value:"#"+n}]:[]}));return 0<n.length?it.some([{text:"None",value:""}].concat(n)):it.none()}var ot=function(e){function t(){return o}function n(t){return t(e)}var r=i(e),o={fold:function(t,n){return n(e)},isSome:g,isNone:m,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return ot(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?o:v},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return o},it={some:ot,none:o,from:function(t){return null==t?v:ot(t)}},ut=Array.prototype.indexOf,at=Array.prototype.push,lt=tinymce.util.Tools.resolve("tinymce.util.Tools"),ct=function(t,i){var u=[];return lt.each(t,function(t){var n,e,r,o=l((n=t).text)?n.text:l(n.title)?n.title:"";void 0!==t.menu?(e=ct(t.menu,i),u.push({text:o,items:e})):(r=i(t),u.push({text:o,value:r}))}),u},ft={sanitize:function(t){return _(S)(t)},sanitizeWith:_,createUi:function(n,e){return function(t){return{name:n,type:"listbox",label:e,items:t}}},getValue:S},st=function(){return(st=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)},mt=Object.keys,gt=Object.hasOwnProperty,dt=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),ht=function(t){return t.getAttribute("data-mce-href")||t.getAttribute("href")},pt=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},vt=function(t,n){var e,r=t.dom.select("img",n)[0];!r||(e=t.dom.getParents(r,"a[href]",n)[0])&&(e.parentNode.insertBefore(r,e),t.dom.remove(e))},kt=function(t,n,e){var r,o=t.dom.select("img",n)[0];o&&(r=t.dom.create("a",e),o.parentNode.insertBefore(r,o),r.appendChild(o))},yt=function(e,t){return b(t,function(t){return D(n=t,"items")&&void 0!==n.items&&null!==n.items?yt(e,t.items):w(t.value===e,t);var n})},xt=function(t,c){function f(t,n){var e,r,o,i,u,a,l=("link"===(e=n.name)?c.link:"anchor"===e?c.anchor:it.none()).getOr([]);return r=s.text,o=n.name,i=l,u=t[o],a=0<r.length,void 0!==u?yt(u,i).map(function(t){return{url:{value:t.value,meta:{text:a?r:t.text,attach:h}},text:a?r:t.text}}):it.none()}var s={text:t.text,title:t.title};return{onChange:function(t,n){var e,r,o,i,u,a,l=n.name;return"url"===l?(r=t(),o=r.url,u=w(s.text.length<=0,it.from(o.meta.text).getOr(o.value)),i=r.url,a=w(s.title.length<=0,it.from(i.meta.title).getOr("")),u.isSome()||a.isSome()?it.some(st(st({},u.map(function(t){return{text:t}}).getOr({})),a.map(function(t){return{title:t}}).getOr({}))):it.none()):(e=["anchor","link"],-1<ut.call(e,l)?f(t(),n):("text"!==l&&"title"!==l||(s[l]=t()[l]),it.none()))}}},bt=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ot=tinymce.util.Tools.resolve("tinymce.util.Promise"),wt=function(u,a){return b([W,(e=C(u),r=u.getParam("link_default_protocol","http","string"),function(t){var n=t.href;return 1===e&&!U(n)||0===e&&/^\s*www(\.|\d\.)/i.test(n)?it.some({message:"The URL you entered seems to be an external link. Do you want to add the required "+r+":// prefix?",preprocess:function(t){return st(st({},t),{href:r+"://"+n})}}):it.none()})],function(t){return t(a)}).fold(function(){return Ot.resolve(a)},function(i){return new Ot(function(n){var e=u,t=i.message,r=function(t){n(t?i.preprocess(a):a)},o=e.selection.getRng();bt.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),r(t)})})})});var e,r},Ct=tinymce.util.Tools.resolve("tinymce.util.XHR"),Nt=[{text:"Current window",value:""},{text:"New window",value:"_blank"}],At=function(m,g){return t=(e=m).getParam("link_list"),new Ot(function(n){l(t)?Ct.send({url:t,success:function(t){return n(function(t){try{return it.some(JSON.parse(t))}catch(t){return it.none()}}(t))},error:function(t){return n(it.none())}}):p(t)?t(function(t){return n(it.some(t))}):n(it.from(t))}).then(function(t){return t.bind(ft.sanitizeWith(n)).map(function(t){return 0<t.length?[{text:"None",value:""}].concat(t):t})}).then(function(t){var n,e,r,o,i,u,a,l,c,f,s=(e=g,r=(n=m).dom,o=j(n)?it.some(K(n.selection,e)):it.none(),i=e?it.some(r.getAttrib(e,"href")):it.none(),u=e?it.from(r.getAttrib(e,"target")):it.none(),a=H(r,e,"rel"),l=H(r,e,"class"),{url:i,text:o,title:H(r,e,"title"),target:u,rel:a,linkClass:l});return{anchor:s,catalogs:{targets:(f=A(m),d(f)?ft.sanitize(f).orThunk(function(){return it.some(Nt)}):!1===f?it.none():it.some(Nt)),rels:function(t,n){var e=P(t);if(0<e.length){var r=O(n,"_blank");return(!1===T(t)?ft.sanitizeWith(function(t){return B(ft.getValue(t),r)}):ft.sanitize)(e)}return it.none()}(m,s.target),classes:0<(c=m.getParam("link_class_list",[],"array")).length?ft.sanitize(c):it.none(),anchor:rt(m),link:t},optNode:it.from(g),flags:{titleEnabled:m.getParam("link_title",!0,"boolean")}}});function n(t){return e.convertURL(t.value||t.url,"href")}var e,t};a.add("link",function(t){var n,e,r,o,i,u,a;function l(t){var n=a.selection.getNode();return t.setDisabled(!I(a,n)),h}(n=t).ui.registry.addToggleButton("link",{icon:"link",tooltip:"Insert/edit link",onAction:Q(n),onSetup:tt(n)}),n.ui.registry.addButton("openlink",{icon:"new-tab",tooltip:"Open link",onAction:Y(n),onSetup:nt(n)}),n.ui.registry.addButton("unlink",{icon:"unlink",tooltip:"Remove link",onAction:function(){return F(n)},onSetup:et(n)}),(e=t).ui.registry.addMenuItem("openlink",{text:"Open link",icon:"new-tab",onAction:Y(e),onSetup:nt(e)}),e.ui.registry.addMenuItem("link",{icon:"link",text:"Link...",shortcut:"Meta+K",onAction:Q(e)}),e.ui.registry.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onAction:function(){return F(e)},onSetup:et(e)}),(r=t).ui.registry.addContextMenu("link",{update:function(t){return z(r.dom.getParents(t,"a"))?"link unlink openlink":"link"}}),(a=t).ui.registry.addContextForm("quicklink",{launch:{type:"contextformtogglebutton",icon:"link",tooltip:"Link",onSetup:tt(a)},label:"Link",predicate:function(t){return!!I(a,t)&&a.getParam("link_context_toolbar",!1,"boolean")},initValue:function(){var t=I(a);return t?ht(t):""},commands:[{type:"contextformtogglebutton",icon:"link",tooltip:"Link",primary:!0,onSetup:function(t){var n=a.selection.getNode();return t.setActive(!!I(a,n)),tt(a)(t)},onAction:function(t){var n=t.getValue(),e=function(t){var n=I(a),e=j(a);if(n||!e)return it.none();var r=K(a.selection,n);return it.some(0<r.length?r:t)}(n);q(a,{href:n,attach:h},{href:n,text:e,title:it.none(),rel:it.none(),target:it.none(),class:it.none()}),a.selection.collapse(!1),t.hide()}},{type:"contextformbutton",icon:"unlink",tooltip:"Remove link",onSetup:l,onAction:function(t){F(a),t.hide()}},{type:"contextformbutton",icon:"new-tab",tooltip:"Open link",onSetup:l,onAction:function(t){Y(a)(),t.hide()}}]}),(u=t).on("click",function(t){var n=J(u,t.target);n&&c.metaKeyPressed(t)&&(t.preventDefault(),$(u,n))}),u.on("keydown",function(t){var n=X(u);n&&13===t.keyCode&&!0===t.altKey&&!1===t.shiftKey&&!1===t.ctrlKey&&!1===t.metaKey&&(t.preventDefault(),$(u,n))}),(o=t).addCommand("mceLink",function(){o.getParam("link_quicklink",!1,"boolean")?o.fire("contexttoolbar-show",{toolbarKey:"quicklink"}):Q(o)()}),(i=t).addShortcut("Meta+K","",function(){i.execCommand("mceLink")})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/lists/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/lists/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..05dd95cef3d3c084c301a58d4ea10a3fc6b26db9
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/lists/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function u(){}function S(e){return function(){return e}}function n(e){return e}function r(e,t){return e===t}function y(t){return function(e){return!t(e)}}function o(){return p}var i=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=e("string"),O=e("object"),s=e("array"),c=t("boolean"),f=t("function"),d=t("number"),l=S(!1),m=S(!0),p={fold:function(e,t){return e()},isSome:l,isNone:m,getOr:n,getOrThunk:g,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:S(null),getOrUndefined:S(void 0),or:n,orThunk:g,map:o,each:u,bind:o,exists:l,forall:m,filter:function(){return p},toArray:function(){return[]},toString:S("none()")};function g(e){return e()}function C(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r}function b(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function L(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function h(e,n,r){return b(e,function(e,t){r=n(r,e,t)}),r}function v(e,t,n){for(var r=0,o=e.length;r<o;r++){var i=e[r];if(t(i,r))return E.some(i);if(n(i,r))break}return E.none()}function N(e,t){return v(e,t,l)}function T(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!s(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);P.apply(t,e[n])}return t}(C(e,t))}function D(e){var t=I.call(e,0);return t.reverse(),t}function x(e,t){return 0<=t&&t<e.length?E.some(e[t]):E.none()}function A(e){return x(e,0)}function w(e){return x(e,e.length-1)}var k=function(n){function e(){return o}function t(e){return e(n)}var r=S(n),o={fold:function(e,t){return t(n)},isSome:m,isNone:l,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return k(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:p},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},E={some:k,none:o,from:function(e){return null==e?p:k(e)}},I=Array.prototype.slice,P=Array.prototype.push,B=function(){return(B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function R(r,e){return function(e){for(var t=0;t<e.length;t++){var n=function(t){var n=t.brand.toLowerCase();return N(r,function(e){var t;return n===(null===(t=e.brand)||void 0===t?void 0:t.toLowerCase())}).map(function(e){return{current:e.name,version:G.nu(parseInt(t.version,10),0)}})}(e[t]);if(n.isSome())return n}return E.none()}(e.brands)}function M(e,t){var n=String(t).toLowerCase();return N(e,function(e){return e.search(n)})}function U(e,t){return-1!==e.indexOf(t)}function _(t){return function(e){return U(e,t)}}function $(e){return window.matchMedia(e).matches}function F(e,t){return e.dom===t.dom}function H(e,t){return le().browser.isIE()?(n=e.dom,r=t.dom,o=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(n.compareDocumentPosition(r)&o)):(i=e.dom)!==(a=t.dom)&&i.contains(a);var n,r,o,i,a}function j(e,t){for(var n=ye(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function K(){return Z(0,0)}function V(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isEdge:t("Edge"),isChrome:t("Chrome"),isIE:t("IE"),isOpera:t("Opera"),isFirefox:t(ne),isSafari:t("Safari")}}function W(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isWindows:t(ie),isiOS:t("iOS"),isAndroid:t(ae),isOSX:t("OSX"),isLinux:t("Linux"),isSolaris:t(se),isFreeBSD:t(ue),isChromeOS:t(ce)}}function Q(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var X,q,z,Y,Z=function(e,t){return{major:e,minor:t}},G={nu:Z,detect:function(e,t){var n,r,o=String(t).toLowerCase();return 0===e.length?K():(r=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}}(e,n=o))?Z(i(1),i(2)):{major:0,minor:0};function i(e){return Number(n.replace(r,"$"+e))}},unknown:K},J=(X=/^\s+|\s+$/g,function(e){return e.replace(X,"")}),ee=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,te={browsers:S([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return U(e,"edge/")&&U(e,"chrome")&&U(e,"safari")&&U(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,ee],search:function(e){return U(e,"chrome")&&!U(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return U(e,"msie")||U(e,"trident")}},{name:"Opera",versionRegexes:[ee,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:_("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:_("firefox")},{name:"Safari",versionRegexes:[ee,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(U(e,"safari")||U(e,"mobile/"))&&U(e,"applewebkit")}}]),oses:S([{name:"Windows",search:_("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return U(e,"iphone")||U(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:_("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:_("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:_("linux"),versionRegexes:[]},{name:"Solaris",search:_("sunos"),versionRegexes:[]},{name:"FreeBSD",search:_("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:_("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},ne="Firefox",re=function(){return V({current:void 0,version:G.unknown()})},oe=V,ie=(S("Edge"),S("Chrome"),S("IE"),S("Opera"),S(ne),S("Safari"),"Windows"),ae="Android",se="Solaris",ue="FreeBSD",ce="ChromeOS",fe=function(){return W({current:void 0,version:G.unknown()})},de=W,le=(S(ie),S("iOS"),S(ae),S("Linux"),S("OSX"),S(se),S(ue),S(ce),Y=!(q=function(){return e=navigator.userAgent,t=E.from(navigator.userAgentData),n=$,g=te.browsers(),h=te.oses(),v=t.bind(function(e){return R(g,e)}).orThunk(function(){return M(g,n=e).map(function(e){var t=G.detect(e.versionRegexes,n);return{current:e.name,version:t}});var n}).fold(re,oe),y=M(h,r=e).map(function(e){var t=G.detect(e.versionRegexes,r);return{current:e.name,version:t}}).fold(fe,de),{browser:v,os:y,deviceType:(i=v,a=e,s=n,u=(o=y).isiOS()&&!0===/ipad/i.test(a),c=o.isiOS()&&!u,d=(f=o.isiOS()||o.isAndroid())||s("(pointer:coarse)"),l=u||!c&&f&&s("(min-device-width:768px)"),m=c||f&&!l,p=i.isSafari()&&o.isiOS()&&!1===/safari/i.test(a),{isiPad:S(u),isiPhone:S(c),isTablet:S(l),isPhone:S(m),isTouch:S(d),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:S(p),isDesktop:S(!m&&!l&&!p)})};var e,t,n,r,o,i,a,s,u,c,f,d,l,m,p,g,h,v,y}),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Y||(Y=!0,z=q.apply(null,e)),z}),me={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Q(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return Q(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return Q(n)},fromDom:Q,fromPoint:function(e,t,n){return E.from(e.dom.elementFromPoint(t,n)).map(Q)}},pe=function(e,t){var n=e.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(t);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(t);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(t);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},ge=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),he=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),ve=tinymce.util.Tools.resolve("tinymce.util.VK"),ye=Object.keys;function Se(e){return e.dom.nodeName.toLowerCase()}function Ce(t){return function(e){return Bt(e)&&Se(e)===t}}function be(e,t){var n=e.dom;j(t,function(e,t){!function(e,t,n){if(!(a(n)||c(n)||d(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}(n,t,e)})}function Ne(e){return h(e.dom.attributes,function(e,t){return e[t.name]=t.value,e},{})}function Oe(e){return E.from(e.dom.parentNode).map(me.fromDom)}function Le(e){return C(e.dom.childNodes,me.fromDom)}function Te(e,t){var n=e.dom.childNodes;return E.from(n[t]).map(me.fromDom)}function De(e){return Te(e,0)}function xe(e){return Te(e,e.dom.childNodes.length-1)}function Ae(t,n){Oe(t).each(function(e){e.dom.insertBefore(n.dom,t.dom)})}function we(e,t){e.dom.appendChild(t.dom)}function ke(t,e){b(e,function(e){we(t,e)})}function Ee(e){var t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)}function Ie(e){return me.fromDom(e.dom.cloneNode(!0))}function Pe(e,t){var n,r,o=(n=e,be(r=me.fromTag(t),Ne(n)),r);return Ae(e,o),ke(o,Le(e)),Ee(e),o}function Be(t){return function(e){return e&&e.nodeName.toLowerCase()===t}}function Re(t){return function(e){return e&&t.test(e.nodeName)}}function Me(e){return e&&3===e.nodeType}function Ue(e,t){return t&&e.schema.getTextBlockElements()[t.nodeName]}function _e(e,t){return e&&e.nodeName in t}function $e(e,t,n){var r=e.isEmpty(t);return!(n&&0<e.select("span[data-mce-type=bookmark]",t).length)&&r}function Fe(e,t){return e.isChildOf(t,e.getRoot())}function He(e,t){var n,r,o,i,a=e.dom,s=e.schema.getBlockElements(),u=a.createFragment(),c=!1===(n=e.getParam("forced_root_block","p"))?"":!0===n?"p":n;if(c&&((o=a.create(c)).tagName===c.toUpperCase()&&a.setAttribs(o,e.getParam("forced_root_block_attrs",{})),_e(t.firstChild,s)||u.appendChild(o)),t)for(;r=t.firstChild;){var f=r.nodeName;i||"SPAN"===f&&"bookmark"===r.getAttribute("data-mce-type")||(i=!0),_e(r,s)?(u.appendChild(r),o=null):c?(o||(o=a.create(c),u.appendChild(o)),o.appendChild(r)):u.appendChild(r)}return c?i||o.appendChild(a.create("br",{"data-mce-bogus":"1"})):u.appendChild(a.create("br")),u}function je(e){Qt(e)&&Pe(e,"dd")}function Ke(r,e,t){b(t,"Indent"===e?je:function(e){return t=r,Wt(n=e)?Pe(n,"dt"):Qt(n)&&Oe(n).each(function(e){return function(e,t,n){var r=Vt.select('span[data-mce-type="bookmark"]',t),o=He(e,n),i=Vt.createRng();i.setStartAfter(n),i.setEndAfter(t);for(var a,s=i.extractContents(),u=s.firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Vt.remove(u);break}e.dom.isEmpty(s)||Vt.insertAfter(s,t),Vt.insertAfter(o,t),$e(e.dom,n.parentNode)&&(a=n.parentNode,Mt.each(r,function(e){a.parentNode.insertBefore(e,n.parentNode)}),Vt.remove(a)),Vt.remove(n),$e(e.dom,t)&&Vt.remove(t)}(t,e.dom,n.dom)}),0;var t,n})}function Ve(e,t){if(Me(e))return{container:e,offset:t};var n=ge.getNode(e,t);return Me(n)?{container:n,offset:t>=e.childNodes.length?n.data.length:0}:n.previousSibling&&Me(n.previousSibling)?{container:n.previousSibling,offset:n.previousSibling.data.length}:n.nextSibling&&Me(n.nextSibling)?{container:n.nextSibling,offset:0}:{container:e,offset:t}}function We(e){var t=e.cloneRange(),n=Ve(e.startContainer,e.startOffset);t.setStart(n.container,n.offset);var r=Ve(e.endContainer,e.endOffset);return t.setEnd(r.container,r.offset),t}function Qe(e,t){var n=t||e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",qt(e,n))}function Xe(e){var t,n,r=e.selection.getSelectedBlocks();return L((t=e,n=Mt.map(r,function(e){return t.dom.getParent(e,"li,dd,dt",qt(t,e))||e}),Xt.unique(n)),Ft)}function qe(e,t){return w(e.dom.getParents(t,"ol,ul",qt(e,t)))}function ze(e,t,n){return void 0===n&&(n=r),e.exists(function(e){return n(e,t)})}function Ye(e,t,n){return e.isSome()&&t.isSome()?E.some(n(e.getOrDie(),t.getOrDie())):E.none()}function Ze(e,t,n){return e.fire("ListMutation",{action:t,element:n})}function Ge(e,t){we(e.item,t.list)}function Je(e,t){for(var n=0;n<e.length-1;n++)(function(e,t,n){if(!a(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);void 0!==e.style&&f(e.style.getPropertyValue)&&e.style.setProperty(t,n)})(e[n].item.dom,"list-style-type","none");w(e).each(function(e){be(e.list,t.listAttributes),be(e.item,t.itemAttributes),ke(e.item,t.content)})}function et(u,e,c){var t=e.slice(0,c.depth);return w(t).each(function(e){var t,n,r,o,i,a,s=(t=c.itemAttributes,n=c.content,be(r=me.fromTag("li",u),t),ke(r,n),r);we((o=e).list,s),o.item=s,a=c,Se((i=e).list)!==a.listType&&(i.list=Pe(i.list,a.listType)),be(i.list,a.listAttributes)}),t}function tt(e,t,n){var r,o=function(e,t,n){for(var r,o,i,a=[],s=0;s<n;s++)a.push((o=t.listType,we((i={list:me.fromTag(o,r=e),item:me.fromTag("li",r)}).list,i.item),i));return a}(e,n,n.depth-t.length);return function(e){for(var t=1;t<e.length;t++)Ge(e[t-1],e[t])}(o),Je(o,n),r=o,Ye(w(t),A(r),Ge),t.concat(o)}function nt(e){return pe(e,"OL,UL")}function rt(e){return De(e).exists(nt)}function ot(e){return 0<e.depth}function it(e){return e.isSelected}function at(s){return b(s,function(a,e){function t(e){return e.depth===i&&!e.dirty}function n(e){return e.depth<i}var r,o,i;i=(r=s)[o=e].depth,v(D(r.slice(0,o)),t,n).orThunk(function(){return v(r.slice(o+1),t,n)}).fold(function(){var e,t,n,r,o,i;a.dirty&&(a.listAttributes=(e=a.listAttributes,n=function(e,t){return"start"!==t},r=t={},o=function(e,t){r[t]=e},i=u,j(e,function(e,t){(n(e,t)?o:i)(e,t)}),t))},function(e){var t=e;a.listType=t.listType,a.listAttributes=B({},t.listAttributes)})}),s}function st(n,a,s,u){return De(u).filter(nt).fold(function(){a.each(function(e){F(e.start,u)&&s.set(!0)});var r,o,i,e=(r=u,o=n,i=s.get(),Oe(r).filter(Bt).map(function(e){return{depth:o,dirty:!1,isSelected:i,content:(n=Le(t=r),C(xe(t).exists(nt)?n.slice(0,-1):n,Ie)),itemAttributes:Ne(r),listAttributes:Ne(e),listType:Se(e)};var t,n}));a.each(function(e){F(e.end,u)&&s.set(!1)});var t=xe(u).filter(nt).map(function(e){return Yt(n,a,s,e)}).getOr([]);return e.toArray().concat(t)},function(e){return Yt(n,a,s,e)})}function ut(o,e){return C(at(e),function(e){var t,n,r=(t=e.content,n=document.createDocumentFragment(),b(t,function(e){n.appendChild(e.dom)}),me.fromDom(n));return me.fromDom(He(o,r.dom))})}function ct(e,t){var n=at(t),r=e.contentDocument;return A(h(n,function(e,t){return(t.depth>e.length?tt:et)(r,e,t)},[])).map(function(e){return e.list}).toArray()}function ft(e,t){b(L(e,it),function(e){return function(e){switch(t){case"Indent":e.depth++;break;case"Outdent":e.depth--;break;case"Flatten":e.depth=0}e.dirty=!0}(e),0})}function dt(e,t){var n,r,o,i,a,s,u,c,f,d,l,m,p,g=C((i=qe(o=r=e,o.selection.getStart()),a=L(o.selection.getSelectedBlocks(),_t),s=i.toArray().concat(a),zt(r,s)),me.fromDom),h=C(L(Xe(e),Ht),me.fromDom),v=!1;return(g.length||h.length)&&(n=e.selection.getBookmark(),c=t,b((f=g,p=C(Xe(u=e),me.fromDom),d=Ye(N(p,y(rt)),N(D(p),y(rt)),function(e,t){return{start:e,end:t}}),l=!1,m={get:function(){return l},set:function(e){l=e}},C(f,function(e){return{sourceList:e,entries:Yt(0,d,m,e)}})),function(e){ft(e.entries,c);var t,n,r=(t=u,T(function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,a=e.length;i<a;i++){var s=e[i],u=t(s);u!==n&&(r.push(o),o=[]),n=u,o.push(s)}return 0!==o.length&&r.push(o),r}(e.entries,ot),function(e){return(A(e).exists(ot)?ct:ut)(t,e)}));b(r,function(e){Ze(u,"Indent"===c?"IndentList":"OutdentList",e.dom)}),n=e.sourceList,b(r,function(e){Ae(n,e)}),Ee(e.sourceList)}),Ke(e,t,h),e.selection.moveToBookmark(n),e.selection.setRng(We(e.selection.getRng())),e.nodeChanged(),v=!0),v}function lt(e){return dt(e,"Indent")}function mt(e){return dt(e,"Outdent")}function pt(e){return dt(e,"Flatten")}function gt(o){function e(e){var t,n=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"];1===n.nodeType&&(t=Gt.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(r=Math.min(r,n.childNodes.length-1),e?n.insertBefore(t,n.childNodes[r]):Gt.insertAfter(t,n.childNodes[r])):n.appendChild(t),n=t,r=0),i[e?"startContainer":"endContainer"]=n,i[e?"startOffset":"endOffset"]=r}var i={};return e(!0),o.collapsed||e(),i}function ht(o){function e(e){var t,n=t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"];n&&(1===n.nodeType&&(r=function(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t===e)return n;1===t.nodeType&&"bookmark"===t.getAttribute("data-mce-type")||n++,t=t.nextSibling}return-1}(n),n=n.parentNode,Gt.remove(t),!n.hasChildNodes()&&Gt.isBlock(n)&&n.appendChild(Gt.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=r)}e(!0),e();var t=Gt.createRng();return t.setStart(o.startContainer,o.startOffset),o.endContainer&&t.setEnd(o.endContainer,o.endOffset),We(t)}function vt(e){switch(e){case"UL":return"ToggleUlList";case"OL":return"ToggleOlList";case"DL":return"ToggleDLList"}}function yt(e){return/\btox\-/.test(e.className)}function St(e,n,r){function t(e){var t=v(e.parents,Ut,jt).filter(function(e){return e.nodeName===n&&!yt(e)}).isSome();r(t)}return t({parents:e.dom.getParents(e.selection.getNode())}),e.on("NodeChange",t),function(){return e.off("NodeChange",t)}}function Ct(n,e){Mt.each(e,function(e,t){n.setAttribute(t,e)})}function bt(e,t,n){var r,o,i,a=n["list-style-type"]||null;e.setStyle(t,"list-style-type",a),r=e,Ct(o=t,(i=n)["list-attributes"]),Mt.each(r.select("li",o),function(e){Ct(e,i["list-item-attributes"])})}function Nt(e,t,n,r){var o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"];for(1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!n&&Kt(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(Ue(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o}function Ot(u,c,f){var e,t,n=u.selection.getRng(),d="LI",r=qt(u,u.selection.getStart(!0)),l=u.dom;"false"!==l.getContentEditable(u.selection.getNode())&&("DL"===(c=c.toUpperCase())&&(d="DT"),e=gt(n),t=function(n,e,r){for(var o,i=[],a=n.dom,t=Nt(n,e,!0,r),s=Nt(n,e,!1,r),u=[],c=t;c&&(u.push(c),c!==s);c=c.nextSibling);return Mt.each(u,function(e){if(Ue(n,e))return i.push(e),void(o=null);if(a.isBlock(e)||Kt(e))return Kt(e)&&a.remove(e),void(o=null);var t=e.nextSibling;Zt.isBookmarkNode(e)&&(Ut(t)||Ue(n,t)||!t&&e.parentNode===r)?o=null:(o||(o=a.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(u,n,r),Mt.each(t,function(e){var t,n,r,o,i,a=e.previousSibling,s=e.parentNode;Ft(s)||(a&&Ut(a)&&a.nodeName===c&&(o=f,l.getStyle(a,"list-style-type")===(i=null===(i=o?o["list-style-type"]:"")?"":i))?(t=a,e=l.rename(e,d),a.appendChild(e)):(t=l.create(c),e.parentNode.insertBefore(t,e),t.appendChild(e),e=l.rename(e,d)),n=l,r=e,Mt.each(["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],function(e){var t;return n.setStyle(r,((t={})[e]="",t))}),bt(l,t,f),Jt(u.dom,t))}),u.selection.setRng(ht(e)))}function Lt(e,t,n){return a=n,(i=t)&&a&&Ut(i)&&i.nodeName===a.nodeName&&(o=n,(r=e).getStyle(t,"list-style-type",!0)===r.getStyle(o,"list-style-type",!0))&&t.className===n.className;var r,o,i,a}function Tt(e,t,n){var r,o,i,a,s,u,c,f,d,l,m,p,g,h,v,y,S,C=Qe(e),b=(f=Qe(c=e),d=c.selection.getSelectedBlocks(),f&&1===d.length&&d[0]===f?L(f.querySelectorAll("ol,ul,dl"),Ut):L(d,function(e){return Ut(e)&&f!==e})),N=O(n)?n:{};0<b.length?(l=e,p=b,g=t,h=N,(S=Ut(m=C))&&m.nodeName===g&&!en(h)?pt(l):(Ot(l,g,h),v=gt(l.selection.getRng()),y=S?function(e,t){if(2===arguments.length)for(var n,r=0,o=t.length;r<o;r++)!n&&r in t||((n=n||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))}([m],p):p,Mt.each(y,function(e){var t,n,r=l,o=g,i=h;(t=e).nodeName!==o?(n=r.dom.rename(t,o),bt(r.dom,n,i),Ze(r,vt(o),n)):(bt(r.dom,t,i),Ze(r,vt(o),t))}),l.selection.setRng(ht(v)))):(i=t,a=N,(o=C)!==(r=e).getBody()&&(o?o.nodeName!==i||en(a)||yt(o)?(s=gt(r.selection.getRng()),bt(r.dom,o,a),u=r.dom.rename(o,i),Jt(r.dom,u),r.selection.setRng(ht(s)),Ot(r,i,a),Ze(r,vt(i),u)):pt(r):(Ot(r,i,a),Ze(r,vt(i),o))))}function Dt(e,t,n,r){var o=t.startContainer,i=t.startOffset;if(Me(o)&&(n?i<o.data.length:0<i))return o;var a=e.schema.getNonEmptyElements();1===o.nodeType&&(o=ge.getNode(o,i));var s,u,c=new he(o,r);for(n&&(s=e.dom,Kt(u=o)&&s.isBlock(u.nextSibling)&&!Kt(u.previousSibling)&&c.next());o=c[n?"next":"prev2"]();){if("LI"===o.nodeName&&!o.hasChildNodes())return o;if(a[o.nodeName])return o;if(Me(o)&&0<o.data.length)return o}}function xt(e,t){var n=t.childNodes;return 1===n.length&&!Ut(n[0])&&e.isBlock(n[0])}function At(t,e,n){var r,o,i,a=e.parentNode;Fe(t,e)&&Fe(t,n)&&(Ut(n.lastChild)&&(r=n.lastChild),a===n.lastChild&&Kt(a.previousSibling)&&t.remove(a.previousSibling),(o=n.lastChild)&&Kt(o)&&e.hasChildNodes()&&t.remove(o),$e(t,n,!0)&&t.$(n).empty(),function(e,t,n){var r,o,i,a=xt(e,n)?n.firstChild:n;if(xt(o=e,i=t)&&o.remove(i.firstChild,!0),!$e(e,t,!0))for(;r=t.firstChild;)a.appendChild(r)}(t,e,n),r&&n.appendChild(r),i=H(me.fromDom(n),me.fromDom(e))?t.getParents(e,Ut,n):[],t.remove(e),b(i,function(e){$e(t,e)&&e!==t.getRoot()&&t.remove(e)}))}function wt(c,f){var e=c.dom,t=c.selection,n=t.getStart(),r=qt(c,n),d=e.getParent(t.getStart(),"LI",r);if(d){var o=d.parentNode;if(o===c.getBody()&&$e(e,o))return 1;var l=We(t.getRng()),m=e.getParent(Dt(c,l,f,r),"LI",r);if(m&&m!==d)return c.undoManager.transact(function(){var e,t,n,r,o,i,a,s,u;f?(t=l,n=m,r=d,(u=(e=c).dom).isEmpty(r)?(a=n,(i=e).dom.$(s=r).empty(),At(i.dom,a,s),i.selection.setCursorLocation(s,0)):(o=gt(t),At(u,n,r),e.selection.setRng(ht(o)))):d.parentNode.firstChild===d?mt(c):function(e,t,n){var r=gt(l);At(e.dom,t,n);var o=ht(r);e.selection.setRng(o)}(c,d,m)}),1;if(!m&&!f&&0===l.startOffset&&0===l.endOffset)return c.undoManager.transact(function(){pt(c)}),1}}function kt(e,t){return e.selection.isCollapsed()?wt(i=e,a=t)||function(r,o){var i=r.dom,e=r.selection.getStart(),a=qt(r,e),s=i.getParent(e,i.isBlock,a);if(s&&i.isEmpty(s)){var t=We(r.selection.getRng()),u=i.getParent(Dt(r,t,o,a),"LI",a);if(u)return r.undoManager.transact(function(){var e,t=s,n=(e=i).getParent(t.parentNode,e.isBlock,a);e.remove(t),n&&e.isEmpty(n)&&e.remove(n),Jt(i,u.parentNode),r.selection.select(u,!0),r.selection.collapse(o)}),1}}(i,a):(r=(n=e).selection.getStart(),o=qt(n,r),(n.dom.getParent(r,"LI,DT,DD",o)||0<Xe(n).length)&&(n.undoManager.transact(function(){var i,e,t;n.execCommand("Delete"),i=n.dom,e=n.getBody(),t=Mt.grep(i.select("ol,ul",e)),Mt.each(t,function(e){var t,n,r,o=i;"LI"===(r=(t=e).parentNode).nodeName&&r.firstChild===t&&((n=r.previousSibling)&&"LI"===n.nodeName?(n.appendChild(t),$e(o,r)&&tn.remove(r)):tn.setStyle(r,"listStyleType","none")),Ut(r)&&(n=r.previousSibling)&&"LI"===n.nodeName&&n.appendChild(t)})}),1));var n,r,o,i,a}function Et(e){return h(C(D(J(e).split("")),function(e,t){var n=e.toUpperCase().charCodeAt(0)-"A".charCodeAt(0)+1;return Math.pow(26,t)*n}),function(e,t){return e+t},0)}function It(t,n){return function(){var e=Qe(t);return e&&e.nodeName===n}}function Pt(o){o.addCommand("mceListProps",function(){var t,e,n,r;r=Qe(t=o),$t(r)&&t.windowManager.open({title:"List Properties",body:{type:"panel",items:[{type:"input",name:"start",label:"Start list at number",inputMode:"numeric"}]},initialData:{start:(e={start:t.dom.getAttrib(r,"start","1"),listStyleType:E.some(t.dom.getStyle(r,"list-style-type"))},n=parseInt(e.start,10),ze(e.listStyleType,"upper-alpha")?nn(n):ze(e.listStyleType,"lower-alpha")?nn(n).toLowerCase():e.start)},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){!function(e){switch(/^[0-9]+$/.test(t=e)?2:/^[A-Z]+$/.test(t)?0:/^[a-z]+$/.test(t)?1:0<t.length?4:3){case 2:return E.some({listStyleType:E.none(),start:e});case 0:return E.some({listStyleType:E.some("upper-alpha"),start:Et(e).toString()});case 1:return E.some({listStyleType:E.some("lower-alpha"),start:Et(e).toString()});case 3:return E.some({listStyleType:E.none(),start:""});case 4:return E.none()}var t}(e.getData().start).each(function(e){t.execCommand("mceListUpdate",!1,{attrs:{start:"1"===e.start?"":e.start},styles:{"list-style-type":e.listStyleType.getOr("")}})}),e.close()}})})}"undefined"!=typeof window||Function("return this;")();function Bt(e){return 1===e.dom.nodeType}var Rt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Mt=tinymce.util.Tools.resolve("tinymce.util.Tools"),Ut=Re(/^(OL|UL|DL)$/),_t=Re(/^(OL|UL)$/),$t=Be("ol"),Ft=Re(/^(LI|DT|DD)$/),Ht=Re(/^(DT|DD)$/),jt=Re(/^(TH|TD)$/),Kt=Be("br"),Vt=Rt.DOM,Wt=Ce("dd"),Qt=Ce("dt"),Xt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),qt=function(e,t){var n=e.dom.getParents(t,"TD,TH");return 0<n.length?n[0]:e.getBody()},zt=function(t,e){var n=C(e,function(e){return qe(t,e).getOr(e)});return Xt.unique(n)},Yt=function(t,n,r,e){return T(Le(e),function(e){return(nt(e)?Yt:st)(t+1,n,r,e)})},Zt=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),Gt=Rt.DOM,Jt=function(e,t){var n,r=t.nextSibling;if(Lt(e,t,r)){for(;n=r.firstChild;)t.appendChild(n);e.remove(r)}if(Lt(e,t,r=t.previousSibling)){for(;n=r.lastChild;)t.insertBefore(n,t.firstChild);e.remove(r)}},en=function(e){return"list-style-type"in e},tn=Rt.DOM,nn=function(e){if(--e<0)return"";var t=e%26,n=Math.floor(e/26);return nn(n)+String.fromCharCode("A".charCodeAt(0)+t)};i.add("lists",function(e){var n,t,r,o,i,a,s,u;return!1===e.hasPlugin("rtc",!0)?((a=e).getParam("lists_indent_on_tab",!0)&&(s=a).on("keydown",function(e){e.keyCode!==ve.TAB||ve.metaKeyPressed(e)||s.undoManager.transact(function(){(e.shiftKey?mt:lt)(s)&&e.preventDefault()})}),(u=a).on("keydown",function(e){e.keyCode===ve.BACKSPACE?kt(u,!1)&&e.preventDefault():e.keyCode===ve.DELETE&&kt(u,!0)&&e.preventDefault()}),(i=e).on("BeforeExecCommand",function(e){var t=e.command.toLowerCase();"indent"===t?lt(i):"outdent"===t&&mt(i)}),i.addCommand("InsertUnorderedList",function(e,t){Tt(i,"UL",t)}),i.addCommand("InsertOrderedList",function(e,t){Tt(i,"OL",t)}),i.addCommand("InsertDefinitionList",function(e,t){Tt(i,"DL",t)}),i.addCommand("RemoveList",function(){pt(i)}),Pt(i),i.addCommand("mceListUpdate",function(e,t){var n,r,o;O(t)&&(r=t,o=Qe(n=i),n.undoManager.transact(function(){O(r.styles)&&n.dom.setStyles(o,r.styles),O(r.attrs)&&j(r.attrs,function(e,t){return n.dom.setAttrib(o,t,e)})}))}),i.addQueryStateHandler("InsertUnorderedList",It(i,"UL")),i.addQueryStateHandler("InsertOrderedList",It(i,"OL")),i.addQueryStateHandler("InsertDefinitionList",It(i,"DL"))):Pt(e),(o=e).hasPlugin("advlist")||(o.ui.registry.addToggleButton("numlist",{icon:"ordered-list",active:!1,tooltip:"Numbered list",onAction:c("InsertOrderedList"),onSetup:function(e){return St(o,"OL",e.setActive)}}),o.ui.registry.addToggleButton("bullist",{icon:"unordered-list",active:!1,tooltip:"Bullet list",onAction:c("InsertUnorderedList"),onSetup:function(e){return St(o,"UL",e.setActive)}})),t={text:"List properties...",icon:"ordered-list",onAction:function(){return n.execCommand("mceListProps")},onSetup:function(t){return St(n,"OL",function(e){return t.setDisabled(!e)})}},(n=e).ui.registry.addMenuItem("listprops",t),n.ui.registry.addContextMenu("lists",{update:function(e){var t=Qe(n,e);return $t(t)?["listprops"]:[]}}),r=e,{backspaceDelete:function(e){kt(r,e)}};function c(e){return function(){return o.execCommand(e)}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/media/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/media/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..87e8b1bd0a4ddaceb71be59cf17a037ec827c42b
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/media/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function e(n){return function(e){return r=typeof(t=e),(null===t?"null":"object"==r&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":r)===n;var t,r}}function s(e){return null!=e}function a(e){return function(){return e}}function t(e){return e}function r(){return d}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=function(){return(p=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},i=e("string"),u=e("object"),l=e("array"),c=a(!1),m=a(!0),d={fold:function(e,t){return e()},isSome:c,isNone:m,getOr:t,getOrThunk:o,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(void 0),or:t,orThunk:o,map:r,each:function(){},bind:r,exists:c,forall:m,filter:function(){return d},toArray:function(){return[]},toString:a("none()")};function o(e){return e()}function h(e,t){for(var r=0,n=e.length;r<n;r++)t(e[r],r)}function f(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function g(e,t){return H(e,t)?B.from(e[t]):B.none()}function v(e){return e.getParam("media_scripts")}function b(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]}function w(e){return e.replace(/px$/,"")}function y(i,e){var c=f(!1),s={};return Q({validate:!1,allow_conditional_comments:!0,start:function(e,t){if(!c.get())if(H(t.map,"data-ephox-embed-iri"))c.set(!0),a=(o=(n=t).map.style)?V.parseStyle(o):{},s={type:"ephox-embed-iri",source:n.map["data-ephox-embed-iri"],altsource:"",poster:"",width:g(a,"max-width").map(w).getOr(""),height:g(a,"max-height").map(w).getOr("")};else{if(s.source||"param"!==e||(s.source=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(s.type||(s.type=e),s=J.extend(t.map,s)),"script"===e){var r=b(i,t.map.src);if(!r)return;s={type:"script",source:t.map.src,width:String(r.width),height:String(r.height)}}"source"===e&&(s.source?s.altsource||(s.altsource=t.map.src):s.source=t.map.src),"img"!==e||s.poster||(s.poster=t.map.src)}var n,o,a}}).parse(e),s.source=s.source||s.src||s.data,s.altsource=s.altsource||"",s.poster=s.poster||"",s}function x(e){return{mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()]||""}function j(e){return/^[0-9.]+$/.test(e)?e+"px":e}function O(a,e){!function(e){for(var t=G(e),r=0,n=t.length;r<n;r++){var o=t[r];!function(e,t){var r=""+e;if(a.map[t])for(var n=a.length;n--;){var o=a[n];o.name===t&&(r?(a.map[t]=r,o.value=r):(delete a.map[t],a.splice(n,1)))}else r&&(a.push({name:t,value:r}),a.map[t]=r)}(e[o],o)}}(e)}function S(e,c,s){var u,l=Y(),m=f(!1),d=0;return Q({validate:!1,allow_conditional_comments:!0,comment:function(e){l.comment(e)},cdata:function(e){l.cdata(e)},text:function(e,t){l.text(e,t)},start:function(e,t,r){if(!m.get())if(H(t.map,"data-ephox-embed-iri"))m.set(!0),n=c,(i=(a=(o=t).map.style)?Z.parseStyle(a):{})["max-width"]=j(n.width),i["max-height"]=j(n.height),O(o,{style:Z.serializeStyle(i)});else{switch(e){case"video":case"object":case"embed":case"img":case"iframe":void 0!==c.height&&void 0!==c.width&&O(t,{width:c.width,height:c.height})}if(s)switch(e){case"video":O(t,{poster:c.poster,src:""}),c.altsource&&O(t,{src:""});break;case"iframe":O(t,{src:c.source});break;case"source":if(d<2&&(O(t,{src:c[ee[d]],type:c[ee[d]+"mime"]}),!c[ee[d]]))return;d++;break;case"img":if(!c.poster)return;u=!0}}var n,o,a,i;l.start(e,t,r)},end:function(e){if(!m.get()){if("video"===e&&s)for(var t,r=0;r<2;r++)c[ee[r]]&&((t=[]).map={},d<=r&&(O(t,{src:c[ee[r]],type:c[ee[r]+"mime"]}),l.start("source",t,!0)));var n;c.poster&&"object"===e&&s&&!u&&((n=[]).map={},O(n,{src:c.poster,width:c.width,height:c.height}),l.start("img",n,!0))}l.end(e)}},X({})).parse(e),l.getContent()}function _(e,t){for(var r,n=(r=t.match(/^(https?:\/\/|www\.)(.+)$/i))&&1<r.length&&"www."!==r[1]?r[1]:"https://",o=e.regex.exec(t),a=n+e.url,i=0;i<o.length;i++)!function(e){a=a.replace("$"+e,function(){return o[e]||""})}(i);return a.replace(/\?$/,"")}function k(r,e){var n=J.extend({},e);if(!n.source&&(J.extend(n,y(v(r),n.embed)),!n.source))return"";n.altsource||(n.altsource=""),n.poster||(n.poster=""),n.source=r.convertURL(n.source,"source"),n.altsource=r.convertURL(n.altsource,"source"),n.sourcemime=x(n.source),n.altsourcemime=x(n.altsource),n.poster=r.convertURL(n.poster,"poster");var t,o,a=(t=n.source,0<(o=te.filter(function(e){return e.regex.test(t)})).length?J.extend({},o[0],{url:_(o[0],t)}):null);if(a&&(n.source=a.url,n.type=a.type,n.allowfullscreen=a.allowFullscreen,n.width=n.width||String(a.w),n.height=n.height||String(a.h)),n.embed)return S(n.embed,n,!0);var i=b(v(r),n.source);i&&(n.type="script",n.width=String(i.width),n.height=String(i.height));var c,s,u,l,m=r.getParam("audio_template_callback"),d=r.getParam("video_template_callback");return n.width=n.width||"300",n.height=n.height||"150",J.each(n,function(e,t){n[t]=r.dom.encode(""+e)}),"iframe"===n.type?(l=n.allowfullscreen?' allowFullscreen="1"':"",'<iframe src="'+n.source+'" width="'+n.width+'" height="'+n.height+'"'+l+"></iframe>"):"application/x-shockwave-flash"===n.sourcemime?(u='<object data="'+n.source+'" width="'+n.width+'" height="'+n.height+'" type="application/x-shockwave-flash">',n.poster&&(u+='<img src="'+n.poster+'" width="'+n.width+'" height="'+n.height+'" />'),u+"</object>"):-1!==n.sourcemime.indexOf("audio")?(s=n,m?m(s):'<audio controls="controls" src="'+s.source+'">'+(s.altsource?'\n<source src="'+s.altsource+'"'+(s.altsourcemime?' type="'+s.altsourcemime+'"':"")+" />\n":"")+"</audio>"):"script"===n.type?'<script src="'+n.source+'"><\/script>':(c=n,d?d(c):'<video width="'+c.width+'" height="'+c.height+'"'+(c.poster?' poster="'+c.poster+'"':"")+' controls="controls">\n<source src="'+c.source+'"'+(c.sourcemime?' type="'+c.sourcemime+'"':"")+" />\n"+(c.altsource?'<source src="'+c.altsource+'"'+(c.altsourcemime?' type="'+c.altsourcemime+'"':"")+" />\n":"")+"</video>")}function A(t){return function(e){return k(t,e)}}function T(e,t){var r,n,o,a,i,c=e.getParam("media_url_resolver");return c?(o=t,a=A(e),i=c,new re(function(t,e){function r(e){return e.html&&(ne[o.source]=e),t({url:o.source,html:e.html||a(o)})}ne[o.source]?r(ne[o.source]):i({url:o.source},r,e)})):(n=A(e),re.resolve({html:n(r=t),url:r.source}))}function C(e,t){var r,n,a,i,c,o=t?g(e,t).bind(function(e){return g(e,"meta")}).getOr({}):{},s=(a=e,i=o,c=t,function(e){function t(){return g(a,e)}function r(){return g(i,e)}function n(e){return g(e,"value").bind(function(e){return 0<e.length?B.some(e):B.none()})}var o={};return o[e]=(e===c?t().bind(function(e){return u(e)?n(e).orThunk(r):r().orThunk(function(){return B.from(e)})}):r().orThunk(function(){return t().bind(function(e){return u(e)?n(e):B.from(e)})})).getOr(""),o});return p(p(p(p(p({},s("source")),s("altsource")),s("poster")),s("embed")),(r=o,n={},g(e,"dimensions").each(function(e){h(["width","height"],function(t){g(r,t).orThunk(function(){return g(e,t)}).each(function(e){return n[t]=e})})}),n))}function D(e){var n=p(p({},e),{source:{value:g(e,"source").getOr("")},altsource:{value:g(e,"altsource").getOr("")},poster:{value:g(e,"poster").getOr("")}});return h(["width","height"],function(r){g(e,r).each(function(e){var t=n.dimensions||{};t[r]=e,n.dimensions=t})}),n}function P(r){return function(e){var t=e&&e.msg?"Media embed handler error: "+e.msg:"Media embed handler threw unknown error.";r.notificationManager.open({type:"error",text:t})}}function $(e,t){return y(v(e),t)}function M(o,a){return function(e){var t,r,n;i(e.url)&&0<e.url.trim().length&&(t=e.html,r=$(a,t),n=p(p({},r),{source:e.url,embed:t}),o.setData(D(n)))}}function F(e,t){var r=e.dom.select("*[data-mce-object]");e.insertContent(t),function(e,t){for(var r=e.dom.select("*[data-mce-object]"),n=0;n<t.length;n++)for(var o=r.length-1;0<=o;o--)t[n]===r[o]&&r.splice(o,1);e.selection.select(r[0])}(e,r),e.nodeChanged()}function z(m){var e,t,r,n,o=(n=(t=r=(e=m).selection.getNode()).hasAttribute("data-mce-object")||t.hasAttribute("data-ephox-embed-iri")?e.serializer.serialize(r,{selection:!0}):"",p({embed:n},y(v(e),n))),d=f(o),a=D(o),i={title:"General",name:"general",items:function(e){for(var t=[],r=0,n=e.length;r<n;++r){if(!l(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);W.apply(t,e[r])}return t}([[{name:"source",type:"urlinput",filetype:"media",label:"Source"}],m.getParam("media_dimensions",!0)?[{type:"sizeinput",name:"dimensions",label:"Constrain proportions",constrain:!0}]:[]])},c=[];m.getParam("media_alt_source",!0)&&c.push({name:"altsource",type:"urlinput",filetype:"media",label:"Alternative source URL"}),m.getParam("media_poster",!0)&&c.push({name:"poster",type:"urlinput",filetype:"image",label:"Media poster (Image URL)"});var s=[i,{title:"Embed",items:[{type:"textarea",name:"embed",label:"Paste your embed code below:"}]}];0<c.length&&s.push({title:"Advanced",name:"advanced",items:c});var h=m.windowManager.open({title:"Insert/Edit Media",size:"normal",body:{type:"tabpanel",tabs:s},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){var t,r,n,o,a=C(e.getData());t=d.get(),n=m,(r=a).embed=S(r.embed,r),r.embed&&(t.source===r.source||(o=r.source,H(ne,o)))?F(n,r.embed):T(n,r).then(function(e){F(n,e.html)}).catch(P(n)),e.close()},onChange:function(e,t){switch(t.name){case"source":u=d.get(),l=C(e.getData(),"source"),u.source!==l.source&&(M(h,m)({url:l.source,html:""}),T(m,l).then(M(h,m)).catch(P(m)));break;case"embed":c=C((i=e).getData()),s=$(m,c.embed),i.setData(D(s));break;case"dimensions":case"altsource":case"poster":n=t.name,o=C((r=e).getData(),n),a=k(m,o),r.setData(D(p(p({},o),{embed:a})))}var r,n,o,a,i,c,s,u,l;d.set(C(e.getData()))},initialData:a})}function U(a,e){if(!1===a.getParam("media_filter_html",!0))return e;var i,c=Y();return Q({validate:!1,allow_conditional_comments:!1,comment:function(e){i||c.comment(e)},cdata:function(e){i||c.cdata(e)},text:function(e,t){i||c.text(e,t)},start:function(e,t,r){if(i=!0,"script"!==e&&"noscript"!==e&&"svg"!==e){for(var n=t.length-1;0<=n;n--){var o=t[n].name;0===o.indexOf("on")&&(delete t.map[o],t.splice(n,1)),"style"===o&&(t[n].value=a.dom.serializeStyle(a.dom.parseStyle(t[n].value),e))}c.start(e,t,r),i=!1}},end:function(e){i||c.end(e)}},X({})).parse(e),c.getContent()}function E(e,t,r,n){void 0===n&&(n=null);var o=e.attr(r);return s(o)?o:H(t,r)?null:n}function N(e,t,r){var n="img"===t.name||"video"===e.name,o="audio"===e.name?"30":"150",a=n?o:null;t.attr({width:E(e,r,"width",n?"300":null),height:E(e,r,"height",a)})}function R(o,t){var e=t.name,r=new oe("span",1);r.attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":e,class:"mce-preview-object mce-object-"+e}),ce(o,t,r);var n,a=o.dom.parseStyle(t.attr("style")),i=new oe(e,1);N(t,i,a),i.attr({src:t.attr("src"),style:t.attr("style"),class:t.attr("class")}),"iframe"===e?i.attr({allowfullscreen:t.attr("allowfullscreen"),frameborder:"0"}):(h(["controls","crossorigin","currentTime","loop","muted","poster","preload"],function(e){i.attr(e,t.attr(e))}),s(n=r.attr("data-mce-html"))&&function(e,t,r){for(var n=ie({forced_root_block:!1,validate:!1},o.schema).parse(r,{context:e});n.firstChild;)t.append(n.firstChild)}(e,i,n));var c=new oe("span",1);return c.attr("class","mce-shim"),r.append(i),r.append(c),r}function L(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri")||(t=e.attr("class"))&&/\btiny-pageembed\b/.test(t))return 1;var t}var I=function(r){function e(){return o}function t(e){return e(r)}var n=a(r),o={fold:function(e,t){return t(r)},isSome:m,isNone:c,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(e){return I(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?o:d},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return o},B={some:I,none:r,from:function(e){return null==e?d:I(e)}},W=Array.prototype.push,G=Object.keys,q=Object.hasOwnProperty,H=function(e,t){return q.call(e,t)},J=tinymce.util.Tools.resolve("tinymce.util.Tools"),K=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Q=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),V=K.DOM,X=tinymce.util.Tools.resolve("tinymce.html.Schema"),Y=tinymce.util.Tools.resolve("tinymce.html.Writer"),Z=K.DOM,ee=["source","altsource"],te=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$2?title=0&amp;byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],re=tinymce.util.Tools.resolve("tinymce.util.Promise"),ne={},oe=tinymce.util.Tools.resolve("tinymce.html.Node"),ae=tinymce.util.Tools.resolve("tinymce.Env"),ie=tinymce.util.Tools.resolve("tinymce.html.DomParser"),ce=function(e,t,r){for(var n=t.attributes,o=n.length;o--;){var a=n[o].name,i=n[o].value;"width"!==a&&"height"!==a&&"style"!==a&&("data"!==a&&"src"!==a||(i=e.convertURL(i,a)),r.attr("data-mce-p-"+a,i))}var c=t.firstChild&&t.firstChild.value;c&&(r.attr("data-mce-html",escape(U(e,c))),r.firstChild=null)};n.add("media",function(e){var t,r,n,o,d,a,i;function c(){return r.execCommand("mceMedia")}return(t=e).addCommand("mceMedia",function(){z(t)}),(r=e).ui.registry.addToggleButton("media",{tooltip:"Insert/edit media",icon:"embed",onAction:c,onSetup:(n=r,o=["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"],function(e){return n.selection.selectorChangedWithUnbind(o.join(","),e.setActive).unbind})}),r.ui.registry.addMenuItem("media",{icon:"embed",text:"Media...",onAction:c}),e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),(d=e).on("preInit",function(){var t=d.schema.getSpecialElements();J.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var u,r=d.schema.getBoolAttrs();J.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),d.parser.addNodeFilter("iframe,video,audio,object,embed,script",(u=d,function(e){for(var t,r,n,o,a,i,c,s=e.length;s--;)(t=e[s]).parent&&(t.parent.attr("data-mce-object")||"script"===t.name&&!(r=b(v(u),t.attr("src")))||(r&&(r.width&&t.attr("width",r.width.toString()),r.height&&t.attr("height",r.height.toString())),("iframe"===(c=t.name)||"video"===c||"audio"===c)&&u.getParam("media_live_embeds",!0)&&ae.ceFalse?L(t)||t.replace(R(u,t)):L(t)||t.replace((n=u,i=void 0,a=(o=t).name,(i=new oe("img",1)).shortEnded=!0,ce(n,o,i),N(o,i,{}),i.attr({style:o.attr("style"),src:ae.transparentSrc,"data-mce-object":a,class:"mce-object mce-object-"+a}),i))))})),d.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var r,n,o,a,i,c,s,u,l=e.length;l--;)if((r=e[l]).parent){for(s=r.attr(t),n=new oe(s,1),"audio"!==s&&"script"!==s&&((u=r.attr("class"))&&-1!==u.indexOf("mce-preview-object")?n.attr({width:r.firstChild.attr("width"),height:r.firstChild.attr("height")}):n.attr({width:r.attr("width"),height:r.attr("height")})),n.attr({style:r.attr("style")}),o=(a=r.attributes).length;o--;){var m=a[o].name;0===m.indexOf("data-mce-p-")&&n.attr(m.substr(11),a[o].value)}"script"===s&&n.attr("type","text/javascript"),(i=r.attr("data-mce-html"))&&((c=new oe("#text",3)).raw=!0,c.value=U(d,unescape(i)),n.append(c)),r.replace(n)}})}),d.on("SetContent",function(){d.$("span.mce-preview-object").each(function(e,t){var r=d.$(t);0===r.find("span.mce-shim").length&&r.append('<span class="mce-shim"></span>')})}),(a=e).on("click keyup touchend",function(){var e=a.selection.getNode();e&&a.dom.hasClass(e,"mce-preview-object")&&a.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),a.on("ObjectSelected",function(e){"script"===e.target.getAttribute("data-mce-object")&&e.preventDefault()}),a.on("ObjectResized",function(e){var t,r=e.target;!r.getAttribute("data-mce-object")||(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(S(t,{width:String(e.width),height:String(e.height)}))))}),i=e,{showDialog:function(){z(i)}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..007efdb9b8958084c3131bbd2062e056ff551c4b
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function o(n,e){for(var a="",o=0;o<e;o++)a+=n;return a}function s(n,e){var a=n.getParam("nonbreaking_wrap",!0,"boolean")||n.plugins.visualchars?'<span class="'+(n.plugins.visualchars&&n.plugins.visualchars.isEnabled()?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap")+'" contenteditable="false">'+o("&nbsp;",e)+"</span>":o("&nbsp;",e);n.undoManager.transact(function(){return n.insertContent(a)})}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK");n.add("nonbreaking",function(n){var e,a,o,t,i;function r(){return a.execCommand("mceNonBreaking")}(e=n).addCommand("mceNonBreaking",function(){s(e,1)}),(a=n).ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:r}),a.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:r}),0<(i="boolean"==typeof(t=(o=n).getParam("nonbreaking_force_tab",0))?!0===t?3:0:t)&&o.on("keydown",function(n){n.keyCode!==c.TAB||n.isDefaultPrevented()||n.shiftKey||(n.preventDefault(),n.stopImmediatePropagation(),s(o,i))})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/noneditable/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/noneditable/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c86e3ff2e264cb8f118380fb0dab131744805d23
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/noneditable/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function l(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")}function u(e){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(e)}}function e(e){var t,r="contenteditable",n=" "+f.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",a=" "+f.trim(l(e))+" ",i=u(n),o=u(a),c=(t=e.getParam("noneditable_regexp",[]))&&t.constructor===RegExp?[t]:t;e.on("PreInit",function(){0<c.length&&e.on("BeforeSetContent",function(t){!function(t,e,n){var r=e.length,a=n.content;if("raw"!==n.format){for(;r--;)a=a.replace(e[r],function(i,o,c){return function(t){var e=arguments,n=e[e.length-2],r=0<n?o.charAt(n-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",n);if(-1!==a&&-1!==o.substring(a,n).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(e[0])+'">'+i.dom.encode("string"==typeof e[1]?e[1]:e[0])+"</span>"}}(t,a,l(t)));n.content=a}}(e,c,t)}),e.parser.addAttributeFilter("class",function(t){for(var e,n=t.length;n--;)e=t[n],i(e)?e.attr(r,"true"):o(e)&&e.attr(r,"false")}),e.serializer.addAttributeFilter(r,function(t){for(var e,n=t.length;n--;)e=t[n],(i(e)||o(e))&&(0<c.length&&e.attr("data-mce-content")?(e.name="#text",e.type=3,e.raw=!0,e.value=e.attr("data-mce-content")):e.attr(r,null))})})}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.util.Tools");t.add("noneditable",function(t){e(t)})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..acd33561cfac39a131fa4e1530e6633ff12d6d31
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function u(e){return e.getParam("pagebreak_split_block",!1)}function l(e){var a='<img src="'+n.transparentSrc+'" class="'+m+'" data-mce-resize="false" data-mce-placeholder />';return e?"<p>"+a+"</p>":a}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.Env"),m="mce-pagebreak";e.add("pagebreak",function(e){var a,n,o,i,t,r;function c(){return n.execCommand("mcePageBreak")}function g(){return u(o)}(a=e).addCommand("mcePageBreak",function(){a.insertContent(l(u(a)))}),(n=e).ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:c}),n.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:c}),i=(o=e).getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e"),t=new RegExp(i.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),o.on("BeforeSetContent",function(e){e.content=e.content.replace(t,l(g()))}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var a,n,t,r=e.length;r--;)(t=(n=e[r]).attr("class"))&&-1!==t.indexOf(m)&&(a=n.parent,o.schema.getBlockElements()[a.name]&&g()?(a.type=3,a.value=i,a.raw=!0,n.remove()):(n.type=3,n.value=i,n.raw=!0))})}),(r=e).on("ResolveName",function(e){"IMG"===e.target.nodeName&&r.dom.hasClass(e.target,m)&&(e.name="pagebreak")})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/paste/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/paste/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c709c4cfc6ba07d4c8b36fce087f3fde8e6bac06
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/paste/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function P(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function w(e){return!(null==e)}function _(){}function o(e){return function(){return e}}function e(e){return e}function t(){return l}var n,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=o(!(n="function")),s=o(!0),l={fold:function(e,t){return e()},isSome:i,isNone:s,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:t,each:_,bind:t,exists:i,forall:s,filter:function(){return l},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function u(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1}function c(e,t){for(var n=e.length,r=new Array(n),a=0;a<n;a++){var o=e[a];r[a]=t(o,a)}return r}function f(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function m(){var e,t,n=(e=_,t=P(se.none()),{clear:function(){r(),t.set(se.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){r(),t.set(se.some(e))}});function r(){return t.get().each(e)}return ce(ce({},n),{on:function(e){return n.get().each(e)}})}function d(e,t,n){return""===t||e.length>=t.length&&e.substr(n,n+t.length)===t}function C(e,t){return e.fire("PastePlainTextToggle",{state:t})}function T(e){return e.getParam("paste_data_images",!1)}function p(e){return e.getParam("paste_retain_style_properties")}function h(e){return e.getParam("validate")}function g(e){return e.getParam("paste_data_images",!1,"boolean")}function v(e){return ge.explode(e.getParam("images_file_types","jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp","string"))}function y(e){return-1!==e.indexOf(he)}function b(e,t,n){return t?(r=!0===t?"p":t,a=n,o=e.split(/\n\n/),i=function(e,t){var n,r=[],a="<"+e;if("object"==typeof t){for(var o in t)n=o,be.call(t,n)&&r.push(o+'="'+xe.encodeAllRaw(t[o])+'"');r.length&&(a+=" "+r.join(" "))}return a+">"}(r,a),s="</"+r+">",1===(l=ge.map(o,function(e){return e.split(/\n/).join("<br />")})).length?l[0]:ge.map(l,function(e){return i+e+s}).join("")):e.replace(/\r?\n/g,"<br>");var r,a,o,i,s,l}function x(t,e){return ge.each(e,function(e){t=e.constructor===RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}function D(e){return x(e,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(e,t,n){return t||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])}function k(e){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^']*\bmso-|w:WordDocument/i.test(e)||/class="OutlineElement/.test(e)||/id="?docs\-internal\-guid\-/.test(e)}function O(r,e){var a,t=p(r);t&&(a=ge.makeMap(t.split(/[, ]/))),e=x(e,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return 0<t.length?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var n=r.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody"),o=Ce({valid_elements:n,valid_children:"-li[p]"});ge.each(o.elements,function(e){e.attributes.class||(e.attributes.class={},e.attributesOrder.push("class")),e.attributes.style||(e.attributes.style={},e.attributesOrder.push("style"))});var i=Pe({},o);i.addAttributeFilter("style",function(e){for(var t,n=e.length;n--;)(t=e[n]).attr("style",function(r,a,o,i){var s={},e=r.dom.parseStyle(i);return ge.each(e,function(e,t){switch(t){case"mso-list":var n=/\w+ \w+([0-9]+)/i.exec(i);n&&(o._listLevel=parseInt(n[1],10)),/Ignore/i.test(e)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":t="text-align";break;case"vert-align":t="vertical-align";break;case"font-color":case"mso-foreground":t="color";break;case"mso-background":case"mso-highlight":t="background";break;case"font-weight":case"font-style":return void("normal"!==e&&(s[t]=e));case"mso-element":if(/^(comment|comment-list)$/i.test(e))return void o.remove()}0!==t.indexOf("mso-comment")?0!==t.indexOf("mso-")&&("all"===p(r)||a&&a[t])&&(s[t]=e):o.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],o.wrap(new _e("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],o.wrap(new _e("i",1))),r.dom.serializeStyle(s,o.name)||null}(r,a,t,t.attr("style"))),"span"===t.name&&t.parent&&!t.attributes.length&&t.unwrap()}),i.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=(t=e[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&t.remove(),t.attr("class",null)}),i.addNodeFilter("del",function(e){for(var t=e.length;t--;)e[t].remove()}),i.addNodeFilter("a",function(e){for(var t,n,r,a=e.length;a--;)n=(t=e[a]).attr("href"),r=t.attr("name"),n&&-1!==n.indexOf("#_msocom_")?t.remove():!(n=n&&0===n.indexOf("file://")?(n=n.split("#")[1])&&"#"+n:n)&&!r||r&&!/^_?(?:toc|edn|ftn)/i.test(r)?t.unwrap():t.attr({href:n,name:r})});var s=i.parse(e);return r.getParam("paste_convert_word_fake_lists",!0)&&function(e){for(var a,o,i=1,n=function(e){var t="";if(3===e.type)return e.value;if(e=e.firstChild)for(;t+=n(e),e=e.next;);return t},s=function(e,t){if(3===e.type&&t.test(e.value))return e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do{if(!s(e,t))return!1}while(e=e.next);return!0},l=function(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;l(e),e=e.next;);},t=function(e,t,n){var r=e._listLevel||i;(a=r!==i?r<i?a&&a.parent.parent:(o=a,null):a)&&a.name===t?a.append(e):(o=o||a,a=new _e(t,1),1<n&&a.attr("start",""+n),e.wrap(a)),e.name="li",i<r&&o&&o.lastChild.append(a),i=r,l(e),s(e,/^\u00a0+/),s(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(e,/^\u00a0+/)},r=[],u=e.firstChild;null!=u;)if(r.push(u),null!==(u=u.walk()))for(;void 0!==u&&u.parent!==e;)u=u.walk();for(var c,f,d,m=0;m<r.length;m++)"p"===(e=r[m]).name&&e.firstChild?(c=n(e),/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)?t(e,"ul"):function(t){var n=!1;return t=c.replace(/^[\u00a0 ]+/,""),ge.each([/^[IVXLMCD]+\.[ \u00a0]/,/^[ivxlmcd]+\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],function(e){if(e.test(t))return!(n=!0)}),n}(c)?(d=1,t(e,"ol",d=(f=/([0-9]+)\./.exec(c))?parseInt(f[1],10):d)):e._listLevel?t(e,"ul",1):a=null):(o=a,a=null)}(s),we({validate:h(r)},o).serialize(s)}function S(e,t){return{content:e,cancelled:t}}function j(e,t,n){var r,a,o,i,s,l,u,c,f,d,m,p,g=k(t),v=g?(a=t,(r=e).getParam("paste_enable_default_filters",!0)?O(r,a):a):t;return i=n,s=g,m=(o=e).fire("PastePreProcess",{content:v,internal:i,wordContent:s}),p=function(e,t){var n=Pe({},e.schema);n.addNodeFilter("meta",function(e){ge.each(e,function(e){e.remove()})});var r=n.parse(t,{forced_root_block:!1,isRootContent:!0});return we({validate:h(e)},e.schema).serialize(r)}(o,m.content),o.hasEventListeners("PastePostProcess")&&!m.isDefaultPrevented()?(u=i,c=s,f=(l=o).dom.create("div",{style:"display:none"},p),S((d=l.fire("PastePostProcess",{node:f,internal:u,wordContent:c})).node.innerHTML,d.isDefaultPrevented())):S(p,m.isDefaultPrevented())}function R(e,t){return e.insertContent(t,{merge:e.getParam("paste_merge_formats",!0),paste:!0}),!0}function A(e){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(e)}function I(e,t,n){return!(!1!==e.selection.isCollapsed()||!A(t)||(a=t,o=n,(r=e).undoManager.extra(function(){o(r,a)},function(){r.execCommand("mceInsertLink",!1,a)}),0));var r,a,o}function F(e,t,n){return r=e,!(!A(a=t)||!u(v(r),function(e){return d(t=a.toLowerCase(),n="."+e.toLowerCase(),t.length-n.length);var t,n})||(i=t,s=n,(o=e).undoManager.extra(function(){s(o,i)},function(){o.insertContent('<img src="'+i+'">')}),0));var r,a,o,i,s}function E(e){return"\n"===e||"\r"===e}function M(e,t,n,r){var a,o,i,s,l=j(e,t,n);!1===l.cancelled&&(a=e,o=l.content,r||!1===a.getParam("smart_paste",!0)?R(a,o):(i=a,s=o,ge.each([I,F,R],function(e){return!0!==e(i,s,R)})))}function B(e,t,n){var r=n||y(t);M(e,t.replace(he,""),r,!1)}function L(e,t){var n,r,a,o,i,s,l=e.dom.encode(t).replace(/\r\n/g,"\n"),u=b((n=l,o=(r=e.getParam("paste_tab_spaces",4,"number"))<=0?"":new Array(r+1).join(" "),i=n.replace(/\t/g,o),s={pcIsSpace:!(a=function(e,t){return-1!==" \f\t\v".indexOf(t)||"\xa0"===t?e.pcIsSpace||""===e.str||e.str.length===i.length-1||(n=e.str.length+1)<i.length&&0<=n&&E(i[n])?{pcIsSpace:!1,str:e.str+"\xa0"}:{pcIsSpace:!0,str:e.str+" "}:{pcIsSpace:E(t),str:e.str+t};var n}),str:""},f(i,function(e,t){s=a(s,e)}),s.str),e.getParam("forced_root_block"),e.getParam("forced_root_block_attrs"));M(e,u,!1,!0)}function N(e){var t,n={};if(e&&(!e.getData||(t=e.getData("Text"))&&0<t.length&&-1===t.indexOf("data:text/mce-internal,")&&(n["text/plain"]=t),e.types))for(var r=0;r<e.types.length;r++){var a=e.types[r];try{n[a]=e.getData(a)}catch(e){n[a]=""}}return n}function H(e,t){return t in e&&0<e[t].length}function $(e){return H(e,"text/html")||H(e,"text/plain")}function z(P,e,t){var n,r,a,o,i,s="paste"===e.type?e.clipboardData:e.dataTransfer;if(g(P)&&s){var l=(n=P,a=(r=s).items?c(ue(r.items),function(e){return e.getAsFile()}):[],o=r.files?ue(r.files):[],function(e,t){for(var n=[],r=0,a=e.length;r<a;r++){var o=e[r];t(o,r)&&n.push(o)}return n}(0<a.length?a:o,(i=v(n),function(r){return d(r.type,"image/",0)&&u(i,function(e){return t=e.toLowerCase(),(ge.hasOwn(n={jpg:"jpeg",jpe:"jpeg",jfi:"jpeg",jif:"jpeg",jfif:"jpeg",pjpeg:"jpeg",pjp:"jpeg",svg:"svg+xml"},t)?"image/"+n[t]:"image/"+t)===r.type;var t,n})})));if(0<l.length)return e.preventDefault(),me.all(c(l,function(r){return new me(function(e){var t=w(r.getAsFile)?r.getAsFile():r,n=new window.FileReader;n.onload=function(){e({blob:t,uri:n.result})},n.readAsDataURL(t)})})).then(function(e){t&&P.selection.setRng(t),f(e,function(e){var t,n,r,a,o,i,s,l,u,c,f,d,m,p,g,v,h,y,b,x;t=P,r=(n=e).uri,g=(a=/data:([^;]+);base64,([a-z0-9\+\/=]+)/i.exec(r))?{type:a[1],data:decodeURIComponent(a[2])}:{type:null,data:null},v=g.data,h=g.type,y=Te(),b=n.blob,(x=new Image).src=n.uri,m=x,!(p=t.getParam("images_dataimg_filter"))||p(m)?(c=void 0,(i=(o=t.editorUpload.blobCache).getByData(v,h))?c=i:(l=(s=t.getParam("images_reuse_filename")&&w(b.name))?(f=t,w(d=b.name.match(/([\s\S]+?)(?:\.[a-z0-9.]+)$/i))?f.dom.encode(d[1]):null):y,u=s?b.name:void 0,c=o.create(y,b,v,l,u),o.add(c)),B(t,'<img src="'+c.blobUri()+'">',!1)):B(t,'<img src="'+n.uri+'">',!1)})}),!0}return!1}function U(e){return pe.metaKeyPressed(e)&&86===e.keyCode||e.shiftKey&&45===e.keyCode}function V(o,e,t){var i,s,v,l,u,c,f;function d(e,t,n,r,a){var o;H(t,"text/html")?o=t["text/html"]:(o=v.getHtml(),a=a||y(o),v.isDefaultContent(o)&&(r=!0)),o=D(o),v.remove();var i,s,l,u,c,f,d,m,p=!1===a&&!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(o),g=A(o);((r=!o.length||p&&!g||r)||g)&&(o=H(t,"text/plain")&&p?t["text/plain"]:(i=o,s=Ce(),l=Pe({},s),u="",c=s.getShortEndedElements(),f=ge.makeMap("script noscript style textarea video audio iframe object"," "),d=s.getBlockElements(),m=function(e){var t=e.name,n=e;if("br"!==t){if("wbr"!==t)if(c[t]&&(u+=" "),f[t])u+=" ";else{if(3===e.type&&(u+=e.value),!e.shortEnded&&(e=e.firstChild))for(;m(e),e=e.next;);d[t]&&n.next&&(u+="\n","p"===t&&(u+="\n"))}}else u+="\n"},i=x(i,[/<!\[[^\]]+\]>/g]),m(l.parse(i)),u)),v.isDefaultContent(o)?n||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):r?L(e,o):B(e,o,a)}s=o,v=e,l=t,c=m(),f=m(),s.on("keyup",f.clear),s.on("keydown",function(e){function t(e){U(e)&&!e.isDefaultPrevented()&&v.remove()}if(U(e)&&!e.isDefaultPrevented()&&(!(u=e.shiftKey&&86===e.keyCode)||!fe.webkit||-1===navigator.userAgent.indexOf("Version/"))){if(e.stopImmediatePropagation(),c.set(e),f.set(!0),fe.ie&&u)return e.preventDefault(),void s.fire("paste",{ieFake:!0});v.remove(),v.create(),s.once("keyup",t),s.once("paste",function(){s.off("keyup",t)})}}),s.on("paste",function(e){var t=c.isSet()||f.isSet();t&&c.clear();var n,r=N(e.clipboardData||s.getDoc().dataTransfer),a="text"===l.get()||u,o=H(r,ye());u=!1,e.isDefaultPrevented()||(n=e.clipboardData,-1!==navigator.userAgent.indexOf("Android")&&n&&n.items&&0===n.items.length)||!$(r)&&z(s,e,v.getLastRng()||s.selection.getRng())?v.remove():(t||e.preventDefault(),!fe.ie||t&&!e.ieFake||H(r,"text/html")||(v.create(),s.dom.bind(v.getEl(),"paste",function(e){e.stopPropagation()}),s.getDoc().execCommand("Paste",!1,null),r["text/html"]=v.getHtml()),H(r,"text/html")?(e.preventDefault(),o=o||y(r["text/html"]),d(s,r,t,a,o)):de.setEditorTimeout(s,function(){d(s,r,t,a,o)},0))}),o.parser.addNodeFilter("img",function(e,t,n){var r;if(!g(o)&&n.data&&!0===n.data.paste)for(var a=e.length;a--;)(i=e[a].attr("src"))&&(0!==i.indexOf("webkit-fake-url")&&(o.getParam("allow_html_data_urls",!1,"boolean")||0!==i.indexOf("data:"))||((r=e[a]).attr("data-mce-object")||i===fe.transparentSrc||r.remove()))})}function K(e){return fe.ie&&e.inline?document.body:e.getBody()}function X(e){var t=P(null),n="%MCEPASTEBIN%";return{create:function(){return function(e,t,n){var r=e.dom,a=e.getBody();t.set(e.selection.getRng());var o,i,s,l,u=e.dom.add(K(e),"div",{id:"mcepastebin",class:"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n);(fe.ie||fe.gecko)&&r.setStyle(u,"left","rtl"===r.getStyle(a,"direction",!0)?65535:-65535),r.bind(u,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),i=u,s=n,K(l=o=e)!==l.getBody()&&o.dom.bind(i,"paste keyup",function(e){De(o,s)||o.fire("paste")}),u.focus(),e.selection.select(u,!0)}(e,t,n)},remove:function(){return function(e,t){if(ae(e)){for(var n,r=t.get();n=e.dom.get("mcepastebin");)e.dom.remove(n),e.dom.unbind(n);r&&e.selection.setRng(r)}t.set(null)}(e,t)},getEl:function(){return ae(e)},getHtml:function(){return function(n){function t(e,t){e.appendChild(t),n.dom.remove(t,!0)}var e=ge.grep(K(n).childNodes,function(e){return"mcepastebin"===e.id}),r=e.shift();ge.each(e,function(e){t(r,e)});for(var a=n.dom.select("div[id=mcepastebin]",r),o=a.length-1;0<=o;o--){var i=n.dom.create("div");r.insertBefore(i,a[o]),t(i,a[o])}return r?r.innerHTML:""}(e)},getLastRng:t.get,isDefault:function(){return De(e,n)},isDefaultContent:function(e){return e===n}}}function W(e,t,n,r){!function(e,t,n){if(!1===fe.iOS&&"function"==typeof(null==e?void 0:e.setData))try{return e.clearData(),e.setData("text/html",t),e.setData("text/plain",n),e.setData(ye(),t),1}catch(e){return}}(e.clipboardData,t.html,t.text)?n(t.html,r):(e.preventDefault(),r())}function Y(s){return function(e,t){var n=he+e,r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),a=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(a),s.dom.add(s.getBody(),r);var o=s.selection.getRng();a.focus();var i=s.dom.createRng();i.selectNodeContents(a),s.selection.setRng(i),de.setTimeout(function(){s.selection.setRng(o),r.parentNode.removeChild(r),t()},0)}}function Z(e){return{html:e.selection.getContent({contextual:!0}),text:e.selection.getContent({format:"text"})}}function q(e){return!e.selection.isCollapsed()||(t=e).dom.getParent(t.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",t.getBody());var t}function G(e,t){return ke.getCaretRangeFromPoint(t.clientX,t.clientY,e.getDoc())}function J(e,t){e.focus(),e.selection.setRng(t)}function Q(t,n){t.on("PastePreProcess",function(e){e.content=n(t,e.content,e.internal,e.wordContent)})}function ee(e,t){if(!k(t))return t;var n=[];return ge.each(e.schema.getBlockElements(),function(e,t){n.push(t)}),t=x(t,[[new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g"),"$1"]]),x(t,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function te(e,t,n,r){if(r||n)return t;var c,f,d,a=e.getParam("paste_webkit_styles");return!1===e.getParam("paste_remove_styles_if_webkit",!0)||"all"===a?t:(t=(c=a?a.split(/[, ]/):c)?(f=e.dom,d=e.selection.getNode(),t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(e,t,n,r){var a=f.parseStyle(f.decode(n)),o={};if("none"===c)return t+r;for(var i=0;i<c.length;i++){var s=a[c[i]],l=f.getStyle(d,c[i],!0);/color/.test(c[i])&&(s=f.toHex(s),l=f.toHex(l)),l!==s&&(o[c[i]]=s)}var u=f.serializeStyle(o,"span");return u?t+' style="'+u+'"'+r:t+r})):t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3")).replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(e,t,n,r){return t+' style="'+n+'"'+r})}function ne(n,e){n.$("a",e).find("font,u").each(function(e,t){n.dom.remove(t,!0)})}function re(n,r){return function(t){function e(e){return t.setActive(e.state)}return t.setActive("text"===r.pasteFormat.get()),n.on("PastePlainTextToggle",e),function(){return n.off("PastePlainTextToggle",e)}}}function ae(e){return e.dom.get("mcepastebin")}var oe,ie=function(n){function e(){return a}function t(e){return e(n)}var r=o(n),a={fold:function(e,t){return t(n)},isSome:s,isNone:i,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return ie(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:l},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},se={some:ie,none:t,from:function(e){return null==e?l:ie(e)}},le=Array.prototype.slice,ue=typeof Array.from===n?Array.from:function(e){return le.call(e)},ce=function(){return(ce=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},fe=tinymce.util.Tools.resolve("tinymce.Env"),de=tinymce.util.Tools.resolve("tinymce.util.Delay"),me=tinymce.util.Tools.resolve("tinymce.util.Promise"),pe=tinymce.util.Tools.resolve("tinymce.util.VK"),ge=tinymce.util.Tools.resolve("tinymce.util.Tools"),ve="x-tinymce/html",he="\x3c!-- "+ve+" --\x3e",ye=o(ve),be=Object.hasOwnProperty,xe=tinymce.util.Tools.resolve("tinymce.html.Entities"),Pe=tinymce.util.Tools.resolve("tinymce.html.DomParser"),we=tinymce.util.Tools.resolve("tinymce.html.Serializer"),_e=tinymce.util.Tools.resolve("tinymce.html.Node"),Ce=tinymce.util.Tools.resolve("tinymce.html.Schema"),Te=(oe=0,function(){return"mceclip"+oe++}),De=function(e,t){var n=ae(e);return n&&"mcepastebin"===n.id&&n.innerHTML===t},ke=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils");r.add("paste",function(e){if(0==(!!e.hasPlugin("powerpaste",!0)&&(void 0!==window.console&&window.console.log&&window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),!0))){var t=P(!1),n=P(e.getParam("paste_as_text",!1)?"text":"html"),r=(y=n,b=X(h=e),h.on("PreInit",function(){return V(h,b,y)}),{pasteFormat:y,pasteHtml:function(e,t){return B(h,e,t)},pasteText:function(e){return L(h,e)},pasteImageData:function(e,t){return z(h,e,t)},getDataTransferItems:N,hasHtmlOrText:$,hasContentType:H}),a=e;return fe.webkit&&Q(a,te),fe.ie&&(Q(a,ee),v=ne,(g=a).on("PastePostProcess",function(e){v(g,e.node)})),(m=e).ui.registry.addToggleButton("pastetext",{active:!1,icon:"paste-text",tooltip:"Paste as text",onAction:x,onSetup:re(m,p=r)}),m.ui.registry.addToggleMenuItem("pastetext",{text:"Paste as text",icon:"paste-text",onAction:x,onSetup:re(m,p)}),d=r,(f=e).addCommand("mceTogglePlainTextPaste",function(){var e,t=f;"text"===(e=d).pasteFormat.get()?(e.pasteFormat.set("html"),C(t,!1)):(e.pasteFormat.set("text"),C(t,!0)),t.focus()}),f.addCommand("mceInsertClipboardContent",function(e,t){t.content&&d.pasteHtml(t.content,t.internal),t.text&&d.pasteText(t.text)}),function(e){var t=e.plugins.paste,n=e.getParam("paste_preprocess");n&&e.on("PastePreProcess",function(e){n.call(t,t,e)});var r=e.getParam("paste_postprocess");r&&e.on("PastePostProcess",function(e){r.call(t,t,e)})}(e),(o=e).on("cut",(u=o,function(e){q(u)&&W(e,Z(u),Y(u),function(){var e;fe.browser.isChrome()||fe.browser.isFirefox()?(e=u.selection.getRng(),de.setEditorTimeout(u,function(){u.selection.setRng(e),u.execCommand("Delete")},0)):u.execCommand("Delete")})})),o.on("copy",(c=o,function(e){q(c)&&W(e,Z(c),Y(c),_)})),s=r,l=t,(i=e).getParam("paste_block_drop",!1)&&i.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),T(i)||i.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&0<t.files.length&&e.preventDefault()}),i.on("drop",function(e){var t,n,r,a,o=G(i,e);e.isDefaultPrevented()||l.get()||(t=s.getDataTransferItems(e.dataTransfer),n=s.hasContentType(t,ye()),(!s.hasHtmlOrText(t)||(r=t["text/plain"])&&0===r.indexOf("file://"))&&s.pasteImageData(e,o)||!o||!i.getParam("paste_filter_drop",!0)||(a=t["mce-internal"]||t["text/html"]||t["text/plain"])&&(e.preventDefault(),de.setEditorTimeout(i,function(){i.undoManager.transact(function(){t["mce-internal"]&&i.execCommand("Delete"),J(i,o),a=D(a),t["text/html"]?s.pasteHtml(a,n):s.pasteText(a)})})))}),i.on("dragstart",function(e){l.set(!0)}),i.on("dragover dragend",function(e){T(i)&&!1===l.get()&&(e.preventDefault(),J(i,G(i,e))),"dragend"===e.type&&l.set(!1)}),{clipboard:r}}var i,s,l,o,u,c,f,d,m,p,a,g,v,h,y,b;function x(){return m.execCommand("mceTogglePlainTextPaste")}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/preview/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/preview/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad948ff2702af1de381468e5aa5bf72da80149ce
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/preview/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.Env"),w=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("preview",function(e){var n,t;function i(){return t.execCommand("mcePreview")}(n=e).addCommand("mcePreview",function(){var e,t;t=function(t){var n="",i=t.dom.encode,e=t.getParam("content_style","","string");n+='<base href="'+i(t.documentBaseURI.getURI())+'">';var o=t.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"";w.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"}),e&&(n+='<style type="text/css">'+e+"</style>");var a,r,s,c,d,l,m,y=-1===(c=(a=t).getParam("body_id","tinymce","string")).indexOf("=")?c:(s=(r=a).getParam("body_id","","hash"))[r.id]||s,u=-1===(m=(d=t).getParam("body_class","","string")).indexOf("=")?m:(l=d).getParam("body_class","","hash")[l.id]||"",v='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(f.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",g=t.getBody().dir,p=g?' dir="'+i(g)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(y)+'" class="mce-content-body '+i(u)+'"'+p+">"+t.getContent()+v+"</body></html>"}(e=n),e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}),(t=e).ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:i}),t.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:i})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/print/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/print/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..4405981facecbd08d7e38fcd1847affd71202cec
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/print/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env");n.add("print",function(n){var t,i;function e(){return i.execCommand("mcePrint")}(t=n).addCommand("mcePrint",function(){r.browser.isIE()?t.getDoc().execCommand("print",!1,null):t.getWin().print()}),(i=n).ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:e}),i.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:e}),n.addShortcut("Meta+P","","mcePrint")})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/quickbars/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/quickbars/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..82a298407942928f10eff1f67fd1d69400004979
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/quickbars/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function n(a){a.ui.registry.addButton("quickimage",{icon:"image",tooltip:"Insert image",onAction:function(){var i=a;new s(function(n){var r=document.createElement("input");r.type="file",r.accept="image/*",r.style.position="fixed",r.style.left="0",r.style.top="0",r.style.opacity="0.001",document.body.appendChild(r),r.addEventListener("change",function(t){n(Array.prototype.slice.call(t.target.files))});var o=function(t){function e(){n([]),r.parentNode.removeChild(r)}d.os.isAndroid()&&"remove"!==t.type?f.setEditorTimeout(i,e,0):e(),i.off("focusin remove",o)};i.on("focusin remove",o),r.click()}).then(function(t){var c,n;0<t.length&&(c=t[0],n=c,new s(function(t){var e=new FileReader;e.onloadend=function(){t(e.result.split(",")[1])},e.readAsDataURL(n)}).then(function(t){var e,n,r,o,i,u;n=t,r=c,i=(e=a).editorUpload.blobCache,u=i.create((o=(new Date).getTime(),"mceu_"+Math.floor(1e9*Math.random())+ ++l+String(o)),r,n),i.add(u),e.insertContent(e.dom.createHTML("img",{src:u.blobUri()}))}))})}}),a.ui.registry.addButton("quicktable",{icon:"table",tooltip:"Insert table",onAction:function(){var t,n;(t=a).plugins.table?t.plugins.table.insertTable(2,2):(n=t).undoManager.transact(function(){n.insertContent(function(){var t='<table data-mce-id="mce" style="width: 100%">';t+="<tbody>";for(var e=0;e<2;e++){t+="<tr>";for(var n=0;n<2;n++)t+="<td><br></td>";t+="</tr>"}return(t+="</tbody>")+"</table>"}());var t=n.dom.select("*[data-mce-id]")[0];t.removeAttribute("data-mce-id");var e=n.dom.select("td,th",t);n.selection.setCursorLocation(e[0],0)})}})}function t(r){return function(t){return n=typeof(e=t),(null===e?"null":"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n)===r;var e,n}}function e(e){return function(t){return typeof t===e}}function i(t){return function(){return t}}function r(t){return t}function o(){return y}var u,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=0,s=tinymce.util.Tools.resolve("tinymce.util.Promise"),d=tinymce.util.Tools.resolve("tinymce.Env"),f=tinymce.util.Tools.resolve("tinymce.util.Delay"),a=t("string"),m=t("object"),g=t("array"),v=e("boolean"),h=e("function"),p=i(!1),b=i(!(u=void 0)),y={fold:function(t,e){return t()},isSome:p,isNone:b,getOr:r,getOrThunk:k,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:r,orThunk:k,map:o,each:function(){},bind:o,exists:p,forall:b,filter:function(){return y},toArray:function(){return[]},toString:i("none()")};function k(t){return t()}var w=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:b,isNone:p,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return w(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:y},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:w,none:o,from:function(t){return null==t?y:w(t)}};function E(t,e,n,r,o){return t(n,r)?T.some(n):h(o)&&o(n)?T.none():e(n,r,o)}function N(t,e){var n=t.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(e);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(e);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(e);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function M(t){if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}}var S={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",t),new Error("HTML must have a single root node");return M(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);return M(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return M(n)},fromDom:M,fromPoint:function(t,e,n){return T.from(t.dom.elementFromPoint(e,n)).map(M)}};function C(t,e,n){for(var r=t.dom,o=h(n)?n:p;r.parentNode;){var r=r.parentNode,i=S.fromDom(r);if(e(i))return T.some(i);if(o(i))break}return T.none()}function O(t,e,n){return C(t,function(t){return N(t,e)},n)}"undefined"!=typeof window||Function("return this;")();var q,x=(q=a,function(t,e,n){return function(){if(!q(n))throw new Error("Default value doesn't match requested type.")}(),function(t,e){if(g(t)||m(t))throw new Error("expected a string but found: "+t);return u===t?e:v(t)?!1===t?"":e:t}(t.getParam(e,n),n)});c.add("quickbars",function(t){var o,e;n(t),0<(e=x(o=t,"quickbars_insert_toolbar","quickimage quicktable")).trim().length&&o.ui.registry.addContextToolbar("quickblock",{predicate:function(t){function e(t){return t.dom===o.getBody()}var n=S.fromDom(t),r=o.schema.getTextBlockElements();return E(N,O,n,"table",e).fold(function(){return E(function(t,e){return e(t)},C,n,function(t){return t.dom.nodeName.toLowerCase()in r&&o.dom.isEmpty(t.dom)},e).isSome()},p)},items:e,position:"line",scope:"editor"}),function(e){function n(t){return"IMG"===t.nodeName||"FIGURE"===t.nodeName&&/image/i.test(t.className)}var t=x(e,"quickbars_image_toolbar","alignleft aligncenter alignright");0<t.trim().length&&e.ui.registry.addContextToolbar("imageselection",{predicate:n,items:t,position:"node"});var r=x(e,"quickbars_selection_toolbar","bold italic | quicklink h2 h3 blockquote");0<r.trim().length&&e.ui.registry.addContextToolbar("textselection",{predicate:function(t){return!n(t)&&!e.selection.isCollapsed()&&"false"!==e.dom.getContentEditableParent(t)},items:r,position:"selection",scope:"editor"})}(t)})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/save/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/save/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..a22aa62f221a26c4fa54039c5d66057f0e894709
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/save/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function o(e){return e.getParam("save_enablewhendirty",!0)}function a(e,n){e.notificationManager.open({text:n,type:"error"})}function t(t){t.addCommand("mceSave",function(){!function(e){var n=c.DOM.getParent(e.id,"form");if(!o(e)||e.isDirty()){if(e.save(),e.getParam("save_onsavecallback"))return e.execCallback("save_onsavecallback",e),e.nodeChanged();n?(e.setDirty(!1),n.onsubmit&&!n.onsubmit()||("function"==typeof n.submit?n.submit():a(e,"Error: Form submit field collision.")),e.nodeChanged()):a(e,"Error: No form element found.")}}(t)}),t.addCommand("mceCancel",function(){var e=t,n=r.trim(e.startContent);e.getParam("save_oncancelcallback")?e.execCallback("save_oncancelcallback",e):e.resetContent(n)})}function i(t){return function(e){function n(){e.setDisabled(o(t)&&!t.isDirty())}return n(),t.on("NodeChange dirty",n),function(){return t.off("NodeChange dirty",n)}}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("save",function(e){var n;(n=e).ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:i(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:i(n)}),n.addShortcut("Meta+S","","mceSave"),t(e)})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5028a1d26e8bea46f6da2fe8f8ad66976c583d5
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function g(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function p(){}function i(e){return function(){return e}}function n(e){return e}function r(){return m}var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=function(){return(v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},a=e("string"),c=e("array"),u=t("boolean"),l=t("number"),s=i(!1),f=i(!0),d=i("[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]"),m={fold:function(e,t){return e()},isSome:s,isNone:f,getOr:n,getOrThunk:h,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:n,orThunk:h,map:r,each:p,bind:r,exists:s,forall:f,filter:function(){return m},toArray:function(){return[]},toString:i("none()")};function h(e){return e()}function y(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r}function x(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function b(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}function w(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!c(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);S.apply(t,e[n])}return t}(y(e,t))}function O(e,t){return A.call(e,t)}var C=function(n){function e(){return o}function t(e){return e(n)}var r=i(n),o={fold:function(e,t){return t(n)},isSome:f,isNone:s,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return C(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:m},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:C,none:r,from:function(e){return null==e?m:C(e)}},E=d,N=tinymce.util.Tools.resolve("tinymce.util.Tools"),k=Array.prototype.slice,S=Array.prototype.push,A=Object.hasOwnProperty;function D(e,t,n){!function(e,t,n){if(!(a(n)||u(n)||l(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}(e.dom,t,n)}function M(e,t){return{element:e,offset:t}}function B(e,t){var n,r;n=e,r=t,T.from(n.dom.parentNode).map(se.fromDom).each(function(e){e.dom.insertBefore(r.dom,n.dom)}),t.dom.appendChild(e.dom)}function F(e){return fe.get(e)}function I(e,t){return e.isBlock(t)||O(e.schema.getShortEndedElements(),t.nodeName)}function P(e,t){return"false"===e.getContentEditable(t)}function R(e,t){return!e.isBlock(t)&&O(e.schema.getWhiteSpaceElements(),t.nodeName)}function W(){return{sOffset:0,fOffset:0,elements:[]}}function j(e,t){return n=se.fromDom(e),r=t,0<(o=y(n.dom.childNodes,se.fromDom)).length&&r<o.length?M(o[r],0):M(n,r);var n,r,o}function V(e,t,n,r,o,i){for(var a=(i=void 0===i||i)?t(!1):n;a;){var c=P(e,a);if(c||R(e,a)){if(c?r.cef(a):r.boundary(a))break;a=t(!0)}else{if(I(e,a)){if(r.boundary(a))break}else 3===a.nodeType&&r.text(a);if(a===o)break;a=t(!1)}}}function H(e,t,n,r,o){var i,a,c,u,l,s;I(i=e,a=n)||P(i,a)||R(i,a)||"true"===(c=i).getContentEditable(u=a)&&"false"===c.getContentEditableParent(u.parentNode)||(l=e.getParent(r,e.isBlock),s=new de(n,l),V(e,(o?s.next:s.prev).bind(s),n,{boundary:f,cef:f,text:function(e){o?t.fOffset+=e.length:t.sOffset+=e.length,t.elements.push(se.fromDom(e))}}))}function L(e,t,n,r,o,i){void 0===i&&(i=!0);var a=new de(n,t),c=[],u=W();function l(){return 0<u.elements.length&&(c.push(u),u=W()),!1}return H(e,u,n,t,!1),V(e,a.next.bind(a),n,{boundary:l,cef:function(e){return l(),o&&c.push.apply(c,o.cef(e)),!1},text:function(e){u.elements.push(se.fromDom(e)),o&&o.text(e,u)}},r,i),r&&H(e,u,r,t,!0),l(),c}function U(u,e){var n=j(e.startContainer,e.startOffset),r=n.element.dom,o=j(e.endContainer,e.endOffset),i=o.element.dom;return L(u,e.commonAncestorContainer,r,i,{text:function(e,t){e===i?t.fOffset+=e.length-o.offset:e===r&&(t.sOffset+=n.offset)},cef:function(e){var t,n,r,o,i,a=w((n=se.fromDom(e),r="*[contenteditable=true]",1!==(o=i=void 0===n?document:n.dom).nodeType&&9!==o.nodeType&&11!==o.nodeType||0===o.childElementCount?[]:y(i.querySelectorAll(r),se.fromDom)),function(e){var t=e.dom;return L(u,t,t)}),c=function(e,t){return n=e.elements[0].dom,r=t.elements[0].dom,o=Node.DOCUMENT_POSITION_PRECEDING,0!=(n.compareDocumentPosition(r)&o)?1:-1;var n,r,o};return(t=k.call(a,0)).sort(c),t}},!1)}function $(e,t){return t.collapsed?[]:U(e,t)}function _(e,t){var n=e.createRng();return n.selectNode(t),$(e,n)}function z(c,e){return w(e,function(e){var a,n,r,t=e.elements,o=y(t,F).join(""),i=function(e,t,n,r){void 0===r&&(r=e.length);var o=t.regex;o.lastIndex=n=void 0===n?0:n;for(var i,a=[];i=o.exec(e);){var c=i[t.matchIndex],u=i.index+i[0].indexOf(c),l=u+c.length;if(r<l)break;a.push({start:u,finish:l}),o.lastIndex=l}return a}(o,c,e.sOffset,o.length-e.fOffset);return a=i,function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,a=e.length;i<a;i++){var c=e[i],u=t(c);u!==n&&(r.push(o),o=[]),n=u,o.push(c)}return 0!==o.length&&r.push(o),r}((n=function(e,n){var t=F(n),r=e.last,o=r+t.length,i=w(a,function(e,t){return e.start<o&&e.finish>r?[{element:n,start:Math.max(r,e.start)-r,finish:Math.min(o,e.finish)-r,matchId:t}]:[]});return{results:e.results.concat(i),last:o}},r={results:[],last:0},x(t,function(e,t){r=n(r,e)}),r.results),function(e){return e.matchId})})}function q(e,i){b(e,function(e,o){b(e,function(e){var t=se.fromDom(i.cloneNode(!1));D(t,"data-mce-index",o);var n,r=e.element.dom;r.length===e.finish&&0===e.start?B(e.element,t):(r.length!==e.finish&&r.splitText(e.finish),n=r.splitText(e.start),B(se.fromDom(n),t))})})}function G(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function K(e,t,n,r){var o=e.dom.create("span",{"data-mce-bogus":1});o.className="mce-match-marker";var i,a,c,u,l,s,f,d,m,h,g=e.getBody();return me(e,t,!1),r?(c=e.dom,u=n,l=e.selection,s=o,d=l.getBookmark(),m=c.select("td[data-mce-selected],th[data-mce-selected]"),q(h=z(u,0<m.length?(f=c,w(m,function(e){return _(f,e)})):$(c,l.getRng())),s),l.moveToBookmark(d),h.length):(i=o,q(a=z(n,_(e.dom,g)),i),a.length)}function J(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function Q(e,t){var n=[],r=N.toArray(e.getBody().getElementsByTagName("span"));if(r.length)for(var o=0;o<r.length;o++){var i=G(r[o]);null!==i&&i.length&&i===t.toString()&&n.push(r[o])}return n}function X(e,t,n){var r=t.get(),o=r.index,i=e.dom;(n=!1!==n)?o+1===r.count?o=0:o++:o-1==-1?o=r.count-1:o--,i.removeClass(Q(e,r.index),"mce-match-marker-selected");var a=Q(e,o);return a.length?(i.addClass(Q(e,o),"mce-match-marker-selected"),e.selection.scrollIntoView(a[0]),o):-1}function Y(e,t){var n=t.parentNode;e.remove(t),e.isEmpty(n)&&e.remove(n)}function Z(e,t,n,r,o,i){var a,c,u,l=(a=o,c="("+n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&").replace(/\s/g,"[^\\S\\r\\n\\uFEFF]")+")",a?"(?:^|\\s|"+E()+")"+c+"(?=$|\\s|"+E()+")":c),s=K(e,t,{regex:new RegExp(l,r?"g":"gi"),matchIndex:1},i);return s&&(u=X(e,t,!0),t.set({index:u,count:s,text:n,matchCase:r,wholeWord:o,inSelection:i})),s}function ee(e,t){var n=X(e,t,!0);t.set(v(v({},t.get()),{index:n}))}function te(e,t){var n=X(e,t,!1);t.set(v(v({},t.get()),{index:n}))}function ne(e){var t=G(e);return null!==t&&0<t.length}function re(e,t,n,r,o){var i,a=t.get(),c=a.index,u=c;r=!1!==r;for(var l=e.getBody(),s=N.grep(N.toArray(l.getElementsByTagName("span")),ne),f=0;f<s.length;f++){var d=G(s[f]),m=i=parseInt(d,10);if(o||m===a.index){for(n.length?(s[f].firstChild.nodeValue=n,J(s[f])):Y(e.dom,s[f]);s[++f];){if((m=parseInt(G(s[f]),10))!==i){f--;break}Y(e.dom,s[f])}r&&u--}else c<i&&s[f].setAttribute("data-mce-index",String(i-1))}return t.set(v(v({},a),{count:o?0:a.count-1,index:u})),(r?ee:te)(e,t),!o&&0<t.get().count}function oe(i,a){var e,t,n,r=(e=p,t=g(T.none()),v(v({},n={clear:function(){o(),t.set(T.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){o(),t.set(T.some(e))}}),{on:function(e){return n.get().each(e)}}));function o(){return t.get().each(e)}function c(e){(1<a.get().count?e.enable:e.disable)("next"),(1<a.get().count?e.enable:e.disable)("prev")}function u(e,t){x(["replace","replaceall","prev","next"],t?e.disable:e.enable)}function l(e,t){he.browser.isSafari()&&he.deviceType.isTouch()&&("find"===t||"replace"===t||"replaceall"===t)&&e.focus(t)}function s(e){me(i,a,!1),u(e,!0),c(e)}function f(e){var t,n,r=e.getData(),o=a.get();r.findtext.length?(o.text===r.findtext&&o.matchCase===r.matchcase&&o.wholeWord===r.wholewords?ee(i,a):((t=Z(i,a,r.findtext,r.matchcase,r.wholewords,r.inselection))<=0&&(n=e,i.windowManager.alert("Could not find the specified string.",function(){n.focus("findtext")})),u(e,0===t)),c(e)):s(e)}i.undoManager.add();var d=N.trim(i.selection.getContent({format:"text"})),m=a.get(),h={title:"Find and Replace",size:"normal",body:{type:"panel",items:[{type:"bar",items:[{type:"input",name:"findtext",placeholder:"Find",maximized:!0,inputMode:"search"},{type:"button",name:"prev",text:"Previous",icon:"action-prev",disabled:!0,borderless:!0},{type:"button",name:"next",text:"Next",icon:"action-next",disabled:!0,borderless:!0}]},{type:"input",name:"replacetext",placeholder:"Replace with",inputMode:"search"}]},buttons:[{type:"menu",name:"options",icon:"preferences",tooltip:"Preferences",align:"start",items:[{type:"togglemenuitem",name:"matchcase",text:"Match case"},{type:"togglemenuitem",name:"wholewords",text:"Find whole words only"},{type:"togglemenuitem",name:"inselection",text:"Find in selection"}]},{type:"custom",name:"find",text:"Find",primary:!0},{type:"custom",name:"replace",text:"Replace",disabled:!0},{type:"custom",name:"replaceall",text:"Replace all",disabled:!0}],initialData:{findtext:d,replacetext:"",wholewords:m.wholeWord,matchcase:m.matchCase,inselection:m.inSelection},onChange:function(e,t){"findtext"===t.name&&0<a.get().count&&s(e)},onAction:function(e,t){var n,r,o=e.getData();switch(t.name){case"find":f(e);break;case"replace":(re(i,a,o.replacetext)?c:s)(e);break;case"replaceall":re(i,a,o.replacetext,!0,!0),s(e);break;case"prev":te(i,a),c(e);break;case"next":ee(i,a),c(e);break;case"matchcase":case"wholewords":case"inselection":n=e.getData(),r=a.get(),a.set(v(v({},r),{matchCase:n.matchcase,wholeWord:n.wholewords,inSelection:n.inselection})),s(e)}l(e,t.name)},onSubmit:function(e){f(e),l(e,"find")},onClose:function(){i.focus(),me(i,a),i.undoManager.add()}};r.set(i.windowManager.open(h,{inline:"toolbar"}))}function ie(e,t){return function(){oe(e,t)}}"undefined"!=typeof window||Function("return this;")();function ae(e){return 3===e.dom.nodeType}function ce(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var ue,le,se={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ce(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return ce(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return ce(n)},fromDom:ce,fromPoint:function(e,t,n){return T.from(e.dom.elementFromPoint(t,n)).map(ce)}},fe=(ue=ae,{get:function(e){if(!ue(e))throw new Error("Can only get text value of a text node");return le(e).getOr("")},getOption:le=function(e){return ue(e)?T.from(e.dom.nodeValue):T.none()},set:function(e,t){if(!ue(e))throw new Error("Can only set raw text value of a text node");e.dom.nodeValue=t}}),de=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),me=function(e,t,n){for(var r,o,i=t.get(),a=N.toArray(e.getBody().getElementsByTagName("span")),c=0;c<a.length;c++){var u=G(a[c]);null!==u&&u.length&&(u===i.index.toString()&&(r=r||a[c].firstChild,o=a[c].firstChild),J(a[c]))}if(t.set(v(v({},i),{index:-1,count:0,text:""})),r&&o){var l=e.dom.createRng();return l.setStart(r,0),l.setEnd(o,o.data.length),!1!==n&&e.selection.setRng(l),l}},he=tinymce.util.Tools.resolve("tinymce.Env");o.add("searchreplace",function(e){var t,n,r,o,i,a=g({index:-1,count:0,text:"",matchCase:!1,wholeWord:!1,inSelection:!1}),c=a;return(t=e).addCommand("SearchReplace",function(){oe(t,c)}),(n=e).ui.registry.addMenuItem("searchreplace",{text:"Find and replace...",shortcut:"Meta+F",onAction:ie(n,r=a),icon:"search"}),n.ui.registry.addButton("searchreplace",{tooltip:"Find and replace",onAction:ie(n,r),icon:"search"}),n.shortcuts.add("Meta+F","",ie(n,r)),o=e,i=a,{done:function(e){return me(o,i,e)},find:function(e,t,n,r){return Z(o,i,e,t,n,r=void 0!==r&&r)},next:function(){return ee(o,i)},prev:function(){return te(o,i)},replace:function(e,t,n){return re(o,i,e,t,n)}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..b827b5e9ee5d2106588ff1e5115b950aa0c51ca7
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function I(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function u(e){return e.getParam("spellchecker_rpc_url")}function E(e){var t=new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)}function p(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function r(i,r){function o(e){var t=i.getElementsByTagName("*"),n=[];e="number"==typeof e?""+e:null;for(var r=0;r<t.length;r++){var o=t[r],a=o.getAttribute("data-mce-index");null!==a&&a.length&&-1!==o.className.indexOf("mce-spellchecker-word")&&(a!==e&&null!==e||n.push(o))}return n}function a(e){for(var t=c.length;t--;)if(c[t]===e)return t;return-1}var n,c=[],v=r.dom,f=r.schema.getBlockElements(),h=r.schema.getWhiteSpaceElements(),g=r.schema.getShortEndedElements(),s=function(e){if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!f[e.nodeName])return"";if(p(e))return"\n";var t="";if((f[e.nodeName]||g[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=s(e),e=e.nextSibling;);return t};function e(e){for(var t=0,n=c.length;t<n&&!1!==e(c[t],t);t++);return this}function t(e){for(var t=o(e?a(e):null),n=t.length;n--;)!function(e){for(var t=e.parentNode;0<e.childNodes.length;)t.insertBefore(e.childNodes[0],e);t.removeChild(e)}(t[n]);return this}function l(e){var t=o(a(e)),n=r.dom.createRng();return n.setStartBefore(t[0]),n.setEndAfter(t[t.length-1]),n}var u=s(i);return{text:u,matches:c,each:e,filter:function(n){var r=[];return e(function(e,t){n(e,t)&&r.push(e)}),c=r,this},reset:function(){return c.splice(0,c.length),t(),this},matchFromElement:function(e){return c[e.getAttribute("data-mce-index")]},elementFromMatch:function(e){return o(a(e))[0]},find:function(e,t){if(u&&e.global)for(;n=e.exec(u);)c.push(function(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}(n,t));return this},add:function(e,t,n){return c.push({start:e,end:e+t,text:u.substr(e,t),data:n}),this},wrap:function(e){return c.length&&function(e,t,n){var r,o,a,i,c,s=[],l=0,u=e,d=0;(t=t.slice(0)).sort(function(e,t){return e.start-t.start}),c=t.shift();e:for(;;){if((f[u.nodeName]||g[u.nodeName]||p(u))&&l++,3===u.nodeType&&(!o&&u.length+l>=c.end?(o=u,i=c.end-l):r&&s.push(u),!r&&u.length+l>c.start&&(r=u,a=c.start-l),l+=u.length),r&&o){if(u=n({startNode:r,startNodeIndex:a,endNode:o,endNodeIndex:i,innerNodes:s,match:c.text,matchIndex:d}),l-=o.length-i,o=r=null,s=[],d++,!(c=t.shift()))break}else if(h[u.nodeName]&&!f[u.nodeName]||!u.firstChild){if(u.nextSibling){u=u.nextSibling;continue}}else if(!p(u)){u=u.firstChild;continue}for(;;){if(u.nextSibling){u=u.nextSibling;break}if(u.parentNode===e)break e;u=u.parentNode}}}(i,c,(o=e,function(e){var t=e.startNode,n=e.endNode,r=e.matchIndex,o=v.doc;if(t===n){var a=t,i=a.parentNode;0<e.startNodeIndex&&(s=o.createTextNode(a.data.substring(0,e.startNodeIndex)),i.insertBefore(s,a));var c=m(e.match,r);return i.insertBefore(c,a),e.endNodeIndex<a.length&&(l=o.createTextNode(a.data.substring(e.endNodeIndex)),i.insertBefore(l,a)),a.parentNode.removeChild(a),c}for(var s=o.createTextNode(t.data.substring(0,e.startNodeIndex)),l=o.createTextNode(n.data.substring(e.endNodeIndex)),u=m(t.data.substring(e.startNodeIndex),r),d=0,f=e.innerNodes.length;d<f;++d){var h=e.innerNodes[d],g=m(h.data,r);h.parentNode.replaceChild(g,h)}var p=m(n.data.substring(0,e.endNodeIndex),r);return(i=t.parentNode).insertBefore(s,t),i.insertBefore(u,t),i.removeChild(t),(i=n.parentNode).insertBefore(p,n),i.insertBefore(l,n),i.removeChild(n),p})),this;function m(e,t){var n=c[t];n.stencil||(n.stencil=o(n));var r=n.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",""+t),e&&r.appendChild(v.doc.createTextNode(e)),r}var o},unwrap:t,replace:function(e,t){var n=l(e);return n.deleteContents(),0<t.length&&n.insertNode(r.dom.doc.createTextNode(t)),n},rangeFromMatch:l,indexOf:a}}function l(e,t){var n;return t.get()||(n=r(e.getBody(),e),t.set(n)),t.get()}function k(e,t,n,r,o,a,i){var c,s,l;(e.getParam("spellchecker_callback")||(c=e,s=t,l=n,function(e,t,r,o){var n={method:e,lang:l.get()},a="";n["addToDictionary"===e?"word":"text"]=t,_.each(n,function(e,t){a&&(a+="&"),a+=t+"="+encodeURIComponent(e)}),h.send({url:new f(s).toAbsolute(u(c)),type:"post",content_type:"application/x-www-form-urlencoded",data:a,success:function(e){var t,n=JSON.parse(e);n?n.error?o(n.error):r(n):(t=c.translate("Server response wasn't proper JSON."),o(t))},error:function(){var e=c.translate("The spelling service was not found: (")+u(c)+c.translate(")");o(e)}})})).call(e.plugins.spellchecker,r,o,a,i)}function M(t,e,n,r,o,a){i(t,n,r)||(t.setProgressState(!0),k(t,e,a,"spellcheck",l(t,r).text,function(e){O(t,n,r,o,e)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1),i(t,n,r)}),t.focus())}function y(e,t,n){e.dom.select("span.mce-spellchecker-word").length||i(e,t,n)}function S(t,e,n,r,o,a){t.selection.collapse(),a?_.each(t.dom.select("span.mce-spellchecker-word"),function(e){e.getAttribute("data-mce-word")===r&&t.dom.remove(e,!0)}):t.dom.remove(o,!0),y(t,e,n)}function b(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function R(g,p,m,v,x,N){g.ui.registry.addContextMenu("spellchecker",{update:function(e){var t=e;if("mce-spellchecker-word"!==t.className)return[];var c,s,n,l,u,d,f,h,r,o,a=function(e,t){var n=[],r=_.toArray(e.getBody().getElementsByTagName("span"));if(r.length)for(var o=0;o<r.length;o++){var a=b(r[o]);null!==a&&a.length&&a===t.toString()&&n.push(r[o])}return n}(g,b(t));if(0<a.length){var i=g.dom.createRng();return i.setStartBefore(a[0]),i.setEndAfter(a[a.length-1]),g.selection.setRng(i),c=g,s=p,n=m,l=v,u=x,d=N,f=t.getAttribute("data-mce-word"),h=a,r=[],o=n.get().suggestions[f],_.each(o,function(e){r.push({text:e,onAction:function(){c.insertContent(c.dom.encode(e)),c.dom.remove(h),y(c,l,u)}})}),n.get().hasDictionarySupport&&(r.push({type:"separator"}),r.push({text:"Add to dictionary",onAction:function(){var t,e=s,n=l,r=u,o=d,a=f,i=h;(t=c).setProgressState(!0),k(t,e,o,"addToDictionary",a,function(){t.setProgressState(!1),t.dom.remove(i,!0),y(t,n,r)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1)})}})),r.push.apply(r,[{type:"separator"},{text:"Ignore",onAction:function(){S(c,l,u,f,h)}},{text:"Ignore all",onAction:function(){S(c,l,u,f,h,!0)}}]),r}}})}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=Object.hasOwnProperty,_=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=tinymce.util.Tools.resolve("tinymce.util.URI"),h=tinymce.util.Tools.resolve("tinymce.util.XHR"),i=function(e,t,n){var r=e.selection.getBookmark();if(l(e,n).reset(),e.selection.moveToBookmark(r),n.set(null),t.get())return t.set(!1),e.fire("SpellcheckEnd"),!0},O=function(t,e,n,r,o){var a=!!o.dictionary,i=o.words;if(t.setProgressState(!1),function(e){for(var t in e)if(d.call(e,t))return;return 1}(i)){var c=t.translate("No misspellings found.");return t.notificationManager.open({text:c,type:"info"}),void e.set(!1)}r.set({suggestions:i,hasDictionarySupport:a});var s=t.selection.getBookmark();l(t,n).find(E(t)).filter(function(e){return!!i[e.text]}).wrap(function(e){return t.dom.create("span",{class:"mce-spellchecker-word","aria-invalid":"spelling","data-mce-bogus":1,"data-mce-word":e.text})}),t.selection.moveToBookmark(s),e.set(!0),t.fire("SpellcheckStart")},D=function(){return(D=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},F="SpellcheckStart SpellcheckEnd";e.add("spellchecker",function(e,t){if(0==(!!e.hasPlugin("tinymcespellchecker",!0)&&(void 0!==window.console&&window.console.log&&window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),!0))){console.warn("The spellchecker plugin has been deprecated and marked for removal in TinyMCE 6.0");var n=I(!1),r=I((C=(P=e).getParam("language","en"),P.getParam("spellchecker_language",C))),o=I(null),a=I(null);return c=e,s=t,l=n,u=o,d=r,f=a,h=_.map(c.getParam("spellchecker_languages","English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv").split(","),function(e){var t=e.split("=");return{name:t[0],value:t[1]}}),g=[],_.each(h,function(e){g.push({selectable:!0,text:e.name,data:e.value})}),p=g,v=D(D({},m={tooltip:"Spellcheck",onAction:i,icon:"spell-check",onSetup:function(e){function t(){e.setActive(l.get())}return c.on(F,t),function(){c.off(F,t)}}}),{type:"splitbutton",select:function(e){return e===d.get()},fetch:function(e){e(_.map(p,function(e){return{type:"choiceitem",value:e.data,text:e.text}}))},onItemAction:function(e,t){d.set(t)}}),1<p.length?c.ui.registry.addSplitButton("spellchecker",v):c.ui.registry.addToggleButton("spellchecker",m),c.ui.registry.addToggleMenuItem("spellchecker",{text:"Spellcheck",icon:"spell-check",onSetup:function(e){function t(){e.setActive(l.get())}return e.setActive(l.get()),c.on(F,t),function(){c.off(F,t)}},onAction:i}),R(e,t,a,n,o,r),b=t,w=n,T=o,A=a,B=r,(S=e).addCommand("mceSpellCheck",function(){M(S,b,w,T,A,B)}),x=e,N=n,k=a,{getTextMatcher:(y=o).get,getWordCharPattern:function(){return E(x)},markErrors:function(e){O(x,N,y,k,e)},getLanguage:r.get}}function i(){M(c,s,l,u,f,d)}var c,s,l,u,d,f,h,g,p,m,v,x,N,k,y,S,b,w,T,A,B,P,C})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..216c96623fba86ad94cdbc6dbd91932359d92f6e
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function n(e){e.keyCode!==y.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),a=tinymce.util.Tools.resolve("tinymce.util.Delay"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),y=tinymce.util.Tools.resolve("tinymce.util.VK"),d=t.DOM;e.add("tabfocus",function(e){function t(l){var r,e,t,n,i;l.keyCode!==y.TAB||l.ctrlKey||l.altKey||l.metaKey||l.isDefaultPrevented()||(e=function(e){function t(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&s.get(l.id)&&-1!==e.tabIndex&&i(e)}var n=d.select(":input:enabled,*[tabindex]:not(iframe)"),i=function(e){return"BODY"===e.nodeName||"hidden"!==e.type&&"none"!==e.style.display&&"hidden"!==e.style.visibility&&i(e.parentNode)};if(c.each(n,function(e,t){if(e.id===u.id)return r=t,!1}),0<e){for(var o=r+1;o<n.length;o++)if(t(n[o]))return n[o]}else for(o=r-1;0<=o;o--)if(t(n[o]))return n[o];return null},1===(t=c.explode(u.getParam("tab_focus",u.getParam("tabfocus_elements",":prev,:next")))).length&&(t[1]=t[0],t[0]=":prev"),(n=l.shiftKey?":prev"===t[0]?e(-1):d.get(t[0]):":next"===t[1]?e(1):d.get(t[1]))&&(i=s.get(n.id||n.name),n.id&&i?i.focus():a.setTimeout(function(){o.webkit||window.focus(),n.focus()},10),l.preventDefault()))}var u;(u=e).on("init",function(){u.inline&&d.setAttrib(u.getBody(),"tabIndex",null),u.on("keyup",n),o.gecko?u.on("keypress keydown",t):u.on("keydown",t)})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/table/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/table/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..1cabdfd8a91975f3b586d9eaa69bc7ef376356b6
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/table/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function e(r){return function(e){return t=typeof(n=e),(null===n?"null":"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t)===r;var n,t}}function n(n){return function(e){return typeof e===n}}function t(n){return function(e){return n===e}}function l(e){return!(null==e)}function E(){}function C(e){return function(){return e}}function h(e){return e}function r(e,n){return e===n}var S=e("string"),g=e("object"),a=e("array"),v=t(null),o=n("boolean"),f=t(void 0),c=n("function"),s=n("number");function P(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}function p(n){return function(e){return!n(e)}}function u(){return i}var w=C(!1),T=C(!0),i={fold:function(e,n){return e()},isSome:w,isNone:T,getOr:h,getOrThunk:d,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:C(null),getOrUndefined:C(void 0),or:h,orThunk:d,map:u,each:E,bind:u,exists:w,forall:T,filter:function(){return i},toArray:function(){return[]},toString:C("none()")};function d(e){return e()}function y(e,n){return-1<q.call(e,n)}function R(e,n){for(var t=0,r=e.length;t<r;t++)if(n(e[t],t))return!0;return!1}function D(e,n){for(var t=[],r=0;r<e;r++)t.push(n(r));return t}function x(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var u=e[o];r[o]=n(u,o)}return r}function O(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t)}function A(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var u=e[r];n(u,r)&&t.push(u)}return t}function k(e,r,o){return function(e){for(var n,t=e.length-1;0<=t;t--)n=e[t],o=r(o,n,t)}(e),o}function I(e,t,r){return O(e,function(e,n){r=t(r,e,n)}),r}function B(e,n){return function(e,n,t){for(var r=0,o=e.length;r<o;r++){var u=e[r];if(n(u,r))return H.some(u);if(t(u,r))break}return H.none()}(e,n,w)}function m(e,n){for(var t=0,r=e.length;t<r;t++)if(n(e[t],t))return H.some(t);return H.none()}function b(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!a(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);U.apply(n,e[t])}return n}function N(e,n){return b(x(e,n))}function M(e,n){for(var t=0,r=e.length;t<r;++t)if(!0!==n(e[t],t))return!1;return!0}function z(e,n){for(var t={},r=0,o=e.length;r<o;r++){var u=e[r];t[String(u)]=n(u,r)}return t}function L(e){return[e]}function _(e,n){return 0<=n&&n<e.length?H.some(e[n]):H.none()}function W(e){return _(e,0)}function j(e,n){for(var t=0;t<e.length;t++){var r=n(e[t],t);if(r.isSome())return r}return H.none()}var F=function(t){function e(){return o}function n(e){return e(t)}var r=C(t),o={fold:function(e,n){return n(t)},isSome:T,isNone:w,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return F(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:i},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},H={some:F,none:u,from:function(e){return null==e?i:F(e)}},V=Array.prototype.slice,q=Array.prototype.indexOf,U=Array.prototype.push,$=function(){return($=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)};function K(e,n,t){if(t||2===arguments.length)for(var r,o=0,u=n.length;o<u;o++)!r&&o in n||((r=r||Array.prototype.slice.call(n,0,o))[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))}function G(t){var r,o=!1;return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return o||(o=!0,r=t.apply(null,e)),r}}function X(e,n){var t=String(n).toLowerCase();return B(e,function(e){return e.search(t)})}function Y(e,n,t){return""===n||e.length>=n.length&&e.substr(t,t+n.length)===n}function J(e,n){return-1!==e.indexOf(n)}function Q(e,n){return Y(e,n,e.length-n.length)}function Z(e){return 0<e.length}function ee(n){return function(e){return J(e,n)}}function ne(e){return window.matchMedia(e).matches}function te(e,n){var t=e.dom;if(1!==t.nodeType)return!1;var r=t;if(void 0!==r.matches)return r.matches(n);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(n);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(n);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function re(e){return 1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount}function oe(e,n){var t=void 0===n?document:n.dom;return re(t)?H.none():H.from(t.querySelector(e)).map(Fe.fromDom)}function ue(e,n){return e.dom===n.dom}function ie(e,n){return je().browser.isIE()?(t=e.dom,r=n.dom,o=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(t.compareDocumentPosition(r)&o)):(u=e.dom)!==(i=n.dom)&&u.contains(i);var t,r,o,u,i}function ce(e,n){for(var t=Ve(e),r=0,o=t.length;r<o;r++){var u=t[r];n(e[u],u)}}function le(e,t){return Ue(e,function(e,n){return{k:n,v:t(e,n)}})}function ae(e,n){var t={},r=n,o=t,u=function(e,n){o[n]=e},i=E;return ce(e,function(e,n){(r(e,n)?u:i)(e,n)}),t}function fe(e,t){var r=[];return ce(e,function(e,n){r.push(t(e,n))}),r}function se(e){return fe(e,h)}function de(e){return Ve(e).length}function me(e,n){return $e(e,n)?H.from(e[n]):H.none()}function ge(e,n){return $e(e,n)&&void 0!==e[n]&&null!==e[n]}function pe(e,n,t){return{element:e,rowspan:n,colspan:t}}function be(e,n,t){return{element:e,cells:n,section:t}}function he(e,n,t){return{element:e,isNew:n,isLocked:t}}function ve(e,n,t,r){return{element:e,cells:n,section:t,isNew:r}}function we(){return xe(0,0)}function ye(e){function n(e){return function(){return t===e}}var t=e.current,r=e.version;return{current:t,version:r,isEdge:n("Edge"),isChrome:n("Chrome"),isIE:n("IE"),isOpera:n("Opera"),isFirefox:n(Ie),isSafari:n("Safari")}}function Ce(e){function n(e){return function(){return t===e}}var t=e.current,r=e.version;return{current:t,version:r,isWindows:n(Ee),isiOS:n("iOS"),isAndroid:n(Pe),isOSX:n("OSX"),isLinux:n("Linux"),isSolaris:n(Ne),isFreeBSD:n(ze),isChromeOS:n(Le)}}function Se(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var Te,xe=function(e,n){return{major:e,minor:n}},Re={nu:xe,detect:function(e,n){var t,r,o=String(n).toLowerCase();return 0===e.length?we():(r=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}}(e,t=o))?xe(u(1),u(2)):{major:0,minor:0};function u(e){return Number(t.replace(r,"$"+e))}},unknown:we},De=function(e,n){return Y(e,n,0)},Oe=(Te=/^\s+|\s+$/g,function(e){return e.replace(Te,"")}),Ae=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ke={browsers:C([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return J(e,"edge/")&&J(e,"chrome")&&J(e,"safari")&&J(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ae],search:function(e){return J(e,"chrome")&&!J(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return J(e,"msie")||J(e,"trident")}},{name:"Opera",versionRegexes:[Ae,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:ee("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:ee("firefox")},{name:"Safari",versionRegexes:[Ae,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(J(e,"safari")||J(e,"mobile/"))&&J(e,"applewebkit")}}]),oses:C([{name:"Windows",search:ee("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return J(e,"iphone")||J(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:ee("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:ee("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:ee("linux"),versionRegexes:[]},{name:"Solaris",search:ee("sunos"),versionRegexes:[]},{name:"FreeBSD",search:ee("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:ee("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},Ie="Firefox",Be=function(){return ye({current:void 0,version:Re.unknown()})},Me=ye,Ee=(C("Edge"),C("Chrome"),C("IE"),C("Opera"),C(Ie),C("Safari"),"Windows"),Pe="Android",Ne="Solaris",ze="FreeBSD",Le="ChromeOS",_e=function(){return Ce({current:void 0,version:Re.unknown()})},We=Ce,je=(C(Ee),C("iOS"),C(Pe),C("Linux"),C("OSX"),C(Ne),C(ze),C(Le),G(function(){return e=navigator.userAgent,n=H.from(navigator.userAgentData),t=ne,p=ke.browsers(),b=ke.oses(),h=n.bind(function(e){return r=p,j(e.brands,function(n){var t=n.brand.toLowerCase();return B(r,function(e){var n;return t===(null===(n=e.brand)||void 0===n?void 0:n.toLowerCase())}).map(function(e){return{current:e.name,version:Re.nu(parseInt(n.version,10),0)}})});var r}).orThunk(function(){return X(p,t=e).map(function(e){var n=Re.detect(e.versionRegexes,t);return{current:e.name,version:n}});var t}).fold(Be,Me),v=X(b,r=e).map(function(e){var n=Re.detect(e.versionRegexes,r);return{current:e.name,version:n}}).fold(_e,We),{browser:h,os:v,deviceType:(u=h,i=e,c=t,l=(o=v).isiOS()&&!0===/ipad/i.test(i),a=o.isiOS()&&!l,s=(f=o.isiOS()||o.isAndroid())||c("(pointer:coarse)"),d=l||!a&&f&&c("(min-device-width:768px)"),m=a||f&&!d,g=u.isSafari()&&o.isiOS()&&!1===/safari/i.test(i),{isiPad:C(l),isiPhone:C(a),isTablet:C(d),isPhone:C(m),isTouch:C(s),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:C(g),isDesktop:C(!m&&!d&&!g)})};var e,n,t,r,o,u,i,c,l,a,f,s,d,m,g,p,b,h,v})),Fe={fromHtml:function(e,n){var t=(n||document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Se(t.childNodes[0])},fromTag:function(e,n){var t=(n||document).createElement(e);return Se(t)},fromText:function(e,n){var t=(n||document).createTextNode(e);return Se(t)},fromDom:Se,fromPoint:function(e,n,t){return H.from(e.dom.elementFromPoint(n,t)).map(Se)}},He=te,Ve=Object.keys,qe=Object.hasOwnProperty,Ue=function(e,r){var o={};return ce(e,function(e,n){var t=r(e,n);o[t.k]=t.v}),o},$e=function(e,n){return qe.call(e,n)},Ke=["tfoot","thead","tbody","colgroup"];function Ge(e){return e.dom.nodeName.toLowerCase()}function Xe(e){return e.dom.nodeType}function Ye(n){return function(e){return Xe(e)===n}}function Je(e){return 8===Xe(e)||"#comment"===Ge(e)}function Qe(n){return function(e){return dn(e)&&Ge(e)===n}}function Ze(e){return Fe.fromDom(e.dom.ownerDocument)}function en(e){return gn(e)?e:Ze(e)}function nn(e){return H.from(e.dom.parentNode).map(Fe.fromDom)}function tn(e,n){for(var t=c(n)?n:w,r=e.dom,o=[];null!==r.parentNode&&void 0!==r.parentNode;){var u=r.parentNode,i=Fe.fromDom(u);if(o.push(i),!0===t(i))break;r=u}return o}function rn(e){return H.from(e.dom.previousSibling).map(Fe.fromDom)}function on(e){return H.from(e.dom.nextSibling).map(Fe.fromDom)}function un(e){return x(e.dom.childNodes,Fe.fromDom)}function cn(e,n){var t=e.dom.childNodes;return H.from(t[n]).map(Fe.fromDom)}function ln(e){return Fe.fromDom(e.dom.host)}function an(e,n,t){return r=function(e){return te(e,n)},A(tn(e,t),r);var r}function fn(e,n){return t=function(e){return te(e,n)},A(un(e),t);var t}function sn(e,n){return re(t=void 0===e?document:e.dom)?[]:x(t.querySelectorAll(n),Fe.fromDom);var t}"undefined"!=typeof window||Function("return this;")();var dn=Ye(1),mn=Ye(3),gn=Ye(9),pn=Ye(11),bn=c(Element.prototype.attachShadow)&&c(Node.prototype.getRootNode),hn=C(bn),vn=bn?function(e){return Fe.fromDom(e.dom.getRootNode())}:en,wn=function(e){return l(e.dom.shadowRoot)},yn=function(e){var n=mn(e)?e.dom.parentNode:e.dom;if(null==n||null===n.ownerDocument)return!1;var t,r,o,u,i,c=n.ownerDocument;return o=Fe.fromDom(n),i=vn(o),(pn(u=i)&&l(u.dom.host)?H.some(i):H.none()).fold(function(){return c.body.contains(n)},(t=yn,r=ln,function(e){return t(r(e))}))},Cn=function(e){var n=e.dom.body;if(null==n)throw new Error("Body is not available yet");return Fe.fromDom(n)},Sn=function(e,n){var t=[];return O(un(e),function(e){t=(t=n(e)?t.concat([e]):t).concat(Sn(e,n))}),t};function Tn(e,n,t,r,o){return e(t,r)?H.some(t):c(o)&&o(t)?H.none():n(t,r,o)}function xn(e,n,t){for(var r=e.dom,o=c(t)?t:w;r.parentNode;){var r=r.parentNode,u=Fe.fromDom(r);if(n(u))return H.some(u);if(o(u))break}return H.none()}function Rn(e,n,t){return xn(e,function(e){return te(e,n)},t)}function Dn(e,n){return t=function(e){return te(e,n)},B(e.dom.childNodes,function(e){return t(Fe.fromDom(e))}).map(Fe.fromDom);var t}function On(e,n){return oe(n,e)}function An(e,n,t){return Tn(te,Rn,e,n,t)}function kn(e,n,t){if(!(S(t)||o(t)||s(t)))throw console.error("Invalid call to Attribute.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}function In(e,n,t){kn(e.dom,n,t)}function Bn(e,n){var t=e.dom;ce(n,function(e,n){kn(t,n,e)})}function Mn(e,n){var t=e.dom.getAttribute(n);return null===t?void 0:t}function En(e,n){return H.from(Mn(e,n))}function Pn(e,n){e.dom.removeAttribute(n)}function Nn(e){return I(e.dom.attributes,function(e,n){return e[n.name]=n.value,e},{})}function zn(e,n,t){return void 0===t&&(t=r),e.exists(function(e){return t(e,n)})}function Ln(e){for(var n=[],t=function(e){n.push(e)},r=0;r<e.length;r++)e[r].each(t);return n}function _n(e,n,t){return e.isSome()&&n.isSome()?H.some(t(e.getOrDie(),n.getOrDie())):H.none()}function Wn(e,n){return e?H.some(n):H.none()}function jn(e){return void 0!==e.style&&c(e.style.getPropertyValue)}function Fn(e,n,t){if(!S(t))throw console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);jn(e)&&e.style.setProperty(n,t)}function Hn(e,n,t){Fn(e.dom,n,t)}function Vn(e,n){var t=e.dom;ce(n,function(e,n){Fn(t,n,e)})}function qn(e,n){var t=e.dom,r=window.getComputedStyle(t).getPropertyValue(n);return""!==r||yn(e)?r:_t(t,n)}function Un(e,n){var t=e.dom,r=_t(t,n);return H.from(r).filter(function(e){return 0<e.length})}function $n(e,n){var t,r=n;jn(t=e.dom)&&t.style.removeProperty(r),zn(En(e,"style").map(Oe),"")&&Pn(e,"style")}function Kn(e,n,t){return void 0===t&&(t=0),En(e,n).map(function(e){return parseInt(e,10)}).getOr(t)}function Gn(e,n){return Kn(e,n,1)}function Xn(e){return 1<Gn(e,"colspan")}function Yn(e){return 1<Gn(e,"rowspan")}function Jn(e,n){return parseInt(qn(e,n),10)}function Qn(e,n){return Ft(e,n,T)}function Zn(e,n){return t=["td","th"],(o=void 0===(o=n)?w:n)(r=e)?H.none():y(t,Ge(r))?H.some(r):Rn(r,t.join(","),function(e){return te(e,"table")||o(e)});var t,r,o}function et(e){return Qn(e,"th,td")}function nt(e){return te(e,"colgroup")?fn(e,"col"):N(Ht(e),function(e){return fn(e,"col")})}function tt(e,n){return An(e,"table",n)}function rt(e){return Qn(e,"tr")}function ot(e,t){return x(e,function(e){if("colgroup"!==Ge(e))return be(e,n=x(et(e),function(e){return pe(e,Kn(e,"rowspan",1),Kn(e,"colspan",1))}),t(e));var n=x(nt(e),function(e){return pe(e,1,Kn(e,"span",1))});return be(e,n,"colgroup")})}function ut(e){return nn(e).map(function(e){var n=Ge(e);return y(Ke,n)?n:"tbody"}).getOr("tbody")}function it(e){var n=rt(e);return ot(K(K([],Ht(e)),n),ut)}function ct(e,n,t){var r=e.cells,o=r.slice(0,n),u=r.slice(n),i=o.concat(t).concat(u);return Vt(e,i)}function lt(e,n,t){return ct(e,n,[t])}function at(e,n,t){e.cells[n]=t}function ft(e,n){return e.cells[n]}function st(e,n){return ft(e,n).element}function dt(e){return e.cells.length}function mt(e){var n=function(e){for(var n=[],t=[],r=0,o=e.length;r<o;r++){var u=e[r];("colgroup"===u.section?n:t).push(u)}return{pass:n,fail:t}}(e);return{rows:n.fail,cols:n.pass}}function gt(e,n,t){var r=x(e.cells,t);return ve(n(e.element),r,e.section,!0)}function pt(e){return En(e,qt).bind(function(e){return H.from(e.match(/\d+/g))}).map(function(e){return z(e,T)})}function bt(e){var n,t=fe(I(mt(e).rows,function(t,e){return O(e.cells,function(e,n){e.isLocked&&(t[n]=!0)}),t},{}),function(e,n){return parseInt(n,10)});return(n=V.call(t,0)).sort(void 0),n}function ht(e){var l={},n=[],t={},r=[],a=W(e).map(function(e){return e.element}).bind(tt).bind(pt).getOr({}),i=0,f=0,s=0;return O(e,function(e){var c,o,u;"colgroup"===e.section?(o={},u=0,O(e.cells,function(t){var r=t.colspan;D(r,function(e){var n=u+e;o[n]={element:t.element,colspan:r,column:n}}),u+=r}),t=o,r=[{element:e.element,columns:se(t)}]):(c=[],O(e.cells,function(e){for(var n=0;void 0!==l[s+","+n];)n++;for(var t=ge(a,n.toString()),r={element:e.element,rowspan:e.rowspan,colspan:e.colspan,row:s,column:n,isLocked:t},o=0;o<e.colspan;o++)for(var u=0;u<e.rowspan;u++){var i=n+o;l[s+u+","+i]=r,f=Math.max(f,i+1)}c.push(r)}),i++,n.push(be(e.element,c,e.section)),s++)}),{grid:{rows:i,columns:f},access:l,all:n,columns:t,colgroups:r}}function vt(e,n){var t=n.column,r=n.column+n.colspan-1,o=n.row,u=n.row+n.rowspan-1;return t<=e.finishCol&&r>=e.startCol&&o<=e.finishRow&&u>=e.startRow}function wt(e,n){return n.column>=e.startCol&&n.column+n.colspan-1<=e.finishCol&&n.row>=e.startRow&&n.row+n.rowspan-1<=e.finishRow}function yt(e,n,t){var r=Ut.findItem(e,n,ue),o=Ut.findItem(e,t,ue);return r.bind(function(r){return o.map(function(e){return n=r,t=e,{startRow:Math.min(n.row,t.row),startCol:Math.min(n.column,t.column),finishRow:Math.max(n.row+n.rowspan-1,t.row+t.rowspan-1),finishCol:Math.max(n.column+n.colspan-1,t.column+t.colspan-1)};var n,t})})}function Ct(n,e,t){return yt(n,e,t).map(function(e){return x(Ut.filterItems(n,P(vt,e)),function(e){return e.element})})}function St(e,n){return Ut.findItem(e,n,function(e,n){return ie(n,e)}).map(function(e){return e.element})}function Tt(e,n,t,r,o){var u=$t(e),i=ue(e,t)?H.some(n):St(u,n),c=ue(e,o)?H.some(r):St(u,r);return i.bind(function(n){return c.bind(function(e){return Ct(u,n,e)})})}function xt(n,t){nn(n).each(function(e){e.dom.insertBefore(t.dom,n.dom)})}function Rt(e,n){on(e).fold(function(){nn(e).each(function(e){Kt(e,n)})},function(e){xt(e,n)})}function Dt(n,t){cn(n,0).fold(function(){Kt(n,t)},function(e){n.dom.insertBefore(t.dom,e.dom)})}function Ot(e,n){xt(e,n),Kt(n,e)}function At(t,r){O(r,function(e,n){Rt(0===n?t:r[n-1],e)})}function kt(n,e){O(e,function(e){Kt(n,e)})}function It(e){e.dom.textContent="",O(un(e),function(e){Gt(e)})}function Bt(e){var n,t=un(e);0<t.length&&(n=e,O(t,function(e){xt(n,e)})),Gt(e)}function Mt(e){return Xt.get(e)}function Et(e){return Xt.getOption(e)}function Pt(e,n){return Xt.set(e,n)}function Nt(e,n){return A(N(e.all,function(e){return e.cells}),n)}var zt,Lt,_t=function(e,n){return jn(e)?e.style.getPropertyValue(n):""},Wt=C(10),jt=C(10),Ft=function(e,n,t){return N(un(e),function(e){return te(e,n)?t(e)?[e]:[]:Ft(e,n,t)})},Ht=function(e){return tt(e).fold(C([]),function(e){return fn(e,"colgroup")})},Vt=function(e,n){return ve(e.element,n,e.section,e.isNew)},qt="data-snooker-locked-cols",Ut={fromTable:function(e){return ht(it(e))},generate:ht,getAt:function(e,n,t){return H.from(e.access[n+","+t])},findItem:function(e,n,t){var r=Nt(e,function(e){return t(n,e.element)});return 0<r.length?H.some(r[0]):H.none()},filterItems:Nt,justCells:function(e){return N(e.all,function(e){return e.cells})},justColumns:function(e){return se(e.columns)},hasColumns:function(e){return 0<Ve(e.columns).length},getColumnAt:function(e,n){return H.from(e.columns[n])}},$t=Ut.fromTable,Kt=function(e,n){e.dom.appendChild(n.dom)},Gt=function(e){var n=e.dom;null!==n.parentNode&&n.parentNode.removeChild(n)},Xt=(zt=mn,{get:function(e){if(!zt(e))throw new Error("Can only get text value of a text node");return Lt(e).getOr("")},getOption:Lt=function(e){return zt(e)?H.from(e.dom.nodeValue):H.none()},set:function(e,n){if(!zt(e))throw new Error("Can only set raw text value of a text node");e.dom.nodeValue=n}}),Yt=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function Jt(){return{up:C({selector:Rn,closest:An,predicate:xn,all:tn}),down:C({selector:sn,predicate:Sn}),styles:C({get:qn,getRaw:Un,set:Hn,remove:$n}),attrs:C({get:Mn,set:In,remove:Pn,copyTo:function(e,n){Bn(n,Nn(e))}}),insert:C({before:xt,after:Rt,afterAll:At,append:Kt,appendAll:kt,prepend:Dt,wrap:Ot}),remove:C({unwrap:Bt,remove:Gt}),create:C({nu:Fe.fromTag,clone:function(e){return Fe.fromDom(e.dom.cloneNode(!1))},text:Fe.fromText}),query:C({comparePosition:function(e,n){return e.dom.compareDocumentPosition(n.dom)},prevSibling:rn,nextSibling:on}),property:C({children:un,name:Ge,parent:nn,document:function(e){return en(e).dom},isText:mn,isComment:Je,isElement:dn,isSpecial:function(e){return y(["script","noscript","iframe","noframes","noembed","title","style","textarea","xmp"],Ge(e))},getLanguage:function(e){return dn(e)?En(e,"lang"):H.none()},getText:Mt,setText:Pt,isBoundary:function(e){return!!dn(e)&&("body"===Ge(e)||y(Yt,Ge(e)))},isEmptyTag:function(e){return!!dn(e)&&y(["br","img","hr","input"],Ge(e))},isNonEditable:function(e){return dn(e)&&"false"===Mn(e,"contenteditable")}}),eq:ue,is:He}}function Qt(t,e){return Nr(Lr,function(e,n){return t(n)},e)}function Zt(e){return Rn(e,"table")}function er(c,l,a){function f(n){return function(e){return void 0!==a&&a(e)||ue(e,n)}}return ue(c,l)?H.some({boxes:H.some([c]),start:c,finish:l}):Zt(c).bind(function(i){return Zt(l).bind(function(u){if(ue(i,u))return H.some({boxes:(r=c,o=l,Ct($t(i),r,o)),start:c,finish:l});if(ie(i,u)){var e=0<(n=an(l,"td,th",f(i))).length?n[n.length-1]:l;return H.some({boxes:Tt(i,c,i,l,u),start:c,finish:e})}if(ie(u,i)){var n,t=0<(n=an(c,"td,th",f(u))).length?n[n.length-1]:c;return H.some({boxes:Tt(u,c,i,l,u),start:c,finish:t})}return zr(Lr,c,l,void 0).shared.bind(function(e){return An(e,"table",a).bind(function(e){var n=an(l,"td,th",f(e)),t=0<n.length?n[n.length-1]:l,r=an(c,"td,th",f(e)),o=0<r.length?r[r.length-1]:c;return H.some({boxes:Tt(e,c,i,l,u),start:o,finish:t})})});var r,o})})}function nr(e,n){var t=sn(e,n);return 0<t.length?H.some(t):H.none()}function tr(e,n,r){return On(e,n).bind(function(t){return On(e,r).bind(function(n){return Qt(Zt,[t,n]).map(function(e){return{first:t,last:n,table:e}})})})}function rr(e,r,o,u,n){return t=n,B(e,function(e){return te(e,t)}).bind(function(e){return t=r,i=o,tt(n=e).bind(function(e){var r=$t(e),o=t,u=i;return Ut.findItem(r,n,ue).bind(function(e){var n=0<o?e.row+e.rowspan-1:e.row,t=0<u?e.column+e.colspan-1:e.column;return Ut.getAt(r,n+o,t+u).map(function(e){return e.element})})}).bind(function(e){return t=u,Rn(n=e,"table").bind(function(e){return On(e,t).bind(function(e){return er(e,n).bind(function(n){return n.boxes.map(function(e){return{boxes:e,start:n.start,finish:n.finish}})})})});var n,t});var n,t,i});var t}function or(o,e,n){return tr(o,e,n).bind(function(c){function e(e){return ue(o,e)}var n="thead,tfoot,tbody,table",t=Rn(c.first,n,e),r=Rn(c.last,n,e);return t.bind(function(i){return r.bind(function(e){return ue(i,e)?(t=c.table,r=c.first,o=c.last,u=$t(t),yt(n=u,r,o).bind(function(e){return function(e,n){for(var t=!0,r=P(wt,n),o=n.startRow;o<=n.finishRow;o++)for(var u=n.startCol;u<=n.finishCol;u++)t=t&&Ut.getAt(e,o,u).exists(r);return t?H.some(n):H.none()}(n,e)})):H.none();var n,t,r,o,u})})})}function ur(e,n,t,r){return e.fold(n,t,r)}function ir(e,n){return Fe.fromDom(e.dom.cloneNode(n))}function cr(e){return ir(e,!1)}function lr(e){return ir(e,!0)}function ar(e,n){var t=Fe.fromTag(n);return Bn(t,Nn(e)),t}function fr(r,o){function e(e){var n=o(e);if(n<=0||null===n){var t=qn(e,r);return parseFloat(t)||0}return n}function u(o,e){return I(e,function(e,n){var t=qn(o,n),r=void 0===t?0:parseInt(t,10);return isNaN(r)?e:e+r},0)}return{set:function(e,n){if(!s(n)&&!n.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+n);var t=e.dom;jn(t)&&(t.style[r]=n+"px")},get:e,getOuter:e,aggregate:u,max:function(e,n,t){var r=u(e,t);return r<n?n-r:0}}}function sr(e){return qr.get(e)}function dr(e){return qr.getOuter(e)}function mr(t,r){void 0===r&&(r=T);var e=t.grid,n=D(e.columns,h),o=D(e.rows,h);return x(n,function(n){return Ur(function(){return N(o,function(e){return Ut.getAt(t,e,n).filter(function(e){return e.column===n}).toArray()})},function(e){return 1===e.colspan&&r(e.element)},function(){return Ut.getAt(t,0,n)})})}function gr(t){var e=t.grid,n=D(e.rows,h),r=D(e.columns,h);return x(n,function(n){return Ur(function(){return N(r,function(e){return Ut.getAt(t,n,e).filter(function(e){return e.row===n}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.rowspan},function(){return Ut.getAt(t,n,0)})})}function pr(n,t){return function(e){return"rtl"===$r(e)?t:n}}function br(e){return Kr.get(e)}function hr(e){return Kr.getOuter(e)}function vr(e,n){return void 0!==e?e:void 0!==n?n:0}function wr(e){var n=e.dom.ownerDocument,t=n.body,r=n.defaultView,o=n.documentElement;if(t===e.dom)return Xr(t.offsetLeft,t.offsetTop);var u=vr(null==r?void 0:r.pageYOffset,o.scrollTop),i=vr(null==r?void 0:r.pageXOffset,o.scrollLeft),c=vr(o.clientTop,t.clientTop),l=vr(o.clientLeft,t.clientLeft);return Yr(e).translate(i-l,u-c)}function yr(e,n){return{row:e,y:n}}function Cr(e,n){return{col:e,x:n}}function Sr(e){return wr(e).left+dr(e)}function Tr(e){return wr(e).left}function xr(e,n){return Cr(e,Tr(n))}function Rr(e,n){return Cr(e,Sr(n))}function Dr(e){return wr(e).top}function Or(e,n){return yr(e,Dr(n))}function Ar(e,n){return yr(e,Dr(n)+hr(n))}function kr(t,n,r){if(0===r.length)return[];var e=x(r.slice(1),function(e,n){return e.map(function(e){return t(n,e)})}),o=r[r.length-1].map(function(e){return n(r.length-1,e)});return e.concat([o])}function Ir(i){if(!a(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var c=[],t={};return O(i,function(e,r){var n=Ve(e);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],u=e[o];if(void 0!==t[o])throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!a(u))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(n!==u.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+u.length+" ("+u+"), got "+n);return{fold:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(e.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+e.length);return e[r].apply(null,t)},match:function(e){var n=Ve(e);if(c.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+n.join(","));if(!M(c,function(e){return y(n,e)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+c.join(", "));return e[o].apply(null,t)},log:function(e){console.log(e,{constructors:c,constructor:o,params:t})}}}}),t}var Br,Mr,Er,Pr=function(n,e,t){return e.bind(function(e){return t.filter(P(n.eq,e))})},Nr=function(e,n,t){return 0<t.length?(r=e,o=n,u=t[0],k(t.slice(1),function(e,n){var t=o(r,n);return Pr(r,e,t)},o(r,u))):H.none();var r,o,u},zr=function(n,e,t,r){function o(n){return m(n,r).fold(function(){return n},function(e){return n.slice(0,e+1)})}void 0===r&&(r=w);var u=[e].concat(n.up().all(e)),i=[t].concat(n.up().all(t)),c=o(u),l=o(i),a=B(c,function(e){return R(l,P(n.eq,e))});return{firstpath:c,secondpath:l,shared:a}},Lr=Jt(),_r=nr,Wr=Ir([{none:[]},{multiple:["elements"]},{single:["element"]}]),jr=Wr.none,Fr=Wr.multiple,Hr=Wr.single,Vr=tinymce.util.Tools.resolve("tinymce.PluginManager"),qr=fr("width",function(e){return e.dom.offsetWidth}),Ur=function(e,n,t){var r=e();return B(r,n).orThunk(function(){return H.from(r[0]).orThunk(t)}).map(function(e){return e.element})},$r=function(e){return"rtl"===qn(e,"direction")?"rtl":"ltr"},Kr=fr("height",function(e){var n=e.dom;return yn(e)?n.getBoundingClientRect().height:n.offsetHeight}),Gr=function(t,r){return{left:t,top:r,translate:function(e,n){return Gr(t+e,r+n)}}},Xr=Gr,Yr=function(e){var n,t=e.dom,r=t.ownerDocument.body;return r===t?Xr(r.offsetLeft,r.offsetTop):yn(e)?(n=t.getBoundingClientRect(),Xr(n.left,n.top)):Xr(0,0)},Jr={delta:h,positions:function(e){return kr(Or,Ar,e)},edge:Dr},Qr=pr({delta:h,edge:Tr,positions:function(e){return kr(xr,Rr,e)}},{delta:function(e){return-e},edge:Sr,positions:function(e){return kr(Rr,xr,e)}}),Zr={delta:function(e,n){return Qr(n).delta(e,n)},positions:function(e,n){return Qr(n).positions(e,n)},edge:function(e){return Qr(e).edge(e)}},eo={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},no=(Er=["Infinity",(Br="[0-9]+")+"\\."+to(Br)+to(Mr="[eE][+-]?[0-9]+"),"\\."+Br+to(Mr),Br+to(Mr)].join("|"),new RegExp("^([+-]?(?:"+Er+"))(.*)$"));function to(e){return"(?:"+e+")?"}function ro(){var e=je().browser;return e.isIE()||e.isEdge()}function oo(e,n,t){return r=qn(e,n),o=t,u=parseFloat(r),isNaN(u)?o:u;var r,o,u}function uo(e){return ro()?(t=(n=e).dom.getBoundingClientRect().width,"border-box"===qn(n,"box-sizing")?t:t-oo(n,"padding-left",0)-oo(n,"padding-right",0)-(oo(n,"border-left-width",0)+oo(n,"border-right-width",0))):oo(e,"width",sr(e));var n,t}function io(e,n){Hn(e,"width",n+"px")}function co(e,n){Hn(e,"width",n+"%")}function lo(e,n){Hn(e,"height",n+"px")}function ao(e){var r,n,t,o,u,i,c,l,a,f,s,d=Un(r=e,"height").getOrThunk(function(){return e=r,(ro()?(t=(n=e).dom.getBoundingClientRect().height,"border-box"===qn(n,"box-sizing")?t:t-oo(n,"padding-top",0)-oo(n,"padding-bottom",0)-(oo(n,"border-top-width",0)+oo(n,"border-bottom-width",0))):oo(e,"height",br(e)))+"px";var e,n,t});return d?(n=d,t=e,o=br,u=lo,s=parseInt(n,10),Q(n,"%")&&"table"!==Ge(t)?(c=s,l=o,a=u,f=tt(i=t).map(function(e){var n=l(e);return Math.floor(c/100*n)}).getOr(c),a(i,f),f):s):br(e)}function fo(e){return Un(e,"width").fold(function(){return H.from(Mn(e,"width"))},function(e){return H.some(e)})}function so(e,n){return e/n.pixelWidth()*100}function mo(o,u){return fo(o).fold(function(){return so(sr(o),u)},function(e){return n=o,t=u,null!==(r=Ml.exec(e))?parseFloat(r[1]):so(uo(n),t);var n,t,r})}function go(n,t){return fo(n).fold(function(){return uo(n)},function(e){return function(e,n,t){var r=El.exec(n);if(null!==r)return parseInt(r[1],10);var o=Ml.exec(n);return null===o?uo(e):parseFloat(o[1])/100*t.pixelWidth()}(n,e,t)})}function po(e){return ao(n=e)/Gn(n,"rowspan");var n}function bo(e,n,t){Hn(e,"width",n+t)}function ho(e){return n=e,t=sr,r=H.from(n.dom.offsetParent).map(Fe.fromDom).getOr(Cn(Ze(n))),t(n)/t(r)*100+"%";var n,t,r}function vo(e,n,t){return Un(e,n).getOrThunk(function(){return t(e)+"px"})}function wo(e,n){return vo(e,"width",function(e){return zl(e)?sr(e):go(e,n)})}function yo(e){return vo(e,"height",po)}function Co(e,n){return Un(e,n).isSome()}function So(e,n,t,r,o,u){return e.filter(r).fold(function(){return u(function(t,r){if(r<0||r>=t.length-1)return H.none();var e=t[r].fold(function(){var e,n;return j((e=t.slice(0,r),(n=V.call(e,0)).reverse(),n),function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return H.some({value:e,delta:0})}),n=t[r+1].fold(function(){return j(t.slice(r+1),function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return H.some({value:e,delta:1})});return e.bind(function(t){return n.map(function(e){var n=e.delta+t.delta;return Math.abs(e.value-t.value)/n})})}(t,n))},function(e){return o(e)})}function To(e,n,o,u,i){var c=mr(e,function(e){return Co(e,"width")}),t=Ut.hasColumns(e)?x(Ut.justColumns(e),function(e){return H.from(e.element)}):c,l=[H.some(Zr.edge(n))].concat(x(Zr.positions(c,n),function(e){return e.map(function(e){return e.x})})),a=p(Xn);return x(t,function(e,r){return So(e,r,l,a,function(e){return!zl(t=e)||Co(t,"width")?o(e,i):So(null!=(n=c[r])?h(n):H.none(),r,l,a,function(e){return u(H.some(sr(e)))},u);var n,t},u)})}function xo(e){return e.map(function(e){return e+"px"}).getOr("")}function Ro(e,n,t){return To(e,n,go,function(e){return e.getOrThunk(t.minCellWidth)},t)}function Do(e,n,t,r,o){var u=gr(e),i=[H.some(t.edge(n))].concat(x(t.positions(u,n),function(e){return e.map(function(e){return e.y})}));return x(u,function(e,n){return So(e,n,i,p(Yn),r,o)})}function Oo(e){var n=e;return{get:function(){return n},set:function(e){n=e}}}function Ao(e,r){var o=Oo(parseFloat(e)),u=Oo(sr(r));return{width:o.get,pixelWidth:u.get,getWidths:function(e,n){return To(e,r,mo,function(e){return e.fold(function(){return t.minCellWidth()},function(e){return e/t.pixelWidth()*100})},t=n);var t},getCellDelta:function(e){return e/u.get()*100},singleColumnWidth:function(e,n){return[100-e]},minCellWidth:function(){return Wt()/u.get()*100},setElementWidth:co,adjustTableWidth:function(e){var n=o.get(),t=n+e/100*n;co(r,t),o.set(t),u.set(sr(r))},isRelative:!0,label:"percent"}}function ko(e,t){var r=Oo(e),o=r.get;return{width:o,pixelWidth:o,getWidths:function(e,n){return Ro(e,t,n)},getCellDelta:h,singleColumnWidth:function(e,n){return[Math.max(Wt(),e+n)-e]},minCellWidth:Wt,setElementWidth:io,adjustTableWidth:function(e){var n=o()+e;io(t,n),r.set(n)},isRelative:!1,label:"pixel"}}function Io(e,n){function t(e){return te(e.element,n)}var u,r,i,c,l,a,f,s,o,d,m,g,p=lr(e),b=it(p),h=Ll(e),v=Ut.generate(b),w=(u=t,r=v.grid.columns,i=v.grid.rows,c=r,a=l=0,f=[],s=[],ce(v.access,function(e){var n,t,r,o;f.push(e),u(e)&&(s.push(e),t=(n=e.row)+e.rowspan-1,o=(r=e.column)+e.colspan-1,n<i?i=n:l<t&&(l=t),r<c?c=r:a<o&&(a=o))}),{minRow:i,minCol:c,maxRow:l,maxCol:a,allCells:f,selectedCells:s}),y="th:not("+n+"),td:not("+n+")";return O(Ft(p,"th,td",function(e){return te(e,y)}),Gt),function(e,n,t,r){for(var o,u,i,c=n.grid.columns,l=n.grid.rows,a=0;a<l;a++)for(var f=!1,s=0;s<c;s++)a<t.minRow||a>t.maxRow||s<t.minCol||s>t.maxCol||(Ut.getAt(n,a,s).filter(r).isNone()?(o=f,0,u=e[a].element,i=Fe.fromTag("td"),Kt(i,Fe.fromTag("br")),(o?Kt:Dt)(u,i)):f=!0)}(b,v,w,t),o=p,d=w,m=v,g=function(e,n,t,r){if(0===r.minCol&&n.grid.columns===r.maxCol+1)return 0;var o=Ro(n,e,t),u=I(o,function(e,n){return e+n},0),i=I(o.slice(r.minCol,r.maxCol+1),function(e,n){return e+n},0)/u*t.pixelWidth()-t.pixelWidth();return t.getCellDelta(i)}(e,Ut.fromTable(e),h,w),ce(m.columns,function(e){(e.column<d.minCol||e.column>d.maxCol)&&Gt(e.element)}),O(A(Qn(o,"tr"),function(e){return 0===e.dom.childElementCount}),Gt),d.minCol!==d.maxCol&&d.minRow!==d.maxRow||O(Qn(o,"th,td"),function(e){Pn(e,"rowspan"),Pn(e,"colspan")}),Pn(o,qt),Pn(o,"data-snooker-col-series"),Ll(o).adjustTableWidth(g),p}function Bo(e){return"img"===Ge(e)?1:Et(e).fold(function(){return un(e).length},function(e){return e.length})}function Mo(e){return Et(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()||y(jl,Ge(e))}function Eo(e){return o=Mo,(u=function(e){for(var n=0;n<e.childNodes.length;n++){var t=Fe.fromDom(e.childNodes[n]);if(o(t))return H.some(t);var r=u(e.childNodes[n]);if(r.isSome())return r}return H.none()})(e.dom);var o,u}function Po(e){return Fl(e,Mo)}function No(n){return function(){var e=Fe.fromTag("td",n.dom);return Kt(e,Fe.fromTag("br",n.dom)),e}}function zo(e){return function(){return Fe.fromTag("colgroup",e.dom)}}function Lo(e){return function(){return Fe.fromTag("tr",e.dom)}}function _o(e,n,t){var r,o,u=(kt(o=ar(r=e,n),un(lr(r))),o);return ce(t,function(e,n){null===e?Pn(u,n):In(u,n,e)}),u}function Wo(e){return e}function jo(a,f,s){function d(e,n){var t=e.element.dom,r=n.dom;jn(t)&&jn(r)&&(r.style.cssText=t.style.cssText),$n(n,"height"),1!==e.colspan&&$n(n,"width")}return{col:function(e){var n=Fe.fromTag(Ge(e.element),f.dom);return d(e,n),a(e.element,n),n},colgroup:zo(f),row:Lo(f),cell:function(e){var n,t,r,o,u,i=Fe.fromTag(Ge(e.element),f.dom),c=s.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),l=0<c.length?(n=e.element,t=i,r=c,Eo(n).map(function(e){return k(an(e,r.join(","),function(e){return ue(e,n)}),function(e,n){var t=cr(n);return Pn(t,"contenteditable"),Kt(e,t),t},t)}).getOr(t)):i;return Kt(l,Fe.fromTag("br")),d(e,i),o=e.element,u=i,ce(Hl,function(n,t){return En(o,t).filter(function(e){return y(n,e)}).each(function(e){return In(u,t,e)})}),a(e.element,i),i},replace:_o,gap:No(f)}}function Fo(e){return{col:function(){return Fe.fromTag("col",n.dom)},colgroup:zo(n=e),row:Lo(e),cell:No(e),replace:Wo,gap:No(e)};var n}function Ho(e){return x(e,Fe.fromDom)}function Vo(e){return Fe.fromDom(e.getBody())}function qo(e){return e.getBoundingClientRect().width}function Uo(e){return e.getBoundingClientRect().height}function $o(n){return function(e){return ue(e,Vo(n))}}function Ko(e){return/^\d+(\.\d+)?$/.test(e)?e+"px":e}function Go(e){function n(e){return Pn(e,"data-mce-style")}Pn(e,"data-mce-style"),O(et(e),n),O(nt(e),n)}function Xo(e,n){var t=e.dom.getStyle(n,"width")||e.dom.getAttrib(n,"width");return H.from(t).filter(Z)}function Yo(e){return/^(\d+(\.\d+)?)%$/.test(e)}function Jo(e){return Fe.fromDom(e.selection.getStart())}function Qo(e){return ur(e.get(),C([]),h,L)}function Zo(e,n,t){return{element:t,mergable:(u=n,i=Vl,ur(e.get(),H.none,function(n){return n.length<=1?H.none():or(u,i.firstSelectedSelector,i.lastSelectedSelector).map(function(e){return{bounds:e,cells:n}})},H.none)),unmergable:0<(o=Qo(e)).length&&M(o,function(e){return r(e,"rowspan")||r(e,"colspan")})?H.some(o):H.none(),selection:Qo(e)};function r(e,n){return En(e,n).exists(function(e){return 1<parseInt(e,10)})}var o,u,i}function eu(o){return function(e,n){var t,r=Ge(e);return An("col"===r||"colgroup"===r?tt(t=e).bind(function(e){return _r(e,Vl.firstSelectedSelector)}).fold(C(t),function(e){return e[0]}):e,o,n)}}function nu(a,e,f){a.on("BeforeGetContent",function(t){!0===t.selection&&ur(e.get(),E,function(e){t.preventDefault(),tt(e[0]).map(function(e){var n=Io(e,"[data-mce-selected]");return Go(n),[n]}).each(function(e){var n;t.content="text"===t.format?x(e,function(e){return e.dom.innerText}).join(""):(n=a,x(e,function(e){return n.selection.serializer.serialize(e.dom,{})}).join(""))})},E)}),a.on("BeforeSetContent",function(l){!0===l.selection&&!0===l.paste&&W($l(e)).each(function(c){tt(c).each(function(e){var n,t,r,o,u=A((n=l.content,(t=document.createElement("div")).innerHTML=n,un(Fe.fromDom(t))),function(e){return"meta"!==Ge(e)}),i=Qe("table");1===u.length&&i(u[0])&&(l.preventDefault(),r=Fo(Fe.fromDom(a.getDoc())),o={element:c,clipboard:u[0],generators:r},f.pasteCells(e,o).each(function(){a.focus()}))})})})}function tu(e,n,t){for(var r=0,o=e;o<n;o++)r+=void 0!==t[o]?t[o]:0;return r}function ru(e,n,t){var r,o,u,i;O((r=e,o=n,Ut.hasColumns(r)?(i=o,x(Ut.justColumns(r),function(e,n){return{element:e.element,width:i[n],colspan:e.colspan}})):(u=o,x(Ut.justCells(r),function(e){var n=tu(e.column,e.column+e.colspan,u);return{element:e.element,width:n,colspan:e.colspan}}))),function(e){t.setElementWidth(e.element,e.width)})}function ou(e,n,t,r,o){var u,i,c,l,a,f,s,d,m,g,p=Ut.fromTable(e),b=o.getCellDelta(n),h=o.getWidths(p,o),v=t===p.grid.columns-1,w=r.clampTableDelta(h,t,b,o.minCellWidth(),v),y=(i=t,c=w,l=o,a=r,d=(u=h).slice(0),s=i,m=0===(f=u).length?Gl.none():1===f.length?Gl.only(0):0===s?Gl.left(0,1):s===f.length-1?Gl.right(s-1,s):0<s&&s<f.length-1?Gl.middle(s-1,s,s+1):Gl.none(),g=C(x(d,C(0))),m.fold(g,function(e){return l.singleColumnWidth(d[e],c)},function(e,n){return a.calcLeftEdgeDeltas(d,e,n,c,l.minCellWidth(),l.isRelative)},function(e,n,t){return a.calcMiddleDeltas(d,e,n,t,c,l.minCellWidth(),l.isRelative)},function(e,n){return a.calcRightEdgeDeltas(d,e,n,c,l.minCellWidth(),l.isRelative)}));ru(p,x(y,function(e,n){return e+h[n]}),o),r.resizeTable(o.adjustTableWidth,w,v)}function uu(e){return x(e,C(0))}function iu(e,n,t,r,o){return o(e.slice(0,n)).concat(r).concat(o(e.slice(t)))}function cu(i){return function(e,n,t,r){if(i(t)){var o=Math.max(r,e[n]-Math.abs(t)),u=Math.abs(o-e[n]);return 0<=t?u:-u}return t}}function lu(){function f(e,t,n,r){var o=(100+n)/100,u=Math.max(r,(e[t]+n)/o);return x(e,function(e,n){return(n===t?u:e/o)-e})}function c(e,n,t,r,o,u){return u?f(e,n,r,o):(l=t,a=Xl(i=e,c=n,r,o),iu(i,c,l+1,[a,0],uu));var i,c,l,a}return{resizeTable:function(e,n){return e(n)},clampTableDelta:Xl,calcLeftEdgeDeltas:c,calcMiddleDeltas:function(e,n,t,r,o,u,i){return c(e,t,r,o,u,i)},calcRightEdgeDeltas:function(e,n,t,r,o,u){if(u)return f(e,t,r,o);var i=Xl(e,t,r,o);return uu(e.slice(0,t)).concat([i])},calcRedestributedWidths:function(e,n,t,r){if(r){var o=(n+t)/n,u=x(e,function(e){return e/o});return{delta:100*o-100,newSizes:u}}return{delta:t,newSizes:e}}}}function au(){function i(e,n,t,r,o){var u=Yl(e,0<=r?t:n,r,o);return iu(e,n,t+1,[u,-u],uu)}return{resizeTable:function(e,n,t){t&&e(n)},clampTableDelta:function(e,n,t,r,o){if(o){if(0<=t)return t;var u=I(e,function(e,n){return e+n-r},0);return Math.max(-u,t)}return Xl(e,n,t,r)},calcLeftEdgeDeltas:i,calcMiddleDeltas:function(e,n,t,r,o,u){return i(e,t,r,o,u)},calcRightEdgeDeltas:function(e,n,t,r,o,u){return u?uu(e):x(e,C(r/e.length))},calcRedestributedWidths:function(e,n,t,r){return{delta:0,newSizes:e}}}}function fu(e,n,t){var r=t.substring(0,t.length-e.length),o=parseFloat(r);return r===o.toString()?n(o):Jl.invalid(t)}function su(e,n,t){var r,o,u,i,c=Ql.from(t),l=M(e,function(e){return"0px"===e})?(r=e.length,o=c.fold(function(){return C("")},function(e){return C(e/r+"px")},function(){return C(100/r+"%")}),D(r,o)):(u=e,i=n,c.fold(function(){return u},function(e){return t=(n=e)/i,x(u,function(e){return Ql.from(e).fold(function(){return e},function(e){return e*t+"px"},function(e){return e/100*n+"px"})});var n,t},function(e){return n=i,x(u,function(e){return Ql.from(e).fold(function(){return e},function(e){return e/n*100+"%"},function(e){return e+"%"})});var n}));return Zl(l)}function du(e,n){return 0===e.length?n:k(e,function(e,n){return Ql.from(n).fold(C(0),h,h)+e},0)}function mu(e){return ea(e).fold(C("px"),C("px"),C("%"))}function gu(l,e,n,a){var f=Ut.fromTable(l),i=f.all,s=Ut.justCells(f),d=Ut.justColumns(f);e.each(function(e){var t,r,o,u,n=mu(e),i=sr(l),c=su(To(f,l,wo,xo,a),i,e);Ut.hasColumns(f)?(o=c,u=n,O(d,function(e,n){var t=du([o[n]],Wt());Hn(e.element,"width",t+u)})):(t=c,r=n,O(s,function(e){var n=du(t.slice(e.column,e.colspan+e.column),Wt());Hn(e.element,"width",n+r)})),Hn(l,"width",e)}),n.each(function(e){var n=mu(e),t=br(l),r=su(Do(f,l,Jr,yo,xo),t,e),o=i,u=n;O(s,function(e){var n=du(r.slice(e.row,e.rowspan+e.row),jt());Hn(e.element,"height",n+u)}),O(o,function(e,n){Hn(e.element,"height",r[n])}),Hn(l,"height",e)})}function pu(e){return Ut.fromTable(e).grid}function bu(n){var o=[];return{bind:function(e){if(void 0===e)throw new Error("Event bind error: undefined handler");o.push(e)},unbind:function(n){o=A(o,function(e){return e!==n})},trigger:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r={};O(n,function(e,n){r[e]=t[n]}),O(o,function(e){e(r)})}}}function hu(e){return{registry:le(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:le(e,function(e){return e.trigger})}}function vu(e){return e.slice(0).sort()}function wu(n,e){var t=A(e,function(e){return!y(n,e)});0<t.length&&function(){throw new Error("Unsupported keys for object: "+vu(t).join(", "))}()}function yu(e){return function(r,o,u){if(0===o.length)throw new Error("You must specify at least one required field.");var t;return function(n,e){if(!a(e))throw new Error("The "+n+" fields must be an array. Was: "+e+".");O(e,function(e){if(!S(e))throw new Error("The value "+e+" in the "+n+" fields was not a string.")})}("required",o),B(t=vu(o),function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")}),function(n){var t=Ve(n);M(o,function(e){return y(t,e)})||function(e,n){throw new Error("All required keys ("+vu(e).join(", ")+") were not specified. Specified keys were: "+vu(n).join(", ")+".")}(o,t),r(o,t);var e=A(o,function(e){return!u.validate(n[e],e)});return 0<e.length&&function(e,n){throw new Error("All values need to be of type: "+n+". Keys ("+vu(e).join(", ")+") were not.")}(e,u.label),n}}(wu,e,{validate:c,label:"function"})}function Cu(){var u,i,e={onEvent:E,reset:E,events:hu({move:bu(["info"])}).registry},n=(u=H.none(),{onEvent:function(e,o){o.extract(e).each(function(e){var n=o,t=e,r=u.map(function(e){return n.compare(e,t)});u=H.some(t),r.each(function(e){i.trigger.move(e)})})},reset:function(){u=H.none()},events:(i=hu({move:bu(["info"])})).registry}),t=e;return{on:function(){t.reset(),t=n},off:function(){t.reset(),t=e},isOn:function(){return t===n},onEvent:function(e,n){t.onEvent(e,n)},events:n.events}}function Su(e){function n(){return e.stopPropagation()}function t(){return e.preventDefault()}var r,o,u=Fe.fromDom(function(e){if(hn()&&l(e.target)){var n=Fe.fromDom(e.target);if(dn(n)&&wn(n)&&e.composed&&e.composedPath){var t=e.composedPath();if(t)return W(t)}}return H.from(e.target)}(e).getOr(e.target)),i=(r=t,o=n,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return r(o.apply(null,e))});return{target:u,x:e.clientX,y:e.clientY,stop:n,prevent:t,kill:i,raw:e}}function Tu(e,n,t){return o=n,u=!1,i=ia,c=t,l=function(e){i(e)&&c(Su(e))},(r=e).dom.addEventListener(o,l,u),{unbind:P(ua,r,o,l,u)};var r,o,u,i,c,l}function xu(e){return void 0!==e.dom.classList}function Ru(e,n){return o=n,In(e,t="class",(void 0===(r=Mn(e,t))||""===r?[]:r.split(" ")).concat([o]).join(" ")),1;var t,r,o}function Du(e,n){xu(e)?e.dom.classList.add(n):Ru(e,n)}function Ou(e,n){return xu(e)&&e.dom.classList.contains(n)}function Au(e){var n=e.replace(/\./g,"-");return{resolve:function(e){return n+"-"+e}}}function ku(e){return An(e,"[contenteditable]")}function Iu(e,n){return void 0===n&&(n=!1),!je().browser.isIE()&&yn(e)?e.dom.isContentEditable:ku(e).fold(C(n),function(e){return"true"===fa(e)})}function Bu(e){O(sn(e.parent(),"."+da),Gt)}function Mu(t,e,r){var o=t.origin();O(e,function(e){e.each(function(e){var n=r(o,e);Du(n,da),Kt(t.parent(),n)})})}function Eu(e,n,t,r,o){var u,i,c,l,a,f=wr(t),s=n.isResizable,d=0<r.length?Jr.positions(r,t):[],m=0<d.length?(u=s,N(e.all,function(e,n){return u(e.element)?[n]:[]})):[],g=A(d,function(e,n){return R(m,function(e){return n===e})});i=n,c=g,l=f,a=dr(t),Mu(i,c,function(e,n){var t,r,o,u,i,c=(t=n.row,r=l.left-e.left,o=n.y-e.top,u=a,Vn(i=Fe.fromTag("div"),{position:"absolute",left:r+"px",top:o-3.5+"px",height:"7px",width:u+"px"}),Bn(i,{"data-row":t,role:"presentation"}),i);return Du(c,ma),c});var p,b,h,v,w,y,C,S=0<o.length?Zr.positions(o,t):[],T=0<S.length?(b=s,h=[],D((p=e).grid.columns,function(e){Ut.getColumnAt(p,e).map(function(e){return e.element}).forall(b)&&h.push(e)}),A(h,function(n){return M(Ut.filterItems(p,function(e){return e.column===n}),function(e){return b(e.element)})})):[],x=A(S,function(e,n){return R(T,function(e){return n===e})});v=n,w=x,y=f,C=hr(t),Mu(v,w,function(e,n){var t,r,o,u,i,c=(t=n.col,r=n.x-e.left,o=y.top-e.top,u=C,Vn(i=Fe.fromTag("div"),{position:"absolute",left:r-3.5+"px",top:o+"px",height:u+"px",width:"7px"}),Bn(i,{"data-column":t,role:"presentation"}),i);return Du(c,ga),c})}function Pu(e,n){var t;Bu(e),e.isResizable(n)&&Eu(t=Ut.fromTable(n),e,n,gr(t),mr(t))}function Nu(e,n){O(sn(e.parent(),"."+da),n)}function zu(e){Nu(e,function(e){Hn(e,"display","none")})}function Lu(e){Nu(e,function(e){Hn(e,"display","block")})}function _u(o){function e(e,n){return H.from(Mn(e,n))}var n,t,r,u,i,c,l=(u=hu({drag:bu(["xDelta","yDelta","target"])}),i=H.none(),(c={mutate:function(e,n){r.trigger.drag(e,n)},events:(r=hu({drag:bu(["xDelta","yDelta"])})).registry}).events.drag.bind(function(n){i.each(function(e){u.trigger.drag(n.xDelta,n.yDelta,e)})}),{assign:function(e){i=H.some(e)},get:function(){return i},mutate:c.mutate,events:u.registry}),a=(t=void 0!==(n={}).mode?n.mode:aa,function(n,t,e){function r(){d.stop(),l.isOn()&&(l.off(),c.trigger.stop())}var o,u,i=!1,c=hu({start:bu([]),stop:bu([])}),l=Cu(),a=(o=r,u=null,{cancel:f,throttle:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];f(),u=setTimeout(function(){u=null,o.apply(null,e)},200)}});function f(){v(u)||(clearTimeout(u),u=null)}function s(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];i&&t.apply(null,e)}}l.events.move.bind(function(e){t.mutate(n,e.info)});var d=t.sink(oa({forceDrop:r,drop:s(r),move:s(function(e){a.cancel(),l.onEvent(e,t)}),delayDrop:s(a.throttle)}),e);return{element:d.element,go:function(e){d.start(e),l.on(),c.trigger.start()},on:function(){i=!0},off:function(){i=!1},destroy:function(){d.destroy()},events:c.registry}}(l,t,n)),f=H.none();function s(e,n){return Jn(e,n)-Kn(e,"data-initial-"+n,0)}function d(e,n){b.trigger.startAdjust(),l.assign(e),In(e,"data-initial-"+n,Jn(e,n)),Du(e,pa),Hn(e,"opacity","0.2"),a.go(o.parent())}function m(e){return ue(e,o.view())}l.events.drag.bind(function(t){e(t.target,"data-row").each(function(e){var n=Jn(t.target,"top");Hn(t.target,"top",n+t.yDelta+"px")}),e(t.target,"data-column").each(function(e){var n=Jn(t.target,"left");Hn(t.target,"left",n+t.xDelta+"px")})}),a.events.stop.bind(function(){l.get().each(function(r){f.each(function(t){e(r,"data-row").each(function(e){var n=s(r,"top");Pn(r,"data-initial-top"),b.trigger.adjustHeight(t,n,parseInt(e,10))}),e(r,"data-column").each(function(e){var n=s(r,"left");Pn(r,"data-initial-left"),b.trigger.adjustWidth(t,n,parseInt(e,10))}),Pu(o,t)})})});var g=Tu(o.parent(),"mousedown",function(e){Ou(e.target,ma)&&d(e.target,"top"),Ou(e.target,ga)&&d(e.target,"left")}),p=Tu(o.view(),"mouseover",function(e){An(e.target,"table",m).filter(Iu).fold(function(){yn(e.target)&&Bu(o)},function(e){f=H.some(e),Pu(o,e)})}),b=hu({adjustHeight:bu(["table","delta","row"]),adjustWidth:bu(["table","delta","column"]),startAdjust:bu([])});return{destroy:function(){g.unbind(),p.unbind(),a.destroy(),Bu(o)},refresh:function(e){Pu(o,e)},on:a.on,off:a.off,hideBars:P(zu,o),showBars:P(Lu,o),events:b.registry}}function Wu(e,n){return e.fire("newrow",{node:n})}function ju(e,n){return e.fire("newcell",{node:n})}function Fu(e,n,t){e.fire("TableModified",$($({},t),{table:n}))}function Hu(e){return e.getParam("table_sizing_mode","auto")}function Vu(e){return e.getParam("table_responsive_width")}function qu(e){return e.getParam("table_border_widths",ya,"array")}function Uu(e){return e.getParam("table_border_styles",Ca,"array")}function $u(e){return e.getParam("table_default_attributes",Sa,"object")}function Ku(e){return e.getParam("table_default_styles",function(e){if(xa(e)){var n=e.getBody().offsetWidth;return $($({},wa),{width:n+"px"})}return Ra(e)?ae(wa,function(e,n){return"width"!==n}):wa}(e),"object")}function Gu(e){return e.getParam("table_cell_advtab",!0,"boolean")}function Xu(e){return e.getParam("table_row_advtab",!0,"boolean")}function Yu(e){return e.getParam("table_advtab",!0,"boolean")}function Ju(e){return e.getParam("table_style_by_css",!1,"boolean")}function Qu(e){return e.getParam("table_cell_class_list",[],"array")}function Zu(e){return e.getParam("table_class_list",[],"array")}function ei(e){return"relative"===Hu(e)||!0===Vu(e)}function ni(e){var n="section",t=e.getParam("table_header_type",n,"string");return y(["section","cells","sectionCells","auto"],t)?t:n}function ti(e){var n=e.getParam("table_column_resizing",Ta,"string");return B(["preservetable","resizetable"],function(e){return e===n}).getOr(Ta)}function ri(e){return"preservetable"===ti(e)}function oi(e){return"resizetable"===ti(e)}function ui(e){var n=e.getParam("table_clone_elements");return S(n)?H.some(n.split(/[ ,]/)):Array.isArray(n)?H.some(n):H.none()}function ii(e){return e.getParam("table_background_color_map",[],"array")}function ci(e){return e.getParam("table_border_color_map",[],"array")}function li(e,n){if(ei(e)){var t=Xo(e,n.dom).filter(Yo).getOrThunk(function(){return na(n)});return Wl(t,n)}return xa(e)?_l(sr(n),n):Ll(n)}function ai(e){Pn(e,"width")}function fi(e,n){var t,r=li(e,n),o=ho(t=n);gu(t,H.some(o),H.none(),r),ai(t)}function si(e,n){var t,r,o,u=li(e,n);r=u,o=sr(t=n)+"px",gu(t,H.some(o),H.none(),r),ai(t)}function di(e){return"false"!==Mn(e,"data-mce-resize")}function mi(p){function d(e){return"TABLE"===e.nodeName}function b(e){return li(p,e)}function h(){return(ri(p)?au:lu)()}var m,g,v=H.none(),w=H.none(),y=H.none();return p.on("init",function(){var e,n,t,r,o,u,i,c,l,a,d,f,s,m,g=(n=di,(e=p).inline?(u=Vo(e),Vn(c=Fe.fromTag("div"),{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Kt(Cn(Fe.fromDom(document)),c),c,i=n,{parent:C(c),view:C(u),origin:C(Xr(0,0)),isResizable:i}):xl(Fe.fromDom(e.getDoc()),n));y=H.some(g),o=p.getParam("object_resizing",!0),(S(o)?"table"===o:o)&&p.getParam("table_resize_bars",!0,"boolean")&&(t=h(),l=t,a=b,d=Jr,f=Zr,s=_u(g),m=hu({beforeResize:bu(["table","type"]),afterResize:bu(["table","type"]),startDrag:bu([])}),s.events.adjustHeight.bind(function(e){var n=e.table;m.trigger.beforeResize(n,"row");var t,r,o,u,i,c,l,a,f,s=d.delta(e.delta,n);t=n,r=s,o=e.row,u=d,l=Ut.fromTable(t),a=x(Do(l,t,u,po,function(e){return e.getOrThunk(jt)}),function(e,n){return o===n?Math.max(r+e,jt()):e}),i=a,f=x(Ut.justCells(l),function(e){var n=tu(e.row,e.row+e.rowspan,i);return{element:e.element,height:n,rowspan:e.rowspan}}),O((c=a,x(l.all,function(e,n){return{element:e.element,height:c[n]}})),function(e){lo(e.element,e.height)}),O(f,function(e){lo(e.element,e.height)}),lo(t,k(a,function(e,n){return e+n},0)),m.trigger.afterResize(n,"row")}),s.events.startAdjust.bind(function(e){m.trigger.startDrag()}),s.events.adjustWidth.bind(function(e){var n=e.table;m.trigger.beforeResize(n,"col");var t=f.delta(e.delta,n),r=a(n);ou(n,t,e.column,l,r),m.trigger.afterResize(n,"col")}),(r={on:s.on,off:s.off,hideBars:s.hideBars,showBars:s.showBars,destroy:s.destroy,events:m.registry}).on(),r.events.startDrag.bind(function(e){v=H.some(p.selection.getRng())}),r.events.beforeResize.bind(function(e){var n,t=e.table.dom,r=p,o=qo(n=t),u=Uo(t),i=Oa+e.type;r.fire("ObjectResizeStart",{target:n,width:o,height:u,origin:i})}),r.events.afterResize.bind(function(e){var n,t,r,o,u,i=e.table,c=i.dom;Go(i),v.each(function(e){p.selection.setRng(e),p.focus()}),n=p,r=qo(t=c),o=Uo(c),u=Oa+e.type,n.fire("ObjectResized",{target:t,width:r,height:o,origin:u}),p.undoManager.add()}),w=H.some(r))}),p.on("ObjectResizeStart",function(e){var n,t=e.target;d(t)&&(n=Fe.fromDom(t),O(p.dom.select(".mce-clonedresizable"),function(e){p.dom.addClass(e,"mce-"+ti(p)+"-columns")}),!Dl(n)&&xa(p)?si(p,n):!Rl(n)&&ei(p)&&fi(p,n),Ol(n)&&De(e.origin,Oa)&&fi(p,n),m=e.width,g=Ra(p)?"":Xo(p,t).getOr(""))}),p.on("ObjectResized",function(e){var n,t,r,o,u,i,c,l,a,f,s=e.target;d(s)&&(n=Fe.fromDom(s),t=e.origin,De(t,"corner-")&&(r=n,o=e.width,f=Q(t,"e"),""===g&&fi(p,r),o!==m&&""!==g?(Hn(r,"width",g),u=h(),i=b(r),c=ri(p)||f?pu(r).columns-1:0,ou(r,o-m,c,u,i)):Yo(g)&&Hn(r,"width",o*parseFloat(g.replace("%",""))/m+"%"),/^(\d+(\.\d+)?)px$/.test(g)&&(a=Ut.fromTable(l=r),Ut.hasColumns(a)||O(et(l),function(e){Hn(e,"width",qn(e,"width")),Pn(e,"width")}))),Go(n),Fu(p,n.dom,ba))}),p.on("SwitchMode",function(){w.each(function(e){p.mode.isReadOnly()?e.hideBars():e.showBars()})}),{lazyResize:function(){return w},lazyWire:function(){return y.getOr(xl(Fe.fromDom(p.getBody()),di))},destroy:function(){w.each(function(e){e.destroy()}),y.each(function(e){var n=e;p.inline&&Gt(n.parent())})}}}function gi(e,n){return{element:e,offset:n}}function pi(e,n){return(e.property().isText(n)?e.property().getText(n):e.property().children(n)).length}function bi(t,r){1===Gn(t,"colspan")&&fo(t).bind(function(e){return o=["fixed","relative","empty"],H.from(no.exec(e)).bind(function(e){var n=Number(e[1]),t=e[2],r=t;return R(o,function(e){return R(eo[e],function(e){return r===e})})?H.some({value:n,unit:t}):H.none()});var o}).each(function(e){var n=e.value/2;bo(t,n,e.unit),bo(r,n,e.unit)})}function hi(e){var n="thead"===e.section,t=zn(Ea(e.cells),"th");return n||t?{type:"header",subType:n&&t?"sectionCells":n?"section":"cells"}:"tfoot"===e.section?{type:"footer"}:{type:"body"}}function vi(e,n,t){return he(t(e.element,n),!0,e.isLocked)}function wi(e,n){return e.section!==n?ve(e.element,e.cells,n,e.isNew):e}function yi(){return{transformRow:wi,transformCell:function(e,n,t){var r,o,u=t(e.element,n);return he("td"!==Ge(u)?(o=ar(r=u,"td"),xt(r,o),kt(o,un(r)),Gt(r),o):u,e.isNew,e.isLocked)}}}function Ci(){return{transformRow:wi,transformCell:vi}}function Si(){return{transformRow:function(e,n){return wi(e,"thead"===n?"tbody":n)},transformCell:vi}}function Ti(e,n,t,r){t===r?Pn(e,n):In(e,n,t)}function xi(e,n,t){var r=fn(e,n);_(r,r.length-1).fold(function(){return Dt(e,t)},function(e){return Rt(e,t)})}function Ri(u,e){function t(e,n){var t,r,o;kt((It(o=Dn(t=u,r=n).getOrThunk(function(){var e=Fe.fromTag(r,Ze(t).dom);return"thead"===r?xi(t,"caption,colgroup",e):"colgroup"===r?xi(t,"caption",e):Kt(t,e),e})),o),("colgroup"===n?function(e){return N(e,function(e){return x(e.cells,function(e){return Ti(e.element,"span",e.colspan,1),e.element})})}:function(e){return x(e,function(e){e.isNew&&i.push(e.element);var n=e.element;return It(n),O(e.cells,function(e){e.isNew&&c.push(e.element),Ti(e.element,"colspan",e.colspan,1),Ti(e.element,"rowspan",e.rowspan,1),Kt(n,e.element)}),n})})(e))}function n(e,n){0<e.length?t(e,n):Dn(u,n).each(Gt)}var i=[],c=[],r=[],o=[],l=[],a=[];return O(e,function(e){switch(e.section){case"thead":r.push(e);break;case"tbody":o.push(e);break;case"tfoot":l.push(e);break;case"colgroup":a.push(e)}}),n(a,"colgroup"),n(r,"thead"),n(o,"tbody"),n(l,"tfoot"),{newRows:i,newCells:c}}function Di(e,n){if(0===e.length)return 0;var t=e[0];return m(e,function(e){return!n(t.element,e.element)}).getOr(e.length)}function Oi(a,f){var s=x(a,function(e){return x(e.cells,w)});return x(a,function(e,l){var n=N(e.cells,function(e,n){if(!1!==s[l][n])return[];var t,r,o,u,i,c=(o=n,u=f,{colspan:Di((t=a)[r=l].cells.slice(o),u),rowspan:Di((i=o,x(t,function(e){return ft(e,i)}).slice(r)),u)});return function(e,n,t,r){for(var o=e;o<e+t;o++)for(var u=n;u<n+r;u++)s[o][u]=!0}(l,n,c.rowspan,c.colspan),[{element:e.element,rowspan:c.rowspan,colspan:c.colspan,isNew:e.isNew}]});return{element:e.element,cells:n,section:e.section,isNew:e.isNew}})}function Ai(e,n,t){var r=[];O(e.colgroups,function(e){var n=x(e.columns,function(e){return he(e.element,t,!1)});r.push(ve(e.element,n,"colgroup",t))});for(var o=0;o<e.grid.rows;o++){for(var u=[],i=0;i<e.grid.columns;i++){var c=Ut.getAt(e,o,i).map(function(e){return he(e.element,t,e.isLocked)}).getOrThunk(function(){return he(n.gap(),!0,!1)});u.push(c)}var l=e.all[o],a=ve(l.element,u,l.section,t);r.push(a)}return r}function ki(e){return Oi(e,ue)}function Ii(e,n){return j(e.all,function(e){return B(e.cells,function(e){return ue(n,e.element)})})}function Bi(n,e,t){var r=Ln(x(e.selection,function(e){return Zn(e).bind(function(e){return Ii(n,e)}).filter(t)}));return Wn(0<r.length,r)}function Mi(f,n,s,d,m){return function(o,u,e,i,c){var l=Ut.fromTable(u),a=H.from(null==c?void 0:c.section).getOrThunk(Al);return n(l,e).map(function(e){var n=Ai(l,i,!1),t=f(n,e,ue,m(i),a),r=bt(t.grid);return{info:e,grid:ki(t.grid),cursor:t.cursor,lockedColumns:r}}).bind(function(e){var n=Ri(u,e.grid),t=H.from(null==c?void 0:c.sizing).getOrThunk(function(){return Ll(u)}),r=H.from(null==c?void 0:c.resize).getOrThunk(au);return s(u,e.grid,e.info,{sizing:t,resize:r,section:a}),d(u),Pu(o,u),Pn(u,qt),0<e.lockedColumns.length&&In(u,qt,e.lockedColumns.join(",")),H.some({cursor:e.cursor,newRows:n.newRows,newCells:n.newCells})})}}function Ei(e,n){return Bi(e,n,T).map(function(e){return{cells:e,generators:n.generators,clipboard:n.clipboard}})}function Pi(e,n){return Bi(e,n,T)}function Ni(e,n){return Bi(e,n,function(e){return!e.isLocked})}function zi(n,e){return M(e,function(e){return Ii(n,e).exists(function(e){return!e.isLocked})})}function Li(n,e){return e.mergable.filter(function(e){return zi(n,e.cells)})}function _i(n,e){return e.unmergable.filter(function(e){return zi(n,e)})}function Wi(e,n,t,r){for(var o=mt(e).rows,u=!0,i=0;i<o.length;i++)for(var c=0;c<dt(o[0]);c++){var l=o[i],a=ft(l,c),f=t(a.element,n);!0===f&&!1===u?at(l,c,he(r(),!0,a.isLocked)):!0===f&&(u=!1)}return e}function ji(e,t,i,c){var n,r,l=mt(e).rows;return 0<t&&t<l.length&&(n=l[t-1].cells,r=i,O(I(n,function(e,n){return R(e,function(e){return r(e.element,n.element)})?e:e.concat([n])},[]),function(e){for(var o=H.none(),u=t;u<l.length;u++)for(var n=0;n<dt(l[0]);n++)!function(n){var t=l[u],r=ft(t,n);i(r.element,e.element)&&(o=o.isNone()?H.some(c()):o).each(function(e){at(t,n,he(e,!0,r.isLocked))})}(n)})),e}function Fi(e,n){return{rowDelta:0,colDelta:dt(e[0])-dt(n[0])}}function Hi(e,n){return{rowDelta:e.length-n.length,colDelta:0}}function Vi(e,n,t,r){var o="colgroup"===n.section?t.col:t.cell;return D(e,function(e){return he(o(),!0,r(e))})}function qi(e,n,r,o){var u=e[e.length-1];return e.concat(D(n,function(){var e="colgroup"===u.section?r.colgroup:r.row,n=gt(u,e,h),t=Vi(n.cells.length,n,r,function(e){return $e(o,e.toString())});return Vt(n,t)}))}function Ui(e,t,r,o){return x(e,function(e){var n=Vi(t,e,r,w);return ct(e,o,n)})}function $i(e,n,t){var r=n.colDelta<0?Ui:h,o=n.rowDelta<0?qi:h,u=bt(e),i=dt(e[0]),c=R(u,function(e){return e===i-1}),l=r(e,Math.abs(n.colDelta),t,c?i-1:i),a=bt(l);return o(l,Math.abs(n.rowDelta),t,z(a,T))}function Ki(n,t,e){return A(e,function(e){return e>=n.column&&e<=dt(t[0])+n.column})}function Gi(e,u,n,i,c){var t,r,o,l=bt(u),a=(t=e,r=l,o=dt(u[0]),{row:mt(u).cols.length+t.row,column:B(D(o-t.column,function(e){return e+t.column}),function(n){return M(r,function(e){return e!==n})}).getOr(o-1)}),f=mt(n).rows,s=Ki(a,f,l);return function(e,n,t){if(e.row>=n.length||e.column>dt(n[0]))return Wa.error("invalid start address out of table bounds, row: "+e.row+", column: "+e.column);var r=n.slice(e.row),o=r[0].cells.slice(e.column),u=dt(t[0]),i=t.length;return Wa.value({rowDelta:r.length-i,colDelta:o.length-u})}(a,u,f).map(function(e){var n=$($({},e),{colDelta:e.colDelta-s.length}),t=$i(u,n,i),r=bt(t),o=Ki(a,f,r);return function(e,n,t,r,o,u){for(var i,c,l,a,f,s=e.row,d=e.column,m=s+t.length,g=d+dt(t[0])+u.length,p=z(u,T),b=s;b<m;b++)for(var h,v,w,y=0,C=d;C<g;C++)p[C]?y++:(l=C,a=void 0,a=P(o,ft((i=n)[c=b],l).element),f=i[c],1<i.length&&1<dt(f)&&(0<l&&a(st(f,l-1))||l<f.cells.length-1&&a(st(f,l+1))||0<c&&a(st(i[c-1],l))||c<i.length-1&&a(st(i[c+1],l)))&&Wi(n,st(n[b],C),o,r.cell),v=(h=ft(t[b-s],C-d-y)).element,w=r.replace(v),at(n[b],C,he(w,!0,h.isLocked)));return n}(a,t,f,i,c,o)})}function Xi(t,e,n,r,o){var u=t,i=o,c=r.cell;0<u&&u<e[0].cells.length&&O(e,function(e){var n=e.cells[u-1],t=e.cells[u];i(t.element,n.element)&&at(e,u,he(c(),!0,t.isLocked))});var l=$i(n,Hi(n,e),r);return x($i(e,Hi(e,l),r),function(e,n){return ct(e,t,l[n].cells)})}function Yi(e,n,t,r,o){ji(n,e,o,r.cell);var u,i,c=bt(n),l=Fi(n,t),a=$i(n,$($({},l),{colDelta:l.colDelta-c.length}),r),f=mt(a),s=f.cols,d=f.rows,m=bt(a),g=Fi(t,n),p=$($({},g),{colDelta:g.colDelta+m.length}),b=$i((u=r,i=m,x(t,function(t){return I(i,function(e,n){return lt(e,n,Vi(1,t,u,T)[0])},t)})),p,r);return s.concat(d.slice(0,e)).concat(b).concat(d.slice(e,d.length))}function Ji(e,t,n,r,o){var u,i,c,l,a=mt(e),f=a.rows,s=a.cols,d=f.slice(0,t),m=f.slice(t),g=(u=f[n],i=function(e,n){return 0<t&&t<f.length&&r(st(f[t-1],n),st(f[t],n))?ft(f[t],n):he(o(e.element,r),!0,e.isLocked)},c=r,l=o,gt(u,function(e){return l(e,c)},i));return s.concat(d).concat([g]).concat(m)}function Qi(e,u,i,c,l){return x(e,function(e){var n,t,r=0<u&&u<dt(e)&&c(st(e,u-1),st(e,u)),o=(n=e.section,t=l,"colgroup"!==n&&r?ft(e,u):he(t(ft(e,i).element,c),!0,!1));return lt(e,u,o)})}function Zi(e,n,t){return he(t(e.element,n),!0,e.isLocked)}function ec(e,r,o,u,i){return x(e,function(e){return t=x((n=e).cells,function(e){return n=e,R(r,function(e){return o(n.element,e.element)})?i(e,o,u):e;var n}),ve(n.element,t,n.section,n.isNew);var n,t})}function nc(e,n,t,r){return void 0!==st(e[n],t)&&0<n&&r(st(e[n-1],t),st(e[n],t))}function tc(e,n,t){return 0<n&&t(st(e,n-1),st(e,n))}function rc(e,t,r,n){var o=mt(e).rows;return ec(e,N(o,function(e,n){return nc(o,n,t,r)||tc(e,t,r)?[]:[ft(e,t)]}),r,n,Zi)}function oc(e,n,t,r,o){return ec(e,[ft(mt(e).rows[n],t)],r,o,Zi)}function uc(e){return I(e,function(e,n){return R(e,function(e){return e.column===n.column})?e:e.concat([n])},[]).sort(function(e,n){return e.column-n.column})}function ic(e){return"tr"===Ge(e)||Fa(e)}function cc(e){return{element:e,colspan:Kn(e,"colspan",1),rowspan:Kn(e,"rowspan",1)}}function lc(e){return En(e,"scope").map(function(e){return e.substr(0,3)})}function ac(e){return n=e,t=Va.property().name(n),y(Ha,t);var n,t}function fc(e){return n=e,y(["ol","ul"],Va.property().name(n));var n}function sc(e){function u(e){return"br"===Ge(e)}function t(o){return Po(o).bind(function(t){var r=on(t).map(function(e){return!!ac(e)||(n=e,!!y(["br","img","hr","input"],Va.property().name(n))&&"img"!==Ge(e));var n}).getOr(!1);return nn(t).map(function(e){return!0===r||"li"===Ge(n=e)||xn(n,fc).isSome()||u(t)||ac(e)&&!ue(o,e)?[]:[Fe.fromTag("br")];var n})}).getOr([])}var n,r=0===(n=N(e,function(e){var n=un(e);return M(n,function(e){return u(e)||mn(e)&&0===Mt(e).trim().length})?[]:n.concat(t(e))})).length?[Fe.fromTag("br")]:n;It(e[0]),kt(e[0],r)}function dc(e){return Iu(e,!0)}function mc(e){0===et(e).length&&Gt(e)}function gc(e,n){return{grid:e,cursor:n}}function pc(e,n,t){var r,o,u,i,c,l=(r=n,o=t,c=mt(e).rows,H.from(null===(i=null===(u=c[r])||void 0===u?void 0:u.cells[o])||void 0===i?void 0:i.element).filter(dc).orThunk(function(){return j(c,function(e){return j(e.cells,function(e){var n=e.element;return Wn(dc(n),n)})})}));return gc(e,l)}function bc(e){return I(e,function(e,n){return R(e,function(e){return e.row===n.row})?e:e.concat([n])},[]).sort(function(e,n){return e.row-n.row})}function hc(b){return function(e,n,m,g,p){return pc(I(bc(n),function(e,n){return t=n.row,r=b,o=m,u=g.replaceOrInit,i=p,l=(c=mt(e)).cols,a=c.rows,s=N((f=a[t]).cells,function(e,n){return nc(a,t,n,o)||tc(f,n,o)?[]:[e]}),(d=K([],a))[t]=i.transformRow(f,r),ec(l.concat(d),s,o,u,i.transformCell);var t,r,o,u,i,c,l,a,f,s,d},e),n[0].row,n[0].column)}}function vc(e,n,t){var r,o=(r=t.section,ot(e,function(){return r}));return Ai(Ut.generate(o),n,!0)}function wc(e,n,t,r){var o=r.sizing,u=Ut.generate(n);ru(u,o.getWidths(u,o),o)}function yc(e,n,t,r){var o=t,u=r.sizing,i=r.resize,c=Ut.generate(n),l=u.getWidths(c,u),a=u.pixelWidth(),f=i.calcRedestributedWidths(l,a,o.pixelDelta,u.isRelative),s=f.newSizes,d=f.delta;ru(c,s,u),u.adjustTableWidth(d)}function Cc(e,n){return R(n,function(e){return 0===e.column&&e.isLocked})}function Sc(n,e){return R(e,function(e){return e.column+e.colspan>=n.grid.columns&&e.isLocked})}function Tc(e,n){var t=mr(e);return I(uc(n),function(e,n){return e+t[n.column].map(dr).getOr(0)},0)}function xc(t){return function(n,e){return Pi(n,e).filter(function(e){return!(t?Cc:Sc)(n,e)}).map(function(e){return{details:e,pixelDelta:Tc(n,e)}})}}function Rc(t){return function(n,e){return Ei(n,e).filter(function(e){return!(t?Cc:Sc)(n,e.cells)})}}function Dc(e,n){var u=Ut.fromTable(e);return Pi(u,n).bind(function(e){var n=e[e.length-1],t=e[0].column,r=n.column+n.colspan,o=b(x(u.all,function(e){return A(e.cells,function(e){return e.column>=t&&e.column<r})}));return Ea(o)}).getOr("")}function Oc(e,n){return Pi(Ut.fromTable(e),n).bind(Ea).getOr("")}function Ac(d,m,e){function n(e){return"table"===Ge(Vo(e))}function t(c,l,a,f,s){return function(t,e,o){void 0===o&&(o=!1),Go(t);var n=f(),r=Fe.fromDom(d.getDoc()),u=jo(a,r,g),i={sizing:li(d,t),resize:(oi(d)?lu:au)(),section:function(e){switch(ni(d)){case"section":return Pa();case"sectionCells":return Na();case"cells":return za();default:return function(e,n){var t;switch(j(Ut.fromTable(e).all,function(e){var n=hi(e);return"header"===n.type?H.from(n.subType):H.none()}).getOr(n)){case"section":return yi();case"sectionCells":return Ci();case"cells":return Si()}}(e,"section")}}(t)};return l(t)?c(n,t,e,u,i).bind(function(e){O(e.newRows,function(e){Wu(d,e.dom)}),O(e.newCells,function(e){ju(d,e.dom)});var r,n=(r=t,e.cursor.fold(function(){return W(et(r)).filter(yn).map(function(e){m.clear(r);var n=d.dom.createRng();return n.selectNode(e.dom),d.selection.setRng(n),In(e,"data-mce-selected","1"),n})},function(e){var n=Ia(Ba,e),t=d.dom.createRng();return t.setStart(n.element.dom,n.offset),t.setEnd(n.element.dom,n.offset),d.selection.setRng(t),m.clear(r),H.some(t)}));return yn(t)&&(Go(t),o||Fu(d,t.dom,s)),n.map(function(e){return{rng:e,effect:s}})}):H.none()}}var g=ui(d),r=oi(d)?E:bi;return{deleteRow:t(Qa,function(e){return!1===n(d)||1<pu(e).rows},E,e,ha),deleteColumn:t(Ja,function(e){return!1===n(d)||1<pu(e).columns},E,e,ha),insertRowsBefore:t(Ka,T,E,e,ha),insertRowsAfter:t(Ga,T,E,e,ha),insertColumnsBefore:t(Xa,T,r,e,ha),insertColumnsAfter:t(Ya,T,r,e,ha),mergeCells:t(cf,T,E,e,ha),unmergeCells:t(lf,T,E,e,ha),pasteColsBefore:t(ff,T,E,e,ha),pasteColsAfter:t(sf,T,E,e,ha),pasteRowsBefore:t(df,T,E,e,ha),pasteRowsAfter:t(mf,T,E,e,ha),pasteCells:t(af,T,E,e,va),makeCellsHeader:t(of,T,E,e,ha),unmakeCellsHeader:t(uf,T,E,e,ha),makeColumnsHeader:t(Za,T,E,e,ha),unmakeColumnsHeader:t(ef,T,E,e,ha),makeRowsHeader:t(nf,T,E,e,ha),makeRowsBody:t(tf,T,E,e,ha),makeRowsFooter:t(rf,T,E,e,ha),getTableRowType:gf,getTableCellType:Oc,getTableColType:Dc}}function kc(e,n,t,r){return D(e,function(e){return function(e,n,t,r){for(var o=Fe.fromTag("tr"),u=0;u<e;u++){var i=r<n||u<t?Fe.fromTag("th"):Fe.fromTag("td");u<t&&In(i,"scope","row"),r<n&&In(i,"scope","col"),Kt(i,Fe.fromTag("br")),Kt(o,i)}return o}(n,t,r,e)})}function Ic(e,n){e.selection.select(n.dom,!0),e.selection.collapse(!0)}function Bc(u,i,c,l,a){var o=Ku(u),f={styles:o,attributes:$u(u),colGroups:u.getParam("table_use_colgroups",!1,"boolean")};return u.undoManager.ignore(function(){var e=function(e,n,t,r,o,u){void 0===u&&(u=pf);var i,c,l=Fe.fromTag("table"),a="cells"!==o;Vn(l,u.styles),Bn(l,u.attributes),u.colGroups&&Kt(l,(i=n,c=Fe.fromTag("colgroup"),D(i,function(){return Kt(c,Fe.fromTag("col"))}),c));var f,s=Math.min(e,t);a&&0<t&&(f=Fe.fromTag("thead"),Kt(l,f),kt(f,kc(t,n,"sectionCells"===o?s:0,r)));var d=Fe.fromTag("tbody");return Kt(l,d),kt(d,kc(a?e-s:e,n,a?0:t,r)),l}(c,i,a,l,ni(u),f);In(e,"data-mce-id","__mce");var n,t,r,o=(n=e,t=Fe.fromTag("div"),r=Fe.fromDom(n.dom.cloneNode(!0)),Kt(t,r),t.dom.innerHTML);u.insertContent(o),u.addVisual()}),On(Vo(u),'table[data-mce-id="__mce"]').map(function(e){var n,t,r;return xa(u)?si(u,e):Ra(u)?Da(e):(ei(u)||(n=o.width,S(n)&&-1!==n.indexOf("%")))&&fi(u,e),Go(e),Pn(e,"data-mce-id"),t=u,O(sn(e,"tr"),function(e){Wu(t,e.dom),O(sn(e,"th,td"),function(e){ju(t,e.dom)})}),r=u,On(e,"td,th").each(P(Ic,r)),e.dom}).getOr(null)}function Mc(e,n,t,r,o){function u(e){return s(e)&&0<e}if(void 0===r&&(r={}),u(n)&&u(t)){var i=r.headerRows||0;return Bc(e,t,n,r.headerColumns||0,i)}return console.error(o),null}function Ec(e){return function(){return e().fold(function(){return[]},function(e){return x(e,function(e){return e.dom})})}}function Pc(t){return function(e){var n=0<e.length?H.some(Ho(e)):H.none();t(n)}}function Nc(e,n,t){var r=Kn(e,n,1);1===t||r<=1?Pn(e,n):In(e,n,Math.min(t,r))}function zc(o,e,u){return function(e,n){for(var t=0;t<n.length;t++){var r=o.getStyle(n[t],u);if((e=void 0===e?r:e)!==r)return""}return e}(void 0,o.select("td,th",e))}function Lc(e,n,t){t&&e.formatter.apply("align"+t,{},n)}function _c(n,t){bf.each("left center right".split(" "),function(e){n.formatter.remove("align"+e,{},t)})}function Wc(e){return vf.test(t=e)||wf.test(t)?H.some({value:(De(n=e,"#")?n.substring("#".length):n).toUpperCase()}):H.none();var n,t}function jc(e){var n=e.toString(16);return(1===n.length?"0"+n:n).toUpperCase()}function Fc(e){return{value:jc(e.red)+jc(e.green)+jc(e.blue)}}function Hc(e,n,t,r){return{red:e,green:n,blue:t,alpha:r}}function Vc(e,n,t,r){return Hc(parseInt(e,10),parseInt(n,10),parseInt(t,10),parseFloat(r))}function qc(e){function n(){return t.get().each(e)}var t=Oo(H.none());return{clear:function(){n(),t.set(H.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){n(),t.set(H.some(e))}}}function Uc(){var n=qc(E);return $($({},n),{on:function(e){return n.get().each(e)}})}function $c(e){return ge(e,"menu")}function Kc(t,r){return function(e){var n;t.execCommand("mceTableApplyCellStyle",!1,((n={})[r]=e,n))}}function Gc(n,t,r,o,u){return function(e){return e(Tf(n,t,r,o,u))}}function Xc(r,e,o){var n=x(e,function(e){return{text:e.title,value:"#"+Wc(r=e.value).orThunk(function(){return function(e){if("transparent"===e)return H.some(Hc(0,0,0,0));var n=yf.exec(e);if(null!==n)return H.some(Vc(n[1],n[2],n[3],"1"));var t=Cf.exec(e);return null!==t?H.some(Vc(t[1],t[2],t[3],t[4])):H.none()}(r).map(Fc)}).getOrThunk(function(){var e=document.createElement("canvas");e.height=1,e.width=1;var n=e.getContext("2d");n.clearRect(0,0,e.width,e.height),n.fillStyle="#FFFFFF",n.fillStyle=r,n.fillRect(0,0,1,1);var t=n.getImageData(0,0,1,1).data;return Fc(Hc(t[0],t[1],t[2],t[3]))}).value,type:"choiceitem"};var r});return[{type:"fancymenuitem",fancytype:"colorswatch",initData:{colors:0<n.length?n:void 0,allowCustomColors:!1},onAction:function(e){var n,t="remove"===e.value?"":e.value;r.execCommand("mceTableApplyCellStyle",!1,((n={})[o]=t,n))}}]}function Yc(n){return function(){var e=n.queryCommandValue("mceTableRowType");n.execCommand("mceTableRowType",!1,{type:"header"===e?"body":"header"})}}function Jc(n){return function(){var e=n.queryCommandValue("mceTableColType");n.execCommand("mceTableColType",!1,{type:"th"===e?"td":"th"})}}function Qc(e){return Rf.concat((0<(n=Sf(Qu(e))).length?H.some({name:"class",type:"listbox",label:"Class",items:n}):H.none()).toArray());var n}function Zc(e,n){var t=[{name:"borderstyle",type:"listbox",label:"Border style",items:[{text:"Select...",value:""}].concat(Sf(Uu(e)))},{name:"bordercolor",type:"colorinput",label:"Border color"},{name:"backgroundcolor",type:"colorinput",label:"Background color"}];return{title:"Advanced",name:"advanced",items:"cell"===n?[{name:"borderwidth",type:"input",label:"Border width"}].concat(t):t}}function el(u){return function(t,r){var o=t.dom;return{setAttrib:function(e,n){u&&!n||o.setAttrib(r,e,n)},setStyle:function(e,n){u&&!n||o.setStyle(r,e,n)},setFormat:function(e,n){u&&!n||(""===n?t.formatter.remove(e,{value:null},r,!0):t.formatter.apply(e,{value:n},r))}}}}function nl(n){return function(e){return De(e,"rgb")?n.toHex(e):e}}function tl(e,n){var t=Fe.fromDom(n);return{borderwidth:Un(t,"border-width").getOr(""),borderstyle:Un(t,"border-style").getOr(""),bordercolor:Un(t,"border-color").map(nl(e)).getOr(""),backgroundcolor:Un(t,"background-color").map(nl(e)).getOr("")}}function rl(e){var o=e[0];return O(e.slice(1),function(e){O(Ve(o),function(r){ce(e,function(e,n){var t=o[r];""!==t&&r===n&&t!==e&&(o[r]="")})})}),o}function ol(e,n,t,r){return B(e,function(e){return!f(t.formatter.matchNode(r,n+e))}).getOr("")}function ul(e,t){var n=Ut.fromTable(e);return x(A(Ut.justCells(n),function(n){return R(t,function(e){return ue(n.element,e)})}),function(e){return{element:e.element.dom,column:Ut.getColumnAt(n,e.column).map(function(e){return e.element.dom})}})}function il(e,n,r,t){var l=t.getData();t.close(),e.undoManager.transact(function(){var o,u=e,i=n,t=r,c=ae(o=l,function(e,n){return t[n]!==e});0<de(c)&&1<=i.length&&tt(i[0]).each(function(e){var s,d,m,n=ul(e,i),t=0<de(ae(c,function(e,n){return"scope"!==n&&"celltype"!==n})),r=$e(c,"celltype");(t||$e(c,"scope"))&&(s=u,d=o,m=1===n.length,O(n,function(e){var n,t,r,o,u,i,c=e.element,l=m?Df.normal(s,c):Df.ifTruthy(s,c),a=e.column.map(function(e){return m?Df.normal(s,e):Df.ifTruthy(s,e)}).getOr(l),f=d;(n=l).setAttrib("scope",f.scope),n.setAttrib("class",f.class),n.setStyle("height",Ko(f.height)),a.setStyle("width",Ko(f.width)),Gu(s)&&((t=l).setFormat("tablecellbackgroundcolor",(r=d).backgroundcolor),t.setFormat("tablecellbordercolor",r.bordercolor),t.setFormat("tablecellborderstyle",r.borderstyle),t.setFormat("tablecellborderwidth",Ko(r.borderwidth))),m&&(_c(s,c),o=s,u=c,bf.each("top middle bottom".split(" "),function(e){o.formatter.remove("valign"+e,{},u)})),d.halign&&Lc(s,c,d.halign),!d.valign||(i=d.valign)&&s.formatter.apply("valign"+i,{},c)})),r&&u.execCommand("mceTableCellType",!1,{type:o.celltype,no_events:!0}),Fu(u,e.dom,{structure:r,style:t})}),e.focus()})}function cl(e,n){var t,l,r,o,u,i=$l(n);0!==i.length&&(l=e,t=rl(tt((r=i)[0]).map(function(e){return x(ul(e,r),function(e){return t=l,r=e.element,o=Gu(l),u=e.column,i=t.dom,c=u.getOr(r),$({width:n(c,"width"),height:n(r,"height"),scope:i.getAttrib(r,"scope"),celltype:r.nodeName.toLowerCase(),class:i.getAttrib(r,"class",""),halign:Of(t,r),valign:Af(t,r)},o?tl(i,r):{});function n(e,n){return i.getStyle(e,n)||i.getAttrib(e,n)}var t,r,o,u,i,c})}).getOrDie()),o={type:"tabpanel",tabs:[{title:"General",name:"general",items:Qc(e)},Zc(e,"cell")]},u={type:"panel",items:[{type:"grid",columns:2,items:Qc(e)}]},e.windowManager.open({title:"Cell Properties",size:"normal",body:Gu(e)?o:u,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:t,onSubmit:P(il,e,i,t)}))}function ll(e){return kf.concat((0<(n=Sf(e.getParam("table_row_class_list",[],"array"))).length?H.some({name:"class",type:"listbox",label:"Class",items:n}):H.none()).toArray());var n}function al(s,d,m,e){var g=e.getData();e.close(),s.undoManager.transact(function(){var e,n,t,i,c,l,a,r=s,o=d,u=m,f=ae(e=g,function(e,n){return u[n]!==e});0<de(f)&&(n=$e(f,"type"),(t=!n||1<de(f))&&(i=r,c=e,l=u,a=1===o.length,O(o,function(e){var n,t,r,o=a?Df.normal(i,e):Df.ifTruthy(i,e),u=c;(n=o).setAttrib("class",u.class),n.setStyle("height",Ko(u.height)),Xu(i)&&((t=o).setStyle("background-color",(r=c).backgroundcolor),t.setStyle("border-color",r.bordercolor),t.setStyle("border-style",r.borderstyle)),c.align!==l.align&&(_c(i,e),Lc(i,e,c.align))})),n&&r.execCommand("mceTableRowType",!1,{type:e.type,no_events:!0}),tt(Fe.fromDom(o[0])).each(function(e){return Fu(r,e.dom,{structure:n,style:t})})),s.focus()})}function fl(i){var e,t,n,r,o,u,c,l=(e=Jo(i),t=Vl.selected,r=(n=Ul(e)).bind(function(e){return tt(e)}).map(rt),_n(n,r,function(n,e){return A(e,function(e){return R(Ho(e.dom.cells),function(e){return"1"===Mn(e,t)||ue(e,n)})})}).getOr([]));0!==l.length&&(o=rl(x(l,function(e){return n=i,t=e.dom,r=Xu(i),u=n.dom,$({height:u.getStyle(t,"height")||u.getAttrib(t,"height"),class:u.getAttrib(t,"class",""),type:tt(Fe.fromDom(o=t)).map(function(e){var n={selection:Ho(o.cells)};return gf(e,n)}).getOr(""),align:Of(n,t)},r?tl(u,t):{});var n,t,r,o,u})),u={type:"tabpanel",tabs:[{title:"General",name:"general",items:ll(i)},Zc(i,"row")]},c={type:"panel",items:[{type:"grid",columns:2,items:ll(i)}]},i.windowManager.open({title:"Row Properties",size:"normal",body:Xu(i)?u:c,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onSubmit:P(al,i,x(l,function(e){return e.dom}),o)}))}function sl(u,i,t,e){var c=u.dom,l=e.getData(),a=ae(l,function(e,n){return t[n]!==e});e.close(),""===l.class&&delete l.class,u.undoManager.transact(function(){var e,n,t,r,o;i||(e=parseInt(l.cols,10)||1,n=parseInt(l.rows,10)||1,i=Bc(u,e,n,0,0)),0<de(a)&&(function(e,n,t){var r,o=e.dom,u={},i={};if(u.class=t.class,i.height=Ko(t.height),o.getAttrib(n,"width")&&!Ju(e)?u.width=(r=t.width)?r.replace(/px$/,""):"":i.width=Ko(t.width),Ju(e)?(i["border-width"]=Ko(t.border),i["border-spacing"]=Ko(t.cellspacing)):(u.border=t.border,u.cellpadding=t.cellpadding,u.cellspacing=t.cellspacing),Ju(e)&&n.children)for(var c=0;c<n.children.length;c++)If(o,n.children[c],{"border-width":Ko(t.border),padding:Ko(t.cellpadding)}),Yu(e)&&If(o,n.children[c],{"border-color":t.bordercolor});Yu(e)&&(i["background-color"]=t.backgroundcolor,i["border-color"]=t.bordercolor,i["border-style"]=t.borderstyle),u.style=o.serializeStyle($($({},Ku(e)),i)),o.setAttribs(n,$($({},$u(e)),u))}(u,i,l),((t=c.select("caption",i)[0])&&!l.caption||!t&&l.caption)&&u.execCommand("mceTableToggleCaption"),""===l.align?_c(u,i):Lc(u,i,l.align)),u.focus(),u.addVisual(),0<de(a)&&(o=!(r=$e(a,"caption"))||1<de(a),Fu(u,i,{structure:r,style:o}))})}function dl(e,n){var t,r,o,u,i,c,l,a,f,s,d,m,g,p,b,h,v,w,y,C=e.dom,S=(o=Yu(r=e),a=Ku(r),f=$u(r),s=o?(u=r.dom,{borderstyle:me(a,"border-style").getOr(""),bordercolor:nl(u)(me(a,"border-color").getOr("")),backgroundcolor:nl(u)(me(a,"background-color").getOr(""))}):{},$($($($($($({},{height:"",width:"100%",cellspacing:"",cellpadding:"",caption:!1,class:"",align:"",border:""}),a),f),s),(l=a["border-width"],Ju(r)&&l?{border:l}:me(f,"border").fold(function(){return{}},function(e){return{border:e}}))),(i=me(a,"border-spacing").or(me(f,"cellspacing")).fold(function(){return{}},function(e){return{cellspacing:e}}),c=me(a,"border-padding").or(me(f,"cellpadding")).fold(function(){return{}},function(e){return{cellpadding:e}}),$($({},i),c))));!1===n?(t=C.getParent(e.selection.getStart(),"table",e.getBody()))?(m=t,g=Yu(d=e),v=d.dom,w=Ju(d)?v.getStyle(m,"border-spacing")||v.getAttrib(m,"cellspacing"):v.getAttrib(m,"cellspacing")||v.getStyle(m,"border-spacing"),y=Ju(d)?zc(v,m,"padding")||v.getAttrib(m,"cellpadding"):v.getAttrib(m,"cellpadding")||zc(v,m,"padding"),S=$({width:v.getStyle(m,"width")||v.getAttrib(m,"width"),height:v.getStyle(m,"height")||v.getAttrib(m,"height"),cellspacing:w,cellpadding:y,border:(p=v,h=Un(Fe.fromDom(b=m),"border-width"),Ju(d)&&h.isSome()?h.getOr(""):p.getAttrib(b,"border")||zc(d.dom,b,"border-width")||zc(d.dom,b,"border")),caption:!!v.select("caption",m)[0],class:v.getAttrib(m,"class",""),align:Of(d,m)},g?tl(v,m):{})):Yu(e)&&(S.borderstyle="",S.bordercolor="",S.backgroundcolor=""):(S.cols="1",S.rows="1",Yu(e)&&(S.borderstyle="",S.bordercolor="",S.backgroundcolor=""));var T=Sf(Zu(e));0<T.length&&S.class&&(S.class=S.class.replace(/\s*mce\-item\-table\s*/g,""));var x,R,D,O,A={type:"grid",columns:2,items:(x=T,R=n?[{type:"input",name:"cols",label:"Cols",inputMode:"numeric"},{type:"input",name:"rows",label:"Rows",inputMode:"numeric"}]:[],D=e.getParam("table_appearance_options",!0,"boolean")?[{type:"input",name:"cellspacing",label:"Cell spacing",inputMode:"numeric"},{type:"input",name:"cellpadding",label:"Cell padding",inputMode:"numeric"},{type:"input",name:"border",label:"Border width"},{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[],O=0<x.length?[{type:"listbox",name:"class",label:"Class",items:x}]:[],R.concat([{type:"input",name:"width",label:"Width"},{type:"input",name:"height",label:"Height"}]).concat(D).concat([{type:"listbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]).concat(O))},k=Yu(e)?{type:"tabpanel",tabs:[{title:"General",name:"general",items:[A]},Zc(e,"table")]}:{type:"panel",items:[A]};e.windowManager.open({title:"Table Properties",size:"normal",body:k,onSubmit:P(sl,e,t,S),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:S})}function ml(e){return ql(Jo(e),$o(e))}function gl(l,n,e,a,t){function u(e){return tt(e,m)}function f(t){return Ul(Jo(e=l),$o(e)).bind(function(n){return u(n).map(function(e){return t(e,n)})});var e}function s(e){l.focus()}function r(r,o){return void 0===o&&(o=!1),f(function(e,n){var t=Zo(a,e,n);r(e,t,o).each(s)})}function o(){return f(function(e,n){var t,r,o,u=Zo(a,e,n),i=jo(E,Fe.fromDom(l.getDoc()),H.none());return t=u,r=i,Pi(o=Ut.fromTable(e),t).bind(function(e){var n=ki(N(mt(Ai(o,r,!1)).rows.slice(e[0].row,e[e.length-1].row+e[e.length-1].rowspan),function(e){var n=A(e.cells,function(e){return!e.isLocked});return 0<n.length?[$($({},e),{cells:n})]:[]}));return Wn(0<n.length,n)}).map(function(e){return x(e,function(e){var t=cr(e.element);return O(e.cells,function(e){var n=lr(e.element);Ti(n,"colspan",e.colspan,1),Ti(n,"rowspan",e.rowspan,1),Kt(t,n)}),t})})})}function i(){return f(function(e,n){var t,l,r=Zo(a,e,n);return t=r,Ni(l=Ut.fromTable(e),t).map(function(e){var r,o,n=e[e.length-1],t=e[0].column,u=n.column+n.colspan,i=function(e,t,r){if(Ut.hasColumns(e)){var n=x(A(Ut.justColumns(e),function(e){return e.column>=t&&e.column<r}),function(e){var n=lr(e.element);return Nc(n,"span",r-t),n}),o=Fe.fromTag("colgroup");return kt(o,n),[o]}return[]}(l,t,u),c=(r=t,o=u,x(l.all,function(e){var n=x(A(e.cells,function(e){return e.column>=r&&e.column<o}),function(e){var n=lr(e.element);return Nc(n,"colspan",o-r),n}),t=Fe.fromTag("tr");return kt(t,n),t}));return K(K([],i),c)})})}function c(c,e){return e().each(function(e){var i=x(e,lr);f(function(e,n){var t,r,o=Fo(Fe.fromDom(l.getDoc())),u=(t=i,r=o,{selection:Qo(a),clipboard:t,generators:r});c(e,u).each(s)})})}function d(t){return function(e,n){return me(n,"type").each(function(e){r(t(e),n.no_events)})}}var m=$o(l);ce({mceTableSplitCells:function(){return r(n.unmergeCells)},mceTableMergeCells:function(){return r(n.mergeCells)},mceTableInsertRowBefore:function(){return r(n.insertRowsBefore)},mceTableInsertRowAfter:function(){return r(n.insertRowsAfter)},mceTableInsertColBefore:function(){return r(n.insertColumnsBefore)},mceTableInsertColAfter:function(){return r(n.insertColumnsAfter)},mceTableDeleteCol:function(){return r(n.deleteColumn)},mceTableDeleteRow:function(){return r(n.deleteRow)},mceTableCutCol:function(){return i().each(function(e){t.setColumns(e),r(n.deleteColumn)})},mceTableCutRow:function(){return o().each(function(e){t.setRows(e),r(n.deleteRow)})},mceTableCopyCol:function(){return i().each(function(e){return t.setColumns(e)})},mceTableCopyRow:function(){return o().each(function(e){return t.setRows(e)})},mceTablePasteColBefore:function(){return c(n.pasteColsBefore,t.getColumns)},mceTablePasteColAfter:function(){return c(n.pasteColsAfter,t.getColumns)},mceTablePasteRowBefore:function(){return c(n.pasteRowsBefore,t.getRows)},mceTablePasteRowAfter:function(){return c(n.pasteRowsAfter,t.getRows)},mceTableDelete:function(){return ml(l).each(function(e){tt(e,m).filter(p(m)).each(function(e){var n,t=Fe.fromText("");Rt(e,t),Gt(e),l.dom.isEmpty(l.getBody())?(l.setContent(""),l.selection.setCursorLocation()):((n=l.dom.createRng()).setStart(t.dom,0),n.setEnd(t.dom,0),l.selection.setRng(n),l.nodeChanged())})})},mceTableCellToggleClass:function(e,r){f(function(e){var n=$l(a),t=M(n,function(e){return l.formatter.match("tablecellclass",{value:r},e.dom)})?l.formatter.remove:l.formatter.apply;O(n,function(e){return t("tablecellclass",{value:r},e.dom)}),Fu(l,e.dom,ba)})},mceTableToggleClass:function(e,n){f(function(e){l.formatter.toggle("tableclass",{value:n},e.dom),Fu(l,e.dom,ba)})},mceTableToggleCaption:function(){ml(l).each(function(n){tt(n,m).each(function(r){Dn(r,"caption").fold(function(){var e,n,t=Fe.fromTag("caption");Kt(t,Fe.fromText("Caption")),n=t,cn(e=r,0).fold(function(){Kt(e,n)},function(e){xt(e,n)}),l.selection.setCursorLocation(t.dom,0)},function(e){Qe("caption")(n)&&oe("td",r).each(function(e){return l.selection.setCursorLocation(e.dom,0)}),Gt(e)}),Fu(l,r.dom,ha)})})},mceTableSizingMode:function(e,n){return t=n,ml(l).each(function(e){Ra(l)||xa(l)||ei(l)||tt(e,m).each(function(e){"relative"!==t||Rl(e)?"fixed"!==t||Dl(e)?"responsive"!==t||Ol(e)||Da(e):si(l,e):fi(l,e),Go(e),Fu(l,e.dom,ha)})});var t},mceTableCellType:d(function(e){return"th"===e?n.makeCellsHeader:n.unmakeCellsHeader}),mceTableColType:d(function(e){return"th"===e?n.makeColumnsHeader:n.unmakeColumnsHeader}),mceTableRowType:d(function(e){switch(e){case"header":return n.makeRowsHeader;case"footer":return n.makeRowsFooter;default:return n.makeRowsBody}})},function(e,n){return l.addCommand(n,e)}),ce({mceTableProps:P(dl,l,!1),mceTableRowProps:P(fl,l),mceTableCellProps:P(cl,l,a)},function(e,n){return l.addCommand(n,function(){return e()})}),l.addCommand("mceInsertTable",function(e,n){g(n)&&0<Ve(n).length?Mc(l,n.rows,n.columns,n.options,"Invalid values for mceInsertTable - rows and columns values are required to insert a table."):dl(l,!0)}),l.addCommand("mceTableApplyCellStyle",function(e,n){function r(e){return"tablecell"+e.toLowerCase().replace("-","")}var o,t;!g(n)||0!==(o=$l(a)).length&&(function(e){for(var n in e)if(qe.call(e,n))return;return 1}(t=ae(n,function(e,n){return l.formatter.has(r(n))&&S(e)}))||(ce(t,function(n,t){O(o,function(e){Df.normal(l,e.dom).setFormat(r(t),n)})}),u(o[0]).each(function(e){return Fu(l,e.dom,ba)})))})}function pl(t,e){return tt(t,e).bind(function(e){var n=et(e);return m(n,function(e){return ue(t,e)}).map(function(e){return{index:e,all:n}})})}function bl(e,n){var t=e.document.createRange();return t.selectNode(n.dom),t}function hl(e,n){var t=e.document.createRange();return Hf(t,n),t}function vl(e,n,t){var r,o=e.document.createRange(),u=o;return n.fold(function(e){u.setStartBefore(e.dom)},function(e,n){u.setStart(e.dom,n)},function(e){u.setStartAfter(e.dom)}),r=o,t.fold(function(e){r.setEndBefore(e.dom)},function(e,n){r.setEnd(e.dom,n)},function(e){r.setEndAfter(e.dom)}),o}function wl(e,n,t,r,o){var u=e.document.createRange();return u.setStart(n.dom,t),u.setEnd(r.dom,o),u}function yl(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom,width:e.width,height:e.height}}function Cl(e,n,t){return n(Fe.fromDom(t.startContainer),t.startOffset,Fe.fromDom(t.endContainer),t.endOffset)}function Sl(e,n){var o,t,r,u=(o=e,n.match({domRange:function(e){return{ltr:C(e),rtl:H.none}},relative:function(e,n){return{ltr:G(function(){return vl(o,e,n)}),rtl:G(function(){return H.some(vl(o,n,e))})}},exact:function(e,n,t,r){return{ltr:G(function(){return wl(o,e,n,t,r)}),rtl:G(function(){return H.some(wl(o,t,r,e,n))})}}}));return(r=(t=u).ltr()).collapsed?t.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Vf.rtl(Fe.fromDom(e.endContainer),e.endOffset,Fe.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Cl(0,Vf.ltr,r)}):Cl(0,Vf.ltr,r)}function Tl(u,e){return Sl(u,e).match({ltr:function(e,n,t,r){var o=u.document.createRange();return o.setStart(e.dom,n),o.setEnd(t.dom,r),o},rtl:function(e,n,t,r){var o=u.document.createRange();return o.setStart(t.dom,r),o.setEnd(e.dom,n),o}})}function xl(e,n){return{parent:C(H.from(e.dom.documentElement).map(Fe.fromDom).getOr(e)),view:C(e),origin:C(Xr(0,0)),isResizable:n}}function Rl(e){return fo(e).exists(function(e){return Ml.test(e)})}function Dl(e){return fo(e).exists(function(e){return El.test(e)})}function Ol(e){return fo(e).isNone()}function Al(){return{transformRow:h,transformCell:vi}}function kl(o,u){function r(e){if(ic(e))return Fa((t={element:e}).element)?o.colgroup(t):o.row(t);var n,t,r=(n=u(e),ja(n.element)?o.col(n):o.cell(n));return i=H.some({item:e,replacement:r}),r}void 0===u&&(u=cc);var i=H.none();return{getOrInit:function(n,t){return i.fold(function(){return r(n)},function(e){return t(n,e.item)?e.replacement:r(n)})}}}function Il(o,c){return function(r){function u(e){var n=f(c)?{}:{scope:c},t=r.replace(e,o,n);return i.push({item:e,sub:t}),t}var i=[];return{replaceOrInit:function(n,t){return ic(n)||ja(n)?n:(r=n,o=t,B(i,function(e){return o(e.item,r)}).fold(function(){return u(n)},function(e){return t(n,e.item)?e.sub:u(n)}));var r,o}}}}function Bl(r){return{unmerge:function(t){var e=lc(t);return e.each(function(e){return In(t,"scope",e)}),function(){var n=r.cell({element:t,colspan:1,rowspan:1});return $n(n,"width"),$n(t,"width"),e.each(function(e){return In(n,"scope",e)}),n}},merge:function(r){return $n(r[0],"width"),function(){var e=Ln(x(r,lc));if(0===e.length)return H.none();var n=e[0],t=["row","col"];return R(e,function(e){return e!==n&&y(t,e)})?H.none():H.from(n)}().fold(function(){return Pn(r[0],"scope")},function(e){return In(r[0],"scope",e+"group")}),C(r[0])}}}var Ml=/(\d+(\.\d+)?)%/,El=/(\d+(\.\d+)?)px|em/,Pl=C(Ml),Nl=C(El),zl=Qe("col"),Ll=function(r){return fo(r).fold(function(){return t=r,{width:e,pixelWidth:e,getWidths:function(e,n){return Ro(e,t,n)},getCellDelta:n=C(0),singleColumnWidth:C([0]),minCellWidth:n,setElementWidth:E,adjustTableWidth:E,isRelative:!0,label:"none"};function e(){return sr(t)}var t,n},function(e){return function(e,n){var t=Pl().exec(n);if(null!==t)return Ao(t[1],e);var r=Nl().exec(n);return ko(null!==r?parseInt(r[1],10):sr(e),e)}(r,e)})},_l=ko,Wl=Ao,jl=["img","br"],Fl=function(e,u){var i=function(e){for(var n=un(e),t=n.length-1;0<=t;t--){var r=n[t];if(u(r))return H.some(r);var o=i(r);if(o.isSome())return o}return H.none()};return i(e)},Hl={scope:["row","col"]},Vl={selected:"data-mce-selected",selectedSelector:"td[data-mce-selected],th[data-mce-selected]",firstSelected:"data-mce-first-selected",firstSelectedSelector:"td[data-mce-first-selected],th[data-mce-first-selected]",lastSelected:"data-mce-last-selected",lastSelectedSelector:"td[data-mce-last-selected],th[data-mce-last-selected]"},ql=eu("th,td,caption"),Ul=eu("th,td"),$l=Qo,Kl=Ir([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}]),Gl=$({},Kl),Xl=cu(function(e){return e<0}),Yl=cu(T),Jl=Ir([{invalid:["raw"]},{pixels:["value"]},{percent:["value"]}]),Ql=$($({},Jl),{from:function(e){return Q(e,"%")?fu("%",Jl.percent,e):Q(e,"px")?fu("px",Jl.pixels,e):Jl.invalid(e)}}),Zl=function(e){if(0===e.length)return e;var n,t,r=k(e,function(e,n){var t=Ql.from(n).fold(function(){return{value:n,remainder:0}},function(e){return n=e,{value:(t=Math.floor(n))+"px",remainder:n-t};var n,t},function(e){return{value:e+"%",remainder:0}});return{output:[t.value].concat(e.output),remainder:e.remainder+t.remainder}},{output:[],remainder:0}),o=r.output;return o.slice(0,o.length-1).concat([(n=o[o.length-1],t=Math.round(r.remainder),Ql.from(n).fold(C(n),function(e){return e+t+"px"},function(e){return e+t+"%"}))])},ea=Ql.from,na=ho,ta=yu(["compare","extract","mutate","sink"]),ra=yu(["element","start","stop","destroy"]),oa=yu(["forceDrop","drop","move","delayDrop"]),ua=function(e,n,t,r){e.dom.removeEventListener(n,t,r)},ia=T,ca=Su,la=Au("ephox-dragster").resolve,aa=ta({compare:function(e,n){return Xr(n.left-e.left,n.top-e.top)},extract:function(e){return H.some(Xr(e.x,e.y))},sink:function(e,n){var t,r,o,u=(t=n,r=$({layerClass:la("blocker")},t),In(o=Fe.fromTag("div"),"role","presentation"),Vn(o,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Du(o,la("blocker")),Du(o,r.layerClass),{element:C(o),destroy:function(){Gt(o)}}),i=Tu(u.element(),"mousedown",e.forceDrop),c=Tu(u.element(),"mouseup",e.drop),l=Tu(u.element(),"mousemove",e.move),a=Tu(u.element(),"mouseout",e.delayDrop);return ra({element:u.element,start:function(e){Kt(e,u.element())},stop:function(){Gt(u.element())},destroy:function(){u.destroy(),c.unbind(),l.unbind(),a.unbind(),i.unbind()}})},mutate:function(e,n){e.mutate(n.left,n.top)}}),fa=function(e){return e.dom.contentEditable},sa=Au("ephox-snooker").resolve,da=sa("resizer-bar"),ma=sa("resizer-rows"),ga=sa("resizer-cols"),pa=sa("resizer-bar-dragging"),ba={structure:!1,style:!0},ha={structure:!0,style:!1},va={structure:!0,style:!0},wa={"border-collapse":"collapse",width:"100%"},ya=D(5,function(e){var n=e+1+"px";return{title:n,value:n}}),Ca=x(["Solid","Dotted","Dashed","Double","Groove","Ridge","Inset","Outset","None","Hidden"],function(e){return{title:e,value:e.toLowerCase()}}),Sa={border:"1"},Ta="preservetable",xa=function(e){return"fixed"===Hu(e)||!1===Vu(e)},Ra=function(e){return"responsive"===Hu(e)},Da=function(e){$n(e,"width");var n=nt(e);O(0<n.length?n:et(e),function(e){$n(e,"width"),ai(e)}),ai(e)},Oa="bar-",Aa=function(n,e,t){return n.property().isText(e)&&0===n.property().getText(e).trim().length||n.property().isComment(e)?t(e).bind(function(e){return Aa(n,e,t).orThunk(function(){return H.some(e)})}):H.none()},ka=function(e,n){var t=Aa(e,n,e.query().prevSibling).getOr(n);if(e.property().isText(t))return gi(t,pi(e,t));var r=e.property().children(t);return 0<r.length?ka(e,r[r.length-1]):gi(t,pi(e,t))},Ia=ka,Ba=Jt(),Ma=Qe("th"),Ea=function(e){var n=A(e,function(e){return Ma(e.element)});return 0===n.length?H.some("td"):n.length===e.length?H.some("th"):H.none()},Pa=yi,Na=Ci,za=Si,La=function(t){return{isValue:T,isError:w,getOr:C(t),getOrThunk:C(t),getOrDie:C(t),or:function(e){return La(t)},orThunk:function(e){return La(t)},fold:function(e,n){return n(t)},map:function(e){return La(e(t))},mapError:function(e){return La(t)},each:function(e){e(t)},bind:function(e){return e(t)},exists:function(e){return e(t)},forall:function(e){return e(t)},toOptional:function(){return H.some(t)}}},_a=function(t){return{isValue:w,isError:T,getOr:h,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(t),function(){throw new Error(e)}();var e},or:h,orThunk:function(e){return e()},fold:function(e,n){return e(t)},map:function(e){return _a(t)},mapError:function(e){return _a(e(t))},each:E,bind:function(e){return _a(t)},exists:w,forall:T,toOptional:H.none}},Wa={value:La,error:_a,fromOption:function(e,n){return e.fold(function(){return _a(n)},La)}},ja=Qe("col"),Fa=Qe("colgroup"),Ha=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],Va=Jt(),qa=hc("thead"),Ua=hc("tbody"),$a=hc("tfoot"),Ka=Mi(function(e,n,t,r){var o=n[0].row;return pc(k(bc(n),function(e,n){return{grid:Ji(e.grid,o,n.row+e.delta,t,r.getOrInit),delta:e.delta+1}},{grid:e,delta:0}).grid,o,n[0].column)},Pi,E,E,kl),Ga=Mi(function(e,n,t,r){var o=bc(n),u=o[o.length-1],i=u.row+u.rowspan;return pc(k(o,function(e,n){return Ji(e,i,n.row,t,r.getOrInit)},e),i,n[0].column)},Pi,E,E,kl),Xa=Mi(function(e,n,t,r){var o=n.details,u=uc(o),i=u[0].column;return pc(k(u,function(e,n){return{grid:Qi(e.grid,i,n.column+e.delta,t,r.getOrInit),delta:e.delta+1}},{grid:e,delta:0}).grid,o[0].row,i)},xc(!0),yc,E,kl),Ya=Mi(function(e,n,t,r){var o=n.details,u=o[o.length-1],i=u.column+u.colspan;return pc(k(uc(o),function(e,n){return Qi(e,i,n.column,t,r.getOrInit)},e),o[0].row,i)},xc(!1),yc,E,kl),Ja=Mi(function(e,n,t,r){var o,u,i=uc(n.details),c=(o=e,u=x(i,function(e){return e.column}),N(o,function(e){var n=e.cells,t=k(u,function(e,n){return 0<=n&&n<e.length?e.slice(0,n).concat(e.slice(n+1)):e},n);return 0<t.length?[ve(e.element,t,e.section,e.isNew)]:[]})),l=0<c.length?c[0].cells.length-1:0;return pc(c,i[0].row,Math.min(i[0].column,l))},function(n,e){return Ni(n,e).map(function(e){return{details:e,pixelDelta:-Tc(n,e)}})},yc,mc,kl),Qa=Mi(function(e,n,t,r){var o,u,i,c,l=bc(n),a=(o=l[0].row,u=l[l.length-1].row,c=(i=mt(e)).rows,i.cols.concat(c.slice(0,o)).concat(c.slice(u+1))),f=0<a.length?a.length-1:0;return pc(a,Math.min(n[0].row,f),n[0].column)},Pi,E,mc,kl),Za=Mi(function(e,n,t,r){return pc(I(uc(n),function(e,n){return rc(e,n.column,t,r.replaceOrInit)},e),n[0].row,n[0].column)},Ni,E,E,Il("th","row")),ef=Mi(function(e,n,t,r){return pc(I(uc(n),function(e,n){return rc(e,n.column,t,r.replaceOrInit)},e),n[0].row,n[0].column)},Ni,E,E,Il("td",null)),nf=Mi(qa,Ni,E,E,Il("th","col")),tf=Mi(Ua,Ni,E,E,Il("td",null)),rf=Mi($a,Ni,E,E,Il("td",null)),of=Mi(function(e,n,t,r){return pc(I(n,function(e,n){return oc(e,n.row,n.column,t,r.replaceOrInit)},e),n[0].row,n[0].column)},Ni,E,E,Il("th")),uf=Mi(function(e,n,t,r){return pc(I(n,function(e,n){return oc(e,n.row,n.column,t,r.replaceOrInit)},e),n[0].row,n[0].column)},Ni,E,E,Il("td")),cf=Mi(function(e,n,t,r){var o=n.cells;return sc(o),gc(function(e,n,t){var r=mt(e).rows;if(0===r.length)return e;for(var o=n.startRow;o<=n.finishRow;o++)for(var u=n.startCol;u<=n.finishCol;u++){var i=r[o],c=ft(i,u).isLocked;at(i,u,he(t(),!1,c))}return e}(e,n.bounds,r.merge(o)),H.from(o[0]))},Li,wc,E,Bl),lf=Mi(function(e,n,t,r){return gc(k(n,function(e,n){return Wi(e,n,t,r.unmerge(n))},e),H.from(n[0]))},_i,wc,E,Bl),af=Mi(function(e,n,t,r){var o,u,i=(o=n.clipboard,u=n.generators,Ai(Ut.fromTable(o),u,!0));return Gi({row:n.row,column:n.column},e,i,n.generators,t).fold(function(){return gc(e,H.some(n.element))},function(e){return pc(e,n.row,n.column)})},function(n,t){return Zn(t.element).bind(function(e){return Ii(n,e).map(function(e){return $($({},e),{generators:t.generators,clipboard:t.clipboard})})})},wc,E,kl),ff=Mi(function(e,n,t,r){var o=mt(e).rows,u=n.cells[0].column,i=o[n.cells[0].row];return pc(Xi(u,e,vc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Rc(!0),E,E,kl),sf=Mi(function(e,n,t,r){var o=mt(e).rows,u=n.cells[n.cells.length-1].column+n.cells[n.cells.length-1].colspan,i=o[n.cells[0].row];return pc(Xi(u,e,vc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Rc(!1),E,E,kl),df=Mi(function(e,n,t,r){var o=mt(e).rows,u=n.cells[0].row,i=o[u];return pc(Yi(u,e,vc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Ei,E,E,kl),mf=Mi(function(e,n,t,r){var o=mt(e).rows,u=n.cells[n.cells.length-1].row+n.cells[n.cells.length-1].rowspan,i=o[n.cells[0].row];return pc(Yi(u,e,vc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Ei,E,E,kl),gf=function(e,n){var i=Ut.fromTable(e);return Pi(i,n).bind(function(e){var n=e[e.length-1],o=e[0].row,u=n.row+n.rowspan;return function(){var e=x(i.all.slice(o,u),function(e){return hi(e).type}),n=y(e,"header"),t=y(e,"footer");if(n||t){var r=y(e,"body");return!n||r||t?n||r||!t?H.none():H.some("footer"):H.some("header")}return H.some("body")}()}).getOr("")},pf={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},colGroups:!1},bf=tinymce.util.Tools.resolve("tinymce.util.Tools"),hf=[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}],vf=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,wf=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,yf=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,Cf=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,Sf=function(e){return x(e,function(e){var n=e.text||e.title;return $c(e)?{text:n,items:Sf(e.menu)}:{text:n,value:e.value}})},Tf=function(t,r,e,o,a){return x(e,function(e){var u,i,c,l,n=e.text||e.title;return $c(e)?{type:"nestedmenuitem",text:n,getSubmenuItems:function(){return Tf(t,r,e.menu,o,a)}}:{text:n,type:"togglemenuitem",onAction:function(){return a(e.value)},onSetup:(u=t,i=r,c=o,l=e.value,function(t){function e(){function e(e){return u.formatter.match(c,{value:l},e.dom,o)}var n=$l(i);o?(t.setActive(!R(n,e)),r.set(u.formatter.formatChanged(c,function(e){return t.setActive(!e)},!0))):(t.setActive(M(n,e)),r.set(u.formatter.formatChanged(c,t.setActive,!1,{value:l})))}var r=qc(function(e){return e.unbind()}),o=!Z(l);return u.initialized?e():u.on("init",e),r.clear})}})},xf=function(e){return N(e,function(e){return $c(e)?[$($({},e),{menu:xf(e.menu)})]:Z(e.value)?[e]:[]})},Rf=[{name:"width",type:"input",label:"Width"},{name:"height",type:"input",label:"Height"},{name:"celltype",type:"listbox",label:"Cell type",items:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{name:"scope",type:"listbox",label:"Scope",items:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{name:"halign",type:"listbox",label:"Horizontal align",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{name:"valign",type:"listbox",label:"Vertical align",items:hf}],Df={normal:el(!1),ifTruthy:el(!0)},Of=P(ol,["left","center","right"],"align"),Af=P(ol,["top","middle","bottom"],"valign"),kf=[{type:"listbox",name:"type",label:"Row type",items:[{text:"Header",value:"header"},{text:"Body",value:"body"},{text:"Footer",value:"footer"}]},{type:"listbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height",type:"input"}],If=function(e,n,t,r){if("TD"===n.tagName||"TH"===n.tagName)S(t)?e.setStyle(n,t,r):e.setStyle(n,t);else if(n.children)for(var o=0;o<n.children.length;o++)If(e,n.children[o],t,r)},Bf={remove_similar:!0,inherit:!1},Mf=$({selector:"td,th"},Bf),Ef={tablecellbackgroundcolor:$({styles:{backgroundColor:"%value"}},Mf),tablecellverticalalign:$({styles:{"vertical-align":"%value"}},Mf),tablecellbordercolor:$({styles:{borderColor:"%value"}},Mf),tablecellclass:$({classes:["%value"]},Mf),tableclass:$({selector:"table",classes:["%value"]},Bf),tablecellborderstyle:$({styles:{borderStyle:"%value"}},Mf),tablecellborderwidth:$({styles:{borderWidth:"%value"}},Mf)},Pf=Ir([{none:["current"]},{first:["current"]},{middle:["current","target"]},{last:["current"]}]),Nf=$($({},Pf),{none:function(e){return Pf.none(e=void 0===e?void 0:e)}}),zf=function(e,n,t,r,o){void 0===o&&(o=T);var u=1===r;if(!u&&t<=0)return Nf.first(e[0]);if(u&&t>=e.length-1)return Nf.last(e[e.length-1]);var i=t+r,c=e[i];return o(c)?Nf.middle(n,c):zf(e,n,i,r,o)},Lf=function(e,n,t,r){return{start:e,soffset:n,finish:t,foffset:r}},_f=Ir([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Wf={before:_f.before,on:_f.on,after:_f.after,cata:function(e,n,t,r){return e.fold(n,t,r)},getStart:function(e){return e.fold(h,h,h)}},jf=Ir([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Ff={domRange:jf.domRange,relative:jf.relative,exact:jf.exact,exactFromRange:function(e){return jf.exact(e.start,e.soffset,e.finish,e.foffset)},getWin:function(e){var n=e.match({domRange:function(e){return Fe.fromDom(e.startContainer)},relative:function(e,n){return Wf.getStart(e)},exact:function(e,n,t,r){return e}});return Fe.fromDom(en(n).dom.defaultView)},range:Lf},Hf=function(e,n){return e.selectNodeContents(n.dom)},Vf=Ir([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function qf(e,n,t){return n>=e.left&&n<=e.right&&t>=e.top&&t<=e.bottom}function Uf(t,r,e,n,o){function l(e){var n=t.dom.createRange();return n.setStart(r.dom,e),n.collapse(!0),n}var u=Mt(r).length,i=function(e,n,t,r){if(0===r)return 0;if(e===t)return r-1;for(var o=t,u=1;u<r;u++){var i=l(u).getBoundingClientRect(),c=Math.abs(e-i.left);if(n<=i.bottom){if(n<i.top||o<c)return u-1;o=c}}return 0}(e,n,o.right,u);return l(i)}function $f(e,n){return n-e.left<e.right-n}function Kf(e,n,t){var r=e.dom.createRange();return r.selectNode(n.dom),r.collapse(t),r}function Gf(n,e,t){var r=n.dom.createRange();r.selectNode(e.dom);var o=$f(r.getBoundingClientRect(),t);return(!0===o?Eo:Po)(e).map(function(e){return Kf(n,e,o)})}function Xf(e,n,t){var r=$f(n.dom.getBoundingClientRect(),t);return H.some(Kf(e,n,r))}function Yf(e,n){var t=Ge(e);return"input"===t?Wf.after(e):y(["br","img"],t)?0===n?Wf.before(e):Wf.after(e):Wf.on(e,n)}function Jf(e,n){var t=e.fold(Wf.before,Yf,Wf.after),r=n.fold(Wf.before,Yf,Wf.after);return Ff.relative(t,r)}function Qf(e,n,t,r){var o=Yf(e,n),u=Yf(t,r);return Ff.relative(o,u)}function Zf(e){return H.from(e.getSelection())}function es(e,n){Zf(e).each(function(e){e.removeAllRanges(),e.addRange(n)})}function ns(e,n,t,r,o){es(e,wl(e,n,t,r,o))}function ts(l,e){return Sl(l,e).match({ltr:function(e,n,t,r){ns(l,e,n,t,r)},rtl:function(o,u,i,c){Zf(l).each(function(e){if(e.setBaseAndExtent)e.setBaseAndExtent(o.dom,u,i.dom,c);else if(e.extend)try{t=i,r=c,(n=e).collapse(o.dom,u),n.extend(t.dom,r)}catch(e){ns(l,i,c,o,u)}else ns(l,i,c,o,u);var n,t,r})}})}function rs(e,n,t,r,o){ts(e,Qf(n,t,r,o))}function os(e,n,t){ts(e,Jf(n,t))}function us(e){if(0<e.rangeCount){var n=e.getRangeAt(0),t=e.getRangeAt(e.rangeCount-1);return H.some(Lf(Fe.fromDom(n.startContainer),n.startOffset,Fe.fromDom(t.endContainer),t.endOffset))}return H.none()}function is(e){if(null===e.anchorNode||null===e.focusNode)return us(e);var n,t,r,o,u,i,c,l,a,f,s,d=Fe.fromDom(e.anchorNode),m=Fe.fromDom(e.focusNode);return n=d,t=e.anchorOffset,r=m,o=e.focusOffset,i=t,c=r,l=o,(a=Ze(u=n).dom.createRange()).setStart(u.dom,i),a.setEnd(c.dom,l),f=a,s=ue(n,r)&&t===o,f.collapsed&&!s?H.some(Lf(d,e.anchorOffset,m,e.focusOffset)):us(e)}function cs(e,n,t){es(e,((t=void 0===t||t)?hl:bl)(e,n))}function ls(e){return Zf(e).filter(function(e){return 0<e.rangeCount}).bind(is).map(function(e){return Ff.exact(e.start,e.soffset,e.finish,e.foffset)})}function as(e,n,t){return qs(e,n,(o=Iu,pl(r=t,void 0).fold(function(){return Nf.none(r)},function(e){return zf(e.all,r,e.index,1,o)})));var r,o}function fs(e,n){var t=Tl(e,n);return Lf(Fe.fromDom(t.startContainer),t.startOffset,Fe.fromDom(t.endContainer),t.endOffset)}function ss(e,n){return{item:e,mode:n}}function ds(e,n,t,r){return void 0===r&&(r=Ws),e.property().parent(n).map(function(e){return ss(e,r)})}function ms(n){return function(e){return 0===n.property().children(e).length}}function gs(e,n){return ed(td,e,ms(td),n)}function ps(e,n){return nd(td,e,ms(td),n)}function bs(e){return An(e,"tr")}function hs(e){return"br"===Ge(e)}function vs(e,n,t,r){var o,u,i,c,l,a,f;return(hs(n)?(o=e,(i=r).traverse(u=n).orThunk(function(){return id(u,i.gather,o)}).map(i.relative)):(c=e,l=r,cn(a=n,f=t).filter(hs).orThunk(function(){return cn(a,f-1).filter(hs)}).bind(function(e){return l.traverse(e).fold(function(){return id(e,l.gather,c).map(l.relative)},function(e){return nn(r=e).bind(function(n){var t=un(n);return ud(t,r).map(function(e){return{parent:n,children:t,element:r,index:e}})}).map(function(e){return Wf.on(e.parent,e.index)});var r})}))).map(function(e){return{start:e,finish:e}})}function ws(e,n){return{left:e.left,top:e.top+n,right:e.right,bottom:e.bottom+n}}function ys(e,n){return{left:e.left,top:e.top-n,right:e.right,bottom:e.bottom-n}}function Cs(e,n,t){return{left:e.left+n,top:e.top+t,right:e.right+n,bottom:e.bottom+t}}function Ss(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function Ts(e,n){return H.some(e.getRect(n))}function xs(e,n,t){return dn(n)?Ts(e,n).map(Ss):mn(n)?(r=e,o=n,(0<=(u=t)&&u<Bo(o)?r.getRangedRect(o,u,o,u+1):0<u?r.getRangedRect(o,u-1,o,u):H.none()).map(Ss)):H.none();var r,o,u}function Rs(e,n){return dn(n)?Ts(e,n).map(Ss):mn(n)?e.getRangedRect(n,0,n,Bo(n)).map(Ss):H.none()}function Ds(n,e,r){return Tn(function(e,n){return n(e)},xn,e,ac,void 0).fold(w,function(e){return Rs(n,e).exists(function(e){return(n=r).left<(t=e).left||Math.abs(t.right-n.left)<1||n.left>t.right;var n,t})})}function Os(n,t,e){var r,o=n.move(e,5),u=ad(t,n,e,o,100).getOr(o),i=u,c=t;return((r=n).point(i)>c.getInnerHeight()?H.some(r.point(i)-c.getInnerHeight()):r.point(i)<0?H.some(-r.point(i)):H.none()).fold(function(){return t.situsFromPoint(u.left,n.point(u))},function(e){return t.scrollBy(0,e),t.situsFromPoint(u.left,n.point(u)-e)})}function As(a,f,s,e,d){return An(e,"td,th",f).bind(function(l){return An(l,"table",f).bind(function(e){return n=e,xn(d,function(e){return nn(e).exists(function(e){return ue(e,n)})},void 0).isSome()?(o=t=a,u=r=f,i=c=s,o.getSelection().bind(function(r){return vs(u,r.finish,r.foffset,i).fold(function(){return H.some(gi(r.finish,r.foffset))},function(e){var n=o.fromSitus(e),t=od.verify(o,r.finish,r.foffset,n.finish,n.foffset,i.failure,u);return od.cata(t,function(e){return H.none()},function(){return H.none()},function(e){return H.some(gi(e,0))},function(e){return H.some(gi(e,Bo(e)))})})}).bind(function(e){return sd(t,r,e.element,e.offset,c,20).map(t.fromSitus)}).bind(function(n){return An(n.finish,"td,th",f).map(function(e){return{start:l,finish:e,range:n}})})):H.none();var o,u,i,n,t,r,c})})}function ks(e,n,t,r,o,u){return je().browser.isIE()?H.none():u(r,n).orThunk(function(){return As(e,n,t,r,o).map(function(e){var n=e.range;return $s(H.some(Gs(n.start,n.soffset,n.finish,n.foffset)),!0)})})}function Is(e,r){return An(e,"tr",r).bind(function(t){return An(t,"table",r).bind(function(e){var n=sn(e,"tr");return ue(t,n[0])?ed(td,e,function(e){return Po(e).isSome()},r).map(function(e){var n=Bo(e);return $s(H.some(Gs(e,n,e,n)),!0)}):H.none()})})}function Bs(e,r){return An(e,"tr",r).bind(function(t){return An(t,"table",r).bind(function(e){var n=sn(e,"tr");return ue(t,n[n.length-1])?nd(td,e,function(e){return Eo(e).isSome()},r).map(function(e){return $s(H.some(Gs(e,0,e,0)),!0)}):H.none()})})}function Ms(e,n,t,r,o,u,i){return As(e,t,r,o,u).bind(function(e){return Xs(n,t,e.start,e.finish,i)})}function Es(e,n){return An(e,"td,th",n)}function Ps(n){return function(e){return e===n}}function Ns(e){return 37<=e&&e<=40}function zs(l){return{elementFromPoint:function(e,n){return Fe.fromPoint(Fe.fromDom(l.document),e,n)},getRect:function(e){return e.dom.getBoundingClientRect()},getRangedRect:function(e,n,t,r){var o,u,i,c=Ff.exact(e,n,t,r);return i=(o=Tl(l,c)).getClientRects(),0<(u=0<i.length?i[0]:o.getBoundingClientRect()).width||0<u.height?H.some(u).map(yl):H.none()},getSelection:function(){return ls(l).map(function(e){return fs(l,e)})},fromSitus:function(e){var n=Ff.relative(e.start,e.finish);return fs(l,n)},situsFromPoint:function(e,n){return t=e,r=n,o=Fe.fromDom(l.document),Hs(o,t,r).map(function(e){return Lf(Fe.fromDom(e.startContainer),e.startOffset,Fe.fromDom(e.endContainer),e.endOffset)}).map(function(e){return Ks(e.start,e.soffset,e.finish,e.foffset)});var t,r,o},clearSelection:function(){Zf(l).each(function(e){return e.removeAllRanges()})},collapseSelection:function(i){void 0===i&&(i=!1),ls(l).each(function(e){return e.fold(function(e){return e.collapse(i)},function(e,n){var t=i?e:n;os(l,t,t)},function(e,n,t,r){var o=i?e:t,u=i?n:r;rs(l,o,u,o,u)})})},setSelection:function(e){rs(l,e.start,e.soffset,e.finish,e.foffset)},setRelativeSelection:function(e,n){os(l,e,n)},selectNode:function(e){cs(l,e,!1)},selectContents:function(e){cs(l,e)},getInnerHeight:function(){return l.innerHeight},getScrollY:function(){var e=Fe.fromDom(l.document),n=void 0!==e?e.dom:document,t=n.body.scrollLeft||n.documentElement.scrollLeft,r=n.body.scrollTop||n.documentElement.scrollTop;return Xr(t,r).top},scrollBy:function(e,n){var t,r=e,o=n,u=Fe.fromDom(l.document);(t=(void 0!==u?u.dom:document).defaultView)&&t.scrollBy(r,o)}}}function Ls(e,n){return{rows:e,cols:n}}function _s(e){return!1===Ou(Fe.fromDom(e.target),"ephox-snooker-resizer-bar")}Vf.ltr,Vf.rtl;function Ws(e,n,t,r){return void 0===r&&(r=Ys),t.sibling(e,n).map(function(e){return ss(e,r)})}function js(o,u,n){function t(e){Pn(e,o.selected),Pn(e,o.firstSelected),Pn(e,o.lastSelected)}function i(e){In(e,o.selected,"1")}function c(e){r(e),n()}function r(e){O(sn(e,o.selectedSelector),t)}return{clearBeforeUpdate:r,clear:c,selectRange:function(e,n,t,r){c(e),O(n,i),In(t,o.firstSelected,"1"),In(r,o.lastSelected,"1"),u(n,t,r)},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}var Fs=function(e,n,t,r){return mn(n)?(u=n,i=t,c=r,(l=(o=e).dom.createRange()).selectNode(u.dom),j(l.getClientRects(),function(e){return qf(e,i,c)?H.some(e):H.none()}).map(function(e){return Uf(o,u,i,c,e)})):(f=n,s=t,d=r,m=(a=e).dom.createRange(),j(un(f),function(e){return m.selectNode(e.dom),qf(m.getBoundingClientRect(),s,d)?Fs(a,e,s,d):H.none()}));var o,u,i,c,l,a,f,s,d,m},Hs=document.caretPositionFromPoint?function(t,e,n){var r,o;return H.from(null===(o=(r=t.dom).caretPositionFromPoint)||void 0===o?void 0:o.call(r,e,n)).bind(function(e){if(null===e.offsetNode)return H.none();var n=t.dom.createRange();return n.setStart(e.offsetNode,e.offset),n.collapse(),H.some(n)})}:document.caretRangeFromPoint?function(e,n,t){var r,o;return H.from(null===(o=(r=e.dom).caretRangeFromPoint)||void 0===o?void 0:o.call(r,n,t))}:function(o,u,n){return Fe.fromPoint(o,u,n).bind(function(r){function e(){return e=o,t=u,(0===un(n=r).length?Xf:Gf)(e,n,t);var e,n,t}return 0===un(r).length?e():function(e,n,t,r){var o=e.dom.createRange();o.selectNode(n.dom);var u=o.getBoundingClientRect();return function(e,n,t,r){var o=e.dom.createRange();o.selectNode(n.dom);var u=o.getBoundingClientRect(),i=Math.max(u.left,Math.min(u.right,t)),c=Math.max(u.top,Math.min(u.bottom,r));return Fs(e,n,i,c)}(e,n,Math.max(u.left,Math.min(u.right,t)),Math.max(u.top,Math.min(u.bottom,r)))}(o,r,u,n).orThunk(e)})},Vs=tinymce.util.Tools.resolve("tinymce.util.VK"),qs=function(n,t,e){return e.fold(H.none,H.none,function(e,n){return Eo(n).map(function(e){return u=Ff.exact(e,0,e,0),t=u,o=Ff.getWin(t).dom,r=t.match({domRange:function(e){var n=Fe.fromDom(e.startContainer),t=Fe.fromDom(e.endContainer);return Qf(n,e.startOffset,t,e.endOffset)},relative:Jf,exact:Qf}),Sl(o,r).match({ltr:n,rtl:n});function n(e,n,t,r){return wl(o,e,n,t,r)}var t,o,r,u})},function(e){return n.execCommand("mceTableInsertRowAfter"),as(n,t,e)})},Us=["table","li","dl"],$s=function(e,n){return{selection:e,kill:n}},Ks=function(e,n,t,r){return{start:Wf.on(e,n),finish:Wf.on(t,r)}},Gs=Ks,Xs=function(t,e,r,n,o){return ue(r,n)?H.none():er(r,n,e).bind(function(e){var n=e.boxes.getOr([]);return 1<n.length?(o(t,n,e.start,e.finish),H.some($s(H.some(Gs(r,0,r,Bo(r))),!0))):H.none()})},Ys=function(e,n,t,r){void 0===r&&(r=Ys);var o=e.property().children(n);return t.first(o).map(function(e){return ss(e,r)})},Js=[{current:ds,next:Ws,fallback:H.none()},{current:Ws,next:Ys,fallback:H.some(ds)},{current:Ys,next:Ys,fallback:H.some(Ws)}],Qs=function(n,t,r,o,e){return B(e=void 0===e?Js:e,function(e){return e.current===r}).bind(function(e){return e.current(n,t,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return Qs(n,t,e,o)})})})},Zs=function(n,e,t,r,o,u){return Qs(n,e,r,o).bind(function(e){return u(e.item)?H.none():t(e.item)?H.some(e.item):Zs(n,e.item,t,e.mode,o,u)})},ed=function(e,n,t,r){return Zs(e,n,t,Ws,{sibling:function(e,n){return e.query().prevSibling(n)},first:function(e){return 0<e.length?H.some(e[e.length-1]):H.none()}},r)},nd=function(e,n,t,r){return Zs(e,n,t,Ws,{sibling:function(e,n){return e.query().nextSibling(n)},first:function(e){return 0<e.length?H.some(e[0]):H.none()}},r)},td=Jt(),rd=Ir([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}]),od=$($({},rd),{verify:function(i,e,n,t,r,c,o){return An(t,"td,th",o).bind(function(u){return An(e,"td,th",o).map(function(o){return ue(u,o)?ue(t,u)&&Bo(u)===r?c(o):rd.none("in same cell"):Qt(bs,[u,o]).fold(function(){return n=u,t=(e=i).getRect(o),(r=e.getRect(n)).right>t.left&&r.left<t.right?rd.success():c(o);var e,n,t,r},function(e){return c(o)})})}).getOr(rd.none("default"))},cata:function(e,n,t,r,o){return e.fold(n,t,r,o)}}),ud=function(e,n){return m(e,P(ue,n))},id=function(e,n,t){return n(e,t).bind(function(e){return mn(e)&&0===Mt(e).trim().length?id(e,n,t):H.some(e)})},cd=Ir([{none:[]},{retry:["caret"]}]),ld={point:function(e){return e.bottom},adjuster:function(e,n,t,r,o){var u=ws(o,5);return Math.abs(t.bottom-r.bottom)<1||t.top>o.bottom?cd.retry(u):t.top===o.bottom?cd.retry(ws(o,1)):Ds(e,n,o)?cd.retry(Cs(u,5,0)):cd.none()},move:ws,gather:ps},ad=function(t,r,o,u,i){return 0===i?H.some(u):(n=t,c=u.left,l=r.point(u),n.elementFromPoint(c,l).filter(function(e){return"table"===Ge(e)}).isSome()?(e=i-1,ad(t,r,o,r.move(u,5),e)):t.situsFromPoint(u.left,r.point(u)).bind(function(e){return e.start.fold(H.none,function(n){return Rs(t,n).bind(function(e){return r.adjuster(t,n,e,o,u).fold(H.none,function(e){return ad(t,r,o,e,i-1)})}).orThunk(function(){return H.some(u)})},H.none)}));var e,n,c,l},fd={tryUp:P(Os,{point:function(e){return e.top},adjuster:function(e,n,t,r,o){var u=ys(o,5);return Math.abs(t.top-r.top)<1||t.bottom<o.top?cd.retry(u):t.bottom===o.top?cd.retry(ys(o,1)):Ds(e,n,o)?cd.retry(Cs(u,5,0)):cd.none()},move:ys,gather:gs}),tryDown:P(Os,ld),ieTryUp:function(e,n){return e.situsFromPoint(n.left,n.top-5)},ieTryDown:function(e,n){return e.situsFromPoint(n.left,n.bottom+5)},getJumpSize:C(5)},sd=function(r,o,u,i,c,l){return 0===l?H.none():gd(r,o,u,i,c).bind(function(e){var n=r.fromSitus(e),t=od.verify(r,u,i,n.finish,n.foffset,c.failure,o);return od.cata(t,function(){return H.none()},function(){return H.some(e)},function(e){return ue(u,e)&&0===i?dd(r,u,i,ys,c):sd(r,o,e,0,c,l-1)},function(e){return ue(u,e)&&i===Bo(e)?dd(r,u,i,ws,c):sd(r,o,e,Bo(e),c,l-1)})})},dd=function(n,e,t,r,o){return xs(n,e,t).bind(function(e){return md(n,o,r(e,fd.getJumpSize()))})},md=function(e,n,t){var r=je().browser;return r.isChrome()||r.isSafari()||r.isFirefox()||r.isEdge()?n.otherRetry(e,t):r.isIE()?n.ieRetry(e,t):H.none()},gd=function(n,e,t,r,o){return xs(n,t,r).bind(function(e){return md(n,o,e)})},pd={traverse:on,gather:ps,relative:Wf.before,otherRetry:fd.tryDown,ieRetry:fd.ieTryDown,failure:od.failedDown},bd={traverse:rn,gather:gs,relative:Wf.before,otherRetry:fd.tryUp,ieRetry:fd.ieTryUp,failure:od.failedUp},hd=Ps(38),vd=Ps(40),wd={isBackward:Ps(37),isForward:Ps(39)},yd={isBackward:Ps(39),isForward:Ps(37)},Cd=tinymce.util.Tools.resolve("tinymce.Env");function Sd(I,B,e){var M=js(Vl,function(l,a,f){e.targets().each(function(c){tt(a).each(function(e){var n,o,u,t=ui(I),r=jo(E,Fe.fromDom(I.getDoc()),t),i=(n=c,o=r,Pi(u=Ut.fromTable(e),n).map(function(e){var n,t,r=Ai(u,o,!1);return{upOrLeftCells:N(ki(r.slice(0,(n=e)[n.length-1].row+1)),function(e){return x(e.cells.slice(0,n[n.length-1].column+1),function(e){return e.element})}),downOrRightCells:N(ki(r.slice((t=e)[0].row+t[0].rowspan-1,r.length)),function(e){return x(e.cells.slice(t[0].column+t[0].colspan-1,e.cells.length),function(e){return e.element})})}}));I.fire("TableSelectionChange",{cells:l,start:a,finish:f,otherCells:i})})})},function(){I.fire("TableSelectionClear")});return I.on("init",function(e){var n,t,r,o,u,i,d,m,g,a,c,l,f,s,p,b,h=I.getWin(),v=Vo(I),w=$o(I),y=(n=zs(h),{clearstate:(c=n,l=v,f=w,s=M,p=Uc(),(t={clearstate:b=p.clear,mousedown:function(e){s.clear(l),Es(e.target,f).each(p.set)},mouseover:function(e){x(e)},mouseup:function(e){x(e),b()}}).clearstate),mousedown:t.mousedown,mouseover:t.mouseover,mouseup:t.mouseup}),C=(a=zs(h),{keydown:function(e,n,t,r,o,i){var u=e.raw,c=u.which,l=!0===u.shiftKey;return nr(d,g.selectedSelector).fold(function(){return vd(c)&&l?P(Ms,a,d,m,pd,r,n,g.selectRange):hd(c)&&l?P(Ms,a,d,m,bd,r,n,g.selectRange):vd(c)?P(ks,a,m,pd,r,n,Bs):hd(c)?P(ks,a,m,bd,r,n,Is):H.none},function(u){function e(e){return function(){return j(e,function(e){return n=e.rows,t=e.cols,r=d,rr(u,n,t,(o=g).firstSelectedSelector,o.lastSelectedSelector).map(function(e){return o.clearBeforeUpdate(r),o.selectRange(r,e.boxes,e.start,e.finish),e.boxes});var n,t,r,o}).fold(function(){return tr(d,g.firstSelectedSelector,g.lastSelectedSelector).map(function(e){var n=vd(c)||i.isForward(c)?Wf.after:Wf.before;return a.setRelativeSelection(Wf.on(e.first,0),n(e.table)),g.clear(d),$s(H.none(),!0)})},function(e){return H.some($s(H.none(),!0))})}}return vd(c)&&l?e([Ls(1,0)]):hd(c)&&l?e([Ls(-1,0)]):i.isBackward(c)&&l?e([Ls(0,-1),Ls(-1,0)]):i.isForward(c)&&l?e([Ls(0,1),Ls(1,0)]):Ns(c)&&0==l?T:H.none})()},keyup:function(c,l,a,f,s){return nr(d,g.selectedSelector).fold(function(){var t,r,e,o,u,n=c.raw,i=n.which;return 0!=(!0===n.shiftKey)&&Ns(i)?(t=d,r=m,u=g.selectRange,ue(e=l,o=f)&&a===s?H.none():An(e,"td,th",r).bind(function(n){return An(o,"td,th",r).bind(function(e){return Xs(t,r,n,e,u)})})):H.none()},H.none)}}),S=(r=d=v,o=m=w,u=g=M,i=zs(h),function(e,t){u.clearBeforeUpdate(r),er(e,t,o).each(function(e){var n=e.boxes.getOr([]);u.selectRange(r,n,e.start,e.finish),i.selectContents(t),i.collapseSelection()})});function T(){return g.clear(d),H.none()}function x(i){p.on(function(e){s.clearBeforeUpdate(l),Es(i.target,f).each(function(u){er(e,u,f).each(function(e){var n,t,r,o=e.boxes.getOr([]);1===o.length?(n=o[0],t="false"===fa(n),r=zn(ku(i.target),n,ue),t&&r&&(s.selectRange(l,o,n,n),c.selectContents(n))):1<o.length&&(s.selectRange(l,o,e.start,e.finish),c.selectContents(u))})})})}function R(e,n){!0===e.raw.shiftKey&&(n.kill&&e.kill(),n.selection.each(function(e){var n=Ff.relative(e.start,e.finish),t=Tl(h,n);I.selection.setRng(t)}))}function D(e){return 0===e.button}I.on("TableSelectorChange",function(e){return S(e.start,e.finish)});var O,A,k=(O=Oo(Fe.fromDom(v)),A=Oo(0),{touchEnd:function(e){var n,t,r=Fe.fromDom(e.target);"td"!==Ge(r)&&"th"!==Ge(r)||(n=O.get(),t=A.get(),ue(n,r)&&e.timeStamp-t<300&&(e.preventDefault(),S(r,r))),O.set(r),A.set(e.timeStamp)}});I.on("dragstart",function(e){y.clearstate()}),I.on("mousedown",function(e){D(e)&&_s(e)&&y.mousedown(ca(e))}),I.on("mouseover",function(e){var n;(void 0===(n=e).buttons||Cd.browser.isEdge()&&0===n.buttons||0!=(1&n.buttons))&&_s(e)&&y.mouseover(ca(e))}),I.on("mouseup",function(e){D(e)&&_s(e)&&y.mouseup(ca(e))}),I.on("touchend",k.touchEnd),I.on("keyup",function(e){var n,t,r,o=ca(e);o.raw.shiftKey&&Ns(o.raw.which)&&(n=I.selection.getRng(),t=Fe.fromDom(n.startContainer),r=Fe.fromDom(n.endContainer),C.keyup(o,t,n.startOffset,r,n.endOffset).each(function(e){R(o,e)}))}),I.on("keydown",function(e){var n=ca(e);B().each(function(e){return e.hideBars()});var t=I.selection.getRng(),r=Fe.fromDom(t.startContainer),o=Fe.fromDom(t.endContainer),u=pr(wd,yd)(Fe.fromDom(I.selection.getStart()));C.keydown(n,r,t.startOffset,o,t.endOffset,u).each(function(e){R(n,e)}),B().each(function(e){return e.showBars()})}),I.on("NodeChange",function(){var e=I.selection;Qt(tt,[Fe.fromDom(e.getStart()),Fe.fromDom(e.getEnd())]).fold(function(){return M.clear(v)},E)})}),{clear:M.clear}}function Td(o,u){function n(n){return m.forall(function(e){return!e[n]})}function e(){return ql(Jo(o),$o(o)).bind(function(r){return _n(tt(r),ql(Fe.fromDom(o.selection.getEnd()),$o(o)).bind(tt),function(e,n){return ue(e,n)?g(r)?H.some({element:t=r,mergable:H.none(),unmergable:H.none(),selection:[t]}):H.some(Zo(u,e,r)):H.none();var t}).bind(h)})}function t(r){return tt(r.element).map(function(e){var t=Ut.fromTable(e),n=I(Pi(t,r).getOr([]),function(e,n){return n.isLocked&&(e.onAny=!0,0===n.column?e.onFirst=!0:n.column+n.colspan>=t.grid.columns&&(e.onLast=!0)),e},{onAny:!1,onFirst:!1,onLast:!1});return{mergeable:Li(t,r).isSome(),unmergeable:_i(t,r).isSome(),locked:n}})}function r(){s.set(G(e)()),m=s.get().bind(t),O(d.get(),function(e){return e()})}function i(n){return n(),d.set(d.get().concat([n])),function(){d.set(A(d.get(),function(e){return e!==n}))}}function c(n,t){return i(function(){return s.get().fold(function(){n.setDisabled(!0)},function(e){n.setDisabled(t(e))})})}function l(n,t,r){return i(function(){return s.get().fold(function(){n.setDisabled(!0),n.setActive(!1)},function(e){n.setDisabled(t(e)),n.setActive(r(e))})})}function a(n){return m.exists(function(e){return e.locked[n]})}function f(n,t){return function(e){return l(e,function(e){return g(e.element)},function(){return o.queryCommandValue(n)===t})}}var s=Oo(H.none()),d=Oo([]),m=H.none(),g=Qe("caption"),p=f("mceTableRowType","header"),b=f("mceTableColType","th");return o.on("NodeChange ExecCommand TableSelectorChange",r),{onSetupTable:function(e){return c(e,function(e){return!1})},onSetupCellOrRow:function(e){return c(e,function(e){return g(e.element)})},onSetupColumn:function(n){return function(e){return c(e,function(e){return g(e.element)||a(n)})}},onSetupPasteable:function(n){return function(e){return c(e,function(e){return g(e.element)||n().isNone()})}},onSetupPasteableColumn:function(n,t){return function(e){return c(e,function(e){return g(e.element)||n().isNone()||a(t)})}},onSetupMergeable:function(e){return c(e,function(e){return n("mergeable")})},onSetupUnmergeable:function(e){return c(e,function(e){return n("unmergeable")})},resetTargets:r,onSetupTableWithCaption:function(e){return l(e,w,function(e){return tt(e.element,$o(o)).exists(function(e){return Dn(e,"caption").isSome()})})},onSetupTableRowHeaders:p,onSetupTableColumnHeaders:b,targets:s.get}}Vr.add("table",function(c){var e,n,t,r,o,u,i,l,a,f,s,d,m=(e=function(){return Vo(c)},n=function(){return Ul(Jo(c),$o(c))},t=Vl.selectedSelector,{get:function(){return _r(e(),t).fold(function(){return n().fold(jr,Hr)},function(e){return Fr(e)})}}),g=Td(c,m),p=mi(c),b=Sd(c,p.lazyResize,g),h=Ac(c,b,p.lazyWire),v=(r=Uc(),o=Uc(),{getRows:r.get,setRows:function(e){e.fold(r.clear,r.set),o.clear()},clearRows:r.clear,getColumns:o.get,setColumns:function(e){e.fold(o.clear,o.set),r.clear()},clearColumns:o.clear});return gl(c,h,0,m,v),f=h,s=m,d=$o(a=c),ce({mceTableRowType:function(){return w(f.getTableRowType)},mceTableCellType:function(){return w(f.getTableCellType)},mceTableColType:function(){return w(f.getTableColType)}},function(e,n){return a.addQueryValueHandler(n,e)}),nu(c,m,h),function(n,e,t,r){function o(e){return function(){return n.execCommand(e)}}function u(e){n.execCommand("mceInsertTable",!1,{rows:e.numRows,columns:e.numColumns})}var i={text:"Table properties",onSetup:t.onSetupTable,onAction:o("mceTableProps")},c={text:"Delete table",icon:"table-delete-table",onSetup:t.onSetupTable,onAction:o("mceTableDelete")};n.ui.registry.addMenuItem("tableinsertrowbefore",{text:"Insert row before",icon:"table-insert-row-above",onAction:o("mceTableInsertRowBefore"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tableinsertrowafter",{text:"Insert row after",icon:"table-insert-row-after",onAction:o("mceTableInsertRowAfter"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tabledeleterow",{text:"Delete row",icon:"table-delete-row",onAction:o("mceTableDeleteRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablerowprops",{text:"Row properties",icon:"table-row-properties",onAction:o("mceTableRowProps"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablecutrow",{text:"Cut row",icon:"cut-row",onAction:o("mceTableCutRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablecopyrow",{text:"Copy row",icon:"duplicate-row",onAction:o("mceTableCopyRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablepasterowbefore",{text:"Paste row before",icon:"paste-row-before",onAction:o("mceTablePasteRowBefore"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addMenuItem("tablepasterowafter",{text:"Paste row after",icon:"paste-row-after",onAction:o("mceTablePasteRowAfter"),onSetup:t.onSetupPasteable(r.getRows)});var l={type:"nestedmenuitem",text:"Row",getSubmenuItems:C("tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops | tablecutrow tablecopyrow tablepasterowbefore tablepasterowafter")};n.ui.registry.addMenuItem("tableinsertcolumnbefore",{text:"Insert column before",icon:"table-insert-column-before",onAction:o("mceTableInsertColBefore"),onSetup:t.onSetupColumn("onFirst")}),n.ui.registry.addMenuItem("tableinsertcolumnafter",{text:"Insert column after",icon:"table-insert-column-after",onAction:o("mceTableInsertColAfter"),onSetup:t.onSetupColumn("onLast")}),n.ui.registry.addMenuItem("tabledeletecolumn",{text:"Delete column",icon:"table-delete-column",onAction:o("mceTableDeleteCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablecutcolumn",{text:"Cut column",icon:"cut-column",onAction:o("mceTableCutCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablecopycolumn",{text:"Copy column",icon:"duplicate-column",onAction:o("mceTableCopyCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablepastecolumnbefore",{text:"Paste column before",icon:"paste-column-before",onAction:o("mceTablePasteColBefore"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onFirst")}),n.ui.registry.addMenuItem("tablepastecolumnafter",{text:"Paste column after",icon:"paste-column-after",onAction:o("mceTablePasteColAfter"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onLast")});var a={type:"nestedmenuitem",text:"Column",getSubmenuItems:C("tableinsertcolumnbefore tableinsertcolumnafter tabledeletecolumn | tablecutcolumn tablecopycolumn tablepastecolumnbefore tablepastecolumnafter")};n.ui.registry.addMenuItem("tablecellprops",{text:"Cell properties",icon:"table-cell-properties",onAction:o("mceTableCellProps"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablemergecells",{text:"Merge cells",icon:"table-merge-cells",onAction:o("mceTableMergeCells"),onSetup:t.onSetupMergeable}),n.ui.registry.addMenuItem("tablesplitcells",{text:"Split cell",icon:"table-split-cells",onAction:o("mceTableSplitCells"),onSetup:t.onSetupUnmergeable});var f={type:"nestedmenuitem",text:"Cell",getSubmenuItems:C("tablecellprops tablemergecells tablesplitcells")};!1===n.getParam("table_grid",!0,"boolean")?n.ui.registry.addMenuItem("inserttable",{text:"Table",icon:"table",onAction:o("mceInsertTable")}):n.ui.registry.addNestedMenuItem("inserttable",{text:"Table",icon:"table",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"inserttable",onAction:u}]}}),n.ui.registry.addMenuItem("inserttabledialog",{text:"Insert table",icon:"table",onAction:o("mceInsertTable")}),n.ui.registry.addMenuItem("tableprops",i),n.ui.registry.addMenuItem("deletetable",c),n.ui.registry.addNestedMenuItem("row",l),n.ui.registry.addNestedMenuItem("column",a),n.ui.registry.addNestedMenuItem("cell",f),n.ui.registry.addContextMenu("table",{update:function(){return t.resetTargets(),t.targets().fold(C(""),function(e){return"caption"===Ge(e.element)?"tableprops deletetable":"cell row column | advtablesort | tableprops deletetable"})}});var s=xf(Zu(n));0!==s.length&&n.ui.registry.addNestedMenuItem("tableclass",{icon:"table-classes",text:"Table styles",getSubmenuItems:function(){return Tf(n,e,s,"tableclass",function(e){return n.execCommand("mceTableToggleClass",!1,e)})},onSetup:t.onSetupTable});var d=xf(Qu(n));0!==d.length&&n.ui.registry.addNestedMenuItem("tablecellclass",{icon:"table-cell-classes",text:"Cell styles",getSubmenuItems:function(){return Tf(n,e,d,"tablecellclass",function(e){return n.execCommand("mceTableCellToggleClass",!1,e)})},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellvalign",{icon:"vertical-align",text:"Vertical align",getSubmenuItems:function(){return Tf(n,e,hf,"tablecellverticalalign",Kc(n,"vertical-align"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellborderwidth",{icon:"border-width",text:"Border width",getSubmenuItems:function(){return Tf(n,e,qu(n),"tablecellborderwidth",Kc(n,"border-width"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellborderstyle",{icon:"border-style",text:"Border style",getSubmenuItems:function(){return Tf(n,e,Uu(n),"tablecellborderstyle",Kc(n,"border-style"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleMenuItem("tablecaption",{icon:"table-caption",text:"Table caption",onAction:o("mceTableToggleCaption"),onSetup:t.onSetupTableWithCaption}),n.ui.registry.addNestedMenuItem("tablecellbackgroundcolor",{icon:"cell-background-color",text:"Background color",getSubmenuItems:function(){return Xc(n,ii(n),"background-color")},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellbordercolor",{icon:"cell-border-color",text:"Border color",getSubmenuItems:function(){return Xc(n,ci(n),"border-color")},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleMenuItem("tablerowheader",{text:"Row header",icon:"table-top-header",onAction:Yc(n),onSetup:t.onSetupTableRowHeaders}),n.ui.registry.addToggleMenuItem("tablecolheader",{text:"Column header",icon:"table-left-header",onAction:Jc(n),onSetup:t.onSetupTableColumnHeaders})}(c,m,g,v),function(n,e,t,r){function o(e){return function(){return n.execCommand(e)}}n.ui.registry.addMenuButton("table",{tooltip:"Table",icon:"table",fetch:function(e){return e("inserttable | cell row column | advtablesort | tableprops deletetable")}}),n.ui.registry.addButton("tableprops",{tooltip:"Table properties",onAction:o("mceTableProps"),icon:"table",onSetup:t.onSetupTable}),n.ui.registry.addButton("tabledelete",{tooltip:"Delete table",onAction:o("mceTableDelete"),icon:"table-delete-table",onSetup:t.onSetupTable}),n.ui.registry.addButton("tablecellprops",{tooltip:"Cell properties",onAction:o("mceTableCellProps"),icon:"table-cell-properties",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablemergecells",{tooltip:"Merge cells",onAction:o("mceTableMergeCells"),icon:"table-merge-cells",onSetup:t.onSetupMergeable}),n.ui.registry.addButton("tablesplitcells",{tooltip:"Split cell",onAction:o("mceTableSplitCells"),icon:"table-split-cells",onSetup:t.onSetupUnmergeable}),n.ui.registry.addButton("tableinsertrowbefore",{tooltip:"Insert row before",onAction:o("mceTableInsertRowBefore"),icon:"table-insert-row-above",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertrowafter",{tooltip:"Insert row after",onAction:o("mceTableInsertRowAfter"),icon:"table-insert-row-after",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tabledeleterow",{tooltip:"Delete row",onAction:o("mceTableDeleteRow"),icon:"table-delete-row",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablerowprops",{tooltip:"Row properties",onAction:o("mceTableRowProps"),icon:"table-row-properties",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolbefore",{tooltip:"Insert column before",onAction:o("mceTableInsertColBefore"),icon:"table-insert-column-before",onSetup:t.onSetupColumn("onFirst")}),n.ui.registry.addButton("tableinsertcolafter",{tooltip:"Insert column after",onAction:o("mceTableInsertColAfter"),icon:"table-insert-column-after",onSetup:t.onSetupColumn("onLast")}),n.ui.registry.addButton("tabledeletecol",{tooltip:"Delete column",onAction:o("mceTableDeleteCol"),icon:"table-delete-column",onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablecutrow",{tooltip:"Cut row",icon:"cut-row",onAction:o("mceTableCutRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablecopyrow",{tooltip:"Copy row",icon:"duplicate-row",onAction:o("mceTableCopyRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowbefore",{tooltip:"Paste row before",icon:"paste-row-before",onAction:o("mceTablePasteRowBefore"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addButton("tablepasterowafter",{tooltip:"Paste row after",icon:"paste-row-after",onAction:o("mceTablePasteRowAfter"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addButton("tablecutcol",{tooltip:"Cut column",icon:"cut-column",onAction:o("mceTableCutCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablecopycol",{tooltip:"Copy column",icon:"duplicate-column",onAction:o("mceTableCopyCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablepastecolbefore",{tooltip:"Paste column before",icon:"paste-column-before",onAction:o("mceTablePasteColBefore"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onFirst")}),n.ui.registry.addButton("tablepastecolafter",{tooltip:"Paste column after",icon:"paste-column-after",onAction:o("mceTablePasteColAfter"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onLast")}),n.ui.registry.addButton("tableinsertdialog",{tooltip:"Insert table",onAction:o("mceInsertTable"),icon:"table"});var u=xf(Zu(n));0!==u.length&&n.ui.registry.addMenuButton("tableclass",{icon:"table-classes",tooltip:"Table styles",fetch:Gc(n,e,u,"tableclass",function(e){return n.execCommand("mceTableToggleClass",!1,e)}),onSetup:t.onSetupTable});var i=xf(Qu(n));0!==i.length&&n.ui.registry.addMenuButton("tablecellclass",{icon:"table-cell-classes",tooltip:"Cell styles",fetch:Gc(n,e,i,"tablecellclass",function(e){return n.execCommand("mceTableCellToggleClass",!1,e)}),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellvalign",{icon:"vertical-align",tooltip:"Vertical align",fetch:Gc(n,e,hf,"tablecellverticalalign",Kc(n,"vertical-align")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellborderwidth",{icon:"border-width",tooltip:"Border width",fetch:Gc(n,e,qu(n),"tablecellborderwidth",Kc(n,"border-width")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellborderstyle",{icon:"border-style",tooltip:"Border style",fetch:Gc(n,e,Uu(n),"tablecellborderstyle",Kc(n,"border-style")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleButton("tablecaption",{tooltip:"Table caption",onAction:o("mceTableToggleCaption"),icon:"table-caption",onSetup:t.onSetupTableWithCaption}),n.ui.registry.addMenuButton("tablecellbackgroundcolor",{icon:"cell-background-color",tooltip:"Background color",fetch:function(e){return e(Xc(n,ii(n),"background-color"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellbordercolor",{icon:"cell-border-color",tooltip:"Border color",fetch:function(e){return e(Xc(n,ci(n),"border-color"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleButton("tablerowheader",{tooltip:"Row header",icon:"table-top-header",onAction:Yc(n),onSetup:t.onSetupTableRowHeaders}),n.ui.registry.addToggleButton("tablecolheader",{tooltip:"Column header",icon:"table-left-header",onAction:Jc(n),onSetup:t.onSetupTableColumnHeaders})}(c,m,g,v),0<(l=(i=c).getParam("table_toolbar","tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol")).length&&i.ui.registry.addContextToolbar("table",{predicate:function(e){return i.dom.is(e,"table")&&i.getBody().contains(e)},items:l,scope:"node",position:"node"}),c.on("PreInit",function(){c.serializer.addTempAttr(Vl.firstSelected),c.serializer.addTempAttr(Vl.lastSelected),c.formatter.register(Ef)}),c.getParam("table_tab_navigation",!0,"boolean")&&c.on("keydown",function(e){var n,t,r,o,u=c,i=b;(n=e).keyCode===Vs.TAB&&(t=Vo(u),r=function(e){var n=Ge(e);return ue(e,t)||y(Us,n)},o=u.selection.getRng(),Zn(Fe.fromDom(n.shiftKey?o.startContainer:o.endContainer),r).each(function(e){n.preventDefault(),tt(e,r).each(i.clear),u.selection.collapse(n.shiftKey),(n.shiftKey?function(e,n,t){return qs(e,n,(o=Iu,pl(r=t,void 0).fold(function(){return Nf.none()},function(e){return zf(e.all,r,e.index,-1,o)})));var r,o}:as)(u,r,e).each(function(e){u.selection.setRng(e)})}))}),c.on("remove",function(){p.destroy()}),{insertTable:(u=c,function(e,n,t){var r=Mc(u,n,e,t=void 0===t?{}:t,"Invalid values for insertTable - rows and columns values are required to insert a table.");return u.undoManager.add(),r}),setClipboardRows:Pc(v.setRows),getClipboardRows:Ec(v.getRows),setClipboardCols:Pc(v.setColumns),getClipboardCols:Ec(v.getColumns),resizeHandler:p,selectionTargets:g};function w(r){return Ul(Jo(a)).bind(function(t){return tt(t,d).map(function(e){var n=Zo(s,e,t);return r(e,n)})}).getOr("")}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/template/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/template/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fc6132e8d3700314b8bb46e1e6997b9e57404fb
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/template/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function o(e){return function(){return e}}function e(e){return e}function i(e){return n=typeof(t=e),"string"==(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n);var t,n}var t,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return typeof e===t};function s(e){return e.getParam("template_mdate_classes","mdate")}function l(e){return e.getParam("template_replace_values")}function m(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))}function f(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function p(e,t,n){void 0===n&&(n=new Date);var r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),a="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),o="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),c="January February March April May June July August September October November December".split(" ");return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",f(n.getMonth()+1,2))).replace("%d",f(n.getDate(),2))).replace("%H",""+f(n.getHours(),2))).replace("%M",""+f(n.getMinutes(),2))).replace("%S",""+f(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(c[n.getMonth()]))).replace("%b",""+e.translate(o[n.getMonth()]))).replace("%A",""+e.translate(a[n.getDay()]))).replace("%a",""+e.translate(r[n.getDay()]))).replace("%%","%")}function x(n,e){return O.each(e,function(e,t){u(e)&&(e=e(t)),n=n.replace(new RegExp("\\{\\$"+t+"\\}","g"),e)}),n}function d(e,t){var r=e.dom,a=l(e);O.each(r.select("*",t),function(n){O.each(a,function(e,t){r.hasClass(n,t)&&u(e)&&e(n)})})}function g(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}function y(t,e,n){var r=t.dom,a=t.selection.getContent();n=x(n,l(t));var o=r.create("div",null,n),c=r.select(".mceTmpl",o);c&&0<c.length&&(o=r.create("div",null)).appendChild(c[0].cloneNode(!0)),O.each(r.select("*",o),function(e){g(e,t.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(e.innerHTML=p(t,t.getParam("template_cdate_format",t.translate("%Y-%m-%d")))),g(e,s(t).replace(/\s+/g,"|"))&&(e.innerHTML=p(t,m(t))),g(e,t.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(e.innerHTML=a)}),d(t,o),t.execCommand("mceInsertContent",!1,o.innerHTML),t.addVisual()}function r(){return b}var c=o(!(t="function")),v=o(!0),O=tinymce.util.Tools.resolve("tinymce.util.Tools"),h=tinymce.util.Tools.resolve("tinymce.util.XHR"),b={fold:function(e,t){return e()},isSome:c,isNone:v,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:r,each:function(){},bind:r,exists:c,forall:v,filter:function(){return b},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function T(M,t){function l(e,t){return function(e,t,n){for(var r=0,a=e.length;r<a;r++){var o=e[r];if(t(o,r))return P.some(o);if(n(o,r))break}return P.none()}(e,function(e){return e.text===t},c)}function i(e){M.windowManager.alert("Could not load the specified template.",function(){return e.focus("template")})}function u(e){return new _(function(t,n){e.value.url.fold(function(){return t(e.value.content.getOr(""))},function(e){return h.send({url:e,success:function(e){t(e)},error:function(e){n(e)}})})})}!function(){if(t&&0!==t.length)return P.from(O.map(t,function(e,t){function n(e){return void 0!==e.url}return{selected:0===t,text:e.title,value:{url:n(e)?P.from(e.url):P.none(),content:n(e)?P.none():P.from(e.content),description:e.description}}}));var e=M.translate("No templates defined.");return M.notificationManager.open({text:e,type:"info"}),P.none()}().each(function(o){function b(e,t){return{title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:t,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(t){var e=t.getData();l(n,e.template).each(function(e){u(e).then(function(e){M.execCommand("mceInsertTemplate",!1,e),t.close()}).catch(function(){t.disable("save"),i(t)})})},onChange:(r=n=o,a=c,function(n,e){var t;"template"===e.name&&(t=n.getData().template,l(r,t).each(function(t){n.block("Loading..."),u(t).then(function(e){a(n,t,e)}).catch(function(){a(n,t,""),n.disable("save"),i(n)})}))})};var r,a,n}var T=function(e){for(var t=e.length,n=new Array(t),r=0;r<t;r++){var a=e[r];n[r]={text:a.text,value:a.text}}return n}(o),c=function(e,t,n){var r,a,o,c,l,i,u,s,m,f,p,d,g,y=(r=M,-1===(a=n).indexOf("<html>")&&(o="",c=r.getParam("content_style","","string"),l=r.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"",O.each(r.contentCSS,function(e){o+='<link type="text/css" rel="stylesheet" href="'+r.documentBaseURI.toAbsolute(e)+'"'+l+">"}),c&&(o+='<style type="text/css">'+c+"</style>"),i=-1===(g=(p=r).getParam("body_class","","string")).indexOf("=")?g:(d=p).getParam("body_class","","hash")[d.id]||"",u=r.dom.encode,s='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(S.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",f=(m=r.getBody().dir)?' dir="'+u(m)+'"':"",a='<!DOCTYPE html><html><head><base href="'+u(r.documentBaseURI.getURI())+'">'+o+s+'</head><body class="'+u(i)+'"'+f+">"+a+"</body></html>"),x(a,r.getParam("template_preview_replace_values"))),v=[{type:"selectbox",name:"template",label:"Templates",items:T},{type:"htmlpanel",html:'<p aria-live="polite">'+t.value.description.replace(/["'<>&]/g,function(e){return(C(t=A,n=e)?P.from(t[n]):P.none()).getOr(e);var t,n})+"</p>"},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1}],h={template:t.text,preview:y};e.unblock(),e.redial(b(v,h)),e.focus("template")},t=M.windowManager.open(b([],{template:"",preview:""}));t.block("Loading..."),u(o[0]).then(function(e){c(t,o[0],e)}).catch(function(){c(t,o[0],""),t.disable("save"),i(t)})})}var M=function(n){function e(){return a}function t(e){return e(n)}var r=o(n),a={fold:function(e,t){return t(n)},isSome:v,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return M(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:b},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},P={some:M,none:r,from:function(e){return null==e?b:M(e)}},S=tinymce.util.Tools.resolve("tinymce.Env"),_=tinymce.util.Tools.resolve("tinymce.util.Promise"),w=Object.hasOwnProperty,C=function(e,t){return w.call(e,t)},A={'"':"&quot;","<":"&lt;",">":"&gt;","&":"&amp;","'":"&#039;"};n.add("template",function(e){function t(){return n.execCommand("mceTemplate")}var n,r,a,o,c,l;(n=e).ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onAction:t}),n.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onAction:t}),(a=e).addCommand("mceInsertTemplate",function(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}(y,a)),a.addCommand("mceTemplate",(l=o=a,c=function(e){T(l,e)},function(){var e=o.getParam("templates");u(e)?e(c):i(e)?h.send({url:e,success:function(e){c(JSON.parse(e))}}):c(e)})),(r=e).on("PreProcess",function(e){var t=r.dom,n=m(r);O.each(t.select("div",e.node),function(e){t.hasClass(e,"mceTmpl")&&(O.each(t.select("*",e),function(e){t.hasClass(e,s(r).replace(/\s+/g,"|"))&&(e.innerHTML=p(r,n))}),d(r,e))})})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/textcolor/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/textcolor/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..83b2f10d0072520ad785c81d1e244d006d5102dc
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/textcolor/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("textcolor",function(){console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/textpattern/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/textpattern/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..78ad6a974b85771dc65925a93091091d482addb1
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/textpattern/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(){return(u=Object.assign||function(t){for(var n,r=1,e=arguments.length;r<e;r++)for(var o in n=arguments[r])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)};function a(t,n,r){if(r||2===arguments.length)for(var e,o=0,a=n.length;o<a;o++)!e&&o in n||((e=e||Array.prototype.slice.call(n,0,o))[o]=n[o]);return t.concat(e||Array.prototype.slice.call(n))}function n(e){return function(t){return r=typeof(n=t),(null===n?"null":"object"==r&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":r)===e;var n,r}}function e(){}function i(t){return function(){return t}}function o(t){return t}function r(){return m}var f=n("string"),c=n("object"),s=n("array"),l=i(!1),d=i(!0),m={fold:function(t,n){return t()},isSome:l,isNone:d,getOr:o,getOrThunk:g,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:o,orThunk:g,map:r,each:e,bind:r,exists:l,forall:d,filter:function(){return m},toArray:function(){return[]},toString:i("none()")};function g(t){return t()}function p(t,n){return-1<E.call(t,n)}function h(t,n){for(var r=t.length,e=new Array(r),o=0;o<r;o++){var a=t[o];e[o]=n(a,o)}return e}function v(t,n){for(var r=0,e=t.length;r<e;r++)n(t[r],r)}function y(t,n){for(var r=[],e=0,o=t.length;e<o;e++){var a=t[e];n(a,e)&&r.push(a)}return r}function b(t,e,o){return function(t){for(var n,r=t.length-1;0<=r;r--)n=t[r],o=e(o,n,r)}(t),o}function k(t,n){for(var r=0,e=t.length;r<e;++r)if(!0!==n(t[r],r))return;return 1}var O=function(r){function t(){return o}function n(t){return t(r)}var e=i(r),o={fold:function(t,n){return n(r)},isSome:d,isNone:l,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(t){return O(t(r))},each:function(t){t(r)},bind:n,exists:n,forall:n,filter:function(t){return t(r)?o:m},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return o},w={some:O,none:r,from:function(t){return null==t?m:O(t)}},C=Array.prototype.slice,E=Array.prototype.indexOf,x=Object.keys,R=Object.hasOwnProperty;function T(t){var n=[],r=[];return v(t,function(t){t.fold(function(t){n.push(t)},function(t){r.push(t)})}),{errors:n,values:r}}function P(t){return"inline-command"===t.type||"inline-format"===t.type}function N(t){return"block-command"===t.type||"block-format"===t.type}function S(o){function a(t){return ut.error({message:t,pattern:o})}function t(t,n,r){if(void 0===o.format)return void 0!==o.cmd?f(o.cmd)?ut.value(r(o.cmd,o.value)):a(t+" pattern has non-string `cmd` parameter"):a(t+" pattern is missing both `format` and `cmd` parameters");var e=void 0;if(s(o.format)){if(!k(o.format,f))return a(t+" pattern has non-string items in the `format` array");e=o.format}else{if(!f(o.format))return a(t+" pattern has non-string `format` parameter");e=[o.format]}return ut.value(n(e))}if(!c(o))return a("Raw pattern is not an object");if(!f(o.start))return a("Raw pattern is missing `start` parameter");if(void 0===o.end)return void 0!==o.replacement?f(o.replacement)?0===o.start.length?a("Replacement pattern has empty `start` parameter"):ut.value({type:"inline-command",start:"",end:o.start,cmd:"mceInsertContent",value:o.replacement}):a("Replacement pattern has non-string `replacement` parameter"):0===o.start.length?a("Block pattern has empty `start` parameter"):t("Block",function(t){return{type:"block-format",start:o.start,format:t[0]}},function(t,n){return{type:"block-command",start:o.start,cmd:t,value:n}});if(!f(o.end))return a("Inline pattern has non-string `end` parameter");if(0===o.start.length&&0===o.end.length)return a("Inline pattern has empty `start` and `end` parameters");var r=o.start,e=o.end;return 0===e.length&&(e=r,r=""),t("Inline",function(t){return{type:"inline-format",start:r,end:e,format:t}},function(t,n){return{type:"inline-command",start:r,end:e,cmd:t,value:n}})}function M(t){return"block-command"===t.type?{start:t.start,cmd:t.cmd,value:t.value}:"block-format"===t.type?{start:t.start,format:t.format}:"inline-command"===t.type?"mceInsertContent"===t.cmd&&""===t.start?{start:t.end,replacement:t.value}:{start:t.start,end:t.end,cmd:t.cmd,value:t.value}:"inline-format"===t.type?{start:t.start,end:t.end,format:1===t.format.length?t.format[0]:t.format}:void 0}function A(t){return{inlinePatterns:y(t,P),blockPatterns:(n=y(t,N),r=function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1},(e=C.call(n,0)).sort(r),e)};var n,r,e}function B(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=ft.console;r&&(r.error||r.log).apply(r,t)}function D(t){var n=t.getParam("forced_root_block","p");return!1===n?"":!0===n?"p":n}function I(t,n){return{container:t,offset:n}}function j(t){return t.nodeType===Node.TEXT_NODE}function _(t,n,r,e){void 0===e&&(e=!0);var o=n.startContainer.parentNode,a=n.endContainer.parentNode;n.deleteContents(),e&&!r(n.startContainer)&&(j(n.startContainer)&&0===n.startContainer.data.length&&t.remove(n.startContainer),j(n.endContainer)&&0===n.endContainer.data.length&&t.remove(n.endContainer),pt(t,o,r),o!==a&&pt(t,a,r))}function U(t,n){var r,e=n.get(t);return s(e)&&(0<(r=e).length?w.some(r[0]):w.none()).exists(function(t){return R.call(t,"block")})}function L(t){return 0===t.start.length}function V(t,n){var r=w.from(t.dom.getParent(n.startContainer,t.dom.isBlock));return""===D(t)?r.orThunk(function(){return w.some(t.getBody())}):r}function W(n){return function(t){return n===t?-1:0}}function q(t,n,r){if(j(t)&&0<=n)return w.some(I(t,n));var e=gt(ht);return w.from(e.backwards(t,n,W(t),r)).map(function(t){return I(t.container,t.container.data.length)})}function F(t,n,r){if(j(n)&&(r<0||r>n.data.length))return[];for(var e=[r],o=n;o!==t&&o.parentNode;){for(var a=o.parentNode,i=0;i<a.childNodes.length;i++)if(a.childNodes[i]===o){e.push(i);break}o=a}return o===t?e.reverse():[]}function G(t,n,r,e,o){return{start:F(t,n,r),end:F(t,e,o)}}function H(t,n){var r=n.slice(),e=r.pop(),o=r,a=function(t,n){return t.bind(function(t){return w.from(t.childNodes[n])})},i=w.some(t);return v(o,function(t,n){i=a(i,t)}),i.bind(function(t){return j(t)&&(e<0||e>t.data.length)?w.none():w.some({node:t,offset:e})})}function J(n,r){return H(n,r.start).bind(function(t){var o=t.node,a=t.offset;return H(n,r.end).map(function(t){var n=t.node,r=t.offset,e=document.createRange();return e.setStart(o,a),e.setEnd(n,r),e})})}function K(e,o,n){!function(t,n){if(j(t)&&t.length<=0)return w.some(I(t,0));var r=gt(ht);return w.from(r.forwards(t,0,W(t),n)).map(function(t){return I(t.container,0)})}(o,o).each(function(t){var r=t.container;yt(r,n.start.length,o).each(function(t){var n=e.createRng();n.setStart(r,0),n.setEnd(t.container,t.offset),_(e,n,function(t){return t===o})})})}function X(e,a){var i=e.dom,t=e.selection.getRng();return V(e,t).filter(function(t){var n=D(e),r=""===n&&i.is(t,"body")||i.is(t,n);return null!==t&&r}).bind(function(n){var r,e=n.textContent,t=a,o=(r=e).replace("\xa0"," ");return function(t,n,r){for(var e=0,o=t.length;e<o;e++){var a=t[e];if(n(a,e))return w.some(a);if(r(a,e))break}return w.none()}(t,function(t){return 0===r.indexOf(t.start)||0===o.indexOf(t.start)},l).map(function(t){return dt.trim(e).length===t.start.length?[]:[{pattern:t,range:G(i.getRoot(),n,0,n,0)}]})}).getOr([])}function z(t,n){return t.create("span",{"data-mce-type":"bookmark",id:n})}function Q(t,n){var r=t.createRng();return r.setStartAfter(n.start),r.setEndBefore(n.end),r}function Y(t,n,r){var e=J(t.getRoot(),r).getOrDie("Unable to resolve path range"),o=e.startContainer,a=e.endContainer,i=0===e.endOffset?a:a.splitText(e.endOffset),u=0===e.startOffset?o:o.splitText(e.startOffset);return{prefix:n,end:i.parentNode.insertBefore(z(t,n+"-end"),i),start:u.parentNode.insertBefore(z(t,n+"-start"),u)}}function Z(t,n,r){pt(t,t.get(n.prefix+"-end"),r),pt(t,t.get(n.prefix+"-start"),r)}function $(n,t,r){n.selection.setRng(r),"inline-format"===t.type?v(t.format,function(t){n.formatter.apply(t)}):n.execCommand(t.cmd,!1,t.value)}function tt(r,e,o){var a=r.selection.getRng();return!1===a.collapsed?[]:V(r,a).bind(function(t){var n=a.startOffset-(o?1:0);return Ot(r,e,a.startContainer,n,t)}).fold(function(){return[]},function(t){return t.matches})}function nt(p,t){var h,n,o,r,e,a,i;0!==t.length&&(h=p.dom,n=p.selection.getBookmark(),o=h,r=t,e=(new Date).getTime(),a="mce_textpattern_"+Math.floor(1e9*Math.random())+ ++bt+String(e),i=b(r,function(t,n){var r=Y(o,a+"_end"+t.length,n.endRng);return t.concat([u(u({},n),{endMarker:r})])},[]),v(b(i,function(t,n){var r=i.length-t.length-1,e=L(n.pattern)?n.endMarker:Y(o,a+"_start"+r,n.startRng);return t.concat([u(u({},n),{startMarker:e})])},[]),function(t){function n(t){return t===g}var r,e,o,a,i,u,f,c,s,l,d,m,g=h.getParent(t.startMarker.start,h.isBlock);L(t.pattern)?(e=t.pattern,o=t.endMarker,a=n,i=Q((r=p).dom,o),_(r.dom,i,a),$(r,e,i)):(u=p,f=t.pattern,c=t.startMarker,s=t.endMarker,l=n,d=u.dom,m=Q(d,s),_(d,Q(d,c),l),_(d,m,l),$(u,f,Q(d,{prefix:c.prefix,start:c.end,end:s.start}))),Z(h,t.endMarker,n),Z(h,t.startMarker,n)}),p.selection.moveToBookmark(n))}function rt(t,n){var r=tt(t,n.inlinePatterns,!0);0<r.length&&t.undoManager.transact(function(){nt(t,r)})}function et(t,n,r){for(var e=0;e<t.length;e++)if(r(t[e],n))return 1}function ot(n,r){var e=[",",".",";",":","!","?"],o=[32];n.on("keydown",function(t){13!==t.keyCode||lt.modifierPressed(t)||!function(o,t){if(o.selection.isCollapsed()){var a=tt(o,t.inlinePatterns,!1),u=X(o,t.blockPatterns);return(0<u.length||0<a.length)&&(o.undoManager.add(),o.undoManager.extra(function(){o.execCommand("mceInsertNewLine")},function(){var i,t,n;o.insertContent("\ufeff"),nt(o,a),i=o,0!==(t=u).length&&(n=i.selection.getBookmark(),v(t,function(t){return e=(n=i).dom,o=(r=t).pattern,a=J(e.getRoot(),r.range).getOrDie("Unable to resolve path range"),V(n,a).each(function(t){"block-format"===o.type?U(o.format,n.formatter)&&n.undoManager.transact(function(){K(n.dom,t,o),n.formatter.apply(o.format)}):"block-command"===o.type&&n.undoManager.transact(function(){K(n.dom,t,o),n.execCommand(o.cmd,!1,o.value)})}),1;var n,r,e,o,a}),i.selection.moveToBookmark(n));var r=o.selection.getRng(),e=q(r.startContainer,r.startOffset,o.dom.getRoot());o.execCommand("mceInsertNewLine"),e.each(function(t){var n=t.container;"\ufeff"===n.data.charAt(t.offset-1)&&(n.deleteData(t.offset-1,1),pt(o.dom,n.parentNode,function(t){return t===o.dom.getRoot()}))})}),1)}}(n,r.get())||t.preventDefault()},!0),n.on("keyup",function(t){et(o,t,function(t,n){return t===n.keyCode&&!1===lt.modifierPressed(n)})&&rt(n,r.get())}),n.on("keypress",function(t){et(e,t,function(t,n){return t.charCodeAt(0)===n.charCode})&&st.setEditorTimeout(n,function(){rt(n,r.get())})})}!function(i){if(!s(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var u=[],r={};v(i,function(t,e){var n=x(t);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],a=t[o];if(void 0!==r[o])throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!s(a))throw new Error("case arguments must be an array");u.push(o),r[o]=function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];var n=r.length;if(n!==a.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+a.length+" ("+a+"), got "+n);return{fold:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(t.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+t.length);return t[e].apply(null,r)},match:function(t){var n=x(t);if(u.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+n.join(","));if(!k(u,function(t){return p(n,t)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+u.join(", "));return t[o].apply(null,r)},log:function(t){console.log(t,{constructors:u,constructor:o,params:r})}}}})}([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var at=function(r){return{isValue:d,isError:l,getOr:i(r),getOrThunk:i(r),getOrDie:i(r),or:function(t){return at(r)},orThunk:function(t){return at(r)},fold:function(t,n){return n(r)},map:function(t){return at(t(r))},mapError:function(t){return at(r)},each:function(t){t(r)},bind:function(t){return t(r)},exists:function(t){return t(r)},forall:function(t){return t(r)},toOptional:function(){return w.some(r)}}},it=function(r){return{isValue:l,isError:d,getOr:o,getOrThunk:function(t){return t()},getOrDie:function(){return t=String(r),function(){throw new Error(t)}();var t},or:o,orThunk:function(t){return t()},fold:function(t,n){return t(r)},map:function(t){return it(r)},mapError:function(t){return it(t(r))},each:e,bind:function(t){return it(r)},exists:l,forall:d,toOptional:w.none}},ut={value:at,error:it,fromOption:function(t,n){return t.fold(function(){return it(n)},at)}},ft="undefined"!=typeof window?window:Function("return this;")(),ct=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],st=tinymce.util.Tools.resolve("tinymce.util.Delay"),lt=tinymce.util.Tools.resolve("tinymce.util.VK"),dt=tinymce.util.Tools.resolve("tinymce.util.Tools"),mt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),gt=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker"),pt=function(t,n,r){var e;n&&t.isEmpty(n)&&!r(n)&&(e=n.parentNode,t.remove(n),pt(t,e,r))},ht=mt.DOM,vt=function(t,r,e){if(!j(t))return w.none();var n=t.textContent;if(0<=r&&r<=n.length)return w.some(I(t,r));var o=gt(ht);return w.from(o.backwards(t,r,W(t),e)).bind(function(t){var n=t.container.data;return vt(t.container,r+n.length,e)})},yt=function(t,n,r){if(!j(t))return w.none();var e=t.textContent;if(n<=e.length)return w.some(I(t,n));var o=gt(ht);return w.from(o.forwards(t,n,W(t),r)).bind(function(t){return yt(t.container,n-e.length,r)})},bt=0,kt=function(e,o,a,t){var i,n,r,u,f,c,s,l=o.start;return n=t.container,r=t.offset,i=l,u=function(t,n){var r=t.data.substring(0,n),e=r.lastIndexOf(i.charAt(i.length-1)),o=r.lastIndexOf(i);return-1!==o?o+i.length:-1!==e?e+1:-1},f=a,s=gt(e,(c=e,function(t){return c.isBlock(t)||p(["BR","IMG","HR","INPUT"],t.nodeName)||"false"===c.getContentEditable(t)})),w.from(s.backwards(n,r,u,f)).bind(function(r){if(r.offset>=l.length){var t=e.createRng();return t.setStart(r.container,r.offset-l.length),t.setEnd(r.container,r.offset),w.some(t)}var n=r.offset-l.length;return vt(r.container,n,a).map(function(t){var n=e.createRng();return n.setStart(t.container,t.offset),n.setEnd(r.container,r.offset),n}).filter(function(t){return t.toString()===l}).orThunk(function(){return kt(e,o,a,I(r.container,0))})})},Ot=function(l,d,m,g,p){var h=l.dom;return q(m,g,h.getRoot()).bind(function(t){var n=h.createRng();n.setStart(p,0),n.setEnd(m,g);for(var r,e=n.toString(),o=0;o<d.length;o++){var a,i,u=d[o],f=u.end;i=r=void 0;if(a=(r=e).length-f.length,""===(i=f)||r.length>=i.length&&r.substr(a,a+i.length)===i){var c=d.slice();c.splice(o,1);var s=function(a,i,u){var f=a.dom,c=f.getRoot(),s=u.pattern,l=u.position.container,d=u.position.offset;return vt(l,d-u.pattern.end.length,i).bind(function(t){var r=G(c,t.container,t.offset,l,d);if(L(s))return w.some({matches:[{pattern:s,startRng:r,endRng:r}],position:t});var n=Ot(a,u.remainingPatterns,t.container,t.offset,i),e=n.getOr({matches:[],position:t}),o=e.position;return function(t,r,n,e,o,a){if(void 0===a&&(a=!1),0!==r.start.length||a)return q(n,e,o).bind(function(n){return kt(t,r,o,n).bind(function(t){if(a){if(t.endContainer===n.container&&t.endOffset===n.offset)return w.none();if(0===n.offset&&t.endContainer.textContent.length===t.endOffset)return w.none()}return w.some(t)})});var i=t.createRng();return i.setStart(n,e),i.setEnd(n,e),w.some(i)}(f,s,o.container,o.offset,i,n.isNone()).map(function(t){var n=G(c,t.startContainer,t.startOffset,t.endContainer,t.endOffset);return{matches:e.matches.concat([{pattern:s,startRng:n,endRng:r}]),position:I(t.startContainer,t.startOffset)}})})}(l,p,{pattern:u,remainingPatterns:c,position:t});if(s.isSome())return s}}return w.none()})};t.add("textpattern",function(r){var t,n,e,o=(t=function(){var t=r.getParam("textpattern_patterns",ct,"array");if(!s(t))return B("The setting textpattern_patterns should be an array"),{inlinePatterns:[],blockPatterns:[]};var n=T(h(t,S));return v(n.errors,function(t){return B(t.message,t.pattern),0}),A(n.values)}(),n=t,{get:function(){return n},set:function(t){n=t}});return ot(r,o),e=o,{setPatterns:function(t){var n=T(h(t,S));if(0<n.errors.length){var r=n.errors[0];throw new Error(r.message+":\n"+JSON.stringify(r.pattern,null,2))}e.set(A(n.values))},getPatterns:function(){return a(a([],h(e.get().inlinePatterns,M)),h(e.get().blockPatterns,M))}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/toc/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/toc/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..813f65419ccddaff4b1c1a0acbdb43adc8e176c0
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/toc/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function a(t){return t.getParam("toc_class","mce-toc")}function s(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"}function u(n){return function(t){function e(){return t.setDisabled(n.mode.isReadOnly()||!(0<g(n).length))}return e(),n.on("LoadContent SetContent change",e),function(){return n.on("LoadContent SetContent change",e)}}}function d(t){var e,n,o,r="",i=g(t),c=function(t){for(var e=9,n=0;n<t.length;n++)if(1===(e=t[n].level<e?t[n].level:e))return e;return e}(i)-1;if(!i.length)return"";r+=(e=s(t),n=v.translate("Table of Contents"),o="</"+e+">","<"+e+' contenteditable="true">'+m.DOM.encode(n)+o);for(var l=0;l<i.length;l++){var a=i[l];a.element.id=a.id;var u=i[l+1]&&i[l+1].level;if(c===a.level)r+="<li>";else for(var d=c;d<a.level;d++)r+="<ul><li>";if(r+='<a href="#'+a.id+'">'+a.title+"</a>",u!==a.level&&u)for(d=a.level;u<d;d--)r+="</li></ul><li>";else r+="</li>",u||(r+="</ul>");c=a.level}return r}function f(t){var e=a(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(d(t))})}var t,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),v=tinymce.util.Tools.resolve("tinymce.util.I18n"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=(t=0,function(){return"mcetoc_"+(new Date).getTime().toString(32)+(t++).toString(32)}),g=function(n){var t,o=a(n),e=s(n),r=function(t){for(var e=[],n=1;n<=t;n++)e.push("h"+n);return e.join(",")}(1<=(t=parseInt(n.getParam("toc_depth","3"),10))&&t<=9?t:3),i=n.$(r);return i.length&&/^h[1-9]$/i.test(e)&&(i=i.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),c.map(i,function(t){return{id:t.id||l(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})};e.add("toc",function(t){var c,e,n,o,r,i;function l(){return r.execCommand("mceInsertToc")}(c=t).addCommand("mceInsertToc",function(){var t,e,n,o,r,i;o=a(t=c),r=t.$("."+o),i=t,!r.length||0<i.dom.getParents(r[0],".mce-offscreen-selection").length?t.insertContent((n=d(e=t),'<div class="'+e.dom.encode(a(e))+'" contenteditable="false">'+n+"</div>")):f(t)}),c.addCommand("mceUpdateToc",function(){f(c)}),(r=t).ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:l,onSetup:u(r)}),r.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return r.execCommand("mceUpdateToc")}}),r.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:l,onSetup:u(r)}),r.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:(i=r,function(t){return t&&i.dom.is(t,"."+a(i))&&i.getBody().contains(t)}),scope:"node",position:"node"}),n=(e=t).$,o=a(e),e.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),e.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a725c2169b1077c292921eaf8350c95f4136e27
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function f(t,o,e){var n,i;t.dom.toggleClass(t.getBody(),"mce-visualblocks"),e.set(!e.get()),n=t,i=e.get(),n.fire("VisualBlocks",{state:i})}function g(e,n){return function(o){function t(t){return o.setActive(t.state)}return o.setActive(n.get()),e.on("VisualBlocks",t),function(){return e.off("VisualBlocks",t)}}}tinymce.util.Tools.resolve("tinymce.PluginManager").add("visualblocks",function(t,o){var e,n,i,s,c,u,l,a=(e=!1,{get:function(){return e},set:function(t){e=t}});function r(){return s.execCommand("mceVisualBlocks")}i=a,(n=t).addCommand("mceVisualBlocks",function(){f(n,0,i)}),(s=t).ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:r,onSetup:g(s,c=a)}),s.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",icon:"visualblocks",onAction:r,onSetup:g(s,c)}),l=a,(u=t).on("PreviewFormats AfterPreviewFormats",function(t){l.get()&&u.dom.toggleClass(u.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),u.on("init",function(){u.getParam("visualblocks_default_state",!1,"boolean")&&f(u,0,l)})})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/visualchars/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/visualchars/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..5527e0ab7c021279bee419b425f80e5776a20aa8
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/visualchars/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function n(t){return function(n){return typeof n===t}}function i(n){return function(){return n}}function t(n){return n}function e(){return l}var o,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(n){return e=typeof(t=n),(null===t?"null":"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e)===o;var t,e},c=n("boolean"),a=n("number"),s=i(!(o="string")),f=i(!0),l={fold:function(n,t){return n()},isSome:s,isNone:f,getOr:t,getOrThunk:d,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:d,map:e,each:function(){},bind:e,exists:s,forall:f,filter:function(){return l},toArray:function(){return[]},toString:i("none()")};function d(n){return n()}function m(n,t){for(var e=0,o=n.length;e<o;e++)t(n[e],e)}function v(n,t){for(var e=h(n),o=0,r=e.length;o<r;o++){var i=e[o];t(n[i],i)}}var g=function(e){function n(){return r}function t(n){return n(e)}var o=i(e),r={fold:function(n,t){return t(e)},isSome:f,isNone:s,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return g(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?r:l},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},h=Object.keys;function p(n){return n.dom.nodeValue}function y(n,t,e){!function(n,t,e){if(!(u(e)||c(e)||a(e)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",e,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,e+"")}(n.dom,t,e)}function b(n,t){n.dom.removeAttribute(t)}function w(n,t){var e,o=null===(e=n.dom.getAttribute(t))?void 0:e;return void 0===o||""===o?[]:o.split(" ")}function T(n){return void 0!==n.dom.classList}function k(n,t){return i=t,0<(o=function(n){for(var t=[],e=0,o=n.length;e<o;e++){var r=n[e];r!==i&&t.push(r)}return t}(w(e=n,"class"))).length?y(e,"class",o.join(" ")):b(e,"class"),0;var e,i,o}function N(n,t){var e="";return v(n,function(n,t){e+=t}),new RegExp("["+e+"]",t?"g":"")}function A(n){return'<span data-mce-bogus="1" class="mce-'+H[n]+'">'+n+"</span>"}function O(n){var t=p(n);return j(n)&&void 0!==t&&_.test(t)}function C(n){return"span"===n.nodeName.toLowerCase()&&n.classList.contains("mce-nbsp-wrap")}function S(f,n){m(K(M.fromDom(n),O),function(n){var t,e,o,r,i,u=n.dom.parentNode;if(C(u))t=M.fromDom(u),e=U,T(t)?t.dom.classList.add(e):(r=e,i=w(o=t,"class").concat([r]),y(o,"class",i.join(" ")));else{for(var c,a=f.dom.encode(p(n)).replace(F,A),s=f.dom.create("div",null,a);c=s.lastChild;)f.dom.insertAfter(c,n.dom);f.dom.remove(n.dom)}})}function D(r,n){m(r.dom.select(I,n),function(n){var t,e,o;C(n)?(t=M.fromDom(n),e=U,T(t)?t.dom.classList.remove(e):k(t,e),0===(T(o=t)?o.dom.classList:w(o,"class")).length&&b(o,"class")):r.dom.remove(n,!0)})}function E(n){var t=n.getBody(),e=n.selection.getBookmark(),o=function(n,t){for(;n.parentNode;){if(n.parentNode===t)return n;n=n.parentNode}}(n.selection.getNode(),t);D(n,o=void 0!==o?o:t),S(n,o),n.selection.moveToBookmark(e)}function L(n,t){var e=n,o=t.get();e.fire("VisualChars",{state:o});var r=n.getBody();(!0===t.get()?S:D)(n,r)}function x(n,t){n.addCommand("mceVisualChars",function(){!function(n,t){t.set(!t.get());var e=n.selection.getBookmark();L(n,t),n.selection.moveToBookmark(e)}(n,t)})}function B(e,o){return function(t){function n(n){return t.setActive(n.state)}return t.setActive(o.get()),e.on("VisualChars",n),function(){return e.off("VisualChars",n)}}}"undefined"!=typeof window||Function("return this;")();function P(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var V,j=function(n){return 3===n.dom.nodeType},M={fromHtml:function(n,t){var e=(t||document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return P(e.childNodes[0])},fromTag:function(n,t){var e=(t||document).createElement(n);return P(e)},fromText:function(n,t){var e=(t||document).createTextNode(n);return P(e)},fromDom:P,fromPoint:function(n,t,e){return(null==(o=n.dom.elementFromPoint(t,e))?l:g(o)).map(P);var o}},H={"\xa0":"nbsp","\xad":"shy"},_=N(H),F=N(H,!0),I=(V="",v(H,function(n){V&&(V+=","),V+="span.mce-"+n}),V),U="mce-nbsp",K=function(n,t){var e=[];return m(function(n,t){for(var e=n.length,o=new Array(e),r=0;r<e;r++){var i=n[r];o[r]=t(i,r)}return o}(n.dom.childNodes,M.fromDom),function(n){e=(e=t(n)?e.concat([n]):e).concat(K(n,t))}),e},R=tinymce.util.Tools.resolve("tinymce.util.Delay");r.add("visualchars",function(n){var t,e,o,r,i,u,c,a,s,f,l=(t=n.getParam("visualchars_default_state",!1),e=t,{get:function(){return e},set:function(n){e=n}});function d(){return o.execCommand("mceVisualChars")}return x(n,l),(o=n).ui.registry.addToggleButton("visualchars",{tooltip:"Show invisible characters",icon:"visualchars",onAction:d,onSetup:B(o,r=l)}),o.ui.registry.addToggleMenuItem("visualchars",{text:"Show invisible characters",icon:"visualchars",onAction:d,onSetup:B(o,r)}),i=n,u=l,c=R.debounce(function(){E(i)},300),!1!==i.getParam("forced_root_block")&&i.on("keydown",function(n){!0===u.get()&&(13===n.keyCode?E(i):c())}),i.on("remove",c.stop),s=l,(a=n).on("init",function(){L(a,s)}),f=l,{isEnabled:function(){return f.get()}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/plugins/wordcount/plugin.min.js b/projects/editor/src/assets/tinymce/js/tinymce/plugins/wordcount/plugin.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..d09e12d97a0fb4c99073355e14caa9ea26197150
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/plugins/wordcount/plugin.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function r(t){return t}function g(t){for(var e=i,n=c.length,r=0;r<n;++r){var o=c[r];if(o&&o.test(t)){e=r;break}}return e}function d(t,e,n,r){for(var o,u,c,i,a,s,g,d,l,p=[],h=[],f=0;f<n.length;++f)h.push(t[f]),function(t,e){var n=t[e],r=t[e+1];if(!(e<0||e>t.length-1&&0!==e||0===n&&0===r)){var o=t[e+2];if(0!==n||2!==r&&1!==r&&12!==r||0!==o){var u=t[e-1];return(2!==n&&1!==n&&12!==r||0!==r||0!==u)&&(4!==n&&0!==n||4!==r&&0!==r)&&(3!==n&&1!==n||4!==r||4!==u)&&(4!==n||3!==r&&1!==r||4!==o)&&8!==n&&9!==n&&8!==u&&9!==u&&8!==r&&9!==r&&(5!==n||6!==r)&&(7===n||5===n||6===n||7===r||5===r||6===r||(10!==n||10!==r)&&(11!==r||0!==n&&4!==n&&10!==n&&11!==n)&&(11!==n||0!==r&&4!==r&&10!==r)&&12!==n)}}}(n,f)&&(o=e[f],!r.includeWhitespace&&W.test(o)||!r.includePunctuation&&E.test(o)||(u=f-h.length+1,"http"!==(i=e.slice(u,c=f+1).join(""))&&"https"!==i||(d=f,l=void 0,l=function(t){for(var e=d+1;e<t.length&&!W.test(t[e]);e++);return e}(g=e),a="://"===g.slice(d+1,l).join("").substr(0,3)?l:d,s=t.slice(c,a),Array.prototype.push.apply(h,s),f=a),p.push(h)),h=[]);return p}function o(t,e){for(var n,r=e.getBlockElements(),o=e.getShortEndedElements(),u=[],c="",i=new s(t,t);t=i.next();)3===t.nodeType?c+=t.data.replace(/\uFEFF/g,""):(r[(n=t).nodeName]||o[n.nodeName])&&c.length&&(u.push(c),c="");return c.length&&u.push(c),u}function n(t){return t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length}function l(t,e){var n=o(t,e).join("\n");return a(n.split(""),r).length}function p(t,e){return n(o(t,e).join(""))}function h(t,e){return n(o(t,e).join("").replace(/\s/g,""))}function f(t,e){return function(){return e(t.getBody(),t.schema)}}function C(t,e){return function(){return e(t.selection.getRng().cloneContents(),t.schema)}}function y(t){return f(t,l)}function v(t,e){var n=e;t.fire("wordCountUpdate",{wordCount:{words:n.body.getWordCount(),characters:n.body.getCharacterCount(),charactersWithoutSpaces:n.body.getCharacterCountWithoutSpaces()}})}var w,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=function(){return(m=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},e=[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp("[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]"),new RegExp("[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]"),new RegExp("[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]"),new RegExp("[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]"),new RegExp("\\r"),new RegExp("\\n"),new RegExp("[\v\f\x85\u2028\u2029]"),new RegExp("[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]"),new RegExp("[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]"),new RegExp("[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]"),new RegExp("[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]"),new RegExp("@")],u=new RegExp("^[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]$"),c=e,i=13,W=/^\s+$/,E=u,a=function(t,e,n){n=m(m({},{includeWhitespace:!1,includePunctuation:!1}),n);for(var r=[],o=[],u=0;u<t.length;u++){var c=e(t[u]);"\ufeff"!==c&&(r.push(t[u]),o.push(c))}var i,a,s=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var u=t[o];r[o]=e(u,o)}return r}(o,(i=g,a={},function(t){if(a[t])return a[t];var e=i(t);return a[t]=e}));return d(r,o,s,n)},s=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),x=tinymce.util.Tools.resolve("tinymce.util.Delay");void 0===w&&(w=300),t.add("wordcount",function(t){var e,n,r,o,u,c,i,a={body:{getWordCount:y(t),getCharacterCount:f(t,p),getCharacterCountWithoutSpaces:f(t,h)},selection:{getWordCount:C(t,l),getCharacterCount:C(t,p),getCharacterCountWithoutSpaces:C(t,h)},getCount:y(t)};function s(){return e.execCommand("mceWordCount")}return i=a,(c=t).addCommand("mceWordCount",function(){var t=i;c.windowManager.open({title:"Word Count",body:{type:"panel",items:[{type:"table",header:["Count","Document","Selection"],cells:[["Words",String(t.body.getWordCount()),String(t.selection.getWordCount())],["Characters (no spaces)",String(t.body.getCharacterCountWithoutSpaces()),String(t.selection.getCharacterCountWithoutSpaces())],["Characters",String(t.body.getCharacterCount()),String(t.selection.getCharacterCount())]]}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}]})}),(e=t).ui.registry.addButton("wordcount",{tooltip:"Word count",icon:"character-count",onAction:s}),e.ui.registry.addMenuItem("wordcount",{text:"Word count",icon:"character-count",onAction:s}),n=t,r=a,o=w,u=x.debounce(function(){return v(n,r)},o),n.on("init",function(){v(n,r),x.setEditorTimeout(n,function(){n.on("SetContent BeforeAddUndo Undo Redo ViewUpdate keyup",u)},0)}),a})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/content/dark/content.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/dark/content.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..07d40c265bd2991c704e773c051305ada5a76cdc
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/dark/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/content/default/content.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/default/content.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..29cd987eae6589f3d9cf59c33c8a3662ae317956
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/default/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/content/document/content.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/document/content.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..a1feef4c1f15856d489cdfe7b25957c64def72aa
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/document/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/content/writer/content.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/writer/content.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..0d8f5d3400ddf43df57c1bd35aa53f7d569250dd
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/content/writer/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..0a3d965c03d50cf72b9715642c0545fc82306148
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..07067404cd6c7f0a505782ca972dd43e9aa5376a
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..35f7dc08bc50f2b8cf101d775ac1cccfb5423784
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
new file mode 100644
index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38
Binary files /dev/null and b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff differ
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..b0406729c486005170f2e94baecc3036cd04b03f
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..3a45cacf0f369191a4c3cae8445b02e4d41c85e4
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..9ba6e02c8adf6c11b29b29b28bdf34c5b5000a5f
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..0a3d965c03d50cf72b9715642c0545fc82306148
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..40b3378dc564ea8d555f6c52bc53ccd1dcf3d736
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..35f7dc08bc50f2b8cf101d775ac1cccfb5423784
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
new file mode 100644
index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38
Binary files /dev/null and b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff differ
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..b61adcca0f63e08c93b197c9e9d6e4b9ec169ff5
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..3a45cacf0f369191a4c3cae8445b02e4d41c85e4
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.shadowdom.min.css b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.shadowdom.min.css
new file mode 100644
index 0000000000000000000000000000000000000000..9ba6e02c8adf6c11b29b29b28bdf34c5b5000a5f
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/skins/ui/oxide/skin.shadowdom.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/themes/mobile/theme.min.js b/projects/editor/src/assets/tinymce/js/tinymce/themes/mobile/theme.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..8633f68dbf793661671983d226895e3311a544e2
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/themes/mobile/theme.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";var b=function(){return(b=Object.assign||function(n){for(var e,t=1,o=arguments.length;t<o;t++)for(var r in e=arguments[t])Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}).apply(this,arguments)};function c(n,e){var t={};for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(n);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(n,r[o])&&(t[r[o]]=n[r[o]]);return t}function u(n,e,t){if(t||2===arguments.length)for(var o,r=0,i=e.length;r<i;r++)!o&&r in e||((o=o||Array.prototype.slice.call(e,0,r))[r]=e[r]);return n.concat(o||Array.prototype.slice.call(e))}function n(o){return function(n){return t=typeof(e=n),(null===e?"null":"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t)===o;var e,t}}function e(e){return function(n){return typeof n===e}}function t(e){return function(n){return e===n}}function l(n){return!(null==n)}function Y(){}function i(t,o){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t(o.apply(null,n))}}function w(n){return function(){return n}}function K(n){return n}function o(n,e){return n===e}var r=n("string"),a=n("object"),D=n("array"),s=t(null),d=e("boolean"),f=t(void 0),m=e("function"),g=e("number");function J(o){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=r.concat(n);return o.apply(null,t)}}function Q(e){return function(n){return!e(n)}}function h(n){return function(){throw new Error(n)}}function p(n){return n()}function v(){return y}var S=w(!1),x=w(!0),y={fold:function(n,e){return n()},isSome:S,isNone:x,getOr:K,getOrThunk:O,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:w(null),getOrUndefined:w(void 0),or:K,orThunk:O,map:v,each:Y,bind:v,exists:S,forall:x,filter:function(){return y},toArray:function(){return[]},toString:w("none()")};function O(n){return n()}function T(t){var o,r=!1;return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return r||(r=!0,o=t.apply(null,n)),o}}function k(n,e){return-1<pn.call(n,e)}function E(n,e){for(var t=0,o=n.length;t<o;t++)if(e(n[t],t))return 1}function Z(n,e){for(var t=n.length,o=new Array(t),r=0;r<t;r++){var i=n[r];o[r]=e(i,r)}return o}function M(n,e){for(var t=0,o=n.length;t<o;t++)e(n[t],t)}function C(n,e){for(var t=[],o=0,r=n.length;o<r;o++){var i=n[o];e(i,o)&&t.push(i)}return t}function _(n,o,r){return function(n){for(var e,t=n.length-1;0<=t;t--)e=n[t],r=o(r,e,t)}(n),r}function I(n,t,o){return M(n,function(n,e){o=t(o,n,e)}),o}function F(n,e){return function(n,e,t){for(var o=0,r=n.length;o<r;o++){var i=n[o];if(e(i,o))return mn.some(i);if(t(i,o))break}return mn.none()}(n,e,S)}function R(n,e){for(var t=0,o=n.length;t<o;t++)if(e(n[t],t))return mn.some(t);return mn.none()}function V(n){for(var e=[],t=0,o=n.length;t<o;++t){if(!D(n[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+n);hn.apply(e,n[t])}return e}function B(n,e){return V(Z(n,e))}function A(n,e){for(var t=0,o=n.length;t<o;++t)if(!0!==e(n[t],t))return!1;return!0}function j(n){var e=gn.call(n,0);return e.reverse(),e}function N(n,e){return C(n,function(n){return!k(e,n)})}function H(n){return[n]}function P(n,e){for(var t=0;t<n.length;t++){var o=e(n[t],t);if(o.isSome())return o}return mn.none()}function z(n,e){var t=String(e).toLowerCase();return F(n,function(n){return n.search(t)})}function L(n,e){return-1!==n.indexOf(e)}function G(e){return function(n){return L(n,e)}}function $(n){return window.matchMedia(n).matches}function U(n){return w("alloy."+n)}function W(n,e){se(n,n.element,e,{})}function X(n,e,t){se(n,n.element,e,t)}function q(n){W(n,Zn())}function nn(n,e,t){se(n,e,t,{})}function en(n,e){var t=n.dom;if(1!==t.nodeType)return!1;var o=t;if(void 0!==o.matches)return o.matches(e);if(void 0!==o.msMatchesSelector)return o.msMatchesSelector(e);if(void 0!==o.webkitMatchesSelector)return o.webkitMatchesSelector(e);if(void 0!==o.mozMatchesSelector)return o.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function tn(n){return 1!==n.nodeType&&9!==n.nodeType&&11!==n.nodeType||0===n.childElementCount}function on(n,e){var t=void 0===e?document:e.dom;return tn(t)?[]:Z(t.querySelectorAll(n),fe.fromDom)}function rn(n,e){var t=void 0===e?document:e.dom;return tn(t)?mn.none():mn.from(t.querySelector(n)).map(fe.fromDom)}function un(n,e){return n.dom===e.dom}function cn(){return vn(0,0)}function an(n){function e(n){return function(){return t===n}}var t=n.current,o=n.version;return{current:t,version:o,isEdge:e("Edge"),isChrome:e("Chrome"),isIE:e("IE"),isOpera:e("Opera"),isFirefox:e(Sn),isSafari:e("Safari")}}function sn(n){function e(n){return function(){return t===n}}var t=n.current,o=n.version;return{current:t,version:o,isWindows:e(kn),isiOS:e("iOS"),isAndroid:e(En),isOSX:e("OSX"),isLinux:e("Linux"),isSolaris:e(Cn),isFreeBSD:e(Dn),isChromeOS:e(Mn)}}function fn(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var ln,dn=function(t){function n(){return r}function e(n){return n(t)}var o=w(t),r={fold:function(n,e){return e(t)},isSome:x,isNone:S,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return dn(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?r:y},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},mn={some:dn,none:v,from:function(n){return null==n?y:dn(n)}},gn=Array.prototype.slice,pn=Array.prototype.indexOf,hn=Array.prototype.push,vn=function(n,e){return{major:n,minor:e}},yn={nu:vn,detect:function(n,e){var t,o,r=String(e).toLowerCase();return 0===n.length?cn():(o=function(n,e){for(var t=0;t<n.length;t++){var o=n[t];if(o.test(e))return o}}(n,t=r))?vn(i(1),i(2)):{major:0,minor:0};function i(n){return Number(t.replace(o,"$"+n))}},unknown:cn},bn=(ln=/^\s+|\s+$/g,function(n){return n.replace(ln,"")}),xn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,wn={browsers:w([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return L(n,"edge/")&&L(n,"chrome")&&L(n,"safari")&&L(n,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,xn],search:function(n){return L(n,"chrome")&&!L(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return L(n,"msie")||L(n,"trident")}},{name:"Opera",versionRegexes:[xn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:G("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:G("firefox")},{name:"Safari",versionRegexes:[xn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(L(n,"safari")||L(n,"mobile/"))&&L(n,"applewebkit")}}]),oses:w([{name:"Windows",search:G("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return L(n,"iphone")||L(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:G("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:G("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:G("linux"),versionRegexes:[]},{name:"Solaris",search:G("sunos"),versionRegexes:[]},{name:"FreeBSD",search:G("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:G("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},Sn="Firefox",On=function(){return an({current:void 0,version:yn.unknown()})},Tn=an,kn=(w("Edge"),w("Chrome"),w("IE"),w("Opera"),w(Sn),w("Safari"),"Windows"),En="Android",Cn="Solaris",Dn="FreeBSD",Mn="ChromeOS",_n=function(){return sn({current:void 0,version:yn.unknown()})},In=sn,Fn=(w(kn),w("iOS"),w(En),w("Linux"),w("OSX"),w(Cn),w(Dn),w(Mn),T(function(){return n=navigator.userAgent,e=mn.from(navigator.userAgentData),t=$,p=wn.browsers(),h=wn.oses(),v=e.bind(function(n){return o=p,P(n.brands,function(e){var t=e.brand.toLowerCase();return F(o,function(n){var e;return t===(null===(e=n.brand)||void 0===e?void 0:e.toLowerCase())}).map(function(n){return{current:n.name,version:yn.nu(parseInt(e.version,10),0)}})});var o}).orThunk(function(){return z(p,t=n).map(function(n){var e=yn.detect(n.versionRegexes,t);return{current:n.name,version:e}});var t}).fold(On,Tn),y=z(h,o=n).map(function(n){var e=yn.detect(n.versionRegexes,o);return{current:n.name,version:e}}).fold(_n,In),{browser:v,os:y,deviceType:(i=v,u=n,c=t,a=(r=y).isiOS()&&!0===/ipad/i.test(u),s=r.isiOS()&&!a,l=(f=r.isiOS()||r.isAndroid())||c("(pointer:coarse)"),d=a||!s&&f&&c("(min-device-width:768px)"),m=s||f&&!d,g=i.isSafari()&&r.isiOS()&&!1===/safari/i.test(u),{isiPad:w(a),isiPhone:w(s),isTablet:w(d),isPhone:w(m),isTouch:w(l),isAndroid:r.isAndroid,isiOS:r.isiOS,isWebView:w(g),isDesktop:w(!m&&!d&&!g)})};var n,e,t,o,r,i,u,c,a,s,f,l,d,m,g,p,h,v,y})),Rn=w,Vn=Rn("touchstart"),Bn=Rn("touchmove"),An=Rn("touchend"),jn=Rn("mousedown"),Nn=Rn("mousemove"),Hn=Rn("mouseup"),Pn=Rn("mouseover"),zn=Rn("keydown"),Ln=Rn("keyup"),Gn=Rn("input"),$n=Rn("change"),Un=Rn("click"),Wn=Rn("transitionend"),Xn=Rn("selectstart"),qn={tap:U("tap")},Yn=U("focus"),Kn=U("blur.post"),Jn=U("paste.post"),Qn=U("receive"),Zn=U("execute"),ne=U("focus.item"),ee=qn.tap,te=U("longpress"),oe=U("system.init"),re=U("system.attached"),ie=U("system.detached"),ue=U("focusmanager.shifted"),ce=U("highlight"),ae=U("dehighlight"),se=function(n,e,t,o){var r=b({target:e},o);n.getSystem().triggerEvent(t,e,r)},fe={fromHtml:function(n,e){var t=(e||document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return fn(t.childNodes[0])},fromTag:function(n,e){var t=(e||document).createElement(n);return fn(t)},fromText:function(n,e){var t=(e||document).createTextNode(n);return fn(t)},fromDom:fn,fromPoint:function(n,e,t){return mn.from(n.dom.elementFromPoint(e,t)).map(fn)}};function le(n){return n.dom.nodeName.toLowerCase()}function de(e){return function(n){return n.dom.nodeType===e}}function me(n){return fe.fromDom(n.dom.ownerDocument)}function ge(n){return Ye(n)?n:me(n)}function pe(n){return mn.from(n.dom.parentNode).map(fe.fromDom)}function he(n,e){var t=n.dom.childNodes;return mn.from(t[e]).map(fe.fromDom)}function ve(e,t){pe(e).each(function(n){n.dom.insertBefore(t.dom,e.dom)})}function ye(n,e){mn.from(n.dom.nextSibling).map(fe.fromDom).fold(function(){pe(n).each(function(n){Qe(n,e)})},function(n){ve(n,e)})}function be(e,t){he(e,0).fold(function(){Qe(e,t)},function(n){e.dom.insertBefore(t.dom,n.dom)})}function xe(e,n){M(n,function(n){Qe(e,n)})}function we(n){n.dom.textContent="",M(Je(n),function(n){Ze(n)})}function Se(n){return Ke(n)&&l(n.dom.host)}function Oe(n){return fe.fromDom(n.dom.host)}function Te(){return it(fe.fromDom(document))}function ke(n,e){Qe(n.element,e.element)}function Ee(e){var n,t=pe(e.element).bind(function(n){return e.getSystem().getByDom(n).toOptional()});ut(n=e),Ze(n.element),n.getSystem().removeFromWorld(n),t.each(function(n){n.syncComponents()})}function Ce(n,e){for(var t=st(n),o=0,r=t.length;o<r;o++){var i=t[o];e(n[i],i)}}function De(n,t){return lt(n,function(n,e){return{k:e,v:t(n,e)}})}function Me(n,t){var o=[];return Ce(n,function(n,e){o.push(t(n,e))}),o}function _e(n,e){return dt(n,e)?mn.from(n[e]):mn.none()}function Ie(n,e){return dt(n,e)&&void 0!==n[e]&&null!==n[e]}function Fe(n,e,t){if(!(r(t)||d(t)||g(t)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}function Re(n,e,t){Fe(n.dom,e,t)}function Ve(n,e){var t=n.dom;Ce(e,function(n,e){Fe(t,e,n)})}function Be(n,e){var t=n.dom.getAttribute(e);return null===t?void 0:t}function Ae(n,e){return mn.from(Be(n,e))}function je(n,e){var t=n.dom;return!(!t||!t.hasAttribute)&&t.hasAttribute(e)}function Ne(n,e){n.dom.removeAttribute(e)}function He(n,e){var t=Be(n,e);return void 0===t||""===t?[]:t.split(" ")}function Pe(n){return void 0!==n.dom.classList}function ze(n,e){var t,o,r;Pe(n)?n.dom.classList.add(e):(o=e,r=He(t=n,"class").concat([o]),Re(t,"class",r.join(" ")))}function Le(n,e){var t,o,r,i;Pe(n)?n.dom.classList.remove(e):(r=e,0<(i=C(He(o=n,"class"),function(n){return n!==r})).length?Re(o,"class",i.join(" ")):Ne(o,"class")),0===(Pe(t=n)?t.dom.classList:He(t,"class")).length&&Ne(t,"class")}function Ge(n,e){return Pe(n)&&n.dom.classList.contains(e)}function $e(n,e,t){Le(n,t),ze(n,e)}"undefined"!=typeof window||Function("return this;")();var Ue,We,Xe=de(1),qe=de(3),Ye=de(9),Ke=de(11),Je=function(n){return Z(n.dom.childNodes,fe.fromDom)},Qe=function(n,e){n.dom.appendChild(e.dom)},Ze=function(n){var e=n.dom;null!==e.parentNode&&e.parentNode.removeChild(e)},nt=m(Element.prototype.attachShadow)&&m(Node.prototype.getRootNode),et=w(nt),tt=nt?function(n){return fe.fromDom(n.dom.getRootNode())}:ge,ot=function(n){return l(n.dom.shadowRoot)},rt=function(n){var e=qe(n)?n.dom.parentNode:n.dom;if(null==e||null===e.ownerDocument)return!1;var t,o,r=e.ownerDocument,i=fe.fromDom(e),u=tt(i);return(Se(u)?mn.some(u):mn.none()).fold(function(){return r.body.contains(e)},(t=rt,o=Oe,function(n){return t(o(n))}))},it=function(n){var e=n.dom.body;if(null==e)throw new Error("Body is not available yet");return fe.fromDom(e)},ut=function(n){W(n,ie()),M(n.components(),ut)},ct=function(n){M(n.components(),ct),W(n,re())},at=function(n,e,t){n.getSystem().addToWorld(e),t(n.element,e.element),rt(n.element)&&ct(e),n.syncComponents()},st=Object.keys,ft=Object.hasOwnProperty,lt=function(n,o){var r={};return Ce(n,function(n,e){var t=o(n,e);r[t.k]=t.v}),r},dt=function(n,e){return ft.call(n,e)},mt=Object.freeze({__proto__:null,toAlpha:function(n,e,t){$e(n.element,e.alpha,e.omega)},toOmega:function(n,e,t){$e(n.element,e.omega,e.alpha)},isAlpha:function(n,e,t){return Ge(n.element,e.alpha)},isOmega:function(n,e,t){return Ge(n.element,e.omega)},clear:function(n,e,t){Le(n.element,e.alpha),Le(n.element,e.omega)}}),gt=function(t){return{isValue:x,isError:S,getOr:w(t),getOrThunk:w(t),getOrDie:w(t),or:function(n){return gt(t)},orThunk:function(n){return gt(t)},fold:function(n,e){return e(t)},map:function(n){return gt(n(t))},mapError:function(n){return gt(t)},each:function(n){n(t)},bind:function(n){return n(t)},exists:function(n){return n(t)},forall:function(n){return n(t)},toOptional:function(){return mn.some(t)}}},pt=function(t){return{isValue:S,isError:x,getOr:K,getOrThunk:function(n){return n()},getOrDie:function(){return h(String(t))()},or:K,orThunk:function(n){return n()},fold:function(n,e){return n(t)},map:function(n){return pt(t)},mapError:function(n){return pt(n(t))},each:Y,bind:function(n){return pt(t)},exists:S,forall:x,toOptional:mn.none}},ht={value:gt,error:pt,fromOption:function(n,e){return n.fold(function(){return pt(e)},gt)}};function vt(n,e,t){return n.stype===Ue.Error?e(n.serror):t(n.svalue)}function yt(n){return{stype:Ue.Value,svalue:n}}function bt(n){return{stype:Ue.Error,serror:n}}function xt(n,e,t,o){return{tag:"field",key:n,newKey:e,presence:t,prop:o}}function wt(n,e,t){switch(n.tag){case"field":return e(n.key,n.newKey,n.presence,n.prop);case"custom":return t(n.newKey,n.instantiator)}}function St(u){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(0===n.length)throw new Error("Can't merge zero objects");for(var t={},o=0;o<n.length;o++){var r,i=n[o];for(r in i)dt(i,r)&&(t[r]=u(t[r],i[r]))}return t}}function Ot(){return{tag:"required",process:{}}}function Tt(n){return{tag:"defaultedThunk",process:n}}function kt(n){return Tt(w(n))}function Et(){return{tag:"option",process:{}}}function Ct(n){return{tag:"mergeWithThunk",process:n}}function Dt(n){return a(n)&&100<st(n).length?" removed due to size":JSON.stringify(n,null,2)}function Mt(n,e){return eo([{path:n,getErrorInfo:e}])}function _t(t){return{extract:function(e,n){return oo(t(n),function(n){return Mt(e,w(n))})},toString:w("val")}}function It(n,e,t,o){return o(_e(n,e).getOrThunk(function(){return t(n)}))}function Ft(e,t,o,r,i){function u(n){return i.extract(t.concat([r]),n)}function n(n){return n.fold(function(){return no(mn.none())},function(n){var e=i.extract(t.concat([r]),n);return ro(e,mn.some)})}var c,a,s,f,l,d;switch(e.tag){case"required":return s=t,d=u,_e(f=o,l=r).fold(function(){return n=l,e=f,Mt(s,function(){return'Could not find valid *required* value for "'+n+'" in '+Dt(e)});var n,e},d);case"defaultedThunk":return It(o,r,e.process,u);case"option":return n(_e(o,r));case"defaultedOptionThunk":return a=e.process,n(_e(c=o,r).map(function(n){return!0===n?a(c):n}));case"mergeWithThunk":return It(o,r,w({}),function(n){return u(co(e.process(o),n))})}}function Rt(n){var s=lo(n),f=_(n,function(t,n){return wt(n,function(n){var e;return co(t,((e={})[n]=!0,e))},w(t))},{});return{extract:function(n,e){var t,o,r,i,u,c,a=C(d(e)?[]:st((r=l,i=o={},u=function(n,e){i[e]=n},c=Y,Ce(e,function(n,e){(r(n,e)?u:c)(n,e)}),o)),function(n){return!Ie(f,n)});return 0===a.length?s.extract(n,e):(t=a,Mt(n,function(){return"There are unsupported fields: ["+t.join(", ")+"] specified"}))},toString:s.toString}}function Vt(c,a){return{extract:function(t,o){var r,n,i,e=st(o),u=(i=_t(c),r=t,n=Z(e,function(n,e){return i.extract(r.concat(["["+e+"]"]),n)}),so(n));return to(u,function(n){var e=Z(n,function(n){return xt(n,n,Ot(),a)});return lo(e).extract(t,o)})},toString:function(){return"setOf("+a.toString()+")"}}}function Bt(e,c){return{extract:function(i,u){return _e(u,e).fold(function(){return n=e,Mt(i,function(){return'Choice schema did not contain choice key: "'+n+'"'});var n},function(n){return t=i,e=u,_e(o=c,r=n).fold(function(){return n=o,e=r,Mt(t,function(){return'The chosen schema: "'+e+'" did not exist in branches: '+Dt(n)});var n,e},function(n){return n.extract(t.concat(["branch: "+r]),e)});var t,e,o,r})},toString:function(){return"chooseOn("+e+"). Possible values: "+st(c)}}}function At(e){return _t(function(n){return e(n).fold(eo,no)})}function jt(e,n){return Vt(function(n){return e(n).fold(bt,yt)},n)}function Nt(n,e,t){return Zt((r=e.extract([n],o=t),io(r,function(n){return{input:o,errors:n}})));var o,r}function Ht(n){return n.fold(function(n){throw new Error(po(n))},K)}function Pt(n,e,t){return Ht(Nt(n,e,t))}function zt(n,e){return Bt(n,De(e,lo))}function Lt(n){return ho(n,n,Ot(),mo())}function Gt(n,e){return ho(n,n,Ot(),e)}function $t(n,e){return ho(n,n,Ot(),lo(e))}function Ut(n){return ho(n,n,Et(),mo())}function Wt(n,e){return ho(n,n,Et(),e)}function Xt(n,e){return Wt(n,lo(e))}function qt(n,e){return Wt(n,Rt(e))}function Yt(n,e){return ho(n,n,kt(e),mo())}function Kt(n,e,t){return ho(n,n,kt(e),t)}(We=Ue={})[We.Error=0]="Error",We[We.Value=1]="Value";function Jt(u){if(!D(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return M(u,function(n,o){var e=st(n);if(1!==e.length)throw new Error("one and only one name per case");var r=e[0],i=n[r];if(void 0!==t[r])throw new Error("duplicate key detected:"+r);if("cata"===r)throw new Error("cannot have a case named cata (sorry)");if(!D(i))throw new Error("case arguments must be an array");c.push(r),t[r]=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=t.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+r+". Expected "+i.length+" ("+i+"), got "+e);return{fold:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(n.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+n.length);return n[o].apply(null,t)},match:function(n){var e=st(n);if(c.length!==e.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+e.join(","));if(!A(c,function(n){return k(e,n)}))throw new Error("Not all branches were specified when using match. Specified: "+e.join(", ")+"\nRequired: "+c.join(", "));return n[r].apply(null,t)},log:function(n){console.log(n,{constructors:c,constructor:r,params:t})}}}}),t}var Qt,Zt=function(n){return vt(n,ht.error,ht.value)},no=yt,eo=bt,to=function(n,e){return n.stype===Ue.Value?e(n.svalue):n},oo=function(n,e){return n.stype===Ue.Error?e(n.serror):n},ro=function(n,e){return n.stype===Ue.Value?{stype:Ue.Value,svalue:e(n.svalue)}:n},io=function(n,e){return n.stype===Ue.Error?{stype:Ue.Error,serror:e(n.serror)}:n},uo=vt,co=St(function(n,e){return a(n)&&a(e)?co(n,e):e}),ao=St(function(n,e){return e}),so=function(n){var e,t,o=(e=[],t=[],M(n,function(n){vt(n,function(n){return t.push(n)},function(n){return e.push(n)})}),{values:e,errors:t});return 0<o.errors.length?i(eo,V)(o.errors):no(o.values)},fo=_t(no),lo=function(t){return{extract:function(i,u){for(var c={},a=[],n=0,e=t;n<e.length;n++)wt(e[n],function(n,e,t,o){var r=Ft(t,i,u,n,o);uo(r,function(n){a.push.apply(a,n)},function(n){c[e]=n})},function(n,e){c[n]=e(u)});return 0<a.length?eo(a):no(c)},toString:function(){return"obj{\n"+Z(t,function(n){return wt(n,function(n,e,t,o){return n+" -> "+o.toString()},function(n,e){return"state("+n+")"})}).join("\n")+"}"}}},mo=w(fo),go=(Qt=m,_t(function(n){var e=typeof n;return Qt(n)?no(n):eo("Expected type: function but got: "+e)})),po=function(n){return"Errors: \n"+Z(10<(e=n.errors).length?e.slice(0,10).concat([{path:[],getErrorInfo:w("... (only showing first ten failures)")}]):e,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()}).join("\n")+"\n\nInput object: "+Dt(n.input);var e},ho=xt,vo=function(n,e){return{tag:"custom",newKey:n,instantiator:e}},yo=[Lt("alpha"),Lt("omega")];function bo(n,e){return(t={})[n]=e,t;var t}function xo(n){return e={},M(n,function(n){e[n.key]=n.value}),e;var e}function wo(n,e,t){return void 0===t&&(t=o),n.exists(function(n){return t(n,e)})}function So(n){for(var e=[],t=function(n){e.push(n)},o=0;o<n.length;o++)n[o].each(t);return e}function Oo(n){return m(n)?n:S}function To(n,e){return un(n.element,e.event.target)}function ko(n){if(!Ie(n,"can")&&!Ie(n,"abort")&&!Ie(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return b(b({},Xo),n)}function Eo(n,e){return{key:n,value:ko({abort:e})}}function Co(n,e){return{key:n,value:ko({run:e})}}function Do(n,t,o){return{key:n,value:ko({run:function(n,e){t.apply(void 0,[n,e].concat(o))}})}}function Mo(n){return function(t){return{key:n,value:ko({run:function(n,e){To(n,e)&&t(n,e)}})}}}function _o(n,e,t){var i,o,r=e.partUids[t];return o=r,Co(i=n,function(n,r){n.getSystem().getByUid(o).each(function(n){var e=n.element,t=i,o=r;n.getSystem().triggerEvent(t,e,o.event)})})}function Io(n){return Co(n,function(n,e){e.cut()})}function Fo(n,e){var t=n.toString(),o=t.indexOf(")")+1,r=t.indexOf("("),i=t.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Zo(i)}},n}function Ro(n){return{classes:f(n.classes)?[]:n.classes,attributes:f(n.attributes)?{}:n.attributes,styles:f(n.styles)?{}:n.styles}}function Vo(t,o,r){return Jo(function(n,e){r(n,t,o)})}function Bo(n){return{key:n,value:void 0}}function Ao(n){var e=Pt("Creating behaviour: "+n.name,rr,n),t=e.fields,o=e.name,r=e.active,i=e.apis,u=e.extra,c=e.state,a=Rt(t),s=Xt(o,[qt("config",t)]);return nr(a,s,o,r,i,u,c)}function jo(n){var e=n;return{get:function(){return e},set:function(n){e=n}}}function No(n){return n.dom.focus()}function Ho(n){return n.dom.blur()}function Po(n){return void 0===n&&(n=fe.fromDom(document)),mn.from(n.dom.activeElement).map(fe.fromDom)}function zo(e){return Po(tt(e)).filter(function(n){return e.dom.contains(n.dom)})}function Lo(n){return n.dom.innerHTML}function Go(n){if(Se(n))return"#shadow-root";var e=fe.fromDom(n.dom.cloneNode(!1)),t=fe.fromTag("div"),o=fe.fromDom(e.dom.cloneNode(!0));return Qe(t,o),Lo(t)}Jt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var $o,Uo,Wo,Xo={can:x,abort:S,run:Y},qo=xo,Yo=Mo(re()),Ko=Mo(ie()),Jo=Mo(oe()),Qo=($o=Zn(),function(n){return Co($o,n)}),Zo=function(n){return Z(n,function(n){return 0,e=n.length-"/*".length,n.length>="/*".length&&"/*"===n.substr(e,e+"/*".length)?n.substring(0,n.length-"/*".length):n;var e})},nr=function(t,n,l,i,e,o,r){function u(n){return Ie(n,l)?n[l]():mn.none()}var c=De(e,function(n,e){return r=l,t=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var o=[t].concat(n);return t.config({name:w(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+u)},function(n){var e=Array.prototype.slice.call(o,1);return i.apply(void 0,[t,n.config,n.state].concat(e))})},o=u=e,c=(i=n).toString(),a=c.indexOf(")")+1,s=c.indexOf("("),f=c.substring(s+1,a-1).split(/,\s*/),t.toFunctionAnnotation=function(){return{name:o,parameters:Zo(f.slice(0,1).concat(f.slice(3)))}},t;var r,i,u,t,o,c,a,s,f}),a=De(o,Fo),s=b(b(b({},a),c),{revoke:J(Bo,l),config:function(n){var e=Pt(l+"-config",t,n);return{key:l,value:{config:e,me:s,configAsRaw:T(function(){return Pt(l+"-config",t,n)}),initialConfig:n,state:r}}},schema:w(n),exhibit:function(n,t){return e=u(n),o=_e(i,"exhibit"),r=function(n,e){return e(t,n.config,n.state)},(e.isSome()&&o.isSome()?mn.some(r(e.getOrDie(),o.getOrDie())):mn.none()).getOrThunk(function(){return Ro({})});var e,o,r},name:w(l),handlers:function(n){return u(n).map(function(n){return _e(i,"events").getOr(function(){return{}})(n.config,n.state)}).getOr({})}});return s},er={init:function(){return tr({readState:w("No State required")})}},tr=function(n){return n},or=xo,rr=Rt([Lt("fields"),Lt("name"),Yt("active",{}),Yt("apis",{}),Yt("state",er),Yt("extra",{})]),ir=Rt([Lt("branchKey"),Lt("branches"),Lt("name"),Yt("active",{}),Yt("apis",{}),Yt("state",er),Yt("extra",{})]),ur=w(void 0),cr=Ao({fields:yo,name:"swapping",apis:mt}),ar=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),sr=tinymce.util.Tools.resolve("tinymce.ThemeManager"),fr=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],lr=["undo","bold","italic","link","image","bullist","styleselect"],dr="formatChanged",mr="orientationChanged",gr="dropupDismissed",pr=Object.freeze({__proto__:null,events:function(o){return qo([Co(Qn(),function(r,n){var e,i=o.channels,t=st(i),u=n;M((e=u).universal?t:C(t,function(n){return k(e.channels,n)}),function(n){var e=i[n],t=e.schema,o=Pt("channel["+n+"] data\nReceiver: "+Go(r.element),t,u.data);e.onReceive(r,o)})})])}}),hr="unknown";function vr(e,n,t){var o,r,i,u;switch(_e(yr.get(),e).orThunk(function(){return P(st(yr.get()),function(n){return-1<e.indexOf(n)?mn.some(yr.get()[n]):mn.none()})}).getOr(Uo.NORMAL)){case Uo.NORMAL:return t(xr());case Uo.LOGGING:var c=(o=e,r=n,i=[],u=(new Date).getTime(),{logEventCut:function(n,e,t){i.push({outcome:"cut",target:e,purpose:t})},logEventStopped:function(n,e,t){i.push({outcome:"stopped",target:e,purpose:t})},logNoParent:function(n,e,t){i.push({outcome:"no-parent",target:e,purpose:t})},logEventNoHandlers:function(n,e){i.push({outcome:"no-handlers-left",target:e})},logEventResponse:function(n,e,t){i.push({outcome:"response",purpose:t,target:e})},write:function(){var n=(new Date).getTime();k(["mousemove","mouseover","mouseout",oe()],o)||console.log(o,{event:o,time:n-u,target:r.dom,sequence:Z(i,function(n){return k(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+Go(n.target)+")":n.outcome})})}}),a=t(c);return c.write(),a;case Uo.STOP:return!0}}(Wo=Uo={})[Wo.STOP=0]="STOP",Wo[Wo.NORMAL=1]="NORMAL",Wo[Wo.LOGGING=2]="LOGGING";var yr=jo({}),br=["alloy/data/Fields","alloy/debugging/Debugging"],xr=w({logEventCut:Y,logEventStopped:Y,logNoParent:Y,logEventNoHandlers:Y,logEventResponse:Y,write:Y}),wr=w([Lt("menu"),Lt("selectedMenu")]),Sr=w([Lt("item"),Lt("selectedItem")]);function Or(n,e,t){return void 0!==(o=new Error).stack&&F(o.stack.split("\n"),function(e){return 0<e.indexOf("alloy")&&!E(br,function(n){return-1<e.indexOf(n)})}).getOr(hr),ho(e,e,t,At(function(t){return ht.value(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t.apply(void 0,n)})}));var o}function Tr(n){return Or(0,n,kt(Y))}function kr(n){return Or(0,n,kt(mn.none))}function Er(n){return Or(0,n,Ot())}function Cr(n){return Or(0,n,Ot())}function Dr(n,e){return vo(n,w(e))}function Mr(n){return vo(n,K)}function _r(n,e,t){var o=e.aria;o.update(n,o,t.get())}function Ir(e,n,t){n.toggleClass.each(function(n){(t.get()?ze:Le)(e.element,n)})}function Fr(n,e,t){Qr(n,e,t,!t.get())}function Rr(n,e,t){t.set(!0),Ir(n,e,t),_r(n,e,t)}function Vr(n,e,t){t.set(!1),Ir(n,e,t),_r(n,e,t)}function Br(n,e,t){Qr(n,e,t,e.selected)}function Ar(t,o){return ti.config({channels:bo(dr,{onReceive:function(n,e){e.command===t&&o(n,e.state)}})})}function jr(n){return ti.config({channels:bo(mr,{onReceive:n})})}function Nr(n,e){return{key:n,value:{onReceive:e}}}function Hr(){function n(n,e){e.stop(),q(n)}return[Co(Un(),n),Co(ee(),n),Io(Vn()),Io(jn())]}function Pr(n,e){e.ignore||(No(n.element),e.onFocus(n))}function zr(n){return void 0!==n.style&&m(n.style.getPropertyValue)}function Lr(n,e,t){if(!r(t))throw console.error("Invalid call to CSS.set. Property ",e,":: Value ",t,":: Element ",n),new Error("CSS value must be a string: "+t);zr(n)&&n.style.setProperty(e,t)}function Gr(n,e,t){Lr(n.dom,e,t)}function $r(n,e){var t=n.dom;Ce(e,function(n,e){Lr(t,e,n)})}function Ur(n,e){var t=n.dom,o=window.getComputedStyle(t).getPropertyValue(e);return""!==o||rt(n)?o:li(t,e)}function Wr(n,e){var t=n.dom,o=li(t,e);return mn.from(o).filter(function(n){return 0<n.length})}function Xr(n,e){var t,o=e;zr(t=n.dom)&&t.style.removeProperty(o),wo(Ae(n,"style").map(bn),"")&&Ne(n,"style")}function qr(n){return n.dom.offsetWidth}function Yr(o,r){function n(n){var e=r(n);if(e<=0||null===e){var t=Ur(n,o);return parseFloat(t)||0}return e}function i(r,n){return I(n,function(n,e){var t=Ur(r,e),o=void 0===t?0:parseInt(t,10);return isNaN(o)?n:n+o},0)}return{set:function(n,e){if(!g(e)&&!e.match(/^[0-9]+$/))throw new Error(o+".set accepts only positive integer values. Value was "+e);var t=n.dom;zr(t)&&(t.style[o]=e+"px")},get:n,getOuter:n,aggregate:i,max:function(n,e,t){var o=i(n,t);return o<e?e-o:0}}}function Kr(n){return di.get(n)}function Jr(n,e){return on(e,n)}w(lo(Sr().concat(wr())));function Qr(n,e,t,o){(o?Rr:Vr)(n,e,t)}function Zr(n,e,t){Re(n.element,"aria-expanded",t)}var ni=w(lo(Sr())),ei=w($t("initSize",[Lt("numColumns"),Lt("numRows")])),ti=Ao({fields:[Gt("channels",jt(ht.value,Rt([Er("onReceive"),Yt("schema",mo())])))],name:"receiving",active:pr}),oi=Object.freeze({__proto__:null,onLoad:Br,toggle:Fr,isOn:function(n,e,t){return t.get()},on:Rr,off:Vr,set:Qr}),ri=Object.freeze({__proto__:null,exhibit:function(){return Ro({})},events:function(n,e){var t,o,r,i=(t=n,o=e,r=Fr,Qo(function(n){r(n,t,o)})),u=Vo(n,e,Br);return qo(V([n.toggleOnExecute?[i]:[],[u]]))}}),ii=Ao({fields:[Yt("selected",!1),Ut("toggleClass"),Yt("toggleOnExecute",!0),Kt("aria",{mode:"none"},zt("mode",{pressed:[Yt("syncWithExpanded",!1),Dr("update",function(n,e,t){Re(n.element,"aria-pressed",t),e.syncWithExpanded&&Zr(n,0,t)})],checked:[Dr("update",function(n,e,t){Re(n.element,"aria-checked",t)})],expanded:[Dr("update",Zr)],selected:[Dr("update",function(n,e,t){Re(n.element,"aria-selected",t)})],none:[Dr("update",Y)]}))],name:"toggling",active:ri,apis:oi,state:{init:function(){var e=jo(!1);return{get:function(){return e.get()},set:function(n){return e.set(n)},clear:function(){return e.set(!1)},readState:function(){return e.get()}}}}}),ui="tinymce-mobile",ci=function(n){return ui+"-"+n},ai=Object.freeze({__proto__:null,focus:Pr,blur:function(n,e){e.ignore||Ho(n.element)},isFocused:function(n){return e=n.element,t=tt(e).dom,e.dom===t.activeElement;var e,t}}),si=Object.freeze({__proto__:null,exhibit:function(n,e){return Ro(e.ignore?{}:{attributes:{tabindex:"-1"}})},events:function(t){return qo([Co(Yn(),function(n,e){Pr(n,t),e.stop()})].concat(t.stopMousedown?[Co(jn(),function(n,e){e.event.prevent()})]:[]))}}),fi=Ao({fields:[Tr("onFocus"),Yt("stopMousedown",!1),Yt("ignore",!1)],name:"focusing",active:si,apis:ai}),li=function(n,e){return zr(n)?n.style.getPropertyValue(e):""},di=Yr("height",function(n){var e=n.dom;return rt(n)?e.getBoundingClientRect().height:e.offsetHeight});function mi(n,e,t,o,r){return n(t,o)?mn.some(t):m(r)&&r(t)?mn.none():e(t,o,r)}function gi(n,e,t){for(var o=n.dom,r=m(t)?t:S;o.parentNode;){var o=o.parentNode,i=fe.fromDom(o);if(e(i))return mn.some(i);if(r(i))break}return mn.none()}function pi(n,e,t){return gi(n,function(n){return en(n,e)},t)}function hi(n,e){return rn(e,n)}function vi(n,e,t){return mi(en,pi,n,e,t)}function yi(n,e,t){var o=j(n.slice(0,e)),r=j(n.slice(e+1));return F(o.concat(r),t)}function bi(n,e,t){return F(j(n.slice(0,e)),t)}function xi(n,e,t){var o=n.slice(0,e);return F(n.slice(e+1).concat(o),t)}function wi(n,e,t){return F(n.slice(e+1),t)}function Si(t){return function(n){var e=n.raw;return k(t,e.which)}}function Oi(n){return function(e){return A(n,function(n){return n(e)})}}function Ti(n){return!0===n.raw.shiftKey}function ki(n){return!0===n.raw.ctrlKey}function Ei(n,e){return{matches:n,classification:e}}function Ci(n,e,t,o){var r=n+e;return o<r?t:r<t?o:r}function Di(n,e,t){return Math.min(Math.max(n,e),t)}function Mi(t,o,n,r){M(Jr(t.element,"."+o.highlightClass),function(e){E(r,function(n){return n.element===e})||(Le(e,o.highlightClass),t.getSystem().getByDom(e).each(function(n){o.onDehighlight(t,n),W(n,ae())}))})}function _i(n,e,t,o){Mi(n,e,0,[o]),Bi(0,e,0,o)||(ze(o.element,e.highlightClass),e.onHighlight(n,o),W(o,ce()))}function Ii(t,e,n,o){var r=Jr(t.element,"."+e.itemClass);return R(r,function(n){return Ge(n,e.highlightClass)}).bind(function(n){var e=Ci(n,o,0,r.length-1);return t.getSystem().getByDom(r[e]).toOptional()})}function Fi(n,e,t){e.exists(function(e){return t.exists(function(n){return un(n,e)})})||X(n,ue(),{prevFocus:e,newFocus:t})}function Ri(){function o(n){return zo(n.element)}return{get:o,set:function(n,e){var t=o(n);n.getSystem().triggerFocus(e,n.element),Fi(n,t,o(n))}}}function Vi(){function r(n){return Qi.getHighlighted(n).map(function(n){return n.element})}return{get:r,set:function(e,n){var t=r(e);e.getSystem().getByDom(n).fold(Y,function(n){Qi.highlight(e,n)});var o=r(e);Fi(e,t,o)}}}function Bi(n,e,t,o){return Ge(o.element,e.highlightClass)}function Ai(e,n,t){return hi(e.element,"."+n.itemClass).bind(function(n){return e.getSystem().getByDom(n).toOptional()})}function ji(e,n,t){var o=Jr(e.element,"."+n.itemClass);return(0<o.length?mn.some(o[o.length-1]):mn.none()).bind(function(n){return e.getSystem().getByDom(n).toOptional()})}function Ni(e,n,t){return So(Z(Jr(e.element,"."+n.itemClass),function(n){return e.getSystem().getByDom(n).toOptional()}))}var Hi,Pi,zi=[8],Li=[9],Gi=[13],$i=[27],Ui=[32],Wi=[37],Xi=[38],qi=[39],Yi=[40],Ki=Q(Ti),Ji=Object.freeze({__proto__:null,dehighlightAll:function(n,e,t){return Mi(n,e,0,[])},dehighlight:function(n,e,t,o){Bi(0,e,0,o)&&(Le(o.element,e.highlightClass),e.onDehighlight(n,o),W(o,ae()))},highlight:_i,highlightFirst:function(e,t,n){Ai(e,t).each(function(n){_i(e,t,0,n)})},highlightLast:function(e,t,n){ji(e,t).each(function(n){_i(e,t,0,n)})},highlightAt:function(e,t,n,o){var r,i,u;i=o,u=Jr((r=e).element,"."+t.itemClass),mn.from(u[i]).fold(function(){return ht.error(new Error("No element found with index "+i))},r.getSystem().getByDom).fold(function(n){throw n},function(n){_i(e,t,0,n)})},highlightBy:function(e,t,n,o){F(Ni(e,t),o).each(function(n){_i(e,t,0,n)})},isHighlighted:Bi,getHighlighted:function(e,n,t){return hi(e.element,"."+n.highlightClass).bind(function(n){return e.getSystem().getByDom(n).toOptional()})},getFirst:Ai,getLast:ji,getPrevious:function(n,e,t){return Ii(n,e,0,-1)},getNext:function(n,e,t){return Ii(n,e,0,1)},getCandidates:Ni}),Qi=Ao({fields:[Lt("highlightClass"),Lt("itemClass"),Tr("onHighlight"),Tr("onDehighlight")],name:"highlighting",apis:Ji});function Zi(n,e,t,o,c){function a(e,t,n,o,r){var i=n(e,t,o,r),u=t.event;return F(i,function(n){return n.matches(u)}).map(function(n){return n.classification}).bind(function(n){return n(e,t,o,r)})}var r={schema:function(){return n.concat([Yt("focusManager",Ri()),Kt("focusInside","onFocus",At(function(n){return k(["onFocus","onEnterOrSpace","onApi"],n)?ht.value(n):ht.error("Invalid value for focusInside")})),Dr("handler",r),Dr("state",e),Dr("sendFocusIn",c)])},processKey:a,toEvents:function(i,u){var n=i.focusInside!==Hi.OnFocusMode?mn.none():c(i).map(function(t){return Co(Yn(),function(n,e){t(n,i,u),e.stop()})}),e=[Co(zn(),function(o,r){a(o,r,t,i,u).fold(function(){var e=o,t=r,n=Si(Ui.concat(Gi))(t.event);i.focusInside===Hi.OnEnterOrSpaceMode&&n&&To(e,t)&&c(i).each(function(n){n(e,i,u),t.stop()})},function(n){r.stop()})}),Co(Ln(),function(n,e){a(n,e,o,i,u).each(function(n){e.stop()})})];return qo(n.toArray().concat(e))}};return r}function nu(n){function c(n,e){return 0<Kr(n.visibilitySelector.bind(function(n){return vi(e,n)}).getOr(e))}function e(e,t,n){var o=t,r=C(Jr(e.element,o.selector),function(n){return c(o,n)});mn.from(r[o.firstTabstop]).each(function(n){t.focusManager.set(e,n)})}function o(t,n,r,i){var e,u=Jr(t.element,r.selector);return(e=r).focusManager.get(t).bind(function(n){return vi(n,e.selector)}).bind(function(n){return R(u,J(un,n)).bind(function(n){return e=t,o=r,i(u,n,function(n){return c(e=o,t=n)&&e.useTabstopAt(t);var e,t}).fold(function(){return o.cyclic?mn.some(!0):mn.none()},function(n){return o.focusManager.set(e,n),mn.some(!0)});var e,o})})}var t=[Ut("onEscape"),Ut("onEnter"),Yt("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),Yt("firstTabstop",0),Yt("useTabstopAt",x),Ut("visibilitySelector")].concat([n]),r=w([Ei(Oi([Ti,Si(Li)]),function(n,e,t){return o(n,0,t,t.cyclic?yi:bi)}),Ei(Si(Li),function(n,e,t){return o(n,0,t,t.cyclic?xi:wi)}),Ei(Si($i),function(e,t,n){return n.onEscape.bind(function(n){return n(e,t)})}),Ei(Oi([Ki,Si(Gi)]),function(e,t,n){return n.onEnter.bind(function(n){return n(e,t)})})]),i=w([]);return Zi(t,er.init,r,i,function(){return mn.some(e)})}function eu(n){return"input"===le(n)&&"radio"!==Be(n,"type")||"textarea"===le(n)}function tu(n,e,t){return eu(t)&&Si(Ui)(e.event)?mn.none():(nn(n,t,Zn()),mn.some(!0))}function ou(n,e){return mn.some(!0)}function ru(n,e,t){return t.execute(n,e,n.element)}function iu(n){function e(){return t.get().each(n)}var t=jo(mn.none());return{clear:function(){e(),t.set(mn.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(n){e(),t.set(mn.some(n))}}}function uu(){var e=iu(function(n){return n.destroy()});return b(b({},e),{run:function(n){return e.get().each(n)}})}function cu(){var e=iu(Y);return b(b({},e),{on:function(n){return e.get().each(n)}})}function au(){var t=cu();return tr({readState:function(){return t.get().map(function(n){return{numRows:String(n.numRows),numColumns:String(n.numColumns)}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,e){t.set({numRows:n,numColumns:e})},getNumRows:function(){return t.get().map(function(n){return n.numRows})},getNumColumns:function(){return t.get().map(function(n){return n.numColumns})}})}function su(e,t){return function(n){return"rtl"===cc(n)?t:e}}function fu(i){return function(n,e,t,o){var r=i(n.element);return ac(r,n,e,t,o)}}function lu(n,e){return fu(su(n,e))}function du(n,e){return fu(su(e,n))}function mu(r){return function(n,e,t,o){return ac(r,n,e,t,o)}}function gu(n){return!((e=n.dom).offsetWidth<=0&&e.offsetHeight<=0);var e}function pu(n,e,t){var o,r=C(Jr(n,t),gu);return R(o=r,function(n){return un(n,e)}).map(function(n){return{index:n,candidates:o}})}function hu(n,e){return R(n,function(n){return un(e,n)})}function vu(t,n,o,e){return e(Math.floor(n/o),n%o).bind(function(n){var e=n.row*o+n.column;return 0<=e&&e<t.length?mn.some(t[e]):mn.none()})}function yu(r,n,i,u,c){return vu(r,n,u,function(n,e){var t=n===i-1?r.length-n*u:u,o=Ci(e,c,0,t-1);return mn.some({row:n,column:o})})}function bu(r,n,i,u,c){return vu(r,n,u,function(n,e){var t=Ci(n,c,0,i-1),o=Di(e,0,(t===i-1?r.length-t*u:u)-1);return mn.some({row:t,column:o})})}function xu(e,t,n){hi(e.element,t.selector).each(function(n){t.focusManager.set(e,n)})}function wu(r){return function(n,e,t,o){return pu(n,e,t.selector).bind(function(n){return r(n.candidates,n.index,o.getNumRows().getOr(t.initSize.numRows),o.getNumColumns().getOr(t.initSize.numColumns))})}}function Su(n,e,t){return t.captureTab?mn.some(!0):mn.none()}function Ou(n,e,t,i){var u=function(n,e,t){var o,r=Ci(e,i,0,t.length-1);return r===n?mn.none():"button"===le(o=t[r])&&"disabled"===Be(o,"disabled")?u(n,r,t):mn.from(t[r])};return pu(n,t,e).bind(function(n){var e=n.index,t=n.candidates;return u(e,e,t)})}function Tu(e,t,o){return(r=o).focusManager.get(e).bind(function(n){return vi(n,r.selector)}).bind(function(n){return o.execute(e,t,n)});var r}function ku(e,t,n){t.getInitial(e).orThunk(function(){return hi(e.element,t.selector)}).each(function(n){t.focusManager.set(e,n)})}function Eu(n,e,t){return Ou(n,t.selector,e,-1)}function Cu(n,e,t){return Ou(n,t.selector,e,1)}function Du(r){return function(n,e,t,o){return r(n,e,t,o).bind(function(){return t.executeOnMove?Tu(n,e,t):mn.some(!0)})}}function Mu(n,e,t){return t.onEscape(n,e)}function _u(n,e,t){return mn.from(n[e]).bind(function(n){return mn.from(n[t]).map(function(n){return{rowIndex:e,columnIndex:t,cell:n}})})}function Iu(n,e,t,o){return _u(n,e,Ci(t,o,0,n[e].length-1))}function Fu(n,e,t,o){var r=Ci(t,o,0,n.length-1);return _u(n,r,Di(e,0,n[r].length-1))}function Ru(n,e,t,o){return _u(n,e,Di(t+o,0,n[e].length-1))}function Vu(n,e,t,o){var r=Di(t+o,0,n.length-1);return _u(n,r,Di(e,0,n[r].length-1))}function Bu(e,t,n){t.previousSelector(e).orThunk(function(){var n=t.selectors;return hi(e.element,n.cell)}).each(function(n){t.focusManager.set(e,n)})}function Au(n,o){return function(e,t,i){var u=i.cycles?n:o;return vi(t,i.selectors.row).bind(function(n){return hu(Jr(n,i.selectors.cell),t).bind(function(o){var r=Jr(e,i.selectors.row);return hu(r,n).bind(function(n){var e,t=(e=i,Z(r,function(n){return Jr(n,e.selectors.cell)}));return u(t,n,o).map(function(n){return n.cell})})})})}}function ju(e,t,o){return o.focusManager.get(e).bind(function(n){return o.execute(e,t,n)})}function Nu(e,t,n){hi(e.element,t.selector).each(function(n){t.focusManager.set(e,n)})}function Hu(n,e,t){return Ou(n,t.selector,e,-1)}function Pu(n,e,t){return Ou(n,t.selector,e,1)}function zu(o,n){return e=o,t={},r=Z(n,function(n){return e=n.name(),t="Cannot configure "+n.name()+" for "+o,ho(e,e,Et(),_t(function(n){return eo("The field: "+e+" is forbidden. "+t)}));var e,t}).concat([vo("dump",K)]),Kt(e,t,lo(r));var e,t,r}function Lu(n,e){return b(b({},n.dump),or(e))}function Gu(n){return dt(n,"uiType")}function $u(n){var e=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++Kc+String(e)}function Uu(n){function e(n){return n.name}return n.fold(e,e,e,e)}function Wu(t,o){return function(n){var e=Pt("Converting part type",o,n);return t(e)}}(Pi=Hi=Hi||{}).OnFocusMode="onFocus",Pi.OnEnterOrSpaceMode="onEnterOrSpace",Pi.OnApiMode="onApi";var Xu,qu,Yu,Ku,Ju,Qu,Zu,nc,ec,tc,oc=nu(vo("cyclic",S)),rc=nu(vo("cyclic",x)),ic=Zi([Yt("execute",tu),Yt("useSpace",!1),Yt("useEnter",!0),Yt("useControlEnter",!1),Yt("useDown",!1)],er.init,function(n,e,t,o){var r=t.useSpace&&!eu(n.element)?Ui:[],i=t.useEnter?Gi:[],u=t.useDown?Yi:[];return[Ei(Si(r.concat(i).concat(u)),ru)].concat(t.useControlEnter?[Ei(Oi([ki,Si(Gi)]),ru)]:[])},function(n,e,t,o){return t.useSpace&&!eu(n.element)?[Ei(Si(Ui),ou)]:[]},function(){return mn.none()}),uc=Object.freeze({__proto__:null,flatgrid:au,init:function(n){return n.state(n)}}),cc=function(n){return"rtl"===Ur(n,"direction")?"rtl":"ltr"},ac=function(e,t,n,o,r){return o.focusManager.get(t).bind(function(n){return e(t.element,n,o,r)}).map(function(n){return o.focusManager.set(t,n),!0})},sc=mu,fc=mu,lc=mu,dc=wu(function(n,e,t,o){return yu(n,e,t,o,-1)}),mc=wu(function(n,e,t,o){return yu(n,e,t,o,1)}),gc=wu(function(n,e,t,o){return bu(n,e,t,o,-1)}),pc=wu(function(n,e,t,o){return bu(n,e,t,o,1)}),hc=Zi([Lt("selector"),Yt("execute",tu),kr("onEscape"),Yt("captureTab",!1),ei()],au,w([Ei(Si(Wi),lu(dc,mc)),Ei(Si(qi),du(dc,mc)),Ei(Si(Xi),sc(gc)),Ei(Si(Yi),fc(pc)),Ei(Oi([Ti,Si(Li)]),Su),Ei(Oi([Ki,Si(Li)]),Su),Ei(Si($i),function(n,e,t){return t.onEscape(n,e)}),Ei(Si(Ui.concat(Gi)),function(e,t,o,n){return(r=o).focusManager.get(e).bind(function(n){return vi(n,r.selector)}).bind(function(n){return o.execute(e,t,n)});var r})]),w([Ei(Si(Ui),ou)]),function(){return mn.some(xu)}),vc=[Lt("selector"),Yt("getInitial",mn.none),Yt("execute",tu),kr("onEscape"),Yt("executeOnMove",!1),Yt("allowVertical",!0)],yc=w([Ei(Si(Ui),ou)]),bc=Zi(vc,er.init,function(n,e,t,o){var r=Wi.concat(t.allowVertical?Xi:[]),i=qi.concat(t.allowVertical?Yi:[]);return[Ei(Si(r),Du(lu(Eu,Cu))),Ei(Si(i),Du(du(Eu,Cu))),Ei(Si(Gi),Tu),Ei(Si(Ui),Tu),Ei(Si($i),Mu)]},yc,function(){return mn.some(ku)}),xc=[$t("selectors",[Lt("row"),Lt("cell")]),Yt("cycles",!0),Yt("previousSelector",mn.none),Yt("execute",tu)],wc=Au(function(n,e,t){return Iu(n,e,t,-1)},function(n,e,t){return Ru(n,e,t,-1)}),Sc=Au(function(n,e,t){return Iu(n,e,t,1)},function(n,e,t){return Ru(n,e,t,1)}),Oc=Au(function(n,e,t){return Fu(n,t,e,-1)},function(n,e,t){return Vu(n,t,e,-1)}),Tc=Au(function(n,e,t){return Fu(n,t,e,1)},function(n,e,t){return Vu(n,t,e,1)}),kc=w([Ei(Si(Wi),lu(wc,Sc)),Ei(Si(qi),du(wc,Sc)),Ei(Si(Xi),sc(Oc)),Ei(Si(Yi),fc(Tc)),Ei(Si(Ui.concat(Gi)),function(e,t,o){return zo(e.element).bind(function(n){return o.execute(e,t,n)})})]),Ec=w([Ei(Si(Ui),ou)]),Cc=Zi(xc,er.init,kc,Ec,function(){return mn.some(Bu)}),Dc=[Lt("selector"),Yt("execute",tu),Yt("moveOnTab",!1)],Mc=w([Ei(Si(Xi),lc(Hu)),Ei(Si(Yi),lc(Pu)),Ei(Oi([Ti,Si(Li)]),function(n,e,t,o){return t.moveOnTab?lc(Hu)(n,e,t,o):mn.none()}),Ei(Oi([Ki,Si(Li)]),function(n,e,t,o){return t.moveOnTab?lc(Pu)(n,e,t,o):mn.none()}),Ei(Si(Gi),ju),Ei(Si(Ui),ju)]),_c=w([Ei(Si(Ui),ou)]),Ic=Zi(Dc,er.init,Mc,_c,function(){return mn.some(Nu)}),Fc=Zi([kr("onSpace"),kr("onEnter"),kr("onShiftEnter"),kr("onLeft"),kr("onRight"),kr("onTab"),kr("onShiftTab"),kr("onUp"),kr("onDown"),kr("onEscape"),Yt("stopSpaceKeyup",!1),Ut("focusIn")],er.init,function(n,e,t){return[Ei(Si(Ui),t.onSpace),Ei(Oi([Ki,Si(Gi)]),t.onEnter),Ei(Oi([Ti,Si(Gi)]),t.onShiftEnter),Ei(Oi([Ti,Si(Li)]),t.onShiftTab),Ei(Oi([Ki,Si(Li)]),t.onTab),Ei(Si(Xi),t.onUp),Ei(Si(Yi),t.onDown),Ei(Si(Wi),t.onLeft),Ei(Si(qi),t.onRight),Ei(Si(Ui),t.onSpace),Ei(Si($i),t.onEscape)]},function(n,e,t){return t.stopSpaceKeyup?[Ei(Si(Ui),ou)]:[]},function(n){return n.focusIn}),Rc=oc.schema(),Vc=rc.schema(),Bc=bc.schema(),Ac=hc.schema(),jc=Cc.schema(),Nc=ic.schema(),Hc=Ic.schema(),Pc=Fc.schema(),zc=(qu=zt((tc=Pt("Creating behaviour: "+(Xu={branchKey:"mode",branches:Object.freeze({__proto__:null,acyclic:Rc,cyclic:Vc,flow:Bc,flatgrid:Ac,matrix:jc,execution:Nc,menu:Hc,special:Pc}),name:"keying",active:{events:function(n,e){return n.handler.toEvents(n,e)}},apis:{focusIn:function(e,t,o){t.sendFocusIn(t).fold(function(){e.getSystem().triggerFocus(e.element,e.element)},function(n){n(e,t,o)})},setGridSize:function(n,e,t,o,r){Ie(t,"setGridSize")?t.setGridSize(o,r):console.error("Layout does not support setGridSize")}},state:uc}).name,ir,Xu)).branchKey,tc.branches),Yu=tc.name,Ku=tc.active,Ju=tc.apis,Qu=tc.extra,Zu=tc.state,ec=Xt(Yu,[Wt("config",nc=qu)]),nr(nc,ec,Yu,Ku,Ju,Qu,Zu)),Lc=zu,Gc=Lu,$c="placeholder",Uc=Jt([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),Wc=function(r,i,u,c){return n=r,t=c,(Gu(e=u)&&e.uiType===$c?(a=e,s=t,(o=n).exists(function(n){return n!==a.owner})?Uc.single(!0,w(a)):_e(s,a.name).fold(function(){throw new Error("Unknown placeholder component: "+a.name+"\nKnown: ["+st(s)+"]\nNamespace: "+o.getOr("none")+"\nSpec: "+JSON.stringify(a,null,2))},function(n){return n.replace()})):Uc.single(!1,w(e))).fold(function(n,e){var t=Gu(u)?e(i,u.config,u.validated):e(i),o=B(_e(t,"components").getOr([]),function(n){return Wc(r,i,n,c)});return[b(b({},t),{components:o})]},function(n,e){if(Gu(u)){var t=e(i,u.config,u.validated);return u.validated.preprocess.getOr(K)(t)}return e(i)});var n,e,t,o,a,s},Xc=Uc.single,qc=Uc.multiple,Yc=w($c),Kc=0,Jc=Jt([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Qc=Yt("factory",{sketch:K}),Zc=Yt("schema",[]),na=Lt("name"),ea=ho("pname","pname",Tt(function(n){return"<alloy."+$u(n.name)+">"}),mo()),ta=vo("schema",function(){return[Ut("preprocess")]}),oa=Yt("defaults",w({})),ra=Yt("overrides",w({})),ia=lo([Qc,Zc,na,ea,oa,ra]),ua=lo([Qc,Zc,na,oa,ra]),ca=lo([Qc,Zc,na,ea,oa,ra]),aa=lo([Qc,ta,na,Lt("unit"),ea,oa,ra]),sa=Wu(Jc.required,ia);function fa(n,e,t,o){return co(e.defaults(n,t,o),t,{uid:n.partUids[e.name]},e.overrides(n,t,o))}function la(n,e,t){return o=e,r={},i={},M(t,function(n){n.fold(function(o){r[o.pname]=Xc(!0,function(n,e,t){return o.factory.sketch(fa(n,o,e,t))})},function(n){var e=o.parts[n.name];i[n.name]=w(n.factory.sketch(fa(o,n,e[Us()]),e))},function(o){r[o.pname]=Xc(!1,function(n,e,t){return o.factory.sketch(fa(n,o,e,t))})},function(o){r[o.pname]=qc(!0,function(e,n,t){return Z(e[o.name],function(n){return o.factory.sketch(co(o.defaults(e,n,t),n,o.overrides(e,n)))})})})}),{internals:w(r),externals:w(i)};var o,r,i}function da(n,e,t){return o=mn.some(n),i=(r=e).components,s=De(t,function(n,e){return o=n,r=!1,{name:w(t=e),required:function(){return o.fold(function(n,e){return n},function(n,e){return n})},used:function(){return r},replace:function(){if(r)throw new Error("Trying to use the same placeholder more than once: "+t);return r=!0,o}};var t,o,r}),u=o,c=r,a=s,f=B(i,function(n){return Wc(u,c,n,a)}),Ce(s,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+o.getOr("none")+"\nComponents: "+JSON.stringify(r.components,null,2))}),f;var o,r,i,u,c,a,s,f}function ma(n,e,t){var o=e.partUids[t];return n.getSystem().getByUid(o).toOptional()}function ga(n,e,t){return ma(n,e,t).getOrDie("Could not find part: "+t)}function pa(o){return ho("partUids","partUids",Ct(function(n){return e=n.uid,t=Z(o,Uu),xo(Z(t,function(n){return{key:n,value:e+"-"+n}}));var e,t}),mo())}function ha(n){return bo(Xs,n)}function va(o){return n=function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return o.apply(void 0,u([n.getApis(),n],e))},t=(e=o.toString()).indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,t-1).split(/,\s*/),n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:Zo(i.slice(1))}},n;var n,e,t,r,i}function ya(n){var e=Xe(n)?n.dom[Js]:null;return mn.from(e)}function ba(n,e,t,o,r){var i;return Pt(n+" [SpecSchema]",Rt((i=r,(0<o.length?[$t("parts",o)]:[]).concat([Lt("uid"),Yt("dom",{}),Yt("components",[]),Mr("originalSpec"),Yt("debug.sketcher",{})]).concat(i)).concat(e)),t)}function xa(n,e,t,o,r){var i=nf(r),u=ba(n,e,i,B(t,function(n){return n.fold(mn.none,mn.some,mn.none,mn.none).map(function(n){return $t(n.name,n.schema.concat([Mr(Us())]))}).toArray()}),[pa(t)]),c=la(0,u,t);return o(u,da(n,u,c.internals()),i,c.externals())}function wa(n){var r=Pt("Sketcher for "+n.name,ef,n),e=De(r.apis,va),t=De(r.extraApis,Fo);return b(b({name:r.name,configFields:r.configFields,sketch:function(n){return e=r.name,t=r.configFields,(0,r.factory)(ba(e,t,o=nf(n),[],[]),o);var e,t,o}},e),t)}function Sa(n){var r,e,i,t=Pt("Sketcher for "+n.name,tf,n),o=(r=t.name,e=t.partFields,i={},M(e,function(n){n.fold(mn.some,mn.none,mn.some,mn.some).each(function(t){var o=Ws(r,t.pname);i[t.name]=function(n){var e=Pt("Part: "+t.name+" in "+r,lo(t.schema),n);return b(b({},o),{config:n,validated:e})}})}),i),u=De(t.apis,va),c=De(t.extraApis,Fo);return b(b({name:t.name,partFields:t.partFields,configFields:t.configFields,sketch:function(n){return xa(t.name,t.configFields,t.partFields,t.factory,n)},parts:o},u),c)}function Oa(n){var r,e,t,o,i,u,c=(r={prefix:ui},n.replace(/\$\{([^{}]*)\}/g,function(n,e){var t,o=r[e];return"string"==(t=typeof o)||"number"==t?o.toString():n}));return e=fe.fromHtml(c),t=Je(e),o=I(void 0!==e.dom.attributes?e.dom.attributes:[],function(n,e){var t;return"class"===e.name?n:b(b({},n),((t={})[e.name]=e.value,t))},{}),i=Array.prototype.slice.call(e.dom.classList,0),u=0===t.length?{}:{innerHtml:Lo(e)},b({tag:le(e),classes:i,attributes:o},u)}function Ta(n){return{dom:Oa(n)}}function ka(n){return or([ii.config({toggleClass:ci("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Ar(n,function(n,e){(e?ii.on:ii.off)(n)})])}function Ea(n,e,t,o){var r=ka(t);return uf(e,o,r,n)}function Ca(n,e){var t=e.ui.registry.getAll().icons;return mn.from(t[n]).fold(function(){return Oa('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item ${prefix}-icon-'+n+' ${prefix}-icon"></span>')},function(n){return Oa('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item">'+n+"</span>")})}function Da(e){return Gs({name:e+"-edge",overrides:function(n){return n.model.manager.edgeActions[e].fold(function(){return{}},function(o){return{events:qo([Do(Vn(),function(n,e,t){return o(n,t)},[n]),Do(jn(),function(n,e,t){return o(n,t)},[n]),Do(Nn(),function(n,e,t){t.mouseIsDown.get()&&o(n,t)},[n])])}})}})}function Ma(n,e,t){e.store.manager.onLoad(n,e,t)}function _a(n,e,t){e.store.manager.onUnload(n,e,t)}function Ia(){var n=jo(null);return tr({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function Fa(){var i=jo({}),u=jo({});return tr({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return _e(i.get(),n).orThunk(function(){return _e(u.get(),n)})},update:function(n){var e=i.get(),t=u.get(),o={},r={};M(n,function(e){_e(o[e.value]=e,"meta").each(function(n){_e(n,"text").each(function(n){r[n]=e})})}),i.set(b(b({},e),o)),u.set(b(b({},t),r))},clear:function(){i.set({}),u.set({})}})}function Ra(n,e,t,o){var r=e.store;t.update([o]),r.setValue(n,o),e.onSetValue(n,o)}function Va(n,e){return Sf.set(n,e)}function Ba(n){return Sf.get(n)}function Aa(n){var e=n.event.raw;return-1===e.type.indexOf("touch")?void 0!==e.clientX?mn.some(e).map(function(n){return Tf(n.clientX,n.clientY)}):mn.none():void 0!==e.touches&&1===e.touches.length?mn.some(e.touches[0]).map(function(n){return Tf(n.clientX,n.clientY)}):mn.none()}function ja(n){return n.model.minX}function Na(n){return n.model.minY}function Ha(n){return n.model.minX-1}function Pa(n){return n.model.minY-1}function za(n){return n.model.maxX}function La(n){return n.model.maxY}function Ga(n){return n.model.maxX+1}function $a(n){return n.model.maxY+1}function Ua(n,e,t){return e(n)-t(n)}function Wa(n){return Ua(n,za,ja)}function Xa(n){return Ua(n,La,Na)}function qa(n){return Wa(n)/2}function Ya(n){return Xa(n)/2}function Ka(n){return n.stepSize}function Ja(n){return n.snapToGrid}function Qa(n){return n.snapStart}function Za(n){return n.rounded}function ns(n,e){return void 0!==n[e+"-edge"]}function es(n){return ns(n,"left")}function ts(n){return ns(n,"right")}function os(n){return ns(n,"top")}function rs(n){return ns(n,"bottom")}function is(n){return n.model.value.get()}function us(n,e){return{x:n,y:e}}function cs(n,e){X(n,kf(),{value:e})}function as(n,e,t,o){return n<e?n:t<n?t:n===e?e-1:Math.max(e,n-o)}function ss(n,e,t,o){return t<n?n:n<e?e:n===t?t+1:Math.min(t,n+o)}function fs(n,e,t){return Math.max(e,Math.min(t,n))}function ls(n){var e=n.min,t=n.max,o=n.range,r=n.value,i=n.step,u=n.snap,c=n.snapStart,a=n.rounded,s=n.hasMinEdge,f=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=s?e-1:e,p=f?t+1:t;if(r<l)return g;if(d<r)return p;var h,v,y,b,x,w=fs((x=l,Math.min(d,Math.max(r,x))-x)/m*o+e,g,p);return u&&e<=w&&w<=t?(h=w,v=e,y=t,b=i,c.fold(function(){var n=Math.round((h-v)/b)*b;return fs(v+n,v-1,y+1)},function(n){var e=Math.round((h-n)%b/b),t=Math.floor((h-n)/b),o=Math.floor((y-n)/b),r=Math.min(o,t+e);return Math.max(n,n+r*b)})):a?Math.round(w):w}function ds(n){var e=n.min,t=n.max,o=n.range,r=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,c=n.maxBound,a=n.maxOffset,s=n.centerMinEdge,f=n.centerMaxEdge;return r<e?i?0:s:t<r?u?c:f:(r-e)/o*a}function ms(n){return n.element.dom.getBoundingClientRect()}function gs(n){return ms(n)[Ef]}function ps(n){return ms(n).right}function hs(n){return ms(n).top}function vs(n){return ms(n).bottom}function ys(n){return ms(n).width}function bs(n){return ms(n).height}function xs(n,e){var t=ms(n),o=ms(e);return(t[Ef]+t.right)/2-o[Ef]}function ws(n,e){var t=ms(n),o=ms(e);return(t.top+t.bottom)/2-o.top}function Ss(n,e){X(n,kf(),{value:e})}function Os(n,e,t){return ls({min:ja(e),max:za(e),range:Wa(e),value:t,step:Ka(e),snap:Ja(e),snapStart:Qa(e),rounded:Za(e),hasMinEdge:es(e),hasMaxEdge:ts(e),minBound:gs(n),maxBound:ps(n),screenRange:ys(n)})}function Ts(r){return function(n,e){return Ss(n,{x:o=(0<r?ss:as)(is(t=e).x,ja(t),za(t),Ka(t))}),mn.some(o).map(x);var t,o}}function ks(n,e,t,o,r,i){var u,c,a,s,f,l,d,m,g=(c=i,a=t,s=o,f=r,l=ys(u=e),d=s.bind(function(n){return mn.some(xs(n,u))}).getOr(0),m=f.bind(function(n){return mn.some(xs(n,u))}).getOr(l),ds({min:ja(c),max:za(c),range:Wa(c),value:a,hasMinEdge:es(c),hasMaxEdge:ts(c),minBound:gs(u),minOffset:0,maxBound:ps(u),maxOffset:l,centerMinEdge:d,centerMaxEdge:m}));return gs(e)-gs(n)+g}function Es(n,e){X(n,kf(),{value:e})}function Cs(n,e,t){return ls({min:Na(e),max:La(e),range:Xa(e),value:t,step:Ka(e),snap:Ja(e),snapStart:Qa(e),rounded:Za(e),hasMinEdge:os(e),hasMaxEdge:rs(e),minBound:hs(n),maxBound:vs(n),screenRange:bs(n)})}function Ds(r){return function(n,e){return Es(n,{y:o=(0<r?ss:as)(is(t=e).y,Na(t),La(t),Ka(t))}),mn.some(o).map(x);var t,o}}function Ms(n,e,t,o,r,i){var u,c,a,s,f,l,d,m,g=(c=i,a=t,s=o,f=r,l=bs(u=e),d=s.bind(function(n){return mn.some(ws(n,u))}).getOr(0),m=f.bind(function(n){return mn.some(ws(n,u))}).getOr(l),ds({min:Na(c),max:La(c),range:Xa(c),value:a,hasMinEdge:os(c),hasMaxEdge:rs(c),minBound:hs(u),minOffset:0,maxBound:vs(u),maxOffset:l,centerMinEdge:d,centerMaxEdge:m}));return hs(e)-hs(n)+g}function _s(n,e){X(n,kf(),{value:e})}function Is(n,e){return{x:n,y:e}}function Fs(u,c){return function(n,e){return o=e,r=0<u?ss:as,_s(n,Is(i=(t=c)?is(o).x:r(is(o).x,ja(o),za(o),Ka(o)),t?r(is(o).y,Na(o),La(o),Ka(o)):is(o).y)),mn.some(i).map(x);var t,o,r,i}}function Rs(e,t,o,n){return uf(t,function(){var n=o();e.setContextToolbar([{label:t+" group",items:n}])},{},n)}function Vs(n,o){var e={onChange:function(n,e,t){o.undoManager.transact(function(){o.formatter.apply("forecolor",{value:t}),o.nodeChanged()})},getInitialValue:w(-1)};return Rs(n,"color-levels",function(){return[(r=e,qf.sketch({dom:Oa('<div class="${prefix}-slider ${prefix}-hue-slider-container"></div>'),components:[qf.parts["left-edge"](Ta('<div class="${prefix}-hue-slider-black"></div>')),qf.parts.spectrum({dom:Oa('<div class="${prefix}-slider-gradient-container"></div>'),components:[Ta('<div class="${prefix}-slider-gradient"></div>')],behaviours:or([ii.config({toggleClass:ci("thumb-active")})])}),qf.parts["right-edge"](Ta('<div class="${prefix}-hue-slider-white"></div>')),qf.parts.thumb({dom:Oa('<div class="${prefix}-slider-thumb"></div>'),behaviours:or([ii.config({toggleClass:ci("thumb-active")})])})],onChange:function(n,e,t){var o=i(t.x());Gr(e.element,"background-color",o),r.onChange(n,e,o)},onDragStart:function(n,e){ii.on(e)},onDragEnd:function(n,e){ii.off(e)},onInit:function(n,e,t,o){var r=i(o.x());Gr(e.element,"background-color",r)},stepSize:10,model:{mode:"x",minX:0,maxX:360,getInitialValue:function(){return{x:r.getInitialValue()}}},sliderBehaviours:or([jr(qf.refresh)])}))];function i(n){return n<0?"black":360<n?"white":"hsl("+n+", 100%, 50%)"}var r},o)}function Bs(n){var e,t,o=n.selection.getStart(),r=fe.fromDom(o),i=fe.fromDom(n.getBody()),u=(e=function(n){return un(i,n)},(Xe(t=r)?mn.some(t):pe(t).filter(Xe)).map(function(n){return mi(function(n,e){return e(n)},gi,n,function(n){return Wr(n,"font-size").isSome()},e).bind(function(n){return Wr(n,"font-size")}).getOrThunk(function(){return Ur(n,"font-size")})}).getOr(""));return F(Yf,function(n){return u===n}).getOr("medium")}function As(n){return[Ta('<span class="${prefix}-toolbar-button ${prefix}-icon-small-font ${prefix}-icon"></span>'),(e={onChange:n.onChange,sizes:Qf,category:"font",getInitialValue:n.getInitialValue},r=Pt("SizeSlider",Jf,e),qf.sketch({dom:{tag:"div",classes:[ci("slider-"+r.category+"-size-container"),ci("slider"),ci("slider-size-container")]},onChange:function(n,e,t){var o=t.x();0<=o&&o<r.sizes.length&&r.onChange(o)},onDragStart:function(n,e){ii.on(e)},onDragEnd:function(n,e){ii.off(e)},model:{mode:"x",minX:0,maxX:r.sizes.length-1,getInitialValue:function(){return{x:r.getInitialValue()}}},stepSize:1,snapToGrid:!0,sliderBehaviours:or([jr(qf.refresh)]),components:[qf.parts.spectrum({dom:Oa('<div class="${prefix}-slider-size-container"></div>'),components:[Ta('<div class="${prefix}-slider-size-line"></div>')]}),qf.parts.thumb({dom:Oa('<div class="${prefix}-slider-thumb"></div>'),behaviours:or([ii.config({toggleClass:ci("thumb-active")})])})]})),Ta('<span class="${prefix}-toolbar-button ${prefix}-icon-large-font ${prefix}-icon"></span>')];var e,r}function js(n){var e=void 0!==n.uid&&Ie(n,"uid")?n.uid:Zs("memento");return{get:function(n){return n.getSystem().getByUid(e).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(e).toOptional()},asSpec:function(){return b(b({},n),{uid:e})}}}Wu(Jc.external,ua);var Ns,Hs,Ps,zs,Ls,Gs=Wu(Jc.optional,ca),$s=Wu(Jc.group,aa),Us=w("entirety"),Ws=function(n,e){return{uiType:Yc(),owner:n,name:e}},Xs=$u("alloy-premade"),qs=w("alloy-id-"),Ys=w("data-alloy-id"),Ks=qs(),Js=Ys(),Qs=function(n,e){Object.defineProperty(n.dom,Js,{value:e,writable:!0})},Zs=$u,nf=function(n){return dt(n,"uid")?n:b(b({},n),{uid:Zs("uid")})},ef=Rt([Lt("name"),Lt("factory"),Lt("configFields"),Yt("apis",{}),Yt("extraApis",{})]),tf=Rt([Lt("name"),Lt("factory"),Lt("configFields"),Lt("partFields"),Yt("apis",{}),Yt("extraApis",{})]),of=wa({name:"Button",factory:function(n){function t(e){return _e(n.dom,"attributes").bind(function(n){return _e(n,e)})}var e,o=(e=n.action,qo(V([e.map(function(t){return Qo(function(n,e){t(n),e.stop()})}).toArray(),Hr()]))),r=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:o,behaviours:Gc(n.buttonBehaviours,[fi.config({}),zc.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==r)return{role:t("role").getOr("button")};var n=t("type").getOr("button"),e=t("role").map(function(n){return{role:n}}).getOr({});return b({type:n},e)}()},eventOrder:n.eventOrder}},configFields:[Yt("uid",void 0),Lt("dom"),Yt("components",[]),Lc("buttonBehaviours",[fi,zc]),Ut("action"),Ut("role"),Yt("eventOrder",{})]}),rf=Ao({fields:[],name:"unselecting",active:Object.freeze({__proto__:null,events:function(){return qo([Eo(Xn(),x)])},exhibit:function(){return Ro({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),uf=function(n,e,t,o){return of.sketch({dom:Ca(n,o),action:e,buttonBehaviours:co(or([rf.config({})]),t)})},cf=Gs({schema:[Lt("dom")],name:"label"}),af=Da("top-left"),sf=Da("top"),ff=Da("top-right"),lf=Da("right"),df=Da("bottom-right"),mf=Da("bottom"),gf=Da("bottom-left"),pf=[cf,Da("left"),lf,sf,mf,af,ff,gf,df,sa({name:"thumb",defaults:w({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:qo([_o(Vn(),n,"spectrum"),_o(Bn(),n,"spectrum"),_o(An(),n,"spectrum"),_o(jn(),n,"spectrum"),_o(Nn(),n,"spectrum"),_o(Hn(),n,"spectrum")])}}}),sa({schema:[vo("mouseIsDown",function(){return jo(!1)})],name:"spectrum",overrides:function(t){function o(e,n){return r.getValueFromEvent(n).map(function(n){return r.setValueFrom(e,t,n)})}var r=t.model.manager;return{behaviours:or([zc.config({mode:"special",onLeft:function(n){return r.onLeft(n,t)},onRight:function(n){return r.onRight(n,t)},onUp:function(n){return r.onUp(n,t)},onDown:function(n){return r.onDown(n,t)}}),fi.config({})]),events:qo([Co(Vn(),o),Co(Bn(),o),Co(jn(),o),Co(Nn(),function(n,e){t.mouseIsDown.get()&&o(n,e)})])}}})],hf=Object.freeze({__proto__:null,onLoad:Ma,onUnload:_a,setValue:function(n,e,t,o){e.store.manager.setValue(n,e,t,o)},getValue:function(n,e,t){return e.store.manager.getValue(n,e,t)},getState:function(n,e,t){return t}}),vf=Object.freeze({__proto__:null,events:function(t,o){var n=t.resetOnDom?[Yo(function(n,e){Ma(n,t,o)}),Ko(function(n,e){_a(n,t,o)})]:[Vo(t,o,Ma)];return qo(n)}}),yf=Object.freeze({__proto__:null,memory:Ia,dataset:Fa,manual:function(){return tr({readState:Y})},init:function(n){return n.store.manager.state(n)}}),bf=[Ut("initialValue"),Lt("getFallbackEntry"),Lt("getDataKey"),Lt("setValue"),Dr("manager",{setValue:Ra,getValue:function(n,e,t){var o=e.store,r=o.getDataKey(n);return t.lookup(r).getOrThunk(function(){return o.getFallbackEntry(r)})},onLoad:function(e,t,o){t.store.initialValue.each(function(n){Ra(e,t,o,n)})},onUnload:function(n,e,t){t.clear()},state:Fa})],xf=[Lt("getValue"),Yt("setValue",Y),Ut("initialValue"),Dr("manager",{setValue:function(n,e,t,o){e.store.setValue(n,o),e.onSetValue(n,o)},getValue:function(n,e,t){return e.store.getValue(n)},onLoad:function(e,t,n){t.store.initialValue.each(function(n){t.store.setValue(e,n)})},onUnload:Y,state:er.init})],wf=Ao({fields:[Kt("store",{mode:"memory"},zt("mode",{memory:[Ut("initialValue"),Dr("manager",{setValue:function(n,e,t,o){t.set(o),e.onSetValue(n,o)},getValue:function(n,e,t){return t.get()},onLoad:function(n,e,t){e.store.initialValue.each(function(n){t.isNotSet()&&t.set(n)})},onUnload:function(n,e,t){t.clear()},state:Ia})],manual:xf,dataset:bf})),Tr("onSetValue"),Yt("resetOnDom",!1)],name:"representing",active:vf,apis:hf,extra:{setValueFrom:function(n,e){var t=wf.getValue(e);wf.setValue(n,t)}},state:yf}),Sf=Yr("width",function(n){return n.dom.offsetWidth}),Of=function(t,o){return{left:t,top:o,translate:function(n,e){return Of(t+n,o+e)}}},Tf=Of,kf=w("slider.change.value"),Ef="left",Cf=Ts(-1),Df=Ts(1),Mf=mn.none,_f=mn.none,If={"top-left":mn.none(),top:mn.none(),"top-right":mn.none(),right:mn.some(function(n,e){cs(n,{x:Ga(e)})}),"bottom-right":mn.none(),bottom:mn.none(),"bottom-left":mn.none(),left:mn.some(function(n,e){cs(n,{x:Ha(e)})})},Ff=Object.freeze({__proto__:null,setValueFrom:function(n,e,t){var o=Os(n,e,t);return Ss(n,{x:o}),o},setToMin:function(n,e){Ss(n,{x:ja(e)})},setToMax:function(n,e){Ss(n,{x:za(e)})},findValueOfOffset:Os,getValueFromEvent:function(n){return Aa(n).map(function(n){return n.left})},findPositionOfValue:ks,setPositionFromValue:function(n,e,t,o){var r=is(t),i=ks(n,o.getSpectrum(n),r.x,o.getLeftEdge(n),o.getRightEdge(n),t),u=Ba(e.element)/2;Gr(e.element,"left",i-u+"px")},onLeft:Cf,onRight:Df,onUp:Mf,onDown:_f,edgeActions:If}),Rf=mn.none,Vf=mn.none,Bf=Ds(-1),Af=Ds(1),jf={"top-left":mn.none(),top:mn.some(function(n,e){cs(n,{y:Pa(e)})}),"top-right":mn.none(),right:mn.none(),"bottom-right":mn.none(),bottom:mn.some(function(n,e){cs(n,{y:$a(e)})}),"bottom-left":mn.none(),left:mn.none()},Nf=Object.freeze({__proto__:null,setValueFrom:function(n,e,t){var o=Cs(n,e,t);return Es(n,{y:o}),o},setToMin:function(n,e){Es(n,{y:Na(e)})},setToMax:function(n,e){Es(n,{y:La(e)})},findValueOfOffset:Cs,getValueFromEvent:function(n){return Aa(n).map(function(n){return n.top})},findPositionOfValue:Ms,setPositionFromValue:function(n,e,t,o){var r=is(t),i=Ms(n,o.getSpectrum(n),r.y,o.getTopEdge(n),o.getBottomEdge(n),t),u=Kr(e.element)/2;Gr(e.element,"top",i-u+"px")},onLeft:Rf,onRight:Vf,onUp:Bf,onDown:Af,edgeActions:jf}),Hf=Aa,Pf=Fs(-1,!1),zf=Fs(1,!1),Lf=Fs(-1,!0),Gf=Fs(1,!0),$f={"top-left":mn.some(function(n,e){cs(n,us(Ha(e),Pa(e)))}),top:mn.some(function(n,e){cs(n,us(qa(e),Pa(e)))}),"top-right":mn.some(function(n,e){cs(n,us(Ga(e),Pa(e)))}),right:mn.some(function(n,e){cs(n,us(Ga(e),Ya(e)))}),"bottom-right":mn.some(function(n,e){cs(n,us(Ga(e),$a(e)))}),bottom:mn.some(function(n,e){cs(n,us(qa(e),$a(e)))}),"bottom-left":mn.some(function(n,e){cs(n,us(Ha(e),$a(e)))}),left:mn.some(function(n,e){cs(n,us(Ha(e),Ya(e)))})},Uf=Object.freeze({__proto__:null,setValueFrom:function(n,e,t){var o=Is(Os(n,e,t.left),Cs(n,e,t.top));return _s(n,o),o},setToMin:function(n,e){_s(n,Is(ja(e),Na(e)))},setToMax:function(n,e){_s(n,Is(za(e),La(e)))},getValueFromEvent:Hf,setPositionFromValue:function(n,e,t,o){var r=is(t),i=ks(n,o.getSpectrum(n),r.x,o.getLeftEdge(n),o.getRightEdge(n),t),u=Ms(n,o.getSpectrum(n),r.y,o.getTopEdge(n),o.getBottomEdge(n),t),c=Ba(e.element)/2,a=Kr(e.element)/2;Gr(e.element,"left",i-c+"px"),Gr(e.element,"top",u-a+"px")},onLeft:Pf,onRight:zf,onUp:Lf,onDown:Gf,edgeActions:$f}),Wf=[Yt("stepSize",1),Yt("onChange",Y),Yt("onChoose",Y),Yt("onInit",Y),Yt("onDragStart",Y),Yt("onDragEnd",Y),Yt("snapToGrid",!1),Yt("rounded",!0),Ut("snapStart"),Gt("model",zt("mode",{x:[Yt("minX",0),Yt("maxX",100),vo("value",function(n){return jo(n.mode.minX)}),Lt("getInitialValue"),Dr("manager",Ff)],y:[Yt("minY",0),Yt("maxY",100),vo("value",function(n){return jo(n.mode.minY)}),Lt("getInitialValue"),Dr("manager",Nf)],xy:[Yt("minX",0),Yt("maxX",100),Yt("minY",0),Yt("maxY",100),vo("value",function(n){return jo({x:n.mode.minX,y:n.mode.minY})}),Lt("getInitialValue"),Dr("manager",Uf)]})),zu("sliderBehaviours",[zc,wf]),vo("mouseIsDown",function(){return jo(!1)})],Xf=w("mouse.released"),qf=Sa({name:"Slider",configFields:Wf,partFields:pf,factory:function(i,n,e,t){function u(n){return ga(n,i,"thumb")}function c(n){return ga(n,i,"spectrum")}function o(n){return ma(n,i,"left-edge")}function r(n){return ma(n,i,"right-edge")}function a(n){return ma(n,i,"top-edge")}function s(n){return ma(n,i,"bottom-edge")}function f(n,e){v.setPositionFromValue(n,e,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:a,getBottomEdge:s,getSpectrum:c})}function l(n,e){h.value.set(e),f(n,u(n))}function d(t){var n=i.mouseIsDown.get();i.mouseIsDown.set(!1),n&&ma(t,i,"thumb").each(function(n){var e=h.value.get();i.onChoose(t,n,e)})}function m(n,e){e.stop(),i.mouseIsDown.set(!0),i.onDragStart(n,u(n))}function g(n,e){e.stop(),i.onDragEnd(n,u(n)),d(n)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:n,behaviours:Lu(i.sliderBehaviours,[zc.config({mode:"special",focusIn:function(n){return ma(n,i,"spectrum").map(zc.focusIn).map(x)}}),wf.config({store:{mode:"manual",getValue:function(n){return h.value.get()}}}),ti.config({channels:((p={})[Xf()]={onReceive:d},p)})]),events:qo([Co(kf(),function(n,e){!function(n,e){l(n,e);var t=u(n);i.onChange(n,t,e),mn.some(!0)}(n,e.event.value)}),Yo(function(n,e){var t=h.getInitialValue();h.value.set(t);var o=u(n);f(n,o);var r=c(n);i.onInit(n,o,r,h.value.get())}),Co(Vn(),m),Co(An(),g),Co(jn(),m),Co(Hn(),g)]),apis:{resetToMin:function(n){v.setToMin(n,i)},resetToMax:function(n){v.setToMax(n,i)},setValue:l,refresh:f},domModification:{styles:{position:"relative"}}}},apis:{setValue:function(n,e,t){n.setValue(e,t)},resetToMin:function(n,e){n.resetToMin(e)},resetToMax:function(n,e){n.resetToMax(e)},refresh:function(n,e){n.refresh(e)}}}),Yf=["9px","10px","11px","12px","14px","16px","18px","20px","24px","32px","36px"],Kf=w(Yf),Jf=Rt([Lt("getInitialValue"),Lt("onChange"),Lt("category"),Lt("sizes")]),Qf=Kf(),Zf=window.Promise||(Ns=window,Hs=nl.immediateFn||"function"==typeof Ns.setImmediate&&Ns.setImmediate||function(n){return setTimeout(n,1)},Ps=function(t,o){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t.apply(o,n)}},zs=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},Ls=function(n,e,t){var o=!1;try{n(function(n){o||(o=!0,e(n))},function(n){o||(o=!0,t(n))})}catch(n){if(o)return;o=!0,t(n)}},nl.prototype.catch=function(n){return this.then(null,n)},nl.prototype.then=function(t,o){var r=this;return new nl(function(n,e){el.call(r,new il(t,o,n,e))})},nl.all=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var c=Array.prototype.slice.call(1===n.length&&zs(n[0])?n[0]:n);return new nl(function(o,r){if(0===c.length)return o([]);for(var i=c.length,u=function(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){u(e,n)},r)}c[e]=n,0==--i&&o(c)}catch(n){r(n)}},n=0;n<c.length;n++)u(n,c[n])})},nl.resolve=function(e){return e&&"object"==typeof e&&e.constructor===nl?e:new nl(function(n){n(e)})},nl.reject=function(t){return new nl(function(n,e){e(t)})},nl.race=function(r){return new nl(function(n,e){for(var t=0,o=r;t<o.length;t++)o[t].then(n,e)})},nl);function nl(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],Ls(n,Ps(tl,this),Ps(ol,this))}function el(t){var o=this;null!==this._state?Hs(function(){var n,e=o._state?t.onFulfilled:t.onRejected;if(null!==e){try{n=e(o._value)}catch(n){return void t.reject(n)}t.resolve(n)}else(o._state?t.resolve:t.reject)(o._value)}):this._deferreds.push(t)}function tl(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void Ls(Ps(e,n),Ps(tl,this),Ps(ol,this))}this._state=!0,this._value=n,rl.call(this)}catch(n){ol.call(this,n)}}function ol(n){this._state=!1,this._value=n,rl.call(this)}function rl(){for(var n=0,e=this._deferreds;n<e.length;n++){var t=e[n];el.call(this,t)}this._deferreds=[]}function il(n,e,t,o){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.resolve=t,this.reject=o}function ul(u){var e=js({dom:{tag:"input",attributes:{accept:"image/*",type:"file",title:""},styles:{visibility:"hidden",position:"absolute"}},events:qo([Io(Un()),Co($n(),function(n,e){var t=e.event.raw,o=t.target.files||t.dataTransfer.files;mn.from(o[0]).each(function(n){var r,t,i=u;r=n,t=r,new Zf(function(n){var e=new FileReader;e.onloadend=function(){n(e.result)},e.readAsDataURL(t)}).then(function(n){return n.split(",")[1]}).then(function(o){i.undoManager.transact(function(){var n=i.editorUpload.blobCache,e=n.create($u("mceu"),r,o);n.add(e);var t=i.dom.createHTML("img",{src:e.blobUri()});i.insertContent(t)})})})})])});return of.sketch({dom:Ca("image",u),components:[e.asSpec()],action:function(n){e.get(n).element.dom.click()}})}function cl(n){return n.dom.textContent}function al(n){return 0<n.length}function sl(n){return null==n?"":n}function fl(t,u){u.url.toOptional().filter(al).fold(function(){var e=t;u.link.bind(K).each(function(n){e.execCommand("unlink")})},function(r){var n,e,i=(n=u,(e={}).href=r,n.title.toOptional().filter(al).each(function(n){e.title=n}),n.target.toOptional().filter(al).each(function(n){e.target=n}),e);u.link.bind(K).fold(function(){var n=u.text.toOptional().filter(al).getOr(r);t.insertContent(t.dom.createHTML("a",i,t.dom.encode(n)))},function(e){var t,o,n=(t=e,o=r,u.text.toOptional().filter(al).fold(function(){return Be(n=t,"href")===cl(n)?mn.some(o):mn.none();var n},mn.some));Ve(e,i),n.each(function(n){e.dom.textContent=n})})})}function ll(n,e){var t,o;return{key:n,value:{config:{},me:(t=n,o=qo(e),Ao({fields:[Lt("enabled")],name:t,active:{events:w(o)}})),configAsRaw:w({}),initialConfig:{},state:er}}}function dl(n){return n.dom.value}function ml(n,e){if(void 0===e)throw new Error("Value.set was undefined");n.dom.value=e}function gl(n,e){var t=js(md.sketch({inputAttributes:{placeholder:hd.translate(e)},onSetValue:function(n,e){W(n,Gn())},inputBehaviours:or([fd.config({find:mn.some}),pd.config({}),zc.config({mode:"execution"})]),selectOnFocus:!1})),o=js(of.sketch({dom:Oa('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),action:function(n){var e=t.get(n);wf.setValue(e,"")}}));return{name:n,spec:ld.sketch({dom:Oa('<div class="${prefix}-input-container"></div>'),components:[t.asSpec(),o.asSpec()],containerBehaviours:or([ii.config({toggleClass:ci("input-container-empty")}),fd.config({find:function(n){return mn.some(t.get(n))}}),ll("input-clearing",[Co(Gn(),function(n){var e=t.get(n);(0<wf.getValue(e).length?ii.off:ii.on)(n)})])])})}}function pl(n,e,t){(e.disabled()?yd:bd)(n,e)}function hl(n,e){return!0===e.useNative&&k(vd,le(n.element))}function vl(n,e){return hl(n,e)?je(n.element,"disabled"):"true"===Be(n.element,"aria-disabled")}function yl(n){return"<alloy.field."+n+">"}function bl(o,r){return Ea(r,"link","link",function(){var n,e,t=kd(o,r);o.setContextToolbar(t),n=r,e=function(){o.focusToolbar()},(ad.os.isAndroid()?function(n,e){var t=e.selection.getRng();n(),e.selection.setRng(t)}:p)(e,n),cd(r).each(function(n){r.selection.select(n.dom)})})}function xl(e){function t(n){return"The component must be in a context to execute: "+n+(e?"\n"+Go(e().element)+" is not in context.":"")}function n(n){return function(){throw new Error(t(n))}}function o(n){return function(){console.warn(t(n))}}return{debugInfo:w("fake"),triggerEvent:o("triggerEvent"),triggerFocus:o("triggerFocus"),triggerEscape:o("triggerEscape"),broadcast:o("broadcast"),broadcastOn:o("broadcastOn"),broadcastEvent:o("broadcastEvent"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),isConnected:S}}function wl(n,r){var i={};return Ce(n,function(n,o){Ce(n,function(n,e){var t=_e(i,e).getOr([]);i[e]=t.concat([r(o,n)])})}),i}function Sl(n){return n.cHandler}function Ol(n,e){return{name:n,handler:e}}function Tl(n,e,t){var o=e[t];return o?function(u,c,n,a){try{var e=(t=function(n,e){var t=n[c],o=e[c],r=a.indexOf(t),i=a.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+t+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(a,null,2));return r<i?-1:i<r?1:0},(o=gn.call(n,0)).sort(t),o);return ht.value(e)}catch(n){return ht.error([n])}var t,o}("Event: "+t,"name",n,o).map(function(n){var t,e,o,r,i=Z(n,function(n){return n.handler});return{can:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n&&e.can.apply(void 0,t)},!0)},abort:(o=e=t=i,r=function(n){return n.abort},function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(o,function(n,e){return n||r(e).apply(void 0,t)},!1)}),run:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];M(t,function(n){n.run.apply(void 0,e)})}}}):ht.error(["The event ("+t+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(Z(n,function(n){return n.name}),null,2)])}function kl(e,n){M(n,function(n){ze(e,n)})}function El(e,n){M(n,function(n){Le(e,n)})}function Cl(n){var e,t,o,r,i=(e=_e(n,"behaviours").getOr({}),Z(C(st(e),function(n){return void 0!==e[n]}),function(n){return e[n].me}));return t=n,r=Z(o=i,function(n){return Xt(n.name(),[Lt("config"),Yt("state",er)])}),{list:o,data:De(Nt("component.behaviours",lo(r),t.behaviours).fold(function(n){throw new Error(po(n)+"\nComplete spec:\n"+JSON.stringify(t,null,2))},K),function(n){return w(n.map(function(n){return{config:n.config,state:n.state.init(n.config)}}))})}}function Dl(n,e,t){var o,r,i=b(b({},(o=n).dom),{uid:o.uid,domChildren:Z(o.components,function(n){return n.element})}),u=n.domModification.fold(function(){return Ro({})},Ro),c=0<e.length?function(e,n,t,o){var r=b({},n);function i(n){return _(n,function(n,e){return b(b({},e.modification),n)},{})}M(t,function(n){r[n.name()]=n.exhibit(e,o)});var u=wl(r,function(n,e){return{name:n,modification:e}});return Ro({classes:_(u.classes,function(n,e){return e.modification.concat(n)},[]),attributes:i(u.attributes),styles:i(u.styles)})}(t,{"alloy.base.modification":u},e,i):u;return b(b({},r=i),{attributes:b(b({},r.attributes),c.attributes),styles:b(b({},r.styles),c.styles),classes:r.classes.concat(c.classes)})}function Ml(n,e,t){var o,r,i,u,c,a={"alloy.base.behaviour":n.events},s=n.eventOrder;return r=t,i=e,o=wl(b(b({},a),(u=r,c={},M(i,function(n){c[n.name()]=n.handlers(u)}),c)),Ol),_d(o,s).getOrDie()}function _l(t){function n(){return f}var e=jo(Md),o=Ht(Nt("custom.definition",Fd,t)),r=Cl(t),i=r.list,u=r.data,c=function(n){var c=fe.fromTag(n.tag);Ve(c,n.attributes),kl(c,n.classes),$r(c,n.styles),n.innerHtml.each(function(n){return t=n,i=me(e=c).dom,xe(u=fe.fromDom(i.createDocumentFragment()),(o=t,(r=(i||document).createElement("div")).innerHTML=o,Je(fe.fromDom(r)))),we(e),void Qe(e,u);var e,t,o,r,i,u});var e=n.domChildren;return xe(c,e),n.value.each(function(n){ml(c,n)}),n.uid,Qs(c,n.uid),c}(Dl(o,i,u)),a=Ml(o,i,u),s=jo(o.components),f={uid:t.uid,getSystem:e.get,config:function(n){var e=u;return(m(e[n.name()])?e[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(t,null,2))})()},hasConfigured:function(n){return m(u[n.name()])},spec:t,readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return o.apis},connect:function(n){e.set(n)},disconnect:function(){e.set(xl(n))},element:c,syncComponents:function(){var n=B(Je(c),function(n){return e.get().getByDom(n).fold(function(){return[]},H)});s.set(n)},components:s.get,events:a};return f}function Il(n){return function(n){var e=Pt("external.component",Rt([Lt("element"),Ut("uid")]),n),t=jo(xl()),o=e.uid.getOrThunk(function(){return Zs("external")});Qs(e.element,o);var r={uid:o,getSystem:t.get,config:mn.none,hasConfigured:S,connect:function(n){t.set(n)},disconnect:function(){t.set(xl(function(){return r}))},getApis:function(){return{}},element:e.element,spec:n,readState:w("No state"),syncComponents:Y,components:w([]),events:{}};return ha(r)}({element:fe.fromText(n)})}function Fl(n){(zo(n.element).isNone()||fi.isFocused(n))&&(fi.isFocused(n)||fi.focus(n),X(n,Ad,{item:n}))}function Rl(n){X(n,jd,{item:n})}function Vl(n,e,t,o){var r=n.getSystem().build(o);at(n,r,t)}function Bl(n,e,t,o){F(Yd(n),function(n){return un(o.element,n.element)}).each(Ee)}function Al(e,n,t,r,o){var i=Yd(e);return mn.from(i[r]).map(function(n){return Bl(e,0,0,n),o.each(function(n){Vl(e,0,function(n,e){var t,o=e;he(t=n,r).fold(function(){Qe(t,o)},function(n){ve(n,o)})},n)}),n})}function jl(n,e,t,o){return _e(e.routes,o.start).bind(function(n){return _e(n,o.destination)})}function Nl(t,o,n){var e,r,i=n;om(e=t,r=o).bind(function(n){return tm(e,r,i,n)}).each(function(n){var e=n.transition;Le(t.element,e.transitionClass),Ne(t.element,o.destinationAttr)})}function Hl(n,e,t,o){Nl(n,e,t),je(n.element,e.stateAttr)&&Be(n.element,e.stateAttr)!==o&&e.onFinish(n,o),Re(n.element,e.stateAttr,o)}function Pl(n){ze(n,cm)}function zl(n){Le(n,cm)}function Ll(n){return _e(n,"format").getOr(n.title)}function Gl(n){return Ie(n,"items")?(r=co((e=n,t=["items"],o={},Ce(e,function(n,e){k(t,e)||(o[e]=n)}),o),{menu:!0}),i=lm(e.items),{item:r,menus:co(i.menus,bo(e.title,i.items)),expansions:co(i.expansions,bo(e.title,e.title))}):{item:n,menus:{},expansions:{}};var t,o,e,r,i}function $l(t,n,o){var e,r,i,u,c,a,s,f,l,d,m,g=(e=t,i=(r=function(n){return B(n,function(n){return void 0===n.items?!Ie(n,"format")||e.formatter.canApply(n.format)?[n]:[]:0<r(n.items).length?[n]:[]})})(n),lm(i));return c=(u={formats:g,handle:function(n,e){t.undoManager.transact(function(){ii.isOn(n)?t.formatter.remove(e):t.formatter.apply(e)}),o()}}).formats,a=function(){return m},s=fm("Styles",[].concat(Z(c.items,function(n){return sm(Ll(n),n.title,n.isSelected(),n.getPreview(),Ie(c.expansions,Ll(n)))})),a,!1),f=De(c.menus,function(n,e){var t=Z(n,function(n){return sm(Ll(n),n.title,void 0!==n.isSelected&&n.isSelected(),void 0!==n.getPreview?n.getPreview():"",Ie(c.expansions,Ll(n)))});return fm(e,t,a,!0)}),l=co(f,bo("styles",s)),d={tmenu:em.tieredData("styles",l,c.expansions)},(m=js(em.sketch({dom:{tag:"div",classes:[ci("styles-menu")]},components:[],fakeFocus:!0,stayInDom:!0,onExecute:function(n,e){var t=wf.getValue(e);return u.handle(e,t.value),mn.none()},onEscape:function(){return mn.none()},onOpenMenu:function(n,e){var t=Ba(n.element);Va(e.element,t),um.jumpTo(e,"current")},onOpenSubmenu:function(n,e,t){var o=Ba(n.element),r=pi(e.element,'[role="menu"]').getOrDie("hacky"),i=n.getSystem().getByDom(r).getOrDie();Va(t.element,o),um.progressTo(i,"before"),um.jumpTo(t,"after"),um.progressTo(t,"current")},onCollapseMenu:function(n,e,t){var o=pi(e.element,'[role="menu"]').getOrDie("hacky"),r=n.getSystem().getByDom(o).getOrDie();um.progressTo(r,"after"),um.progressTo(t,"current")},navigateOnHover:!1,highlightImmediately:!0,data:d.tmenu,markers:{backgroundMenu:ci("styles-background-menu"),menu:ci("styles-menu"),selectedMenu:ci("styles-selected-menu"),item:ci("styles-item"),selectedItem:ci("styles-selected-item")}}))).asSpec()}function Ul(n){var e=n.replace(/\|/g," ").trim();return 0<e.length?e.split(/\s+/):[]}function Wl(e,r){function n(t){return function(){return uf(e=t,function(){n.execCommand(e)},{},n=r);var n,e}}function t(o){return function(){return n=r,t=ka(e=o),uf(e,function(){n.execCommand(e)},t,n);var n,e,t}}function o(n,e,t){return function(){return Ea(r,n,e,t)}}function i(){return $l(r,y,function(){r.fire("scrollIntoView")})}function u(n,e){return{isSupported:function(){var e=r.ui.registry.getAll().buttons;return n.forall(function(n){return Ie(e,n)})},sketch:e}}var c,a,s=n("undo"),f=n("redo"),l=t("bold"),d=t("italic"),m=t("underline"),g=n("removeformat"),p=o("unlink","link",function(){r.execCommand("unlink",null,!1)}),h=o("unordered-list","ul",function(){r.execCommand("InsertUnorderedList",null,!1)}),v=o("ordered-list","ol",function(){r.execCommand("InsertOrderedList",null,!1)}),y=(a=function(n){return Z(n,function(n){if(Ie(n,"items")){var e=a(n.items);return co(co(n,{isSelected:S,getPreview:w("")}),{items:e})}return Ie(n,"format")?co(n,{isSelected:b(n.format),getPreview:x(n.format)}):(o=$u((t=n).title),r=co(t,{format:o,isSelected:b(o),getPreview:x(o)}),c.formatter.register(o,r),r);var t,o,r})})((c=r).getParam("style_formats",fr,"array"));function b(n){return function(){return c.formatter.match(n)}}function x(n){return function(){return c.formatter.getCssText(n)}}return{undo:u(mn.none(),s),redo:u(mn.none(),f),bold:u(mn.none(),l),italic:u(mn.none(),d),underline:u(mn.none(),m),removeformat:u(mn.none(),g),link:u(mn.none(),function(){return bl(e,r)}),unlink:u(mn.none(),p),image:u(mn.none(),function(){return ul(r)}),bullist:u(mn.some("bullist"),h),numlist:u(mn.some("numlist"),v),fontsizeselect:u(mn.none(),function(){return n={onChange:function(n){var o;o=t,mn.from(Yf[n]).each(function(n){var e,t=n;Bs(e=o)!==t&&e.execCommand("fontSize",!1,t)})},getInitialValue:function(){return e=Bs(t),R(Yf,function(n){return n===e}).getOr(2);var e}},Rs(e,"font-size",function(){return As(n)},t=r);var t,n}),forecolor:u(mn.none(),function(){return Vs(e,r)}),styleselect:u(mn.none(),function(){return uf("style-formats",function(n){r.fire("toReading"),e.dropup.appear(i,ii.on,n)},or([ii.config({toggleClass:ci("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),ti.config({channels:xo([Nr(mr,ii.off),Nr(gr,ii.off)])})]),r)})}}function Xl(n){function e(){return n.stopPropagation()}function t(){return n.preventDefault()}var o=i(t,e);return{target:fe.fromDom(function(n){if(et()&&l(n.target)){var e=fe.fromDom(n.target);if(Xe(e)&&ot(e)&&n.composed&&n.composedPath){var t=n.composedPath();if(t)return 0<(o=t).length?mn.some(o[0]):mn.none()}}var o;return mn.from(n.target)}(n).getOr(n.target)),x:n.clientX,y:n.clientY,stop:e,prevent:t,kill:o,raw:n}}function ql(n,e,t,o,r){var i,u,c=(i=t,u=o,function(n){i(n)&&u(Xl(n))});return n.dom.addEventListener(e,c,r),{unbind:J(mm,n,e,c,r)}}function Yl(n,e,t){return ql(n,e,gm,t,!1)}function Kl(n,e,t){return ql(n,e,gm,t,!0)}function Jl(n){return{isPortrait:w(n.matchMedia("(orientation: portrait)").matches)}}function Ql(o,e){var n=fe.fromDom(o),r=null,t=Yl(n,"orientationchange",function(){pm.clearInterval(r);var n=Jl(o);e.onChange(n),i(function(){e.onReady(n)})}),i=function(n){pm.clearInterval(r);var e=o.innerHeight,t=0;r=pm.setInterval(function(){e!==o.innerHeight?(pm.clearInterval(r),n(mn.some(o.innerHeight))):20<t&&(pm.clearInterval(r),n(mn.none())),t++},50)};return{onAdjustment:i,destroy:function(){t.unbind()}}}function Zl(n,e,t){var o,r=n.document.createRange(),i=r;return e.fold(function(n){i.setStartBefore(n.dom)},function(n,e){i.setStart(n.dom,e)},function(n){i.setStartAfter(n.dom)}),o=r,t.fold(function(n){o.setEndBefore(n.dom)},function(n,e){o.setEnd(n.dom,e)},function(n){o.setEndAfter(n.dom)}),r}function nd(n,e,t,o,r){var i=n.document.createRange();return i.setStart(e.dom,t),i.setEnd(o.dom,r),i}function ed(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom,width:n.width,height:n.height}}function td(n,e,t){return e(fe.fromDom(t.startContainer),t.startOffset,fe.fromDom(t.endContainer),t.endOffset)}function od(n,e){var r,t,o,i=(r=n,e.match({domRange:function(n){return{ltr:w(n),rtl:mn.none}},relative:function(n,e){return{ltr:T(function(){return Zl(r,n,e)}),rtl:T(function(){return mn.some(Zl(r,e,n))})}},exact:function(n,e,t,o){return{ltr:T(function(){return nd(r,n,e,t,o)}),rtl:T(function(){return mn.some(nd(r,t,o,n,e))})}}}));return(o=(t=i).ltr()).collapsed?t.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return hm.rtl(fe.fromDom(n.endContainer),n.endOffset,fe.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return td(0,hm.ltr,o)}):td(0,hm.ltr,o)}function rd(r,n){return{uid:r.uid,dom:r.dom,components:n,behaviours:Lu(r.formBehaviours,[wf.config({store:{mode:"manual",getValue:function(n){var e,t,o=(e=r,t=n.getSystem(),De(e.partUids,function(n,e){return w(t.getByUid(n))}));return De(o,function(n,o){return n().bind(function(n){var e=fd.getCurrent(n),t=new Error("Cannot find a current component to extract the value from for form part '"+o+"': "+Go(n.element));return e.fold(function(){return ht.error(t)},ht.value)}).map(wf.getValue)})},setValue:function(t,n){Ce(n,function(e,n){ma(t,r,n).each(function(n){fd.getCurrent(n).each(function(n){wf.setValue(n,e)})})})}}})]),apis:{getField:function(n,e){return ma(n,r,e).bind(fd.getCurrent)}}}}function id(n){return"prepared"===n.type?mn.some(n.menu):mn.none()}var ud,cd=function(n){return vi(fe.fromDom(n.selection.getStart()),"a")},ad=Fn(),sd=Object.freeze({__proto__:null,getCurrent:function(n,e,t){return e.find(n)}}),fd=Ao({fields:[Lt("find")],name:"composing",apis:sd}),ld=wa({name:"Container",factory:function(n){var e=n.dom,t=e.attributes,o=c(e,["attributes"]);return{uid:n.uid,dom:b({tag:"div",attributes:b({role:"presentation"},t)},o),components:n.components,behaviours:n.containerBehaviours.dump,events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[Yt("components",[]),zu("containerBehaviours",[]),Yt("events",{}),Yt("domModification",{}),Yt("eventOrder",{})]}),dd=wa({name:"DataField",factory:function(t){return{uid:t.uid,dom:t.dom,behaviours:Gc(t.dataBehaviours,[wf.config({store:{mode:"memory",initialValue:t.getInitialValue()}}),fd.config({find:mn.some})]),events:qo([Yo(function(n,e){wf.setValue(n,t.getInitialValue())})])}},configFields:[Lt("uid"),Lt("dom"),Lt("getInitialValue"),Lc("dataBehaviours",[wf,fd])]}),md=wa({name:"Input",configFields:w([Ut("data"),Yt("inputAttributes",{}),Yt("inputStyles",{}),Yt("tag","input"),Yt("inputClasses",[]),Tr("onSetValue"),Yt("styles",{}),Yt("eventOrder",{}),zu("inputBehaviours",[wf,fi]),Yt("selectOnFocus",!0)])(),factory:function(n,e){return{uid:n.uid,dom:{tag:(o=n).tag,attributes:b({type:"text"},o.inputAttributes),styles:o.inputStyles,classes:o.inputClasses},components:[],behaviours:(t=n,b(b({},or([fi.config({onFocus:t.selectOnFocus?function(n){var e=n.element,t=dl(e);e.dom.setSelectionRange(0,t.length)}:Y})])),Lu(t.inputBehaviours,[wf.config({store:b(b({mode:"manual"},t.data.map(function(n){return{initialValue:n}}).getOr({})),{getValue:function(n){return dl(n.element)},setValue:function(n,e){dl(n.element)!==e&&ml(n.element,e)}}),onSetValue:t.onSetValue})]))),eventOrder:n.eventOrder};var t,o}}),gd=Object.freeze({__proto__:null,exhibit:function(n,e){return Ro({attributes:xo([{key:e.tabAttr,value:"true"}])})}}),pd=Ao({fields:[Yt("tabAttr","data-alloy-tabstop")],name:"tabstopping",active:gd}),hd=tinymce.util.Tools.resolve("tinymce.util.I18n"),vd=["input","button","textarea","select"],yd=function(e,n,t){n.disableClass.each(function(n){ze(e.element,n)}),(hl(e,n)?function(n){Re(n.element,"disabled","disabled")}:function(n){Re(n.element,"aria-disabled","true")})(e),n.onDisabled(e)},bd=function(e,n,t){n.disableClass.each(function(n){Le(e.element,n)}),(hl(e,n)?function(n){Ne(n.element,"disabled")}:function(n){Re(n.element,"aria-disabled","false")})(e),n.onEnabled(e)},xd=Object.freeze({__proto__:null,enable:bd,disable:yd,isDisabled:vl,onLoad:pl,set:function(n,e,t,o){(o?yd:bd)(n,e)}}),wd=Object.freeze({__proto__:null,exhibit:function(n,e){return Ro({classes:e.disabled()?e.disableClass.toArray():[]})},events:function(t,n){return qo([Eo(Zn(),function(n,e){return vl(n,t)}),Vo(t,n,pl)])}}),Sd=Ao({fields:[Kt("disabled",S,go),Yt("useNative",!0),Ut("disableClass"),Tr("onDisabled"),Tr("onEnabled")],name:"disabling",active:wd,apis:xd}),Od=[zu("formBehaviours",[wf])],Td=(va(function(n,e,t){return n.getField(e,t)}),function(n){var r,e={field:function(n,e){return r.push(n),t=yl(n),o=e,{uiType:Yc(),owner:"form",name:t,config:o,validated:{}};var t,o},record:w(r=[])},t=n(e),o=Z(e.record(),function(n){return sa({name:n,pname:yl(n)})});return xa("form",Od,o,rd,t)}),kd=T(function(o,r){return[{label:"the link group",items:[(n={fields:[gl("url","Type or paste URL"),gl("text","Link text"),gl("title","Link title"),gl("target","Link target"),{name:"link",spec:dd.sketch({dom:{tag:"span",styles:{display:"none"}},getInitialValue:function(){return mn.none()}})}],maxFieldIndex:["url","text","title","target"].length-1,getInitialValue:function(){return mn.some(cd(n=r).fold(function(){return{url:"",text:n.selection.getContent({format:"text"}),title:"",target:"",link:mn.none()}},function(n){return t=cl(e=n),o=Be(e,"href"),r=Be(e,"title"),i=Be(e,"target"),{url:sl(o),text:t!==o?sl(t):"",title:sl(r),target:sl(i),link:mn.some(e)};var e,t,o,r,i}));var n},onExecute:function(n,e){var t=wf.getValue(n);fl(r,t),o.restoreToolbar(),r.focus()}},a="navigateEvent",s=Pt("SerialisedDialog",lo([Lt("fields"),Yt("maxFieldIndex",n.fields.length-1),Lt("onExecute"),Lt("getInitialValue"),vo("state",function(){return{dialogSwipeState:cu(),currentScreen:jo(0)}})]),n),f=js(Td(function(t){return{dom:Oa('<div class="${prefix}-serialised-dialog"></div>'),components:[ld.sketch({dom:Oa('<div class="${prefix}-serialised-dialog-chain" style="left: 0px; position: absolute;"></div>'),components:Z(s.fields,function(n,e){return e<=s.maxFieldIndex?ld.sketch({dom:Oa('<div class="${prefix}-serialised-dialog-screen"></div>'),components:[i(-1,"previous",0<e),t.field(n.name,n.spec),i(1,"next",e<s.maxFieldIndex)]}):t.field(n.name,n.spec)})})],formBehaviours:or([jr(function(n,e){var t=e;hi(n.element,"."+ci("serialised-dialog-chain")).each(function(n){Gr(n,"left",-s.state.currentScreen.get()*t.width+"px")})}),zc.config({mode:"special",focusIn:function(n,e){c(n)},onTab:function(n,e){return u(n,1),mn.some(!0)},onShiftTab:function(n,e){return u(n,-1),mn.some(!0)}}),ll("form-events",[Yo(function(e,n){s.state.currentScreen.set(0),s.state.dialogSwipeState.clear();var t=l.get(e);Qi.highlightFirst(t),s.getInitialValue(e).each(function(n){wf.setValue(e,n)})}),Qo(s.onExecute),Co(Wn(),function(n,e){"left"===e.event.raw.propertyName&&c(n)}),Co(a,function(n,e){u(n,e.event.direction)})])])}})),l=js({dom:Oa('<div class="${prefix}-dot-container"></div>'),behaviours:or([Qi.config({highlightClass:ci("dot-active"),itemClass:ci("dot-item")})]),components:B(s.fields,function(n,e){return e<=s.maxFieldIndex?[Ta('<div class="${prefix}-dot-item ${prefix}-icon-full-dot ${prefix}-icon"></div>')]:[]})}),{dom:Oa('<div class="${prefix}-serializer-wrapper"></div>'),components:[f.asSpec(),l.asSpec()],behaviours:or([zc.config({mode:"special",focusIn:function(n){var e=f.get(n);zc.focusIn(e)}}),ll("serializer-wrapper-events",[Co(Vn(),function(n,e){var t=e.event;s.state.dialogSwipeState.set({xValue:t.raw.touches[0].clientX,points:[]})}),Co(Bn(),function(n,e){var t=e.event;s.state.dialogSwipeState.on(function(n){e.event.prevent(),s.state.dialogSwipeState.set(function(n,e){if(e===n.xValue)return n;var t=0<e-n.xValue?1:-1,o={direction:t,xValue:e};return{xValue:e,points:(0===n.points.length?[]:n.points[n.points.length-1].direction===t?n.points.slice(0,n.points.length-1):n.points).concat([o])}}(n,t.raw.touches[0].clientX))})}),Co(An(),function(n,e){s.state.dialogSwipeState.on(function(t){u(f.get(n),-1*function(){if(0===t.points.length)return 0;var n=t.points[0].direction,e=t.points[t.points.length-1].direction;return-1===n&&-1===e?-1:1===n&&1===e?1:0}())})})])])})]}];function i(e,n,t){return of.sketch({dom:Oa('<span class="${prefix}-icon-'+n+' ${prefix}-icon"></span>'),action:function(n){X(n,a,{direction:e})},buttonBehaviours:or([Sd.config({disableClass:ci("toolbar-navigation-disabled"),disabled:function(){return!t}})])})}function u(n,r){var i=Jr(n.element,"."+ci("serialised-dialog-screen"));hi(n.element,"."+ci("serialised-dialog-chain")).each(function(o){0<=s.state.currentScreen.get()+r&&s.state.currentScreen.get()+r<i.length&&(Wr(o,"left").each(function(n){var e=parseInt(n,10),t=Ba(i[0]);Gr(o,"left",e-r*t+"px")}),s.state.currentScreen.set(s.state.currentScreen.get()+r))})}function c(o){var n=Jr(o.element,"input");mn.from(n[s.state.currentScreen.get()]).each(function(n){o.getSystem().getByDom(n).each(function(n){var e=o,t=n.element;e.getSystem().triggerFocus(t,e.element)})});var e=l.get(o);Qi.highlightAt(e,s.state.currentScreen.get())}var n,a,s,f,l}),Ed=qo([{key:Yn(),value:ko({can:function(n,e){var t,o=e.event,r=o.originator,i=o.target;return!(un(t=r,n.element)&&!un(t,i)&&(console.warn(Yn()+" did not get interpreted by the desired target. \nOriginator: "+Go(r)+"\nTarget: "+Go(i)+"\nCheck the "+Yn()+" event handlers"),1))}})}]),Cd=Object.freeze({__proto__:null,events:Ed}),Dd=K,Md=xl(),_d=function(n,c){var e,t,o,r,i,u,a=Me(n,function(r,u){return(1===r.length?ht.value(r[0].handler):Tl(r,c,u)).map(function(n){var e,i,t=(i=m(e=n)?{can:x,abort:S,run:e}:e,function(n,e){for(var t=[],o=2;o<arguments.length;o++)t[o-2]=arguments[o];var r=[n,e].concat(t);i.abort.apply(void 0,r)?e.stop():i.can.apply(void 0,r)&&i.run.apply(void 0,r)}),o=1<r.length?C(c[u],function(e){return E(r,function(n){return n.name===e})}).join(" > "):r[0].name;return bo(u,{handler:t,purpose:o})})});return e={},t=[],o=[],M(a,function(n){n.fold(function(n){t.push(n)},function(n){o.push(n)})}),0<(u={errors:t,values:o}).errors.length?ht.error(V(u.errors)):(i=e,0===(r=u.values).length?ht.value(i):ht.value(co(i,ao.apply(void 0,r))))},Id="alloy.base.behaviour",Fd=lo([ho("dom","dom",Ot(),lo([Lt("tag"),Yt("styles",{}),Yt("classes",[]),Yt("attributes",{}),Ut("value"),Ut("innerHtml")])),Lt("components"),Lt("uid"),Yt("events",{}),Yt("apis",{}),ho("eventOrder","eventOrder",((ud={})[Zn()]=["disabling",Id,"toggling","typeaheadevents"],ud[Yn()]=[Id,"focusing","keying"],ud[oe()]=[Id,"disabling","toggling","representing"],ud[Gn()]=[Id,"representing","streaming","invalidating"],ud[ie()]=[Id,"representing","item-events","tooltipping"],ud[jn()]=["focusing",Id,"item-type-events"],ud[Vn()]=["focusing",Id,"item-type-events"],ud[Pn()]=["item-type-events","tooltipping"],ud[Qn()]=["receiving","reflecting","tooltipping"],Ct(w(ud))),mo()),Ut("domModification")]),Rd=Zs,Vd=function(u){return _e(u,Xs).getOrThunk(function(){var n,e,t,o,r,i=dt(u,"uid")?u:b({uid:Rd("")},u);return n=Dd(i),e=n.events,t=c(n,["events"]),o=Z(_e(t,"components").getOr([]),Vd),r=b(b({},t),{events:b(b({},Cd),e),components:o}),ht.value(_l(r)).getOrDie()})},Bd=ha,Ad="alloy.item-hover",jd="alloy.item-focus",Nd=w(Ad),Hd=w(jd),Pd=[Lt("data"),Lt("components"),Lt("dom"),Yt("hasSubmenu",!1),Ut("toggling"),Lc("itemBehaviours",[ii,fi,zc,wf]),Yt("ignoreFocus",!1),Yt("domModification",{}),Dr("builder",function(n){return{dom:n.dom,domModification:b(b({},n.domModification),{attributes:b(b(b({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:Gc(n.itemBehaviours,[n.toggling.fold(ii.revoke,function(n){return ii.config(b({aria:{mode:"checked"}},n))}),fi.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){Rl(n)}}),zc.config({mode:"execution"}),wf.config({store:{mode:"memory",initialValue:n.data}}),ll("item-type-events",u(u([],Hr()),[Co(Pn(),Fl),Co(ne(),fi.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),Yt("eventOrder",{})],zd=[Lt("dom"),Lt("components"),Dr("builder",function(n){return{dom:n.dom,components:n.components,events:qo([Co(ne(),function(n,e){e.stop()})])}})],Ld=w("item-widget"),Gd=w([sa({name:"widget",overrides:function(e){return{behaviours:or([wf.config({store:{mode:"manual",getValue:function(n){return e.data},setValue:Y}})])}}})]),$d=zt("type",{widget:[Lt("uid"),Lt("data"),Lt("components"),Lt("dom"),Yt("autofocus",!1),Yt("ignoreFocus",!1),Lc("widgetBehaviours",[wf,fi,zc]),Yt("domModification",{}),pa(Gd()),Dr("builder",function(t){function o(n){return ma(n,t,"widget").map(function(n){return zc.focusIn(n),n})}function n(n,e){return eu(e.event.target)||t.autofocus&&e.setSource(n.element),mn.none()}var e=la(Ld(),t,Gd()),r=da(Ld(),t,e.internals());return{dom:t.dom,components:r,domModification:t.domModification,events:qo([Qo(function(n,e){o(n).each(function(n){e.stop()})}),Co(Pn(),Fl),Co(ne(),function(n,e){t.autofocus?o(n):fi.focus(n)})]),behaviours:Gc(t.widgetBehaviours,[wf.config({store:{mode:"memory",initialValue:t.data}}),fi.config({ignore:t.ignoreFocus,onFocus:function(n){Rl(n)}}),zc.config({mode:"special",focusIn:t.autofocus?function(n){o(n)}:ur(),onLeft:n,onRight:n,onEscape:function(n,e){return fi.isFocused(n)||t.autofocus?(t.autofocus&&e.setSource(n.element),mn.none()):(fi.focus(n),mn.some(!0))}})])}})],item:Pd,separator:zd}),Ud=w([$s({factory:{sketch:function(n){var e=Pt("menu.spec item",$d,n);return e.builder(e)}},name:"items",unit:"item",defaults:function(n,e){return dt(e,"uid")?e:b(b({},e),{uid:Zs("item")})},overrides:function(n,e){return{type:e.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),Wd=w([Lt("value"),Lt("items"),Lt("dom"),Lt("components"),Yt("eventOrder",{}),zu("menuBehaviours",[Qi,wf,fd,zc]),Kt("movement",{mode:"menu",moveOnTab:!0},zt("mode",{grid:[ei(),Dr("config",function(n,e){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:e.initSize.numColumns,numRows:e.initSize.numRows},focusManager:n.focusManager}})],matrix:[Dr("config",function(n,e){return{mode:"matrix",selectors:{row:e.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),Lt("rowSelector")],menu:[Yt("moveOnTab",!0),Dr("config",function(n,e){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:e.moveOnTab,focusManager:n.focusManager}})]})),Gt("markers",ni()),Yt("fakeFocus",!1),Yt("focusManager",Ri()),Tr("onHighlight")]),Xd=w("alloy.menu-focus"),qd=Sa({name:"Menu",configFields:Wd(),partFields:Ud(),factory:function(n,e,t,o){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:Lu(n.menuBehaviours,[Qi.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),wf.config({store:{mode:"memory",initialValue:n.value}}),fd.config({find:mn.some}),zc.config(n.movement.config(n,n.movement))]),events:qo([Co(Hd(),function(e,t){var n=t.event;e.getSystem().getByDom(n.target).each(function(n){Qi.highlight(e,n),t.stop(),X(e,Xd(),{menu:e,item:n})})}),Co(Nd(),function(n,e){var t=e.event.item;Qi.highlight(n,t)})]),components:e,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),Yd=function(n,e){return n.components()},Kd=Ao({fields:[],name:"replacing",apis:Object.freeze({__proto__:null,append:function(n,e,t,o){Vl(n,0,Qe,o)},prepend:function(n,e,t,o){Vl(n,0,be,o)},remove:Bl,replaceAt:Al,replaceBy:function(e,n,t,o,r){return R(Yd(e),o).bind(function(n){return Al(e,0,0,n,r)})},set:function(i,n,e,u){var t,o,r,c;t=function(){var e,n,t,o,r=Z(u,i.getSystem().build);n=r,o=(e=i).components(),M((t=e).components(),function(n){return Ze(n.element)}),we(t.element),t.syncComponents(),M(N(o,n),function(n){ut(n),e.getSystem().removeFromWorld(n)}),M(n,function(n){n.getSystem().isConnected()?ke(e,n):(e.getSystem().addToWorld(n),ke(e,n),rt(e.element)&&ct(n)),e.syncComponents()})},o=i.element,r=tt(o),c=Po(r).bind(function(e){function n(n){return un(e,n)}var r,i;return n(o)?mn.some(o):(r=n,(i=function(n){for(var e=0;e<n.childNodes.length;e++){var t=fe.fromDom(n.childNodes[e]);if(r(t))return mn.some(t);var o=i(n.childNodes[e]);if(o.isSome())return o}return mn.none()})(o.dom))}),t(o),c.each(function(e){Po(r).filter(function(n){return un(n,e)}).fold(function(){No(e)},Y)})},contents:Yd})}),Jd=function(t,o,r,n){return _e(r,n).bind(function(n){return _e(t,n).bind(function(n){var e=Jd(t,o,r,n);return mn.some([n].concat(e))})}).getOr([])},Qd=function(){function c(u){return function(n){for(var e=st(n),t=0,o=e.length;t<o;t++){var r=e[t],i=n[r];if(i===u)return mn.some(i)}return mn.none()}(i.get())}function a(n){return e(n).bind(id)}function t(n){return _e(i.get(),n)}var i=jo({}),u=jo({}),s=jo({}),f=cu(),l=jo({}),e=function(n){return _e(u.get(),n)};return{setMenuBuilt:function(n,e){var t;u.set(b(b({},u.get()),((t={})[n]={type:"prepared",menu:e},t)))},setContents:function(n,e,t,o){f.set(n),i.set(t),u.set(e),l.set(o);var r=function(n,e){var t={};Ce(n,function(n,e){M(n,function(n){t[n]=e})});var o=e,r=lt(e,function(n,e){return{k:n,v:e}}),i=De(r,function(n,e){return[e].concat(Jd(t,o,r,e))});return De(t,function(n){return _e(i,n).getOr([n])})}(o,t);s.set(r)},expand:function(t){return _e(i.get(),t).map(function(n){var e=_e(s.get(),t).getOr([]);return[n].concat(e)})},refresh:function(n){return _e(s.get(),n)},collapse:function(n){return _e(s.get(),n).bind(function(n){return 1<n.length?mn.some(n.slice(1)):mn.none()})},lookupMenu:e,lookupItem:t,otherMenus:function(n){var e=l.get();return N(st(e),n)},getPrimary:function(){return f.get().bind(a)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),s.set({}),f.clear()},isClear:function(){return f.get().isNone()},getTriggeringPath:function(n,u){var e=C(t(n).toArray(),function(n){return a(n).isSome()});return _e(s.get(),n).bind(function(n){var i=j(e.concat(n));return function(n){for(var e=[],t=0;t<n.length;t++){var o=n[t];if(!o.isSome())return mn.none();e.push(o.getOrDie())}return mn.some(e)}(B(i,function(n,e){return t=n,o=u,r=i.slice(0,e+1),a(t).bind(function(e){return c(t).bind(function(n){return o(n).map(function(n){return{triggeredMenu:e,triggeringItem:n,triggeringPath:r}})})}).fold(function(){return wo(f.get(),n)?[]:[mn.none()]},function(n){return[mn.some(n)]});var t,o,r}))})}}},Zd=id,nm=w("collapse-item"),em=wa({name:"TieredMenu",configFields:[Cr("onExecute"),Cr("onEscape"),Er("onOpenMenu"),Er("onOpenSubmenu"),Tr("onRepositionMenu"),Tr("onCollapseMenu"),Yt("highlightImmediately",!0),$t("data",[Lt("primary"),Lt("menus"),Lt("expansions")]),Yt("fakeFocus",!1),Tr("onHighlight"),Tr("onHover"),$t("markers",[Lt("backgroundMenu")].concat(wr()).concat(Sr())),Lt("dom"),Yt("navigateOnHover",!0),Yt("stayInDom",!1),zu("tmenuBehaviours",[zc,Qi,fd,Kd]),Yt("eventOrder",{})],apis:{collapseMenu:function(n,e){n.collapseMenu(e)},highlightPrimary:function(n,e){n.highlightPrimary(e)},repositionMenus:function(n,e){n.repositionMenus(e)}},factory:function(c,n){function t(n){var o,r,e=(o=n,r=c.data.primary,De(c.data.menus,function(n,e){function t(){return qd.sketch(b(b({},n),{value:e,markers:c.markers,fakeFocus:c.fakeFocus,onHighlight:c.onHighlight,focusManager:(c.fakeFocus?Vi:Ri)()}))}return e===r?{type:"prepared",menu:o.getSystem().build(t())}:{type:"notbuilt",nbMenu:t}})),t=De(c.data.menus,function(n,e){return B(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})});return m.setContents(c.data.primary,e,c.data.expansions,t),m.getPrimary()}function a(n){return wf.getValue(n).value}function i(e,n){Qi.highlight(e,n),Qi.getHighlighted(n).orThunk(function(){return Qi.getFirst(n)}).each(function(n){nn(e,n.element,ne())})}function u(e,n){return So(Z(n,function(n){return e.lookupMenu(n).bind(function(n){return"prepared"===n.type?mn.some(n.menu):mn.none()})}))}function s(e,n,t){M(u(n,n.otherMenus(t)),function(n){El(n.element,[c.markers.backgroundMenu]),c.stayInDom||Kd.remove(e,n)})}function f(n,o){var e;Ce((e=n,r.get().getOrThunk(function(){var t={};return M(C(Jr(e.element,"."+c.markers.item),function(n){return"true"===Be(n,"aria-haspopup")}),function(n){e.getSystem().getByDom(n).each(function(n){var e=a(n);t[e]=n})}),r.set(t),t})),function(n,e){var t=k(o,e);Re(n.element,"aria-expanded",t)})}function l(t,o,r){return mn.from(r[0]).bind(function(n){return o.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return mn.none();var e=n.menu;return M(u(o,r.slice(1)),function(n){ze(n.element,c.markers.backgroundMenu)}),rt(e.element)||Kd.append(t,Bd(e)),El(e.element,[c.markers.backgroundMenu]),i(t,e),s(t,o,r),mn.some(e)})})}var d,e,r=cu(),m=Qd();function g(r,i,u){if(void 0===u&&(u=d.HighlightSubmenu),i.hasConfigured(Sd)&&Sd.isDisabled(i))return mn.some(i);var n=a(i);return m.expand(n).bind(function(o){return f(r,o),mn.from(o[0]).bind(function(t){return m.lookupMenu(t).bind(function(n){var e=function(n,e,t){if("notbuilt"!==t.type)return t.menu;var o=n.getSystem().build(t.nbMenu());return m.setMenuBuilt(e,o),o}(r,t,n);return rt(e.element)||Kd.append(r,Bd(e)),c.onOpenSubmenu(r,i,e,j(o)),u===d.HighlightSubmenu?(Qi.highlightFirst(e),l(r,m,o)):(Qi.dehighlightAll(e),mn.some(i))})})})}function o(e,t){var n=a(t);return m.collapse(n).bind(function(n){return f(e,n),l(e,m,n).map(function(n){return c.onCollapseMenu(e,t,n),n})})}function p(t){return function(e,n){return vi(n.getSource(),"."+c.markers.item).bind(function(n){return e.getSystem().getByDom(n).toOptional().bind(function(n){return t(e,n).map(x)})})}}function h(n){return Qi.getHighlighted(n).bind(Qi.getHighlighted)}(e=d={})[e.HighlightSubmenu=0]="HighlightSubmenu",e[e.HighlightParent=1]="HighlightParent";var v=qo([Co(Xd(),function(t,o){var n=o.event.item;m.lookupItem(a(n)).each(function(){var n=o.event.menu;Qi.highlight(t,n);var e=a(o.event.item);m.refresh(e).each(function(n){return s(t,m,n)})})}),Qo(function(e,n){var t=n.event.target;e.getSystem().getByDom(t).each(function(n){0===a(n).indexOf("collapse-item")&&o(e,n),g(e,n,d.HighlightSubmenu).fold(function(){c.onExecute(e,n)},Y)})}),Yo(function(e,n){t(e).each(function(n){Kd.append(e,Bd(n)),c.onOpenMenu(e,n),c.highlightImmediately&&i(e,n)})})].concat(c.navigateOnHover?[Co(Nd(),function(n,e){var t=e.event.item,o=n,r=a(t);m.refresh(r).bind(function(n){return f(o,n),l(o,m,n)}),g(n,t,d.HighlightParent),c.onHover(n,t)})]:[])),y={collapseMenu:function(e){h(e).each(function(n){o(e,n)})},highlightPrimary:function(e){m.getPrimary().each(function(n){i(e,n)})},repositionMenus:function(o){m.getPrimary().bind(function(e){return h(o).bind(function(n){var e=a(n),t=So(Z(Me(m.getMenus(),K),Zd));return m.getTriggeringPath(e,function(n){return e=n,P(t,function(n){return n.getSystem().isConnected()?F(Qi.getCandidates(n),function(n){return a(n)===e}):mn.none()});var e})}).map(function(n){return{primary:e,triggeringPath:n}})}).fold(function(){mn.from(o.components()[0]).filter(function(n){return"menu"===Be(n.element,"role")}).each(function(n){c.onRepositionMenu(o,n,[])})},function(n){var e=n.primary,t=n.triggeringPath;c.onRepositionMenu(o,e,t)})}};return{uid:c.uid,dom:c.dom,markers:c.markers,behaviours:Lu(c.tmenuBehaviours,[zc.config({mode:"special",onRight:p(function(n,e){return eu(e.element)?mn.none():g(n,e,d.HighlightSubmenu)}),onLeft:p(function(n,e){return eu(e.element)?mn.none():o(n,e)}),onEscape:p(function(n,e){return o(n,e).orThunk(function(){return c.onEscape(n,e).map(function(){return n})})}),focusIn:function(e,n){m.getPrimary().each(function(n){nn(e,n.element,ne())})}}),Qi.config({highlightClass:c.markers.selectedMenu,itemClass:c.markers.menu}),fd.config({find:function(n){return Qi.getHighlighted(n)}}),Kd.config({})]),eventOrder:c.eventOrder,apis:y,events:v}},extraApis:{tieredData:function(n,e,t){return{primary:n,menus:e,expansions:t}},singleData:function(n,e){return{primary:n,menus:bo(n,e),expansions:{}}},collapseItem:function(n){return{value:$u(nm()),meta:{text:n}}}}}),tm=function(n,e,t,o){return jl(0,e,0,o).bind(function(e){return e.transition.map(function(n){return{transition:n,route:e}})})},om=function(e,t,n){return Ae(e.element,t.destinationAttr).map(function(n){return{start:Be(e.element,t.stateAttr),destination:n}})},rm=Object.freeze({__proto__:null,findRoute:jl,disableTransition:Nl,getCurrentRoute:om,jumpTo:Hl,progressTo:function(t,o,r,i){var e,u=o;je((e=t).element,u.destinationAttr)&&(Ae(e.element,u.destinationAttr).each(function(n){Re(e.element,u.stateAttr,n)}),Ne(e.element,u.destinationAttr));var n,c=(n=i,{start:Be(t.element,o.stateAttr),destination:n});tm(t,o,r,c).fold(function(){Hl(t,o,r,i)},function(n){Nl(t,o,r);var e=n.transition;ze(t.element,e.transitionClass),Re(t.element,o.destinationAttr,i)})},getState:function(n,e,t){return Ae(n.element,e.stateAttr)}}),im=Object.freeze({__proto__:null,events:function(r,i){return qo([Co(Wn(),function(t,n){var o=n.event.raw;om(t,r).each(function(e){jl(0,r,0,e).each(function(n){n.transition.each(function(n){o.propertyName===n.property&&(Hl(t,r,i,e.destination),r.onTransition(t,e))})})})}),Yo(function(n,e){Hl(n,r,i,r.initialState)})])}}),um=Ao({fields:[Yt("destinationAttr","data-transitioning-destination"),Yt("stateAttr","data-transitioning-state"),Lt("initialState"),Tr("onTransition"),Tr("onFinish"),Gt("routes",jt(ht.value,jt(ht.value,Rt([qt("transition",[Lt("property"),Lt("transitionClass")])]))))],name:"transitioning",active:im,apis:rm,extra:{createRoutes:function(n){var o={};return Ce(n,function(n,e){var t=e.split("<->");o[t[0]]=bo(t[1],n),o[t[1]]=bo(t[0],n)}),o},createBistate:function(n,e,t){return xo([{key:n,value:bo(e,t)},{key:e,value:bo(n,t)}])},createTristate:function(n,e,t,o){return xo([{key:n,value:xo([{key:e,value:o},{key:t,value:o}])},{key:e,value:xo([{key:n,value:o},{key:t,value:o}])},{key:t,value:xo([{key:n,value:o},{key:e,value:o}])}])}}}),cm=ci("scrollable"),am=cm,sm=function(n,e,t,o,r){return{data:{value:n,text:e},type:"item",dom:{tag:"div",classes:r?[ci("styles-item-is-menu")]:[]},toggling:{toggleOnExecute:!1,toggleClass:ci("format-matches"),selected:t},itemBehaviours:or(r?[]:[Ar(n,function(n,e){(e?ii.on:ii.off)(n)})]),components:[{dom:{tag:"div",attributes:{style:o},innerHtml:e}}]}},fm=function(n,e,t,o){return{value:n,dom:{tag:"div"},components:[of.sketch({dom:{tag:"div",classes:[ci("styles-collapser")]},components:o?[{dom:{tag:"span",classes:[ci("styles-collapse-icon")]}},Il(n)]:[Il(n)],action:function(n){var e;o&&(e=t().get(n),em.collapseMenu(e))}}),{dom:{tag:"div",classes:[ci("styles-menu-items-container")]},components:[qd.parts.items({})],behaviours:or([ll("adhoc-scrollable-menu",[Yo(function(n,e){Gr(n.element,"overflow-y","auto"),Gr(n.element,"-webkit-overflow-scrolling","touch"),Pl(n.element)}),Ko(function(n){Xr(n.element,"overflow-y"),Xr(n.element,"-webkit-overflow-scrolling"),zl(n.element)})])])}],items:e,menuBehaviours:or([um.config({initialState:"after",routes:um.createTristate("before","current","after",{transition:{property:"transform",transitionClass:"transitioning"}})})])}},lm=function(n){return _(n,function(n,e){var t=Gl(e);return{menus:co(n.menus,t.menus),items:[t.item].concat(n.items),expansions:co(n.expansions,t.expansions)}},{menus:{},expansions:{},items:[]})},dm=function(n){return B(n,function(n){return(D(n)?dm:Ul)(n)})},mm=function(n,e,t,o){n.dom.removeEventListener(e,t,o)},gm=x,pm=tinymce.util.Tools.resolve("tinymce.util.Delay"),hm=Jt([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function vm(n,e){var t=le(n);return"input"===t?Sg.after(n):k(["br","img"],t)?0===e?Sg.before(n):Sg.after(n):Sg.on(n,e)}function ym(n){return mn.from(n.getSelection())}function bm(n,e,t,o,r){var i=nd(n,e,t,o,r);ym(n).each(function(n){n.removeAllRanges(),n.addRange(i)})}function xm(n,e,t,o,r){var i,u,c,a,s,f=(i=o,u=r,c=vm(e,t),a=vm(i,u),Tg.relative(c,a));od(s=n,f).match({ltr:function(n,e,t,o){bm(s,n,e,t,o)},rtl:function(r,i,u,c){ym(s).each(function(n){if(n.setBaseAndExtent)n.setBaseAndExtent(r.dom,i,u.dom,c);else if(n.extend)try{t=u,o=c,(e=n).collapse(r.dom,i),e.extend(t.dom,o)}catch(n){bm(s,u,c,r,i)}else bm(s,u,c,r,i);var e,t,o})}})}function wm(n){if(0<n.rangeCount){var e=n.getRangeAt(0),t=n.getRangeAt(n.rangeCount-1);return mn.some(bg(fe.fromDom(e.startContainer),e.startOffset,fe.fromDom(t.endContainer),t.endOffset))}return mn.none()}function Sm(n){if(null===n.anchorNode||null===n.focusNode)return wm(n);var e,t,o,r,i,u,c,a,s,f,l,d=fe.fromDom(n.anchorNode),m=fe.fromDom(n.focusNode);return e=d,t=n.anchorOffset,o=m,r=n.focusOffset,u=t,c=o,a=r,(s=me(i=e).dom.createRange()).setStart(i.dom,u),s.setEnd(c.dom,a),f=s,l=un(e,o)&&t===r,f.collapsed&&!l?mn.some(bg(d,n.anchorOffset,m,n.focusOffset)):wm(n)}function Om(n){return ym(n).filter(function(n){return 0<n.rangeCount}).bind(Sm)}function Tm(n,e){var i,t,o,r=(t=od(i=n,e).match({ltr:function(n,e,t,o){var r=i.document.createRange();return r.setStart(n.dom,e),r.setEnd(t.dom,o),r},rtl:function(n,e,t,o){var r=i.document.createRange();return r.setStart(t.dom,o),r.setEnd(n.dom,e),r}})).getClientRects();return 0<(o=0<r.length?r[0]:t.getBoundingClientRect()).width||0<o.height?mn.some(o).map(ed):mn.none()}function km(n){return mn.from(n.dom.contentWindow)}function Em(n){return km(n).bind(Om)}function Cm(n){return n.getFrame()}function Dm(n,e,t,o){return n[t].getOrThunk(function(){return function(n){return Yl(e,o,n)}})}function Mm(c){var a=Cm(c);return mn.some(fe.fromDom(a.dom.contentWindow.document.body)).bind(function(u){return mn.some(fe.fromDom(a.dom.contentWindow.document)).bind(function(i){return km(a).map(function(r){var n=fe.fromDom(i.dom.documentElement),e=c.getCursorBox.getOrThunk(function(){return function(){return Om(r).map(function(n){return Tg.exact(n.start,n.soffset,n.finish,n.foffset)}).bind(function(n){return Tm(r,n).orThunk(function(){return Om(r).filter(function(n){return un(n.start,n.finish)&&n.soffset===n.foffset}).bind(function(n){var e=n.start.dom.getBoundingClientRect();return 0<e.width||0<e.height?mn.some(e):mn.none()})})})}}),t=c.setSelection.getOrThunk(function(){return function(n,e,t,o){xm(r,n,e,t,o)}}),o=c.clearSelection.getOrThunk(function(){return function(){ym(r).each(function(n){return n.removeAllRanges()})}});return{body:u,doc:i,win:r,html:n,getSelection:J(Em,a),setSelection:t,clearSelection:o,frame:a,onKeyup:Dm(c,i,"onKeyup","keyup"),onNodeChanged:Dm(c,i,"onNodeChanged","SelectionChange"),onDomChanged:c.onDomChanged,onScrollToCursor:c.onScrollToCursor,onScrollToElement:c.onScrollToElement,onToReading:c.onToReading,onToEditing:c.onToEditing,onToolbarScrollStart:c.onToolbarScrollStart,onTouchContent:c.onTouchContent,onTapContent:c.onTapContent,onTouchToolstrip:c.onTouchToolstrip,getCursorBox:e}})})})}function _m(){var e=rn("head").getOrDie(),n=rn('meta[name="viewport"]').getOrThunk(function(){var n=fe.fromTag("meta");return Re(n,"name","viewport"),Qe(e,n),n}),t=Be(n,"content");return{maximize:function(){Re(n,"content","width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0")},restore:function(){null!=t&&0<t.length?Re(n,"content",t):Re(n,"content","user-scalable=yes")}}}function Im(n,e){function t(o){return function(n){var e=Be(n,"style"),t=void 0===e?"no-styles":e.trim();t===o||(Re(n,Eg,t),Re(n,"style",o))}}var o,r,i=(r=function(n){return en(n,"*")},C(function(n,e){for(var t=m(e)?e:S,o=n.dom,r=[];null!==o.parentNode&&void 0!==o.parentNode;){var i=o.parentNode,u=fe.fromDom(i);if(r.push(u),!0===t(u))break;o=i}return r}(n,void 0),r)),u=B(i,function(n){return e=function(n){return en(n,"*")},C(pe(t=n).map(Je).map(function(n){return C(n,function(n){return!un(t,n)})}).getOr([]),e);var e,t}),c=void 0!==(o=Ur(e,"background-color"))&&""!==o?"background-color:"+o+"!important":"background-color:rgb(255,255,255)!important;";M(u,t("display:none!important;")),M(i,t(Cg+Dg+c)),t((!0===Mg?"":Cg)+Dg+c)(n)}function Fm(){M(on("["+Eg+"]"),function(n){var e=Be(n,Eg);"no-styles"!==e?Re(n,"style",e):Ne(n,"style"),Ne(n,Eg)})}function Rm(n){var e=n.raw;return void 0===e.touches||1!==e.touches.length?mn.none():mn.some(e.touches[0])}function Vm(t){var o,r,u=cu(),i=jo(!1),c=(o=function(n){t.triggerEvent(te(),n),i.set(!0)},r=null,{cancel:function(){null!==r&&(clearTimeout(r),r=null)},schedule:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];r=setTimeout(function(){o.apply(null,n),r=null},400)}}),a=xo([{key:Vn(),value:function(t){return Rm(t).each(function(n){c.cancel();var e={x:n.clientX,y:n.clientY,target:t.target};c.schedule(t),i.set(!1),u.set(e)}),mn.none()}},{key:Bn(),value:function(n){return c.cancel(),Rm(n).each(function(i){u.on(function(n){var e=i,t=n,o=Math.abs(e.clientX-t.x),r=Math.abs(e.clientY-t.y);(5<o||5<r)&&u.clear()})}),mn.none()}},{key:An(),value:function(e){return c.cancel(),u.get().filter(function(n){return un(n.target,e.target)}).map(function(n){return i.get()?(e.prevent(),!1):t.triggerEvent(ee(),e)})}}]);return{fireIfReady:function(e,n){return _e(a,n).bind(function(n){return n(e)})}}}function Bm(t){var e=Vm({triggerEvent:function(n,e){t.onTapContent(e)}});return{fireTouchstart:function(n){e.fireIfReady(n,"touchstart")},onTouchend:function(){return Yl(t.body,"touchend",function(n){e.fireIfReady(n,"touchend")})},onTouchmove:function(){return Yl(t.body,"touchmove",function(n){e.fireIfReady(n,"touchmove")})}}}function Am(n,e){var t=parseInt(Be(n,e),10);return isNaN(t)?0:t}function jm(n){return b(b({},n),{width:2})}function Nm(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom,width:n.width,height:n.height}}function Hm(n){var e=n.getSelection();return void 0!==e&&0<e.rangeCount?function(o){if(o.collapsed){var r=fe.fromDom(o.startContainer);return pe(r).bind(function(n){var e,t=Tg.exact(r,o.startOffset,n,"img"===le(e=n)?1:xg.getOption(e).fold(function(){return Je(e).length},function(n){return n.length}));return Tm(o.startContainer.ownerDocument.defaultView,t).map(jm).map(H)}).getOr([])}return Z(o.getClientRects(),Nm)}(e.getRangeAt(0)):[]}function Pm(n,e){Re(n,Ig,e)}function zm(n){return{top:n.top,bottom:n.top+n.height}}function Lm(o,r){var i=fe.fromDom(r.document.body),n=Yl(fe.fromDom(o),"resize",function(){var n,e,t;n=o,e=Am(i,Ig),((t=n.innerHeight)<e?mn.some(e-t):mn.none()).each(function(t){var n;(0<(n=Hm(r)).length?mn.some(n[0]).map(zm):mn.none()).each(function(n){var e=n.top>r.innerHeight||n.bottom>r.innerHeight?Math.min(t,n.bottom-r.innerHeight+50):0;0!==e&&r.scrollTo(r.pageXOffset,r.pageYOffset+e)})}),Pm(i,o.innerHeight)});return Pm(i,o.innerHeight),{toEditing:function(){!function(n){n.focus();var e=fe.fromDom(n.document.body);(Po().exists(function(n){return k(["input","textarea"],le(n))})?function(n){pm.setTimeout(function(){n()},0)}:p)(function(){Po().each(Ho),No(e)})}(r)},destroy:function(){n.unbind()}}}function Gm(t,o){function r(){s(i)||(clearTimeout(i),i=null)}var i=null;return{cancel:r,throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];r(),i=setTimeout(function(){i=null,t.apply(null,n)},o)}}}function $m(n){var t,o,e=js(ld.sketch({dom:Oa('<div aria-hidden="true" class="${prefix}-mask-tap-icon"></div>'),containerBehaviours:or([ii.config({toggleClass:ci("mask-tap-icon-selected"),toggleOnExecute:!1})])})),r=(t=n,o=null,{cancel:function(){s(o)||(clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];s(o)&&(o=setTimeout(function(){o=null,t.apply(null,n)},200))}});return ld.sketch({dom:Oa('<div class="${prefix}-disabled-mask"></div>'),components:[ld.sketch({dom:Oa('<div class="${prefix}-content-container"></div>'),components:[of.sketch({dom:Oa('<div class="${prefix}-content-tap-section"></div>'),components:[e.asSpec()],action:function(n){r.throttle()},buttonBehaviours:or([ii.config({toggleClass:ci("mask-tap-icon-selected")})])})]})]})}function Um(n){var e=Pt("Getting AndroidWebapp schema",Rg,n);Gr(e.toolstrip,"width","100%");var t=Vd($m(function(){e.setReadOnly(e.readOnlyOnInit()),c.enter()},e.translate));e.alloy.add(t);var o={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}};Qe(e.container,t.element);var s,r,i,u,f,c=(s=e,r=o,i=_m(),u=uu(),f=uu(),{enter:function(){r.hide(),ze(s.container,ci("fullscreen-maximized")),ze(s.container,ci("android-maximized")),i.maximize(),ze(s.body,ci("android-scroll-reload")),u.set(Lm(s.win,kg(s.editor).getOrDie("no"))),Mm(s.editor).each(function(n){function e(n){return!un(n.start,n.finish)||n.soffset!==n.foffset}function t(){var n=o.doc.dom.hasFocus()&&o.getSelection().exists(e);i.getByDom(r).each(!0===(n||Po(c).filter(function(n){return"input"===le(n)}).exists(function(n){return n.dom.selectionStart!==n.dom.selectionEnd}))?ii.on:ii.off)}var o,r,i,u,c,a;Im(s.container,n.body),f.set((o=n,r=s.toolstrip,i=s.alloy,u=Bm(o),c=me(r),a=[Yl(o.body,"touchstart",function(n){o.onTouchContent(),u.fireTouchstart(n)}),u.onTouchmove(),u.onTouchend(),Yl(r,"touchstart",function(n){o.onTouchToolstrip()}),o.onToReading(function(){Ho(o.body)}),o.onToEditing(Y),o.onScrollToCursor(function(n){n.preventDefault(),o.getCursorBox().each(function(n){var e=o.win,t=n.top>e.innerHeight||n.bottom>e.innerHeight?n.bottom-e.innerHeight+50:0;0!=t&&e.scrollTo(e.pageXOffset,e.pageYOffset+t)})})].concat(1==_g?[]:[Yl(fe.fromDom(o.win),"blur",function(){i.getByDom(r).each(ii.off)}),Yl(c,"select",t),Yl(o.doc,"selectionchange",t)]),{destroy:function(){M(a,function(n){n.unbind()})}}))})},exit:function(){i.restore(),r.show(),Le(s.container,ci("fullscreen-maximized")),Le(s.container,ci("android-maximized")),Fm(),Le(s.body,ci("android-scroll-reload")),f.clear(),u.clear()}});return{setReadOnly:e.setReadOnly,refreshStructure:Y,enter:c.enter,exit:c.exit,destroy:Y}}function Wm(n){return"true"===Be(n,Pg)?0<n.dom.scrollLeft||function(n){n.dom.scrollLeft=1;var e=0!==n.dom.scrollLeft;return n.dom.scrollLeft=0,e}(n):0<n.dom.scrollTop||function(n){n.dom.scrollTop=1;var e=0!==n.dom.scrollTop;return n.dom.scrollTop=0,e}(n)}function Xm(){function e(n){var e=!0===n.scrollable?"${prefix}-toolbar-scrollable-group":"";return{dom:Oa('<div aria-label="'+n.label+'" class="${prefix}-toolbar-group '+e+'"></div>'),tgroupBehaviours:or([ll("adhoc-scrollable-toolbar",!0===n.scrollable?[Jo(function(n,e){Gr(n.element,"overflow-x","auto"),Re(n.element,Pg,"true"),Pl(n.element)})]:[])]),components:[ld.sketch({components:[Hg.parts.items({})]})],markers:{itemSelector:"."+ci("toolbar-group-item")},items:n.items}}function t(){Ag.setGroups(o,r.get()),ii.off(o)}var o=Vd(Ag.sketch({dom:Oa('<div class="${prefix}-toolbar"></div>'),components:[Ag.parts.groups({})],toolbarBehaviours:or([ii.config({toggleClass:ci("context-toolbar"),toggleOnExecute:!1,aria:{mode:"none"}}),zc.config({mode:"cyclic"})]),shell:!0})),n=Vd(ld.sketch({dom:{classes:[ci("toolstrip")]},components:[Bd(o)],containerBehaviours:or([ii.config({toggleClass:ci("android-selection-context-toolbar"),toggleOnExecute:!1})])})),r=jo([]);return{wrapper:n,toolbar:o,createGroups:function(n){return Z(n,i(Hg.sketch,e))},setGroups:function(n){r.set(n),t()},setContextToolbar:function(n){ii.on(o),Ag.setGroups(o,n)},restoreToolbar:function(){ii.isOn(o)&&t()},refresh:function(){},focus:function(){zc.focusIn(o)}}}function qm(n){return Vd(of.sketch({dom:Oa('<div class="${prefix}-mask-edit-icon ${prefix}-icon"></div>'),action:function(){n.run(function(n){n.setReadOnly(!1)})}}))}function Ym(){return Vd(ld.sketch({dom:Oa('<div class="${prefix}-editor-socket"></div>'),components:[],containerBehaviours:or([Kd.config({})])}))}function Km(n,e,t,o){(!0===t?cr.toAlpha:cr.toOmega)(o),(t?function(n,e){Kd.append(n,Bd(e))}:function(n,e){Kd.remove(n,e)})(n,e)}function Jm(e,n){return n.getAnimationRoot.fold(function(){return e.element},function(n){return n(e)})}function Qm(n){return n.dimension.property}function Zm(n,e){return n.dimension.getDimension(e)}function ng(n,e){El(Jm(n,e),[e.shrinkingClass,e.growingClass])}function eg(n,e){Le(n.element,e.openClass),ze(n.element,e.closedClass),Gr(n.element,Qm(e),"0px"),qr(n.element)}function tg(n,e){Le(n.element,e.closedClass),ze(n.element,e.openClass),Xr(n.element,Qm(e))}function og(n,e,t,o){t.setCollapsed(),Gr(n.element,Qm(e),Zm(e,n.element)),qr(n.element),ng(n,e),eg(n,e),e.onStartShrink(n),e.onShrunk(n)}function rg(n,e,t){var o=Zm(e,n.element);("0px"===o?og:function(n,e,t,o){var r=o.getOrThunk(function(){return Zm(e,n.element)});t.setCollapsed(),Gr(n.element,Qm(e),r),qr(n.element);var i=Jm(n,e);Le(i,e.growingClass),ze(i,e.shrinkingClass),eg(n,e),e.onStartShrink(n)})(n,e,t,mn.some(o))}function ig(n,e,t){var o=Jm(n,e),r=Ge(o,e.shrinkingClass),i=Zm(e,n.element);tg(n,e);var u=Zm(e,n.element);(r?function(){Gr(n.element,Qm(e),i),qr(n.element)}:function(){eg(n,e)})(),Le(o,e.shrinkingClass),ze(o,e.growingClass),tg(n,e),Gr(n.element,Qm(e),u),t.setExpanded(),e.onStartGrow(n)}function ug(n,e,t){return!0===Ge(Jm(n,e),e.growingClass)}function cg(n,e,t){return!0===Ge(Jm(n,e),e.shrinkingClass)}function ag(e,t){var o=Vd(ld.sketch({dom:{tag:"div",classes:[ci("dropup")]},components:[],containerBehaviours:or([Kd.config({}),Gg.config({closedClass:ci("dropup-closed"),openClass:ci("dropup-open"),shrinkingClass:ci("dropup-shrinking"),growingClass:ci("dropup-growing"),dimension:{property:"height"},onShrunk:function(n){e(),t(),Kd.set(n,[])},onGrown:function(n){e(),t()}}),jr(function(n,e){r(Y)})])})),r=function(n){window.requestAnimationFrame(function(){n(),Gg.shrink(o)})};return{appear:function(n,e,t){!0===Gg.hasShrunk(o)&&!1===Gg.isTransitioning(o)&&window.requestAnimationFrame(function(){e(t),Kd.set(o,[n()]),Gg.grow(o)})},disappear:r,component:o,element:o.element}}function sg(){return Fn().browser.isFirefox()}function fg(e,n){var t,o,r,i,u=Pt("Getting GUI events settings",$g,n),c=Vm(u),a=Z(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","transitioncancel","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return Yl(e,n,function(e){c.fireIfReady(e,n).each(function(n){n&&e.kill()}),u.triggerEvent(n,e)&&e.kill()})}),s=cu(),f=Yl(e,"paste",function(e){c.fireIfReady(e,"paste").each(function(n){n&&e.kill()}),u.triggerEvent("paste",e)&&e.kill(),s.set(setTimeout(function(){u.triggerEvent(Jn(),e)},0))}),l=Yl(e,"keydown",function(n){var e;u.triggerEvent("keydown",n)?n.kill():!0!==u.stopBackspace||((e=n).raw.which!==zi[0]||k(["input","textarea"],le(e.target))||vi(e.target,'[contenteditable="true"]',void 0).isSome())||n.prevent()}),d=(t=e,o=function(n){u.triggerEvent("focusin",n)&&n.kill()},sg()?Kl(t,"focus",o):Yl(t,"focusin",o)),m=cu(),g=(r=e,i=function(n){u.triggerEvent("focusout",n)&&n.kill(),m.set(setTimeout(function(){u.triggerEvent(Kn(),n)},0))},sg()?Kl(r,"blur",i):Yl(r,"focusout",i));return{unbind:function(){M(a,function(n){n.unbind()}),l.unbind(),d.unbind(),g.unbind(),f.unbind(),s.on(clearTimeout),m.on(clearTimeout)}}}function lg(n,e){return jo(_e(n,"target").getOr(e))}function dg(n,o,e,t,r,i){var u,c,a=n(o,t),s=(u=jo(!1),c=jo(!1),{stop:function(){u.set(!0)},cut:function(){c.set(!0)},isStopped:u.get,isCut:c.get,event:e,setSource:r.set,getSource:r.get});return a.fold(function(){return i.logEventNoHandlers(o,t),Ug.complete()},function(e){var t=e.descHandler;return Sl(t)(s),s.isStopped()?(i.logEventStopped(o,e.element,t.purpose),Ug.stopped()):s.isCut()?(i.logEventCut(o,e.element,t.purpose),Ug.complete()):pe(e.element).fold(function(){return i.logNoParent(o,e.element,t.purpose),Ug.complete()},function(n){return i.logEventResponse(o,e.element,t.purpose),Ug.resume(n)})})}function mg(){var s={};return{registerId:function(r,i,n){Ce(n,function(n,e){var t,o=void 0!==s[e]?s[e]:{};o[i]={cHandler:J.apply(void 0,[(t=n).handler].concat(r)),purpose:t.purpose},s[e]=o})},unregisterId:function(t){Ce(s,function(n,e){dt(n,t)&&delete n[t]})},filterByType:function(n){return _e(s,n).map(function(n){return Me(n,function(n,e){return{id:e,descHandler:n}})}).getOr([])},find:function(n,e,t){var i,o,r,u,c,a=_e(s,e);return r=n,u=(o=function(n){return t=a,ya(o=n).fold(function(){return mn.none()},function(e){return t.bind(function(n){return _e(n,e)}).map(function(n){return{element:o,descHandler:n}})});var t,o})(i=t),c=Oo(r),u.orThunk(function(){return c(i)?mn.none():function(n){for(var e=i.dom,t=Oo(c);e.parentNode;){var e=e.parentNode,o=fe.fromDom(e),r=n(o);if(r.isSome())return r;if(t(o))break}return mn.none()}(o)})}}}function gg(){function r(n){ya(n.element).each(function(n){delete u[n],i.unregisterId(n)})}var i=mg(),u={};return{find:function(n,e,t){return i.find(n,e,t)},filter:function(n){return i.filterByType(n)},register:function(n){var t,o=ya((t=n).element).getOrThunk(function(){return n=t.element,e=$u(Ks+"uid-"),Qs(n,e),e;var n,e});Ie(u,o)&&function(n){var e=u[o];if(e!==n)throw new Error('The tagId "'+o+'" is already used by: '+Go(e.element)+"\nCannot use it for: "+Go(n.element)+"\nThe conflicting element is"+(rt(e.element)?" ":" not ")+"already in the DOM");r(n)}(n),i.registerId([n],o,n.events),u[o]=n},unregister:r,getById:function(n){return _e(u,n)}}}hm.ltr,hm.rtl;function pg(n,e,t,o,r){var i=lg(t,o);return Wg(n,e,t,o,i,r)}var hg,vg,yg,bg=function(n,e,t,o){return{start:n,soffset:e,finish:t,foffset:o}},xg=(hg=qe,{get:function(n){if(!hg(n))throw new Error("Can only get text value of a text node");return vg(n).getOr("")},getOption:vg=function(n){return hg(n)?mn.from(n.dom.nodeValue):mn.none()},set:function(n,e){if(!hg(n))throw new Error("Can only set raw text value of a text node");n.dom.nodeValue=e}}),wg=Jt([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Sg={before:wg.before,on:wg.on,after:wg.after,cata:function(n,e,t,o){return n.fold(e,t,o)},getStart:function(n){return n.fold(K,K,K)}},Og=Jt([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Tg={domRange:Og.domRange,relative:Og.relative,exact:Og.exact,exactFromRange:function(n){return Og.exact(n.start,n.soffset,n.finish,n.foffset)},getWin:function(n){var e=n.match({domRange:function(n){return fe.fromDom(n.startContainer)},relative:function(n,e){return Sg.getStart(n)},exact:function(n,e,t,o){return n}});return fe.fromDom(ge(e).dom.defaultView)},range:bg},kg=(yg=km,function(e){return e.getWin.getOrThunk(function(){var n=Cm(e);return function(){return yg(n)}})()}),Eg="data-ephox-mobile-fullscreen-style",Cg="position:absolute!important;",Dg="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",Mg=Fn().os.isAndroid(),_g=6<=Fn().os.version.major,Ig="data-"+ci("last-outer-height"),Fg=w({unbind:Y}),Rg=lo([$t("editor",[Lt("getFrame"),Ut("getBody"),Ut("getDoc"),Ut("getWin"),Ut("getSelection"),Ut("setSelection"),Ut("clearSelection"),Ut("cursorSaver"),Ut("onKeyup"),Ut("onNodeChanged"),Ut("getCursorBox"),Lt("onDomChanged"),Yt("onTouchContent",Y),Yt("onTapContent",Y),Yt("onTouchToolstrip",Y),Yt("onScrollToCursor",Fg),Yt("onScrollToElement",Fg),Yt("onToEditing",Fg),Yt("onToReading",Fg),Yt("onToolbarScrollStart",K)]),Lt("socket"),Lt("toolstrip"),Lt("dropup"),Lt("toolbar"),Lt("container"),Lt("alloy"),vo("win",function(n){return me(n.socket).dom.defaultView}),vo("body",function(n){return fe.fromDom(n.socket.dom.ownerDocument.body)}),Yt("translate",K),Yt("setReadOnly",Y),Yt("readOnlyOnInit",x)]),Vg=w([Lt("dom"),Yt("shell",!0),zu("toolbarBehaviours",[Kd])]),Bg=w([Gs({name:"groups",overrides:function(){return{behaviours:or([Kd.config({})])}}})]),Ag=Sa({name:"Toolbar",configFields:Vg(),partFields:Bg(),factory:function(o,n,e,t){var r=o.shell?{behaviours:[Kd.config({})],components:[]}:{behaviours:[],components:n};return{uid:o.uid,dom:o.dom,components:r.components,behaviours:Lu(o.toolbarBehaviours,r.behaviours),apis:{setGroups:function(n,e){var t;t=n,(o.shell?mn.some(t):ma(t,o,"groups")).fold(function(){throw console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){Kd.set(n,e)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,e,t){n.setGroups(e,t)}}}),jg=w([Lt("items"),$t("markers",Z(["itemSelector"],Lt)),zu("tgroupBehaviours",[zc])]),Ng=w([$s({name:"items",unit:"item"})]),Hg=Sa({name:"ToolbarGroup",configFields:jg(),partFields:Ng(),factory:function(n,e,t,o){return{uid:n.uid,dom:n.dom,components:e,behaviours:Lu(n.tgroupBehaviours,[zc.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),Pg="data-"+ci("horizontal-scroll"),zg=Object.freeze({__proto__:null,refresh:function(n,e,t){var o;t.isExpanded()&&(Xr(n.element,Qm(e)),o=Zm(e,n.element),Gr(n.element,Qm(e),o))},grow:function(n,e,t){t.isExpanded()||ig(n,e,t)},shrink:function(n,e,t){t.isExpanded()&&rg(n,e,t)},immediateShrink:function(n,e,t){t.isExpanded()&&og(n,e,t)},hasGrown:function(n,e,t){return t.isExpanded()},hasShrunk:function(n,e,t){return t.isCollapsed()},isGrowing:ug,isShrinking:cg,isTransitioning:function(n,e,t){return ug(n,e)||cg(n,e)},toggleGrow:function(n,e,t){(t.isExpanded()?rg:ig)(n,e,t)},disableTransitions:ng}),Lg=Object.freeze({__proto__:null,exhibit:function(n,e,t){return Ro(e.expanded?{classes:[e.openClass],styles:{}}:{classes:[e.closedClass],styles:bo(e.dimension.property,"0px")})},events:function(t,o){return qo([Mo(Wn())(function(n,e){e.event.raw.propertyName===t.dimension.property&&(ng(n,t),o.isExpanded()&&Xr(n.element,t.dimension.property),(o.isExpanded()?t.onGrown:t.onShrunk)(n))})])}}),Gg=Ao({fields:[Lt("closedClass"),Lt("openClass"),Lt("shrinkingClass"),Lt("growingClass"),Ut("getAnimationRoot"),Tr("onShrunk"),Tr("onStartShrink"),Tr("onGrown"),Tr("onStartGrow"),Yt("expanded",!1),Gt("dimension",zt("property",{width:[Dr("property","width"),Dr("getDimension",function(n){return Ba(n)+"px"})],height:[Dr("property","height"),Dr("getDimension",function(n){return Kr(n)+"px"})]}))],name:"sliding",active:Lg,apis:zg,state:Object.freeze({__proto__:null,init:function(n){var e=jo(n.expanded);return tr({isExpanded:function(){return!0===e.get()},isCollapsed:function(){return!1===e.get()},setCollapsed:J(e.set,!1),setExpanded:J(e.set,!0),readState:function(){return"expanded: "+e.get()}})}})}),$g=Rt([Gt("triggerEvent",go),Yt("stopBackspace",!0)]),Ug=Jt([{stopped:[]},{resume:["element"]},{complete:[]}]),Wg=function(e,t,o,n,r,i){return dg(e,t,o,n,r,i).fold(x,function(n){return Wg(e,t,o,n,r,i)},S)},Xg=function(t){function o(e){return pe(t.element).fold(x,function(n){return un(e,n)})}function s(n,e){return i.find(o,n,e)}function r(e){M(i.filter(Qn()),function(n){Sl(n.descHandler)(e)})}var i=gg(),n=fg(t.element,{triggerEvent:function(e,t){return vr(e,t.target,function(n){return pg(s,e,t,t.target,n)})}}),u={debugInfo:w("real"),triggerEvent:function(e,t,o){vr(e,t,function(n){return pg(s,e,o,t,n)})},triggerFocus:function(c,a){ya(c).fold(function(){No(c)},function(n){vr(Yn(),c,function(n){var e,t,o=s,r=Yn(),i=n,u=lg(e={originator:a,kill:Y,prevent:Y,target:c},t=c);return dg(o,r,e,t,u,i),!1})})},triggerEscape:function(n,e){u.triggerEvent("keydown",n.element,e.event)},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:Vd,addToGui:function(n){a(n)},removeFromGui:function(n){f(n)},addToWorld:function(n){e(n)},removeFromWorld:function(n){c(n)},broadcast:function(n){l(n)},broadcastOn:function(n,e){d(n,e)},broadcastEvent:function(n,e){m(n,e)},isConnected:x},e=function(n){n.connect(u),qe(n.element)||(i.register(n),M(n.components(),e),u.triggerEvent(oe(),n.element,{target:n.element}))},c=function(n){qe(n.element)||(M(n.components(),c),i.unregister(n)),n.disconnect()},a=function(n){at(t,n,Qe)},f=function(n){Ee(n)},l=function(n){r({universal:!0,data:n})},d=function(n,e){r({universal:!1,channels:n,data:e})},m=function(n,e){var t,o,r=i.filter(n);return o={stop:function(){t.set(!0)},cut:Y,isStopped:(t=jo(!1)).get,isCut:S,event:e,setSource:h("Cannot set source of a broadcasted event"),getSource:h("Cannot get source of a broadcasted event")},M(r,function(n){Sl(n.descHandler)(o)}),o.isStopped()},g=function(n){return i.getById(n).fold(function(){return ht.error(new Error('Could not find component with uid: "'+n+'" in system.'))},ht.value)},p=function(n){var e=ya(n).getOr("not found");return g(e)};return e(t),{root:t,element:t.element,destroy:function(){n.unbind(),Ze(t.element)},add:a,remove:f,getByUid:g,getByDom:p,addToWorld:e,removeFromWorld:c,broadcast:l,broadcastOn:d,broadcastEvent:m}},qg=ci("readonly-mode"),Yg=ci("edit-mode");function Kg(n){var e=Vd(ld.sketch({dom:{classes:[ci("outer-container")].concat(n.classes)},containerBehaviours:or([cr.config({alpha:qg,omega:Yg})])}));return Xg(e)}function Jg(n,e){var t=fe.fromTag("input");$r(t,{opacity:"0",position:"absolute",top:"-1000px",left:"-1000px"}),Qe(n,t),No(t),e(t),Ze(t)}function Qg(n){var e,t,o=n.getSelection();0<o.rangeCount&&(e=o.getRangeAt(0),(t=n.document.createRange()).setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),o.removeAllRanges(),o.addRange(t))}function Zg(n,e){Po().each(function(n){un(n,e)||Ho(n)}),n.focus(),No(fe.fromDom(n.document.body)),Qg(n)}function np(n,e,t,o){function r(){Zg(e,o)}var i=Yl(t,"keydown",function(n){k(["input","textarea"],le(n.target))||r()});return{toReading:function(){Jg(n,Ho)},toEditing:r,onToolbarTouch:Y,destroy:function(){i.unbind()}}}var ep,tp,op,rp={},ip={exports:rp};function up(n){setTimeout(function(){throw n},0)}function cp(n){var o,r,e=Jl(n).isPortrait(),t=(o=n.screen.width,r=n.screen.height,P([{width:320,height:480,keyboard:{portrait:300,landscape:240}},{width:320,height:568,keyboard:{portrait:300,landscape:240}},{width:375,height:667,keyboard:{portrait:305,landscape:240}},{width:414,height:736,keyboard:{portrait:320,landscape:240}},{width:768,height:1024,keyboard:{portrait:320,landscape:400}},{width:1024,height:1366,keyboard:{portrait:380,landscape:460}}],function(n){return e=o<=n.width&&r<=n.height,t=n.keyboard,e?mn.some(t):mn.none();var e,t}).getOr({portrait:r/5,landscape:o/4})),i=e?t.portrait:t.landscape;return(e?n.screen.height:n.screen.width)-n.innerHeight>i?0:i}function ap(n,e){var t=me(n).dom.defaultView;return Kr(n)+Kr(e)-cp(t)}function sp(n,e,t){var o=ap(e,t);Gr(n,"padding-bottom",Kr(e)+Kr(t)-o+"px")}function fp(n){return Am(n,Cp)}function lp(n,e){var t=Be(n,Dp);return Ep.fixed(n,t,e)}function dp(n,e){return Ep.scroller(n,e)}function mp(n){var e=fp(n);return("true"===Be(n,Mp)?dp:lp)(n,e)}function gp(n,e,t){var o=me(n).dom.defaultView.innerHeight;return Re(n,_p,o+"px"),o-e-t}function pp(n){var e=Wr(n,"top").getOr("0");return parseInt(e,10)}function hp(n){return parseInt(n.dom.scrollTop,10)}function vp(r,i){return Tp(function(n){var e=J(hp,r);Re(r,Fp,e());var t=Math.abs(i-e()),o=Math.ceil(t/10);Ip.animate(e,i,o,function(n,e){Am(r,Fp)!==r.dom.scrollTop?e(r.dom.scrollTop):(r.dom.scrollTop=n,Re(r,Fp,n))},function(){r.dom.scrollTop=i,Re(r,Fp,i),n(i)},10)})}function yp(n,e){Gr(n,"top",e+fp(n)+"px")}ep=rp,tp=ip,op=void 0,function(n){"object"==typeof ep&&void 0!==tp?tp.exports=n():("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function i(u,c,a){function s(e,n){if(!c[e]){if(!u[e]){var t="function"==typeof op;if(!n&&t)return t(e,!0);if(f)return f(e,!0);var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}var r=c[e]={exports:{}};u[e][0].call(r.exports,function(n){return s(u[e][1][n]||n)},r,r.exports,i,u,c,a)}return c[e].exports}for(var f="function"==typeof op,n=0;n<a.length;n++)s(a[n]);return s}({1:[function(n,e,t){var o,r,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(e){if(o===setTimeout)return setTimeout(e,0);if((o===u||!o)&&setTimeout)return o=setTimeout,setTimeout(e,0);try{return o(e,0)}catch(n){try{return o.call(null,e,0)}catch(n){return o.call(this,e,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:u}catch(n){o=u}try{r="function"==typeof clearTimeout?clearTimeout:c}catch(n){r=c}}();var s,f=[],l=!1,d=-1;function m(){l&&s&&(l=!1,s.length?f=s.concat(f):d=-1,f.length&&g())}function g(){if(!l){var n=a(m);l=!0;for(var e=f.length;e;){for(s=f,f=[];++d<e;)s&&s[d].run();d=-1,e=f.length}s=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===c||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(n){try{return r.call(null,e)}catch(n){return r.call(this,e)}}}(n)}}function p(n,e){this.fun=n,this.array=e}function h(){}i.nextTick=function(n){var e=new Array(arguments.length-1);if(1<arguments.length)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];f.push(new p(n,e)),1!==f.length||l||a(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,e){!function(e){function o(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(n,this)}function r(t,o){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,i._immediateFn(function(){var n,e=1===t._state?o.onFulfilled:o.onRejected;if(null!==e){try{n=e(t._value)}catch(n){return void c(o.promise,n)}u(o.promise,n)}else(1===t._state?u:c)(o.promise,t._value)})):t._deferreds.push(o)}function u(e,n){try{if(n===e)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if(n instanceof i)return e._state=3,e._value=n,void a(e);if("function"==typeof t)return void f((o=t,r=n,function(){o.apply(r,arguments)}),e)}e._state=1,e._value=n,a(e)}catch(n){c(e,n)}var o,r}function c(n,e){n._state=2,n._value=e,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)r(n,n._deferreds[e]);n._deferreds=null}function s(n,e,t){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.promise=t}function f(n,e){var t=!1;try{n(function(n){t||(t=!0,u(e,n))},function(n){t||(t=!0,c(e,n))})}catch(n){if(t)return;t=!0,c(e,n)}}var t=setTimeout;i.prototype.catch=function(n){return this.then(null,n)},i.prototype.then=function(n,e){var t=new this.constructor(o);return r(this,new s(n,e,t)),t},i.all=function(n){var c=Array.prototype.slice.call(n);return new i(function(r,i){if(0===c.length)return r([]);for(var u=c.length,n=0;n<c.length;n++)!function e(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var o=n.then;if("function"==typeof o)return o.call(n,function(n){e(t,n)},i),0}c[t]=n,0==--u&&r(c)}catch(n){i(n)}}(n,c[n])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(n){n(e)})},i.reject=function(t){return new i(function(n,e){e(t)})},i.race=function(r){return new i(function(n,e){for(var t=0,o=r.length;t<o;t++)r[t].then(n,e)})},i._immediateFn="function"==typeof e?function(n){e(n)}:function(n){t(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:this.Promise||(this.Promise=i)}.call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,s){!function(n,e){var o=a("process/browser.js").nextTick,t=Function.prototype.apply,r=Array.prototype.slice,i={},u=0;function c(n,e){this._id=n,this._clearFn=e}s.setTimeout=function(){return new c(t.call(setTimeout,window,arguments),clearTimeout)},s.setInterval=function(){return new c(t.call(setInterval,window,arguments),clearInterval)},s.clearTimeout=s.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},s.enroll=function(n,e){clearTimeout(n._idleTimeoutId),n._idleTimeout=e},s.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},s._unrefActive=s.active=function(n){clearTimeout(n._idleTimeoutId);var e=n._idleTimeout;0<=e&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},e))},s.setImmediate="function"==typeof n?n:function(n){var e=u++,t=!(arguments.length<2)&&r.call(arguments,1);return i[e]=!0,o(function(){i[e]&&(t?n.apply(null,t):n.call(null),s.clearImmediate(e))}),e},s.clearImmediate="function"==typeof e?e:function(n){delete i[n]}}.call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,e,t){var o=n("promise-polyfill"),r="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:r.Promise||o}},{"promise-polyfill":2}]},{},[4])(4)});var bp,xp=ip.exports.boltExport,wp=function(n){function o(n){r()?i(n):e.push(n)}var t=mn.none(),e=[],r=function(){return t.isSome()},i=function(e){t.each(function(n){setTimeout(function(){e(n)},0)})};return n(function(n){r()||(t=mn.some(n),M(e,i),e=[])}),{get:o,map:function(t){return wp(function(e){o(function(n){e(t(n))})})},isReady:r}},Sp={nu:wp,pure:function(e){return wp(function(n){n(e)})}},Op=function(t){function n(n){t().then(n,up)}return{map:function(n){return Op(function(){return t().then(n)})},bind:function(e){return Op(function(){return t().then(function(n){return e(n).toPromise()})})},anonBind:function(n){return Op(function(){return t().then(function(){return n.toPromise()})})},toLazy:function(){return Sp.nu(n)},toCached:function(){var n=null;return Op(function(){return n=null===n?t():n})},toPromise:t,get:n}},Tp=function(n){return Op(function(){return new xp(n)})},kp=function(n){return Op(function(){return xp.resolve(n)})},Ep=Jt([{fixed:["element","property","offsetY"]},{scroller:["element","offsetY"]}]),Cp="data-"+ci("position-y-fixed"),Dp="data-"+ci("y-property"),Mp="data-"+ci("scrolling"),_p="data-"+ci("last-window-height"),Ip=(bp=null,{animate:function(r,i,u,c,e,n){function a(n){s=!0,e(n)}var s=!1;function f(n){pm.clearInterval(bp),a(n)}pm.clearInterval(bp),bp=pm.setInterval(function(){var t=r(),n=t,e=i,o=u;(Math.abs(n-e)<=o?mn.none():n<e?mn.some(n+o):mn.some(n-o)).fold(function(){pm.clearInterval(bp),a(i)},function(n){var e;c(n,f),s||((e=r())!==n||Math.abs(e-i)>Math.abs(t-i))&&(pm.clearInterval(bp),a(i))})},n)}}),Fp="data-"+ci("last-scroll-top");function Rp(n,l){return n.fold(function(n,e,t){return Gr(n,e,l+(o=t)+"px"),kp(o);var o},function(n,e){return r=l+(o=e),i=Wr(t=n,"top").getOr(o),u=r-parseInt(i,10),c=t.dom.scrollTop+u,a=t,s=c,f=r,Tp(function(n){var e=J(hp,a);Ip.animate(e,s,15,function(n){a.dom.scrollTop=n,Gr(a,"top",pp(a)+15+"px")},function(){a.dom.scrollTop=s,Gr(a,"top",f+"px"),n(s)},10)});var t,o,r,i,u,c,a,s,f})}function Vp(n,e){var u,t=Z(Jr(n,"["+Cp+"]"),mp),o=Z(t,function(n){return Rp(n,e)});return u=o,Tp(function(o){var r=[],i=0;0===u.length?o([]):M(u,function(n,e){var t;n.get((t=e,function(n){r[t]=n,++i>=u.length&&o(r)}))})})}function Bp(n){var o,r,i,u,e,t,c,a,s,f,l,d,m,g,p,h,v,y,b,x=n.cWin,w=n.ceBody,S=n.socket,O=n.toolstrip,T=n.contentElement,k=n.keyboardType,E=n.outerWindow,C=n.dropup,D=n.outerBody,M=(r=w,i=O,u=C,m=me(o=S).dom.defaultView,d=Be(l=i,"style"),$r(l,{position:"absolute",top:"0px"}),Re(l,Cp,"0px"),Re(l,Dp,"top"),g={restore:function(){Re(l,"style",d||""),Ne(l,Cp),Ne(l,Dp)}},p=Kr(i),h=Kr(u),a=gp(o,c=p,h),f=Be(s=o,"style"),Pl(s),$r(s,{position:"absolute",height:a+"px",width:"100%",top:c+"px"}),Re(s,Cp,c+"px"),Re(s,Mp,"true"),Re(s,Dp,"top"),v={restore:function(){zl(s),Re(s,"style",f||""),Ne(s,Cp),Ne(s,Mp),Ne(s,Dp)}},t=Be(e=u,"style"),$r(e,{position:"absolute",bottom:"0px"}),Re(e,Cp,"0px"),Re(e,Dp,"bottom"),y={restore:function(){Re(e,"style",t||""),Ne(e,Cp),Ne(e,Dp)}},b=!0,sp(r,o,u),{setViewportOffset:function(n){Re(o,Cp,n+"px"),R()},isExpanding:F,isShrinking:Q(F),refresh:R,restore:function(){b=!1,g.restore(),v.restore(),y.restore()}}),_=k(D,x,Te(),T),I=Ql(E,{onChange:Y,onReady:M.refresh});function F(){var n=m.innerHeight;return Am(o,_p)<n}function R(){var n,e,t;b&&(n=Kr(i),e=Kr(u),t=gp(o,n,e),Re(o,Cp,n+"px"),Gr(o,"height",t+"px"),sp(r,o,u))}I.onAdjustment(function(){M.refresh()});function V(){q.clear()}var B,A,j,N,H,P,z,L,G,$,U,W=Yl(fe.fromDom(E),"resize",function(){M.isExpanding()&&M.refresh()}),X=(B=O,A=S,j=D,N=E,H=M,P=x,z=function(n){return t=A,o=n,r=me(e=B).dom.defaultView,Tp(function(n){yp(e,o),yp(t,o),r.scrollTo(0,o),n(o)});var e,t,o,r},L=jo(Sp.pure({})),G={start:function(e){var n=Sp.nu(function(n){return z(e).get(n)});L.set(n)},idle:function(n){L.get().get(function(){n()})}},$=Gm(function(){G.idle(function(){Vp(j,N.pageYOffset).get(function(){var n=Hm(P);mn.from(n[0]).bind(function(n){var e=n.top-A.dom.scrollTop;return e>N.innerHeight+5||e<-5?mn.some({top:e,bottom:e+n.height}):mn.none()}).each(function(n){A.dom.scrollTop=A.dom.scrollTop+n.top}),G.start(0),H.refresh()})})},1e3),U=Yl(fe.fromDom(N),"scroll",function(){N.pageYOffset<0||$.throttle()}),Vp(j,N.pageYOffset).get(K),{unbind:U.unbind}),q=function(e,t){var n=e.document,o=fe.fromTag("div");function r(n){var e=fe.fromTag("span");return kl(e,[ci("layer-editor"),ci("unfocused-selection")]),$r(e,{left:n.left+"px",top:n.top+"px",width:n.width+"px",height:n.height+"px"}),e}ze(o,ci("unfocused-selections")),Qe(fe.fromDom(n.documentElement),o);var i=Yl(o,"touchstart",function(n){n.prevent(),Zg(e,t),u()}),u=function(){we(o)};return{update:function(){u();var n=Z(Hm(e),r);xe(o,n)},isActive:function(){return 0<Je(o).length},destroy:function(){i.unbind(),Ze(o)},clear:u}}(x,T);return{toEditing:function(){_.toEditing(),V()},toReading:function(){_.toReading()},onToolbarTouch:function(n){_.onToolbarTouch()},refreshSelection:function(){q.isActive()&&q.update()},clearSelection:V,highlightSelection:function(){q.update()},scrollIntoView:function(n,e){var t,o=x,r=n,i=e,u=ap(t=S,C),c=J(Qg,o);u<r||u<i?vp(t,t.dom.scrollTop-u+i).get(c):r<0&&vp(t,t.dom.scrollTop+r).get(c)},updateToolbarPadding:Y,setViewportOffset:function(n){var i,u;M.setViewportOffset(n),i=S,u=n,Tp(function(n){function e(n){Gr(i,"top",n+"px")}var t=J(pp,i),o=Math.abs(u-t()),r=Math.ceil(o/10);Ip.animate(t,u,r,e,function(){e(u),n(u)},10)}).get(K)},syncHeight:function(){Gr(T,"height",T.dom.contentWindow.document.body.scrollHeight+"px")},refreshStructure:M.refresh,destroy:function(){M.restore(),I.destroy(),X.unbind(),W.unbind(),_.destroy(),q.destroy(),Jg(Te(),Ho)}}}function Ap(g,n){var p=_m(),h=cu(),v=cu(),y=uu(),b=uu();return{enter:function(){n.hide();var m=fe.fromDom(document);Mm(g.editor).each(function(n){var e,t,o,r,i,u,c,a;function s(){o.run(function(n){n.refreshSelection()})}function f(n,e){var t=n-i.dom.scrollTop;o.run(function(n){n.scrollIntoView(t,t+e)})}function l(){o.run(function(n){n.clearSelection()})}function d(){t.getCursorBox().each(function(n){f(n.top,n.height)}),o.run(function(n){n.syncHeight()})}h.set({socketHeight:Wr(g.socket,"height"),iframeHeight:Wr(n.frame,"height"),outerScroll:document.body.scrollTop}),v.set({exclusives:(e="."+am,Yl(m,"touchmove",function(n){vi(n.target,e).filter(Wm).fold(function(){n.prevent()},Y)}))}),ze(g.container,ci("fullscreen-maximized")),Im(g.container,n.body),p.maximize(),Gr(g.socket,"overflow","scroll"),Gr(g.socket,"-webkit-overflow-scrolling","touch"),No(n.body),y.set(Bp({cWin:n.win,ceBody:n.body,socket:g.socket,toolstrip:g.toolstrip,dropup:g.dropup.element,contentElement:n.frame,outerBody:g.body,outerWindow:g.win,keyboardType:np})),y.run(function(n){n.syncHeight()}),b.set((t=n,o=y,r=g.toolstrip,i=g.socket,g.dropup,u=Bm(t),c=Gm(d,300),a=[t.onKeyup(function(){l(),c.throttle()}),t.onNodeChanged(s),t.onDomChanged(c.throttle),t.onDomChanged(s),t.onScrollToCursor(function(n){n.preventDefault(),c.throttle()}),t.onScrollToElement(function(n){n.element,f(o,i)}),t.onToEditing(function(){o.run(function(n){n.toEditing()})}),t.onToReading(function(){o.run(function(n){n.toReading()})}),Yl(t.doc,"touchend",function(n){un(t.html,n.target)||un(t.body,n.target)}),Yl(r,"transitionend",function(n){var e;"height"===n.raw.propertyName&&(e=Kr(r),o.run(function(n){n.setViewportOffset(e)}),s(),d())}),Kl(r,"touchstart",function(n){var e;o.run(function(n){n.highlightSelection()}),e=n,o.run(function(n){n.onToolbarTouch(e)}),t.onTouchToolstrip()}),Yl(t.body,"touchstart",function(n){l(),t.onTouchContent(),u.fireTouchstart(n)}),u.onTouchmove(),u.onTouchend(),Yl(t.body,"click",function(n){n.kill()}),Yl(r,"touchmove",function(){t.onToolbarScrollStart()})],{destroy:function(){M(a,function(n){n.unbind()})}}))})},refreshStructure:function(){y.run(function(n){n.refreshStructure()})},exit:function(){p.restore(),b.clear(),y.clear(),n.show(),h.on(function(n){n.socketHeight.each(function(n){Gr(g.socket,"height",n)}),n.iframeHeight.each(function(n){Gr(g.editor.getFrame(),"height",n)}),document.body.scrollTop=n.scrollTop}),h.clear(),v.on(function(n){n.exclusives.unbind()}),v.clear(),Le(g.container,ci("fullscreen-maximized")),Fm(),zl(g.toolbar),Xr(g.socket,"overflow"),Xr(g.socket,"-webkit-overflow-scrolling"),Ho(g.editor.getFrame()),Mm(g.editor).each(function(n){n.clearSelection()})}}}function jp(n,e,t){n.system.broadcastOn([dr],{command:e,state:t})}function Np(e){return function(){function n(){e._skinLoaded=!0,e.fire("SkinLoaded")}e.initialized?n():e.on("init",n)}}var Hp=tinymce.util.Tools.resolve("tinymce.EditorManager"),Pp="toReading",zp="toEditing";sr.add("mobile",function(C){return{getNotificationManagerImpl:function(){return{open:w({progressBar:{value:Y},close:Y,text:Y,getEl:w(null),moveTo:Y,moveRel:Y,settings:{}}),close:Y,reposition:Y,getArgs:w({})}},renderUI:function(){var n,e,t=C.getElement(),o={content:(n=mn.from(C.getParam("skin_url")).getOrThunk(function(){return Hp.baseURL+"/skins/ui/oxide"}))+"/content.mobile.min.css",ui:n+"/skin.mobile.min.css"};function r(){C.fire("ScrollIntoView")}!1===C.getParam("skin")==0?(e=ar.DOM.styleSheetLoader,C.contentCSS.push(o.content),e.load(o.ui,Np(C)),C.on("remove",function(){return e.unload(o.ui)})):Np(C)();var i,u,c,a,s,f,l,d,m,g,p,h,v,y,b,x,w=Fn().os.isAndroid()?(i=r,u=Kg({classes:[ci("android-container")]}),c=Xm(),a=uu(),s=qm(a),f=Ym(),l=ag(Y,i),u.add(c.wrapper),u.add(f),u.add(l.component),{system:u,element:u.element,init:function(n){a.set(Um(n))},exit:function(){a.run(function(n){n.exit(),Kd.remove(f,s)})},setToolbarGroups:function(n){var e=c.createGroups(n);c.setGroups(e)},setContextToolbar:function(n){var e=c.createGroups(n);c.setContextToolbar(e)},focusToolbar:function(){c.focus()},restoreToolbar:function(){c.restoreToolbar()},updateMode:function(n){Km(f,s,n,u.root)},socket:f,dropup:l}):(m=r,g=Kg({classes:[ci("ios-container")]}),p=Xm(),h=uu(),v=qm(h),y=Ym(),b=ag(function(){h.run(function(n){n.refreshStructure()})},m),g.add(p.wrapper),g.add(y),g.add(b.component),{system:g,element:g.element,init:function(r){h.set(function(){var n=Pt("Getting IosWebapp schema",Rg,r);Gr(n.toolstrip,"width","100%"),Gr(n.container,"position","relative");var e=Vd($m(function(){n.setReadOnly(n.readOnlyOnInit()),o.enter()},n.translate));n.alloy.add(e);var t={show:function(){n.alloy.add(e)},hide:function(){n.alloy.remove(e)}},o=Ap(n,t);return{setReadOnly:n.setReadOnly,refreshStructure:o.refreshStructure,enter:o.enter,exit:o.exit,destroy:Y}}())},exit:function(){h.run(function(n){Kd.remove(y,v),n.exit()})},setToolbarGroups:function(n){var e=p.createGroups(n);p.setGroups(e)},setContextToolbar:function(n){var e=p.createGroups(n);p.setContextToolbar(e)},focusToolbar:function(){p.focus()},restoreToolbar:function(){p.restoreToolbar()},updateMode:function(n){Km(y,v,n,g.root)},socket:y,dropup:b}),S=fe.fromDom(t);function O(n,e,t,o){!1===o&&C.selection.collapse();var r,i,u,c=(r=e,i=t,{readOnly:(u=n.get()).backToMask.concat(r.get()),main:u.backToMask.concat(i.get())});w.setToolbarGroups(!0===o?c.readOnly:c.main),C.setMode(!0===o?"readonly":"design"),C.fire(!0===o?Pp:zp),w.updateMode(o)}function T(n,e){return C.on(n,e),{unbind:function(){C.off(n)}}}d=w.system,ye(S,(x=d).element),M(Je(x.element),function(n){x.getByDom(n).each(ct)});var k=t.ownerDocument.defaultView,E=Ql(k,{onChange:function(){var n,e,t;w.system.broadcastOn([mr],{width:(n=k,e=Fn().os.isiOS(),t=Jl(n).isPortrait(),e&&!t?n.screen.height:n.screen.width)})},onReady:Y});return C.on("init",function(){w.init({editor:{getFrame:function(){return fe.fromDom(C.contentAreaContainer.querySelector("iframe"))},onDomChanged:function(){return{unbind:Y}},onToReading:function(n){return T(Pp,n)},onToEditing:function(n){return T(zp,n)},onScrollToCursor:function(e){return C.on("ScrollIntoView",function(n){e(n)}),{unbind:function(){C.off("ScrollIntoView"),E.destroy()}}},onTouchToolstrip:function(){i()},onTouchContent:function(){zo(fe.fromDom(C.editorContainer.querySelector("."+ci("toolbar")))).bind(function(n){return w.system.getByDom(n).toOptional()}).each(q),w.restoreToolbar(),i()},onTapContent:function(n){var e=n.target;"img"===le(e)?(C.selection.select(e.dom),n.kill()):"a"===le(e)&&w.system.getByDom(fe.fromDom(C.editorContainer)).each(function(n){cr.isAlpha(n)&&function(n){var e=document.createElement("a");e.target="_blank",e.href=n.href,e.rel="noreferrer noopener";var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),document.body.appendChild(e),e.dispatchEvent(t),document.body.removeChild(e)}(e.dom)})}},container:fe.fromDom(C.editorContainer),socket:fe.fromDom(C.contentAreaContainer),toolstrip:fe.fromDom(C.editorContainer.querySelector("."+ci("toolstrip"))),toolbar:fe.fromDom(C.editorContainer.querySelector("."+ci("toolbar"))),dropup:w.dropup,alloy:w.system,translate:Y,setReadOnly:function(n){O(d,l,f,n)},readOnlyOnInit:function(){return!1}});var t,n,o,r,e,i=function(){w.dropup.disappear(function(){w.system.broadcastOn([gr],{})})},u={label:"The first group",scrollable:!1,items:[uf("back",function(){C.selection.collapse(),w.exit()},{},C)]},c={label:"Back to read only",scrollable:!1,items:[uf("readonly-back",function(){O(d,l,f,!0)},{},C)]},a=Wl(w,C),s={label:"The extra group",scrollable:!1,items:[]},f=jo([{label:"the action group",scrollable:!0,items:(t=a,e=C.getParam("toolbar",lr,"array"),n=(D(e)?dm:Ul)(e),o={},B(n,function(n){var e=!Ie(o,n)&&Ie(t,n)&&t[n].isSupported()?[t[n].sketch()]:[];return o[n]=!0,e}))},s]),l=jo([{label:"The read only mode group",scrollable:!0,items:[]},s]),d=jo({backToMask:[u],backToReadOnly:[c]}),m=w;M(st((r=C).formatter.get()),function(e){r.formatter.formatChanged(e,function(n){jp(m,e,n)})}),M(["ul","ol"],function(t){r.selection.selectorChanged(t,function(n,e){jp(m,t,n)})})}),C.on("remove",function(){w.exit()}),C.on("detach",function(){var e=w.system;M(Je(e.element),function(n){e.getByDom(n).each(ut)}),Ze(e.element),w.system.destroy()}),{iframeContainer:w.socket.element.dom,editorContainer:w.element.dom}}}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/themes/silver/theme.min.js b/projects/editor/src/assets/tinymce/js/tinymce/themes/silver/theme.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..80ca729d5c347991d8425ee062300b51f9abee91
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/themes/silver/theme.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function t(o){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e)===o;var n,e}}function n(n){return function(t){return typeof t===n}}function e(n){return function(t){return n===t}}function g(t){return null==t}function f(t){return!g(t)}function d(t,n){if(c(t)){for(var e=0,o=t.length;e<o;++e)if(!n(t[e]))return;return 1}}function ct(){}function r(e,o){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return e(o.apply(null,t))}}function tt(t){return function(){return t}}function h(t){return t}function v(t,n){return t===n}var y=t("string"),x=t("object"),c=t("array"),b=e(null),w=n("boolean"),E=e(void 0),m=n("function"),u=n("number");function S(o){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=r.concat(t);return o.apply(null,e)}}function k(n){return function(t){return!n(t)}}function C(t){return function(){throw new Error(t)}}var O=tt(!1),_=tt(!0),o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),st=function(){return(st=Object.assign||function(t){for(var n,e=1,o=arguments.length;e<o;e++)for(var r in n=arguments[e])Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);return t}).apply(this,arguments)};function s(t,n){var e={};for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&n.indexOf(r)<0&&(e[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(e[r[o]]=t[r[o]]);return e}function H(t,n,e){if(e||2===arguments.length)for(var o,r=0,i=n.length;r<i;r++)!o&&r in n||((o=o||Array.prototype.slice.call(n,0,r))[r]=n[r]);return t.concat(o||Array.prototype.slice.call(n))}function i(){return a}var a={fold:function(t,n){return t()},isSome:O,isNone:_,getOr:h,getOrThunk:l,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:tt(null),getOrUndefined:tt(void 0),or:h,orThunk:l,map:i,each:ct,bind:i,exists:O,forall:_,filter:function(){return a},toArray:function(){return[]},toString:tt("none()")};function l(t){return t()}function p(t,n){return Z.call(t,n)}function T(t,n){for(var e=0,o=t.length;e<o;e++)if(n(t[e],e))return!0;return!1}function D(t,n){for(var e=[],o=0;o<t;o++)e.push(n(o));return e}function B(t,n){for(var e=[],o=0;o<t.length;o+=n){var r=Q.call(t,o,o+n);e.push(r)}return e}function A(t,n){for(var e=t.length,o=new Array(e),r=0;r<e;r++){var i=t[r];o[r]=n(i,r)}return o}function M(t,n){for(var e=[],o=[],r=0,i=t.length;r<i;r++){var u=t[r];(n(u,r)?e:o).push(u)}return{pass:e,fail:o}}function F(t,n){for(var e=[],o=0,r=t.length;o<r;o++){var i=t[o];n(i,o)&&e.push(i)}return e}function I(t,o,r){return function(t){for(var n,e=t.length-1;0<=e;e--)n=t[e],r=o(r,n,e)}(t),r}function R(t,e,o){return dt(t,function(t,n){o=e(o,t,n)}),o}function V(t,n){return function(t,n,e){for(var o=0,r=t.length;o<r;o++){var i=t[o];if(n(i,o))return ft.some(i);if(e(i,o))break}return ft.none()}(t,n,O)}function P(t,n){for(var e=0,o=t.length;e<o;e++)if(n(t[e],e))return ft.some(e);return ft.none()}function lt(t){for(var n=[],e=0,o=t.length;e<o;++e){if(!c(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);nt.apply(n,t[e])}return n}function z(t,n){return lt(A(t,n))}function N(t,n){for(var e=0,o=t.length;e<o;++e)if(!0!==n(t[e],e))return!1;return!0}function L(t){var n=Q.call(t,0);return n.reverse(),n}function j(t,n){return F(t,function(t){return!et(n,t)})}function W(t,n){for(var e={},o=0,r=t.length;o<r;o++){var i=t[o];e[String(i)]=n(i,o)}return e}function U(t){return[t]}function G(t,n){var e=Q.call(t,0);return e.sort(n),e}function X(t,n){return 0<=n&&n<t.length?ft.some(t[n]):ft.none()}function Y(t){return X(t,t.length-1)}function q(t,n){for(var e=0;e<t.length;e++){var o=n(t[e],e);if(o.isSome())return o}return ft.none()}var K,J,$=function(e){function t(){return r}function n(t){return t(e)}var o=tt(e),r={fold:function(t,n){return n(e)},isSome:_,isNone:O,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:t,orThunk:t,map:function(t){return $(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?r:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},ft={some:$,none:i,from:function(t){return null==t?a:$(t)}},Q=Array.prototype.slice,Z=Array.prototype.indexOf,nt=Array.prototype.push,et=function(t,n){return-1<p(t,n)},dt=function(t,n){for(var e=0,o=t.length;e<o;e++)n(t[e],e)},ot=function(t){return X(t,0)},rt=m(Array.from)?Array.from:function(t){return Q.call(t)},it=function(e){return{isValue:_,isError:O,getOr:tt(e),getOrThunk:tt(e),getOrDie:tt(e),or:function(t){return it(e)},orThunk:function(t){return it(e)},fold:function(t,n){return n(e)},map:function(t){return it(t(e))},mapError:function(t){return it(e)},each:function(t){t(e)},bind:function(t){return t(e)},exists:function(t){return t(e)},forall:function(t){return t(e)},toOptional:function(){return ft.some(e)}}},ut=function(e){return{isValue:O,isError:_,getOr:h,getOrThunk:function(t){return t()},getOrDie:function(){return C(String(e))()},or:h,orThunk:function(t){return t()},fold:function(t,n){return t(e)},map:function(t){return ut(e)},mapError:function(t){return ut(t(e))},each:ct,bind:function(t){return ut(e)},exists:O,forall:_,toOptional:ft.none}},mt={value:it,error:ut,fromOption:function(t,n){return t.fold(function(){return ut(n)},it)}};function at(t,n,e){return t.stype===K.Error?n(t.serror):e(t.svalue)}function gt(t){return{stype:K.Value,svalue:t}}function pt(t){return{stype:K.Error,serror:t}}function ht(t,n,e,o){return{tag:"field",key:t,newKey:n,presence:e,prop:o}}function vt(t,n,e){switch(t.tag){case"field":return n(t.key,t.newKey,t.presence,t.prop);case"custom":return e(t.newKey,t.instantiator)}}function bt(t,n){for(var e=Xn(t),o=0,r=e.length;o<r;o++){var i=e[o];n(t[i],i)}}function yt(t,e){return qn(t,function(t,n){return{k:n,v:e(t,n)}})}function xt(t,e){var o=[];return bt(t,function(t,n){o.push(e(t,n))}),o}function wt(t,n){for(var e=Xn(t),o=0,r=e.length;o<r;o++){var i=e[o],u=t[i];if(n(u,i,t))return ft.some(u)}return ft.none()}function St(t){return xt(t,h)}function kt(t,n){return Kn(t,n)?ft.from(t[n]):ft.none()}function Ct(t,n){return Kn(t,n)&&void 0!==t[n]&&null!==t[n]}function Ot(u){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(0===t.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<t.length;o++){var r,i=t[o];for(r in i)Kn(i,r)&&(e[r]=u(e[r],i[r]))}return e}}function _t(e){var o,r=!1;return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return r||(r=!0,o=e.apply(null,t)),o}}function Tt(){return{tag:"required",process:{}}}function Et(t){return{tag:"defaultedThunk",process:t}}function Dt(t){return Et(tt(t))}function Bt(){return{tag:"option",process:{}}}function At(t){return{tag:"mergeWithThunk",process:t}}function Mt(t){return x(t)&&100<Xn(t).length?" removed due to size":JSON.stringify(t,null,2)}function Ft(t,n){return Nn([{path:t,getErrorInfo:n}])}function It(e){return{extract:function(n,t){return jn(e(t),function(t){return Ft(n,tt(t))})},toString:tt("val")}}function Rt(t,n,e,o){return o(kt(t,n).getOrThunk(function(){return e(t)}))}function Vt(n,e,o,r,i){function u(t){return i.extract(e.concat([r]),t)}function t(t){return t.fold(function(){return zn(ft.none())},function(t){var n=i.extract(e.concat([r]),t);return Wn(n,ft.some)})}var a,c,s,l,f,d;switch(n.tag){case"required":return s=e,d=u,kt(l=o,f=r).fold(function(){return t=f,n=l,Ft(s,function(){return'Could not find valid *required* value for "'+t+'" in '+Mt(n)});var t,n},d);case"defaultedThunk":return Rt(o,r,n.process,u);case"option":return t(kt(o,r));case"defaultedOptionThunk":return c=n.process,t(kt(a=o,r).map(function(t){return!0===t?c(a):t}));case"mergeWithThunk":return Rt(o,r,tt({}),function(t){return u(Jn(n.process(o),t))})}}function Pt(e){return{extract:function(t,n){return e().extract(t,n)},toString:function(){return e().toString()}}}function Ht(t){var s=te(t),l=I(t,function(e,t){return vt(t,function(t){var n;return Jn(e,((n={})[t]=!0,n))},tt(e))},{});return{extract:function(t,n){var e,o,r,i,u,a,c=F(w(n)?[]:Xn((r=f,i=o={},u=function(t,n){i[n]=t},a=ct,bt(n,function(t,n){(r(t,n)?u:a)(t,n)}),o)),function(t){return!Ct(l,t)});return 0===c.length?s.extract(t,n):(e=c,Ft(t,function(){return"There are unsupported fields: ["+e.join(", ")+"] specified"}))},toString:s.toString}}function zt(o){return{extract:function(e,t){var n=A(t,function(t,n){return o.extract(e.concat(["["+n+"]"]),t)});return Qn(n)},toString:function(){return"array("+o.toString()+")"}}}function Nt(u){return{extract:function(t,n){for(var e=[],o=0,r=u;o<r.length;o++){var i=r[o].extract(t,n);if(i.stype===K.Value)return i;e.push(i)}return Qn(e)},toString:function(){return"oneOf("+A(u,function(t){return t.toString()}).join(", ")+")"}}}function Lt(e,o){return It(function(t){var n=typeof t;return e(t)?zn(t):Nn("Expected type: "+o+" but got: "+n)})}function jt(n,a){return{extract:function(i,u){return kt(u,n).fold(function(){return t=n,Ft(i,function(){return'Choice schema did not contain choice key: "'+t+'"'});var t},function(t){return e=i,n=u,kt(o=a,r=t).fold(function(){return t=o,n=r,Ft(e,function(){return'The chosen schema: "'+n+'" did not exist in branches: '+Mt(t)});var t,n},function(t){return t.extract(e.concat(["branch: "+r]),n)});var e,n,o,r})},toString:function(){return"chooseOn("+n+"). Possible values: "+Xn(a)}}}function Wt(n){return It(function(t){return n(t).fold(Nn,zn)})}function Ut(n,t){return r=function(t){return n(t).fold(pt,gt)},i=t,{extract:function(e,o){var t=Xn(o),n=zt(It(r)).extract(e,t);return Ln(n,function(t){var n=A(t,function(t){return ht(t,t,Tt(),i)});return te(n).extract(e,o)})},toString:function(){return"setOf("+i.toString()+")"}};var r,i}function Gt(t,n,e){return Hn((r=n.extract([t],o=e),Un(r,function(t){return{input:o,errors:t}})));var o,r}function Xt(t){return t.fold(function(t){throw new Error(se(t))},h)}function Yt(t,n,e){return Xt(Gt(t,n,e))}function qt(t,n){return jt(t,yt(n,te))}function Kt(n){return Wt(function(t){return et(n,t)?mt.value(t):mt.error('Unsupported value: "'+t+'", choose one of "'+n.join(", ")+'".')})}function Jt(t){return le(t,t,Tt(),ee())}function $t(t,n){return le(t,t,Tt(),n)}function Qt(t){return $t(t,re)}function Zt(t,n){return le(t,t,Tt(),Kt(n))}function tn(t){return $t(t,ue)}function nn(t,n){return le(t,t,Tt(),te(n))}function en(t,n){return le(t,t,Tt(),ne(n))}function on(t,n){return le(t,t,Tt(),zt(n))}function rn(t){return le(t,t,Bt(),ee())}function un(t,n){return le(t,t,Bt(),n)}function an(t){return un(t,oe)}function cn(t){return un(t,re)}function sn(t){return un(t,ue)}function ln(t,n){return un(t,zt(n))}function fn(t,n){return un(t,te(n))}function dn(t,n){return le(t,t,Dt(n),ee())}function mn(t,n,e){return le(t,t,Dt(n),e)}function gn(t,n){return mn(t,n,oe)}function pn(t,n){return mn(t,n,re)}function hn(t,n,e){return mn(t,n,Kt(e))}function vn(t,n){return mn(t,n,ie)}function bn(t,n){return mn(t,n,ue)}function yn(t,n,e){return mn(t,n,zt(e))}function xn(t,n,e){return mn(t,n,te(e))}function wn(t){var n=t;return{get:function(){return n},set:function(t){n=t}}}function Sn(t,n){var e=String(n).toLowerCase();return V(t,function(t){return t.search(e)})}function kn(t,n,e){return""===n||t.length>=n.length&&t.substr(e,e+n.length)===n}function Cn(t,n){return-1!==t.indexOf(n)}function On(t){return 0<t.length}function _n(n){return function(t){return Cn(t,n)}}function Tn(t){return window.matchMedia(t).matches}function En(t,n){var e=t.dom;if(1!==e.nodeType)return!1;var o=e;if(void 0!==o.matches)return o.matches(n);if(void 0!==o.msMatchesSelector)return o.msMatchesSelector(n);if(void 0!==o.webkitMatchesSelector)return o.webkitMatchesSelector(n);if(void 0!==o.mozMatchesSelector)return o.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function Dn(t){return 1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType||0===t.childElementCount}function Bn(t,n){return t.dom===n.dom}function An(t,n){return Be().browser.isIE()?(e=t.dom,o=n.dom,r=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(e.compareDocumentPosition(o)&r)):(i=t.dom)!==(u=n.dom)&&i.contains(u);var e,o,r,i,u}(J=K={})[J.Error=0]="Error",J[J.Value=1]="Value";function Mn(t){if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}}function Fn(){return me(0,0)}function In(t){function n(t){return function(){return e===t}}var e=t.current,o=t.version;return{current:e,version:o,isEdge:n("Edge"),isChrome:n("Chrome"),isIE:n("IE"),isOpera:n("Opera"),isFirefox:n(xe),isSafari:n("Safari")}}function Rn(t){function n(t){return function(){return e===t}}var e=t.current,o=t.version;return{current:e,version:o,isWindows:n(ke),isiOS:n("iOS"),isAndroid:n(Ce),isOSX:n("OSX"),isLinux:n("Linux"),isSolaris:n(Oe),isFreeBSD:n(_e),isChromeOS:n(Te)}}function Vn(u){if(!c(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],e={};return dt(u,function(t,o){var n=Xn(t);if(1!==n.length)throw new Error("one and only one name per case");var r=n[0],i=t[r];if(void 0!==e[r])throw new Error("duplicate key detected:"+r);if("cata"===r)throw new Error("cannot have a case named cata (sorry)");if(!c(i))throw new Error("case arguments must be an array");a.push(r),e[r]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=e.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+r+". Expected "+i.length+" ("+i+"), got "+n);return{fold:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(t.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+t.length);return t[o].apply(null,e)},match:function(t){var n=Xn(t);if(a.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+n.join(","));if(!N(a,function(t){return et(n,t)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+a.join(", "));return t[r].apply(null,e)},log:function(t){console.log(t,{constructors:a,constructor:r,params:e})}}}}),e}var Pn,Hn=function(t){return at(t,mt.error,mt.value)},zn=gt,Nn=pt,Ln=function(t,n){return t.stype===K.Value?n(t.svalue):t},jn=function(t,n){return t.stype===K.Error?n(t.serror):t},Wn=function(t,n){return t.stype===K.Value?{stype:K.Value,svalue:n(t.svalue)}:t},Un=function(t,n){return t.stype===K.Error?{stype:K.Error,serror:n(t.serror)}:t},Gn=at,Xn=Object.keys,Yn=Object.hasOwnProperty,qn=function(t,o){var r={};return bt(t,function(t,n){var e=o(t,n);r[e.k]=e.v}),r},Kn=function(t,n){return Yn.call(t,n)},Jn=Ot(function(t,n){return x(t)&&x(n)?Jn(t,n):n}),$n=Ot(function(t,n){return n}),Qn=function(t){var n,e,o=(n=[],e=[],dt(t,function(t){at(t,function(t){return e.push(t)},function(t){return n.push(t)})}),{values:n,errors:e});return 0<o.errors.length?r(Nn,lt)(o.errors):zn(o.values)},Zn=It(zn),te=function(e){return{extract:function(i,u){for(var a={},c=[],t=0,n=e;t<n.length;t++)vt(n[t],function(t,n,e,o){var r=Vt(e,i,u,t,o);Gn(r,function(t){c.push.apply(c,t)},function(t){a[n]=t})},function(t,n){a[t]=n(u)});return 0<c.length?Nn(c):zn(a)},toString:function(){return"obj{\n"+A(e,function(t){return vt(t,function(t,n,e,o){return t+" -> "+o.toString()},function(t,n){return"state("+t+")"})}).join("\n")+"}"}}},ne=r(zt,te),ee=tt(Zn),oe=Lt(u,"number"),re=Lt(y,"string"),ie=Lt(w,"boolean"),ue=Lt(m,"function"),ae=function(n){if(Object(n)!==n)return!0;switch({}.toString.call(n).slice(8,-1)){case"Boolean":case"Number":case"String":case"Date":case"RegExp":case"Blob":case"FileList":case"ImageData":case"ImageBitmap":case"ArrayBuffer":return!0;case"Array":case"Object":return Object.keys(n).every(function(t){return ae(n[t])});default:return!1}},ce=It(function(t){return ae(t)?zn(t):Nn("Expected value to be acceptable for sending via postMessage")}),se=function(t){return"Errors: \n"+A(10<(n=t.errors).length?n.slice(0,10).concat([{path:[],getErrorInfo:tt("... (only showing first ten failures)")}]):n,function(t){return"Failed path: ("+t.path.join(" > ")+")\n"+t.getErrorInfo()}).join("\n")+"\n\nInput object: "+Mt(t.input);var n},le=ht,fe=function(t,n){return{tag:"custom",newKey:t,instantiator:n}},de={fromHtml:function(t,n){var e=(n||document).createElement("div");if(e.innerHTML=t,!e.hasChildNodes()||1<e.childNodes.length)throw console.error("HTML does not have a single root node",t),new Error("HTML must have a single root node");return Mn(e.childNodes[0])},fromTag:function(t,n){var e=(n||document).createElement(t);return Mn(e)},fromText:function(t,n){var e=(n||document).createTextNode(t);return Mn(e)},fromDom:Mn,fromPoint:function(t,n,e){return ft.from(t.dom.elementFromPoint(n,e)).map(Mn)}},me=function(t,n){return{major:t,minor:n}},ge={nu:me,detect:function(t,n){var e,o,r=String(n).toLowerCase();return 0===t.length?Fn():(o=function(t,n){for(var e=0;e<t.length;e++){var o=t[e];if(o.test(n))return o}}(t,e=r))?me(i(1),i(2)):{major:0,minor:0};function i(t){return Number(e.replace(o,"$"+t))}},unknown:Fn},pe=function(t,n){return kn(t,n,0)},he=function(t,n){return kn(t,n,t.length-n.length)},ve=(Pn=/^\s+|\s+$/g,function(t){return t.replace(Pn,"")}),be=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ye={browsers:tt([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return Cn(t,"edge/")&&Cn(t,"chrome")&&Cn(t,"safari")&&Cn(t,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,be],search:function(t){return Cn(t,"chrome")&&!Cn(t,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return Cn(t,"msie")||Cn(t,"trident")}},{name:"Opera",versionRegexes:[be,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:_n("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:_n("firefox")},{name:"Safari",versionRegexes:[be,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(Cn(t,"safari")||Cn(t,"mobile/"))&&Cn(t,"applewebkit")}}]),oses:tt([{name:"Windows",search:_n("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return Cn(t,"iphone")||Cn(t,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:_n("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:_n("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:_n("linux"),versionRegexes:[]},{name:"Solaris",search:_n("sunos"),versionRegexes:[]},{name:"FreeBSD",search:_n("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:_n("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},xe="Firefox",we=function(){return In({current:void 0,version:ge.unknown()})},Se=In,ke=(tt("Edge"),tt("Chrome"),tt("IE"),tt("Opera"),tt(xe),tt("Safari"),"Windows"),Ce="Android",Oe="Solaris",_e="FreeBSD",Te="ChromeOS",Ee=function(){return Rn({current:void 0,version:ge.unknown()})},De=Rn,Be=(tt(ke),tt("iOS"),tt(Ce),tt("Linux"),tt("OSX"),tt(Oe),tt(_e),tt(Te),_t(function(){return t=navigator.userAgent,n=ft.from(navigator.userAgentData),e=Tn,p=ye.browsers(),h=ye.oses(),v=n.bind(function(t){return o=p,q(t.brands,function(n){var e=n.brand.toLowerCase();return V(o,function(t){var n;return e===(null===(n=t.brand)||void 0===n?void 0:n.toLowerCase())}).map(function(t){return{current:t.name,version:ge.nu(parseInt(n.version,10),0)}})});var o}).orThunk(function(){return Sn(p,e=t).map(function(t){var n=ge.detect(t.versionRegexes,e);return{current:t.name,version:n}});var e}).fold(we,Se),b=Sn(h,o=t).map(function(t){var n=ge.detect(t.versionRegexes,o);return{current:t.name,version:n}}).fold(Ee,De),{browser:v,os:b,deviceType:(i=v,u=t,a=e,c=(r=b).isiOS()&&!0===/ipad/i.test(u),s=r.isiOS()&&!c,f=(l=r.isiOS()||r.isAndroid())||a("(pointer:coarse)"),d=c||!s&&l&&a("(min-device-width:768px)"),m=s||l&&!d,g=i.isSafari()&&r.isiOS()&&!1===/safari/i.test(u),{isiPad:tt(c),isiPhone:tt(s),isTablet:tt(d),isPhone:tt(m),isTouch:tt(f),isAndroid:r.isAndroid,isiOS:r.isiOS,isWebView:tt(g),isDesktop:tt(!m&&!d&&!g)})};var t,n,e,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b}));function Ae(t,n){return(e={})[t]=n,e;var e}function Me(t){return n={},dt(t,function(t){n[t.key]=t.value}),n;var n}function Fe(t){return m(t)?t:O}function Ie(t,n,e){for(var o=t.dom,r=Fe(e);o.parentNode;){var o=o.parentNode,i=de.fromDom(o),u=n(i);if(u.isSome())return u;if(r(i))break}return ft.none()}function Re(t,n,e){var o=n(t),r=Fe(e);return o.orThunk(function(){return r(t)?ft.none():Ie(t,n,r)})}function Ve(t,n){return Bn(t.element,n.event.target)}function Pe(t){if(!Ct(t,"can")&&!Ct(t,"abort")&&!Ct(t,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(t,null,2)+" does not have can, abort, or run!");return st(st({},to),t)}function He(t){return tt("alloy."+t)}function ze(t,n){Ko(t,t.element,n,{})}function Ne(t,n,e){Ko(t,t.element,n,e)}function Le(t){ze(t,Eo())}function je(t,n,e){Ko(t,n,e,{})}function We(t,n,e,o){t.getSystem().triggerEvent(e,n,o.event)}function Ue(t,n){return{key:t,value:Pe({abort:n})}}function Ge(t){return{key:t,value:Pe({run:function(t,n){n.event.prevent()}})}}function Xe(t,n){return{key:t,value:Pe({run:n})}}function Ye(t,e,o){return{key:t,value:Pe({run:function(t,n){e.apply(void 0,[t,n].concat(o))}})}}function qe(t){return function(e){return{key:t,value:Pe({run:function(t,n){Ve(t,n)&&e(t,n)}})}}}function Ke(t,n,e){var o,r=n.partUids[e];return Xe(o=t,function(t,n){t.getSystem().getByUid(r).each(function(t){We(t,t.element,o,n)})})}function Je(t,r){return Xe(t,function(n,t){var e=t.event,o=n.getSystem().getByDom(e.target).getOrThunk(function(){return Re(e.target,function(t){return n.getSystem().getByDom(t).toOptional()},O).getOr(n)});r(n,o,t)})}function $e(t){return Xe(t,function(t,n){n.cut()})}function Qe(t,n){return qe(t)(n)}Vn([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var Ze,to={can:_,abort:O,run:ct},no=tt,eo=no("touchstart"),oo=no("touchmove"),ro=no("touchend"),io=no("touchcancel"),uo=no("mousedown"),ao=no("mousemove"),co=no("mouseout"),so=no("mouseup"),lo=no("mouseover"),fo=no("focusin"),mo=no("focusout"),go=no("keydown"),po=no("keyup"),ho=no("input"),vo=no("change"),bo=no("click"),yo=no("transitioncancel"),xo=no("transitionend"),wo=no("transitionstart"),So=no("selectstart"),ko={tap:He("tap")},Co=He("focus"),Oo=He("blur.post"),_o=He("paste.post"),To=He("receive"),Eo=He("execute"),Do=He("focus.item"),Bo=ko.tap,Ao=He("longpress"),Mo=He("sandbox.close"),Fo=He("typeahead.cancel"),Io=He("system.init"),Ro=He("system.touchmove"),Vo=He("system.touchend"),Po=He("system.scroll"),Ho=He("system.resize"),zo=He("system.attached"),No=He("system.detached"),Lo=He("system.dismissRequested"),jo=He("system.repositionRequested"),Wo=He("focusmanager.shifted"),Uo=He("slotcontainer.visibility"),Go=He("change.tab"),Xo=He("dismiss.tab"),Yo=He("highlight"),qo=He("dehighlight"),Ko=function(t,n,e,o){var r=st({target:n},o);t.getSystem().triggerEvent(e,n,r)},Jo=Me,$o=qe(zo()),Qo=qe(No()),Zo=qe(Io()),tr=(Ze=Eo(),function(t){return Xe(Ze,t)});function nr(t){return t.dom.nodeName.toLowerCase()}function er(n){return function(t){return t.dom.nodeType===n}}function or(t){return de.fromDom(t.dom.ownerDocument)}function rr(t){return Pi(t)?t:or(t)}function ir(t){return de.fromDom(rr(t).dom.documentElement)}function ur(t){return de.fromDom(rr(t).dom.defaultView)}function ar(t){return ft.from(t.dom.parentNode).map(de.fromDom)}function cr(t){return ft.from(t.dom.offsetParent).map(de.fromDom)}function sr(t){return A(t.dom.childNodes,de.fromDom)}function lr(t,n){var e=t.dom.childNodes;return ft.from(e[n]).map(de.fromDom)}function fr(t,n){return{element:t,offset:n}}function dr(t,n){var e=sr(t);return 0<e.length&&n<e.length?fr(e[n],0):fr(t,n)}function mr(t){return Hi(t)&&f(t.dom.host)}function gr(t){return mr(t)?t:de.fromDom(rr(t).dom.body)}function pr(t){return de.fromDom(t.dom.host)}function hr(n,e){ar(n).each(function(t){t.dom.insertBefore(e.dom,n.dom)})}function vr(t,n){ft.from(t.dom.nextSibling).map(de.fromDom).fold(function(){ar(t).each(function(t){Gi(t,n)})},function(t){hr(t,n)})}function br(n,e){lr(n,0).fold(function(){Gi(n,e)},function(t){n.dom.insertBefore(e.dom,t.dom)})}function yr(n,t){dt(t,function(t){Gi(n,t)})}function xr(t){t.dom.textContent="",dt(sr(t),function(t){Xi(t)})}function wr(t){var n,e=sr(t);0<e.length&&(n=t,dt(e,function(t){hr(n,t)})),Xi(t)}function Sr(t){return t.dom.innerHTML}function kr(t,n){var e,o,r=or(t).dom,i=de.fromDom(r.createDocumentFragment());yr(i,(e=n,(o=(r||document).createElement("div")).innerHTML=e,sr(de.fromDom(o)))),xr(t),Gi(t,i)}function Cr(t,n,e){if(!(y(e)||w(e)||u(e)))throw console.error("Invalid call to Attribute.set. Key ",n,":: Value ",e,":: Element ",t),new Error("Attribute value was not simple");t.setAttribute(n,e+"")}function Or(t,n,e){Cr(t.dom,n,e)}function _r(t,n){var e=t.dom.getAttribute(n);return null===e?void 0:e}function Tr(t,n){return ft.from(_r(t,n))}function Er(t,n){var e=t.dom;return!(!e||!e.hasAttribute)&&e.hasAttribute(n)}function Dr(t,n){t.dom.removeAttribute(n)}function Br(t){if(mr(t))return"#shadow-root";var n=de.fromDom(t.dom.cloneNode(!1)),e=de.fromTag("div"),o=de.fromDom(n.dom.cloneNode(!0));return Gi(e,o),Sr(e)}function Ar(t){var n=(new Date).getTime();return t+"_"+Math.floor(1e9*Math.random())+ ++Ki+String(n)}function Mr(t){var n=Ri(t)?t.dom[Zi]:null;return ft.from(n)}function Fr(n){function e(t){return"The component must be in a context to execute: "+t+(n?"\n"+Br(n().element)+" is not in context.":"")}function t(t){return function(){throw new Error(e(t))}}function o(t){return function(){console.warn(e(t))}}return{debugInfo:tt("fake"),triggerEvent:o("triggerEvent"),triggerFocus:o("triggerFocus"),triggerEscape:o("triggerEscape"),broadcast:o("broadcast"),broadcastOn:o("broadcastOn"),broadcastEvent:o("broadcastEvent"),build:t("build"),addToWorld:t("addToWorld"),removeFromWorld:t("removeFromWorld"),addToGui:t("addToGui"),removeFromGui:t("removeFromGui"),getByUid:t("getByUid"),getByDom:t("getByDom"),isConnected:O}}function Ir(t,n){var e=t.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return t.toFunctionAnnotation=function(){return{name:n,parameters:ru(i)}},t}function Rr(t){return Ae(iu,t)}function Vr(o){return t=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return o.apply(void 0,H([t.getApis(),t],n))},e=(n=o.toString()).indexOf(")")+1,r=n.indexOf("("),i=n.substring(r+1,e-1).split(/,\s*/),t.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:ru(i.slice(1))}},t;var t,n,e,r,i}function Pr(t,r){var i={};return bt(t,function(t,o){bt(t,function(t,n){var e=kt(i,n).getOr([]);i[n]=e.concat([r(o,t)])})}),i}function Hr(t){return{classes:E(t.classes)?[]:t.classes,attributes:E(t.attributes)?{}:t.attributes,styles:E(t.styles)?{}:t.styles}}function zr(t){return t.cHandler}function Nr(t,n){return{name:t,handler:n}}function Lr(t,n,e){var o=n[e];return o?function(u,t,a){try{var n=G(t,function(t,n){var e=t.name,o=n.name,r=a.indexOf(e),i=a.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+e+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(a,null,2));return r<i?-1:i<r?1:0});return mt.value(n)}catch(t){return mt.error([t])}}("Event: "+e,t,o).map(function(t){var e,n,o,r,i=A(t,function(t){return t.handler});return{can:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return R(n,function(t,n){return t&&n.can.apply(void 0,e)},!0)},abort:(o=n=e=i,r=function(t){return t.abort},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return R(o,function(t,n){return t||r(n).apply(void 0,e)},!1)}),run:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];dt(e,function(t){t.run.apply(void 0,n)})}}}):mt.error(["The event ("+e+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(A(t,function(t){return t.name}),null,2)])}function jr(t,n){var e=_r(t,n);return void 0===e||""===e?[]:e.split(" ")}function Wr(t){return void 0!==t.dom.classList}function Ur(t,n){var e,o,r;Wr(t)?t.dom.classList.add(n):(o=n,r=jr(e=t,"class").concat([o]),Or(e,"class",r.join(" ")))}function Gr(t,n){var e,o,r,i;Wr(t)?t.dom.classList.remove(n):(r=n,0<(i=F(jr(o=t,"class"),function(t){return t!==r})).length?Or(o,"class",i.join(" ")):Dr(o,"class")),0===(Wr(e=t)?e.dom.classList:jr(e,"class")).length&&Dr(e,"class")}function Xr(t,n){return Wr(t)&&t.dom.classList.contains(n)}function Yr(n,t){dt(t,function(t){Ur(n,t)})}function qr(n,t){dt(t,function(t){Gr(n,t)})}function Kr(t,n,e){return void 0===e&&(e=v),t.exists(function(t){return e(t,n)})}function Jr(t){for(var n=[],e=function(t){n.push(t)},o=0;o<t.length;o++)t[o].each(e);return n}function $r(t,n){return t?ft.some(n):ft.none()}function Qr(t){return void 0!==t.style&&m(t.style.getPropertyValue)}function Zr(t,n,e){if(!y(e))throw console.error("Invalid call to CSS.set. Property ",n,":: Value ",e,":: Element ",t),new Error("CSS value must be a string: "+e);Qr(t)&&t.style.setProperty(n,e)}function ti(t,n){Qr(t)&&t.style.removeProperty(n)}function ni(t,n,e){Zr(t.dom,n,e)}function ei(t,n){var e=t.dom;bt(n,function(t,n){Zr(e,n,t)})}function oi(t,n){var e=t.dom;bt(n,function(t,n){t.fold(function(){ti(e,n)},function(t){Zr(e,n,t)})})}function ri(t,n){var e=t.dom,o=window.getComputedStyle(e).getPropertyValue(n);return""!==o||du(t)?o:pu(e,n)}function ii(t,n){var e=t.dom,o=pu(e,n);return ft.from(o).filter(function(t){return 0<t.length})}function ui(t,n,e){var o=de.fromTag(t);return ni(o,n,e),ii(o,n).isSome()}function ai(t,n){ti(t.dom,n),Kr(Tr(t,"style").map(ve),"")&&Dr(t,"style")}function ci(t){return t.dom.offsetWidth}function si(t){return t.dom.value}function li(t,n){if(void 0===n)throw new Error("Value.set was undefined");t.dom.value=n}function fi(t){var n,e,o,r,i=(n=kt(t,"behaviours").getOr({}),A(F(Xn(n),function(t){return void 0!==n[t]}),function(t){return n[t].me}));return e=t,r=A(o=i,function(t){return fn(t.name(),[Jt("config"),dn("state",uu)])}),{list:o,data:yt(Gt("component.behaviours",te(r),e.behaviours).fold(function(t){throw new Error(se(t)+"\nComplete spec:\n"+JSON.stringify(e,null,2))},h),function(t){return tt(t.map(function(t){return{config:t.config,state:t.state.init(t.config)}}))})}}function di(t,n,e){var o,r,i=st(st({},(o=t).dom),{uid:o.uid,domChildren:A(o.components,function(t){return t.element})}),u=t.domModification.fold(function(){return Hr({})},Hr),a=0<n.length?function(n,t,e,o){var r=st({},t);function i(t){return I(t,function(t,n){return st(st({},n.modification),t)},{})}dt(e,function(t){r[t.name()]=t.exhibit(n,o)});var u=Pr(r,function(t,n){return{name:t,modification:n}});return Hr({classes:I(u.classes,function(t,n){return n.modification.concat(t)},[]),attributes:i(u.attributes),styles:i(u.styles)})}(e,{"alloy.base.modification":u},n,i):u;return st(st({},r=i),{attributes:st(st({},r.attributes),a.attributes),styles:st(st({},r.styles),a.styles),classes:r.classes.concat(a.classes)})}function mi(t,n,e){var o,r,i,u,a,c={"alloy.base.behaviour":t.events},s=t.eventOrder;return r=e,i=n,o=Pr(st(st({},c),(u=r,a={},dt(i,function(t){a[t.name()]=t.handlers(u)}),a)),Nr),cu(o,s).getOrDie()}function gi(e){function t(){return l}var n=wn(ou),o=Xt(Gt("custom.definition",lu,e)),r=fi(e),i=r.list,u=r.data,a=function(t){var n=de.fromTag(t.tag),e=t.attributes,o=n.dom;bt(e,function(t,n){Cr(o,n,t)}),Yr(n,t.classes),ei(n,t.styles),t.innerHtml.each(function(t){return kr(n,t)});var r=t.domChildren;return yr(n,r),t.value.each(function(t){li(n,t)}),t.uid,tu(n,t.uid),n}(di(o,i,u)),c=mi(o,i,u),s=wn(o.components),l={uid:e.uid,getSystem:n.get,config:function(t){var n=u;return(m(n[t.name()])?n[t.name()]:function(){throw new Error("Could not find "+t.name()+" in "+JSON.stringify(e,null,2))})()},hasConfigured:function(t){return m(u[t.name()])},spec:e,readState:function(t){return u[t]().map(function(t){return t.state.readState()}).getOr("not enabled")},getApis:function(){return o.apis},connect:function(t){n.set(t)},disconnect:function(){n.set(Fr(t))},element:a,syncComponents:function(){var t=z(sr(a),function(t){return n.get().getByDom(t).fold(function(){return[]},U)});s.set(t)},components:s.get,events:c};return l}function pi(t){var n=de.fromText(t);return hu({element:n})}function hi(o,r){function t(t){var n=r(t);if(n<=0||null===n){var e=ri(t,o);return parseFloat(e)||0}return n}function i(r,t){return R(t,function(t,n){var e=ri(r,n),o=void 0===e?0:parseInt(e,10);return isNaN(o)?t:t+o},0)}return{set:function(t,n){if(!u(n)&&!n.match(/^[0-9]+$/))throw new Error(o+".set accepts only positive integer values. Value was "+n);var e=t.dom;Qr(e)&&(e.style[o]=n+"px")},get:t,getOuter:t,aggregate:i,max:function(t,n,e){var o=i(t,e);return o<n?n-o:0}}}function vi(t){return xu.get(t)}function bi(t){return xu.getOuter(t)}function yi(t,n){return void 0!==t?t:void 0!==n?n:0}function xi(t){var n=t.dom.ownerDocument,e=n.body,o=n.defaultView,r=n.documentElement;if(e===t.dom)return Su(e.offsetLeft,e.offsetTop);var i=yi(null==o?void 0:o.pageYOffset,r.scrollTop),u=yi(null==o?void 0:o.pageXOffset,r.scrollLeft),a=yi(r.clientTop,e.clientTop),c=yi(r.clientLeft,e.clientLeft);return ku(t).translate(u-c,i-a)}function wi(t){return Cu.get(t)}function Si(t){return Cu.getOuter(t)}function ki(t){function n(){return t.stopPropagation()}function e(){return t.preventDefault()}var o=r(e,n);return{target:de.fromDom(function(t){if(Li()&&f(t.target)){var n=de.fromDom(t.target);if(Ri(n)&&Ui(n)&&t.composed&&t.composedPath){var e=t.composedPath();if(e)return ot(e)}}return ft.from(t.target)}(t).getOr(t.target)),x:t.clientX,y:t.clientY,stop:n,prevent:e,kill:o,raw:t}}function Ci(t,n,e,o,r){var i,u,a=(i=e,u=o,function(t){i(t)&&u(ki(t))});return t.dom.addEventListener(n,a,r),{unbind:S(Ou,t,n,a,r)}}function Oi(t){var n=void 0!==t?t.dom:document,e=n.body.scrollLeft||n.documentElement.scrollLeft,o=n.body.scrollTop||n.documentElement.scrollTop;return Su(e,o)}function _i(t,n,e){var o=(void 0!==e?e.dom:document).defaultView;o&&o.scrollTo(t,n)}function Ti(t,n,e,o){return{x:t,y:n,width:e,height:o,right:t+e,bottom:n+o}}function Ei(t){var o=void 0===t?window:t,n=o.document,r=Oi(de.fromDom(n)),e=void 0===o?window:o;return ft.from(e.visualViewport).fold(function(){var t=o.document.documentElement,n=t.clientWidth,e=t.clientHeight;return Ti(r.left,r.top,n,e)},function(t){return Ti(Math.max(t.pageLeft,r.left),Math.max(t.pageTop,r.top),t.width,t.height)})}function Di(o){var t,r=Oi(de.fromDom(document)),n=(t=Tu).owner(o),e=_u(t,n);return ft.some(e).fold(S(xi,o),function(t){var n=ku(o),e=I(t,function(t,n){var e=ku(n);return{left:t.left+e.left,top:t.top+e.top}},{left:0,top:0});return Su(e.left+n.left+r.left,e.top+n.top+r.top)})}function Bi(t,n,e,o){return{x:t,y:n,width:e,height:o,right:t+e,bottom:n+o}}function Ai(t){var n=xi(t),e=Si(t),o=bi(t);return Bi(n.left,n.top,e,o)}function Mi(t){var n=Di(t),e=Si(t),o=bi(t);return Bi(n.left,n.top,e,o)}function Fi(){return Ei(window)}"undefined"!=typeof window||Function("return this;")();var Ii,Ri=er(1),Vi=er(3),Pi=er(9),Hi=er(11),zi=ar,Ni=m(Element.prototype.attachShadow)&&m(Node.prototype.getRootNode),Li=tt(Ni),ji=Ni?function(t){return de.fromDom(t.dom.getRootNode())}:rr,Wi=function(t){var n=ji(t);return mr(n)?ft.some(n):ft.none()},Ui=function(t){return f(t.dom.shadowRoot)},Gi=function(t,n){t.dom.appendChild(n.dom)},Xi=function(t){var n=t.dom;null!==n.parentNode&&n.parentNode.removeChild(n)},Yi=Jo([{key:Co(),value:Pe({can:function(t,n){var e,o=n.event,r=o.originator,i=o.target;return!(Bn(e=r,t.element)&&!Bn(e,i)&&(console.warn(Co()+" did not get interpreted by the desired target. \nOriginator: "+Br(r)+"\nTarget: "+Br(i)+"\nCheck the "+Co()+" event handlers"),1))}})}]),qi=Object.freeze({__proto__:null,events:Yi}),Ki=0,Ji=tt("alloy-id-"),$i=tt("data-alloy-id"),Qi=Ji(),Zi=$i(),tu=function(t,n){Object.defineProperty(t.dom,Zi,{value:n,writable:!0})},nu=Ar,eu=h,ou=Fr(),ru=function(t){return A(t,function(t){return he(t,"/*")?t.substring(0,t.length-"/*".length):t})},iu=Ar("alloy-premade"),uu={init:function(){return au({readState:tt("No State required")})}},au=function(t){return t},cu=function(t,a){var n,e,o,r,i,u,c=xt(t,function(r,u){return(1===r.length?mt.value(r[0].handler):Lr(r,a,u)).map(function(t){var n,i,e=(i=m(n=t)?{can:_,abort:O,run:n}:n,function(t,n){for(var e=[],o=2;o<arguments.length;o++)e[o-2]=arguments[o];var r=[t,n].concat(e);i.abort.apply(void 0,r)?n.stop():i.can.apply(void 0,r)&&i.run.apply(void 0,r)}),o=1<r.length?F(a[u],function(n){return T(r,function(t){return t.name===n})}).join(" > "):r[0].name;return Ae(u,{handler:e,purpose:o})})});return n={},e=[],o=[],dt(c,function(t){t.fold(function(t){e.push(t)},function(t){o.push(t)})}),0<(u={errors:e,values:o}).errors.length?mt.error(lt(u.errors)):(i=n,0===(r=u.values).length?mt.value(i):mt.value(Jn(i,$n.apply(void 0,r))))},su="alloy.base.behaviour",lu=te([le("dom","dom",Tt(),te([Jt("tag"),dn("styles",{}),dn("classes",[]),dn("attributes",{}),rn("value"),rn("innerHtml")])),Jt("components"),Jt("uid"),dn("events",{}),dn("apis",{}),le("eventOrder","eventOrder",((Ii={})[Eo()]=["disabling",su,"toggling","typeaheadevents"],Ii[Co()]=[su,"focusing","keying"],Ii[Io()]=[su,"disabling","toggling","representing"],Ii[ho()]=[su,"representing","streaming","invalidating"],Ii[No()]=[su,"representing","item-events","tooltipping"],Ii[uo()]=["focusing",su,"item-type-events"],Ii[eo()]=["focusing",su,"item-type-events"],Ii[lo()]=["item-type-events","tooltipping"],Ii[To()]=["receiving","reflecting","tooltipping"],At(tt(Ii))),ee()),rn("domModification")]),fu=function(t,n,e){return t.isSome()&&n.isSome()?ft.some(e(t.getOrDie(),n.getOrDie())):ft.none()},du=function(t){var n=Vi(t)?t.dom.parentNode:t.dom;if(null==n||null===n.ownerDocument)return!1;var e,o,r=n.ownerDocument;return Wi(de.fromDom(n)).fold(function(){return r.body.contains(n)},(e=du,o=pr,function(t){return e(o(t))}))},mu=function(){return gu(de.fromDom(document))},gu=function(t){var n=t.dom.body;if(null==n)throw new Error("Body is not available yet");return de.fromDom(n)},pu=function(t,n){return Qr(t)?t.style.getPropertyValue(n):""},hu=function(t){var n=Yt("external.component",Ht([Jt("element"),rn("uid")]),t),e=wn(Fr()),o=n.uid.getOrThunk(function(){return nu("external")});tu(n.element,o);var r={uid:o,getSystem:e.get,config:ft.none,hasConfigured:O,connect:function(t){e.set(t)},disconnect:function(){e.set(Fr(function(){return r}))},getApis:function(){return{}},element:n.element,spec:t,readState:tt("No state"),syncComponents:ct,components:tt([]),events:{}};return Rr(r)},vu=nu,bu=function(u){return kt(u,iu).getOrThunk(function(){var t,n,e,o,r,i=Kn(u,"uid")?u:st({uid:vu("")},u);return t=eu(i),n=t.events,e=s(t,["events"]),o=A(kt(e,"components").getOr([]),bu),r=st(st({},e),{events:st(st({},qi),n),components:o}),mt.value(gi(r)).getOrDie()})},yu=Rr,xu=hi("height",function(t){var n=t.dom;return du(t)?n.getBoundingClientRect().height:n.offsetHeight}),wu=function(e,o){return{left:e,top:o,translate:function(t,n){return wu(e+t,o+n)}}},Su=wu,ku=function(t){var n,e=t.dom,o=e.ownerDocument.body;return o===e?Su(o.offsetLeft,o.offsetTop):du(t)?(n=e.getBoundingClientRect(),Su(n.left,n.top)):Su(0,0)},Cu=hi("width",function(t){return t.dom.offsetWidth}),Ou=function(t,n,e,o){t.dom.removeEventListener(n,e,o)},_u=function(o,t){return o.view(t).fold(tt([]),function(t){var n=o.owner(t),e=_u(o,n);return[t].concat(e)})},Tu=Object.freeze({__proto__:null,view:function(t){var n;return(t.dom===document?ft.none():ft.from(null===(n=t.dom.defaultView)||void 0===n?void 0:n.frameElement)).map(de.fromDom)},owner:or});function Eu(t,n,e,o,r){return t(e,o)?ft.some(e):m(r)&&r(e)?ft.none():n(e,o,r)}function Du(t,n,e){for(var o=t.dom,r=m(e)?e:O;o.parentNode;){var o=o.parentNode,i=de.fromDom(o);if(n(i))return ft.some(i);if(r(i))break}return ft.none()}function Bu(t,n,e){return Eu(function(t,n){return n(t)},Du,t,n,e)}function Au(t,n,e){return Bu(t,n,e).isSome()}function Mu(t,n,e){return Du(t,function(t){return En(t,n)},e)}function Fu(t,n){return e=n,Dn(o=void 0===t?document:t.dom)?ft.none():ft.from(o.querySelector(e)).map(de.fromDom);var e,o}function Iu(t,n,e){return Eu(En,Mu,t,n,e)}function Ru(){var n=Ar("aria-owns");return{id:n,link:function(t){Or(t,"aria-owns",n)},unlink:function(t){Dr(t,"aria-owns")}}}var Vu,Pu,Hu=function(n,t){return Au(t,function(t){return Bn(t,n.element)},O)||(e=n,Bu(t,function(t){if(!Ri(t))return!1;var n=_r(t,"id");return void 0!==n&&-1<n.indexOf("aria-owns")}).bind(function(t){var n=_r(t,"id");return Fu(ji(t),'[aria-owns="'+n+'"]')}).exists(function(t){return Hu(e,t)}));var e},zu="unknown";function Nu(n,t,e){var o,r,i,u;switch(kt(Lu.get(),n).orThunk(function(){return q(Xn(Lu.get()),function(t){return-1<n.indexOf(t)?ft.some(Lu.get()[t]):ft.none()})}).getOr(Vu.NORMAL)){case Vu.NORMAL:return e(Wu());case Vu.LOGGING:var a=(o=n,r=t,i=[],u=(new Date).getTime(),{logEventCut:function(t,n,e){i.push({outcome:"cut",target:n,purpose:e})},logEventStopped:function(t,n,e){i.push({outcome:"stopped",target:n,purpose:e})},logNoParent:function(t,n,e){i.push({outcome:"no-parent",target:n,purpose:e})},logEventNoHandlers:function(t,n){i.push({outcome:"no-handlers-left",target:n})},logEventResponse:function(t,n,e){i.push({outcome:"response",purpose:e,target:n})},write:function(){var t=(new Date).getTime();et(["mousemove","mouseover","mouseout",Io()],o)||console.log(o,{event:o,time:t-u,target:r.dom,sequence:A(i,function(t){return et(["cut","stopped","response"],t.outcome)?"{"+t.purpose+"} "+t.outcome+" at ("+Br(t.target)+")":t.outcome})})}}),c=e(a);return a.write(),c;case Vu.STOP:return!0}}(Pu=Vu=Vu||{})[Pu.STOP=0]="STOP",Pu[Pu.NORMAL=1]="NORMAL",Pu[Pu.LOGGING=2]="LOGGING";var Lu=wn({}),ju=["alloy/data/Fields","alloy/debugging/Debugging"],Wu=tt({logEventCut:ct,logEventStopped:ct,logNoParent:ct,logEventNoHandlers:ct,logEventResponse:ct,write:ct}),Uu=tt([Jt("menu"),Jt("selectedMenu")]),Gu=tt([Jt("item"),Jt("selectedItem")]);function Xu(){return nn("markers",[Jt("backgroundMenu")].concat(Uu()).concat(Gu()))}function Yu(t){return nn("markers",A(t,Jt))}function qu(t,n,e){return void 0!==(o=new Error).stack&&V(o.stack.split("\n"),function(n){return 0<n.indexOf("alloy")&&!T(ju,function(t){return-1<n.indexOf(t)})}).getOr(zu),le(n,n,e,Wt(function(e){return mt.value(function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return e.apply(void 0,t)})}));var o}function Ku(t){return qu(0,t,Dt(ct))}function Ju(t){return qu(0,t,Dt(ft.none))}function $u(t){return qu(0,t,Tt())}function Qu(t){return qu(0,t,Tt())}function Zu(t,n){return fe(t,tt(n))}function ta(t){return fe(t,h)}function na(t,n,e,o,r,i,u,a){return{x:t,y:n,bubble:e,direction:o,placement:r,restriction:i,label:u+"-"+r,alwaysFit:a=void 0!==a&&a}}function ea(t,n,e,o){var r=t+n;return o<r?e:r<e?o:r}function oa(t,n,e){return Math.min(Math.max(t,n),e)}function ra(e,n){return W(["left","right","top","bottom"],function(t){return kt(n,t).map(function(n){return function(t){switch(n){case 1:return t.x;case 0:return t.x+t.width;case 2:return t.y;case 3:return t.y+t.height}}(e)})})}function ia(t,n){return t.x+t.width/2-n.width/2}function ua(t,n){return t.x+t.width-n.width}function aa(t,n){return t.y-n.height}function ca(t){return t.y+t.height}function sa(t,n){return t.y+t.height/2-n.height/2}function la(t,n,e){return na(t.x+t.width,sa(t,n),e.east(),La(),"east",ra(t,{left:0}),Wa)}function fa(t,n,e){return na(t.x-n.width,sa(t,n),e.west(),ja(),"west",ra(t,{right:1}),Wa)}function da(){return[Ua,Ga,Xa,Ya,Ka,qa,la,fa]}function ma(){return[Ga,Ua,Ya,Xa,Ka,qa,la,fa]}function ga(){return[Xa,Ya,Ua,Ga,qa,Ka]}function pa(){return[Ya,Xa,Ga,Ua,qa,Ka]}function ha(){return[Ua,Ga,Xa,Ya,Ka,qa]}function va(){return[Ga,Ua,Ya,Xa,Ka,qa]}function ba(e,o,r){return Zo(function(t,n){r(t,e,o)})}function ya(t){return{key:t,value:void 0}}function xa(t){var n,e,o,r,i,u,a,c,s=Yt("Creating behaviour: "+t.name,tc,t);return n=s.fields,e=s.name,o=s.active,r=s.apis,i=s.extra,u=s.state,a=Ht(n),c=fn(e,[un("config",Ht(n))]),Qa(a,c,e,o,r,i,u)}function wa(t){var n,e=Yt("Creating behaviour: "+t.name,nc,t),o=qt(e.branchKey,e.branches),r=e.name,i=e.active,u=e.apis,a=e.extra,c=e.state,s=fn(r,[un("config",n=o)]);return Qa(n,s,r,i,u,a,c)}function Sa(t){return t.dom.focus()}function ka(t){var n=ji(t).dom;return t.dom===n.activeElement}function Ca(t){return void 0===t&&(t=de.fromDom(document)),ft.from(t.dom.activeElement).map(de.fromDom)}function Oa(n){return Ca(ji(n)).filter(function(t){return n.dom.contains(t.dom)})}function _a(t,e){var o=ji(e),n=Ca(o).bind(function(n){function t(t){return Bn(n,t)}var r,i;return t(e)?ft.some(e):(r=t,(i=function(t){for(var n=0;n<t.childNodes.length;n++){var e=de.fromDom(t.childNodes[n]);if(r(e))return ft.some(e);var o=i(t.childNodes[n]);if(o.isSome())return o}return ft.none()})(e.dom))}),r=t(e);return n.each(function(n){Ca(o).filter(function(t){return Bn(t,n)}).fold(function(){Sa(n)},ct)}),r}function Ta(t,n,e,o,r){function i(t){return t+"px"}return{position:t,left:n.map(i),top:e.map(i),right:o.map(i),bottom:r.map(i)}}function Ea(t,n){var e;oi(t,st(st({},e=n),{position:ft.some(e.position)}))}function Da(t,n,e,o,r,i){var u=n.rect,a=u.x-e,c=u.y-o,s=r-(a+u.width),l=i-(c+u.height),f=ft.some(a),d=ft.some(c),m=ft.some(s),g=ft.some(l),p=ft.none();return n.direction.fold(function(){return Ta(t,f,d,p,p)},function(){return Ta(t,p,d,m,p)},function(){return Ta(t,f,p,p,g)},function(){return Ta(t,p,p,m,g)},function(){return Ta(t,f,d,p,p)},function(){return Ta(t,f,p,p,g)},function(){return Ta(t,f,d,p,p)},function(){return Ta(t,p,d,m,p)})}function Ba(t,r){return t.fold(function(){var t=r.rect;return Ta("absolute",ft.some(t.x),ft.some(t.y),ft.none(),ft.none())},function(t,n,e,o){return Da("absolute",r,t,n,e,o)},function(t,n,e,o){return Da("fixed",r,t,n,e,o)})}function Aa(t,n){var e=S(Di,n),o=t.fold(e,e,function(){var t=Oi();return Di(n).translate(-t.left,-t.top)}),r=Si(n),i=bi(n);return Bi(o.left,o.top,r,i)}tt(te(Gu().concat(Uu())));var Ma=tt(te(Gu())),Fa=tt(nn("initSize",[Jt("numColumns"),Jt("numRows")])),Ia=Vn([{southeast:[]},{southwest:[]},{northeast:[]},{northwest:[]},{south:[]},{north:[]},{east:[]},{west:[]}]),Ra=Ia.southeast,Va=Ia.southwest,Pa=Ia.northeast,Ha=Ia.northwest,za=Ia.south,Na=Ia.north,La=Ia.east,ja=Ia.west,Wa="layout",Ua=function(t,n,e){return na(t.x,ca(t),e.southeast(),Ra(),"southeast",ra(t,{left:1,top:3}),Wa)},Ga=function(t,n,e){return na(ua(t,n),ca(t),e.southwest(),Va(),"southwest",ra(t,{right:0,top:3}),Wa)},Xa=function(t,n,e){return na(t.x,aa(t,n),e.northeast(),Pa(),"northeast",ra(t,{left:1,bottom:2}),Wa)},Ya=function(t,n,e){return na(ua(t,n),aa(t,n),e.northwest(),Ha(),"northwest",ra(t,{right:0,bottom:2}),Wa)},qa=function(t,n,e){return na(ia(t,n),aa(t,n),e.north(),Na(),"north",ra(t,{bottom:2}),Wa)},Ka=function(t,n,e){return na(ia(t,n),ca(t),e.south(),za(),"south",ra(t,{top:3}),Wa)},Ja=Object.freeze({__proto__:null,events:function(a){return Jo([Xe(To(),function(r,t){var n,i=a.channels,e=Xn(i),u=t,o=(n=u).universal?e:F(e,function(t){return et(n.channels,t)});dt(o,function(t){var n=i[t],e=n.schema,o=Yt("channel["+t+"] data\nReceiver: "+Br(r.element),e,u.data);n.onReceive(r,o)})})])}}),$a=[$t("channels",Ut(mt.value,Ht([$u("onReceive"),dn("schema",ee())])))],Qa=function(e,t,f,n,o,r,i){function u(t){return Ct(t,f)?t[f]():ft.none()}var a=yt(o,function(t,n){return r=f,e=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=[e].concat(t);return e.config({name:tt(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+u)},function(t){var n=Array.prototype.slice.call(o,1);return i.apply(void 0,[e,t.config,t.state].concat(n))})},o=u=n,a=(i=t).toString(),c=a.indexOf(")")+1,s=a.indexOf("("),l=a.substring(s+1,c-1).split(/,\s*/),e.toFunctionAnnotation=function(){return{name:o,parameters:ru(l.slice(0,1).concat(l.slice(3)))}},e;var r,i,u,e,o,a,c,s,l}),c=yt(r,Ir),s=st(st(st({},c),a),{revoke:S(ya,f),config:function(t){var n=Yt(f+"-config",e,t);return{key:f,value:{config:n,me:s,configAsRaw:_t(function(){return Yt(f+"-config",e,t)}),initialConfig:t,state:i}}},schema:tt(t),exhibit:function(t,e){return fu(u(t),kt(n,"exhibit"),function(t,n){return n(e,t.config,t.state)}).getOrThunk(function(){return Hr({})})},name:tt(f),handlers:function(t){return u(t).map(function(t){return kt(n,"events").getOr(function(){return{}})(t.config,t.state)}).getOr({})}});return s},Za=Me,tc=Ht([Jt("fields"),Jt("name"),dn("active",{}),dn("apis",{}),dn("state",uu),dn("extra",{})]),nc=Ht([Jt("branchKey"),Jt("branches"),Jt("name"),dn("active",{}),dn("apis",{}),dn("state",uu),dn("extra",{})]),ec=tt(void 0),oc=xa({fields:$a,name:"receiving",active:Ja}),rc=Object.freeze({__proto__:null,exhibit:function(t,n){return Hr({classes:[],styles:n.useFixed()?{}:{position:"relative"}})}}),ic=Vn([{none:[]},{relative:["x","y","width","height"]},{fixed:["x","y","width","height"]}]),uc=function(t,n,e){var o=Su(n,e);return t.fold(tt(o),tt(o),function(){var t=Oi();return o.translate(-t.left,-t.top)})};function ac(t){return Tr(t,_c)}function cc(t,n,e,o){var r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_,T,E,D,B,A,M,F,I,R,V,P,H,z=t.bubble,N=z.offset,L=(I=o,R=t.restriction,V=N,P=Z("left",I.x),H=Z("top",I.y),Bi(P,H,Z("right",I.right)-P,Z("bottom",I.bottom)-H)),j=t.x+N.left,W=t.y+N.top,U=Bi(j,W,n,e),G=(r=L.x,i=L.y,u=L.right,a=L.bottom,c=U.x,s=U.y,l=U.right,f=U.bottom,d=U.width,m=U.height,{originInBounds:r<=c&&c<=u&&i<=s&&s<=a,sizeInBounds:l<=u&&r<=l&&f<=a&&i<=f,visibleW:Math.min(d,r<=c?u-c:l-r),visibleH:Math.min(m,i<=s?a-s:f-i)}),X=G.visibleW,Y=G.visibleH,q=G.originInBounds&&G.sizeInBounds,K=q?U:(g=L.x,p=L.y,h=L.right,v=L.bottom,b=U.x,y=U.y,x=U.width,w=U.height,S=Math.max(g,h-x),k=Math.max(p,v-w),Bi(C=oa(b,g,S),O=oa(y,p,k),Math.min(C+x,h)-C,Math.min(O+w,v)-O)),J=0<K.width&&0<K.height,$=(_=t.direction,D=tt((T=K).bottom-(E=o).y),B=tt(E.bottom-T.y),A=_.fold(B,B,D,D,B,D,B,B),M=tt(T.right-E.x),F=tt(E.right-T.x),{maxWidth:_.fold(F,M,F,M,F,F,F,M),maxHeight:A}),Q={rect:K,maxHeight:$.maxHeight,maxWidth:$.maxWidth,direction:t.direction,placement:t.placement,classes:{on:z.classesOn,off:z.classesOff},layout:t.label,testY:W};function Z(r,i){return R[r].map(function(t){var n="top"===r||"bottom"===r,e=n?V.top:V.left,o=("left"===r||"top"===r?Math.max:Math.min)(t,i)+e;return n?oa(o,I.y,I.bottom):oa(o,I.x,I.right)}).getOr(i)}return q||t.alwaysFit?Tc.fit(Q):Tc.nofit(Q,X,Y,J)}function sc(t){function n(){return e.get().each(t)}var e=wn(ft.none());return{clear:function(){n(),e.set(ft.none())},isSet:function(){return e.get().isSome()},get:function(){return e.get()},set:function(t){n(),e.set(ft.some(t))}}}function lc(){return sc(function(t){return t.unbind()})}function fc(){var n=sc(ct);return st(st({},n),{on:function(t){return n.get().each(t)}})}function dc(t,n,e){return Ci(t,n,Ec,e,!1)}function mc(t,n,e){return Ci(t,n,Ec,e,!0)}function gc(o,e){function r(t){var n,e=null!==(n=t.raw.pseudoElement)&&void 0!==n?n:"";return Bn(t.target,o)&&!On(e)&&et(Bc,t.raw.propertyName)}function t(t){var n;(g(t)||r(t))&&(a.clear(),c.clear(),!g(n=null==t?void 0:t.raw.type)&&n!==xo()||(clearTimeout(i),Dr(o,Ac),qr(o,e.classes)))}function n(){a.set(dc(o,xo(),t)),c.set(dc(o,yo(),t))}var i,u,a=lc(),c=lc();"ontransitionstart"in o.dom?u=dc(o,wo(),function(t){r(t)&&(u.unbind(),n())}):n();var s,l,f=(s=o,l=d("transition-delay"),R(d("transition-duration"),function(t,n,e){var o=m(l[e])+m(n);return Math.max(t,o)},0));function d(t){var n=ri(s,t);return F(y(n)?n.split(/\s*,\s*/):[],On)}function m(t){if(y(t)&&/^[\d.]+/.test(t)){var n=parseFloat(t);return he(t,"ms")?n:1e3*n}return 0}requestAnimationFrame(function(){i=setTimeout(t,f+17),Or(o,Ac,i)})}function pc(t,n,e,o,r,i){var u,a,c,s,l,f,d,m,g,p=(u=o,a=r,i.exists(function(t){var n=u.mode;return"all"===n||t[n]!==a[n]}));function h(t){return parseFloat(t).toPrecision(3)}p||(g=t,N(o.classes,function(t){return Xr(g,t)}))?(ni(t,"position",e.position),c=Aa(n,t),s=Ba(n,st(st({},r),{rect:c})),l=W(Bc,function(t){return s[t]}),m=e,wt(l,function(t,n){var e,o,r,i=m[n].map(h),u=t.map(h);return!fu(e=i,o=u,r=void 0===r?v:r).getOr(e.isNone()&&o.isNone())}).isSome()&&(oi(t,l),p&&(Yr(f=t,(d=o).classes),Tr(f,Ac).each(function(t){clearTimeout(parseInt(t,10)),Dr(f,Ac)}),gc(f,d)),ci(t))):qr(t,o.classes)}function hc(t,n,e,o){ai(n,"max-height"),ai(n,"max-width");var r,s,i,l,f,d,m,g,p,u={width:Si(r=n),height:bi(r)};return s=n,i=o.preference,l=t,f=u,d=e,m=o.bounds,g=f.width,p=f.height,R(i,function(t,n){var e=S(a,n);return t.fold(tt(t),e)},Tc.nofit({rect:l,maxHeight:f.height,maxWidth:f.width,direction:Ra(),placement:"southeast",classes:{on:[],off:[]},layout:"none",testY:l.y},-1,-1,!1)).fold(h,h);function a(t,r,i,u,a){var c=cc(t(l,f,d,s,m),g,p,m);return c.fold(tt(c),function(t,n,e,o){return(a===o?u<e||i<n:!a&&o)?c:Tc.nofit(r,i,u,a)})}}function vc(t,n){var e=t,o=Math.floor(n);ni(e,"max-height",xu.max(e,o,["margin-top","border-top-width","padding-top","padding-bottom","border-bottom-width","margin-bottom"])+"px")}function bc(t,n,e){return void 0===t[n]?e:t[n]}function yc(t,n,e,o){function r(t){return kt(e,t).getOr([])}function i(t,n,e){var o=j(Rc,e);return{offset:Su(t,n),classesOn:z(e,r),classesOff:z(o,r)}}var u=t*(o=void 0===o?1:o),a=n*o;return{southeast:function(){return i(-t,n,["top","alignLeft"])},southwest:function(){return i(t,n,["top","alignRight"])},south:function(){return i(-t/2,n,["top","alignCentre"])},northeast:function(){return i(-t,-n,["bottom","alignLeft"])},northwest:function(){return i(t,-n,["bottom","alignRight"])},north:function(){return i(-t/2,-n,["bottom","alignCentre"])},east:function(){return i(t,-n/2,["valignCentre","left"])},west:function(){return i(-t,-n/2,["valignCentre","right"])},insetNortheast:function(){return i(u,a,["top","alignLeft","inset"])},insetNorthwest:function(){return i(-u,a,["top","alignRight","inset"])},insetNorth:function(){return i(-u/2,a,["top","alignCentre","inset"])},insetSoutheast:function(){return i(u,-a,["bottom","alignLeft","inset"])},insetSouthwest:function(){return i(-u,-a,["bottom","alignRight","inset"])},insetSouth:function(){return i(-u/2,-a,["bottom","alignCentre","inset"])},insetEast:function(){return i(-u,-a/2,["valignCentre","right","inset"])},insetWest:function(){return i(u,-a/2,["valignCentre","left","inset"])}}}function xc(){return yc(0,0,{})}function wc(n,e){return function(t){return"rtl"===Pc(t)?e:n}}ic.none;var Sc,kc,Cc=ic.relative,Oc=ic.fixed,_c="data-alloy-placement",Tc=Vn([{fit:["reposition"]},{nofit:["reposition","visibleW","visibleH","isVisible"]}]),Ec=_,Dc=ki,Bc=["top","bottom","right","left"],Ac="data-alloy-transition-timer",Mc=tt(function(t,n){vc(t,n),ei(t,{"overflow-x":"hidden","overflow-y":"auto"})}),Fc=tt(function(t,n){vc(t,n)}),Ic=function(t,n,e,o){var r,i,u,a,c=hc(t,n,e,o),s=n,l=c,f=Ba((r=o).origin,l);return r.transition.each(function(t){pc(s,r.origin,f,t,l,r.lastPlacement)}),Ea(s,f),a=c.placement,Or(n,_c,a),qr(i=n,(u=c.classes).off),Yr(i,u.on),(0,o.maxHeightFunction)(n,c.maxHeight),(0,o.maxWidthFunction)(n,c.maxWidth),{layout:c.layout,placement:c.placement}},Rc=["valignCentre","alignLeft","alignRight","alignCentre","top","bottom","left","right","inset"],Vc=h,Pc=function(t){return"rtl"===ri(t,"direction")?"rtl":"ltr"};function Hc(t){return Au(t,function(t){return Ri(t)&&_r(t,"data-alloy-vertical-dir")===Sc.BottomToTop})}function zc(){return fn("layouts",[Jt("onLtr"),Jt("onRtl"),rn("onBottomLtr"),rn("onBottomRtl")])}function Nc(n,t,e,o,r,i,u){var a=u.map(Hc).getOr(!1),c=t.layouts.map(function(t){return t.onLtr(n)}),s=t.layouts.map(function(t){return t.onRtl(n)});return wc(a?t.layouts.bind(function(t){return t.onBottomLtr.map(function(t){return t(n)})}).or(c).getOr(r):c.getOr(e),a?t.layouts.bind(function(t){return t.onBottomRtl.map(function(t){return t(n)})}).or(s).getOr(i):s.getOr(o))(n)}function Lc(t){return t.fold(h,function(t,n,e){return t.translate(-n,-e)})}function jc(t){return t.fold(h,h)}function Wc(t){return R(t,function(t,n){return t.translate(n.left,n.top)},Su(0,0))}function Uc(t){return Wc(A(t,jc))}function Gc(t,n,e){var o,r,i=Oi(or(t.element)),u=(o=t,r=ur(e.root).dom,ft.from(r.frameElement).map(de.fromDom).filter(function(t){return Bn(or(t),or(o.element))}).map(xi).getOr(i));return rs(u,i.left,i.top)}function Xc(t,n,e,o){var r=os(Su(t,n));return ft.some({point:r,width:e,height:o})}function Yc(t,a,c,s,l){return t.map(function(t){var n=[a,t.point],e=s.fold(function(){return Uc(n)},function(){return Uc(n)},function(){return Wc(A(n,Lc))}),o={x:e.left,y:e.top,width:t.width,height:t.height},r=(c.showAbove?ga:ha)(),i=(c.showAbove?pa:va)(),u=Nc(l,c,r,i,r,i,ft.none());return Vc({anchorBox:o,bubble:c.bubble.getOr(xc()),overrides:c.overrides,layouts:u,placer:ft.none()})})}function qc(t,n,e){var o,r=t.document.createRange(),i=r;return n.fold(function(t){i.setStartBefore(t.dom)},function(t,n){i.setStart(t.dom,n)},function(t){i.setStartAfter(t.dom)}),o=r,e.fold(function(t){o.setEndBefore(t.dom)},function(t,n){o.setEnd(t.dom,n)},function(t){o.setEndAfter(t.dom)}),r}function Kc(t,n,e,o,r){var i=t.document.createRange();return i.setStart(n.dom,e),i.setEnd(o.dom,r),i}function Jc(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom,width:t.width,height:t.height}}function $c(t,n,e){return n(de.fromDom(e.startContainer),e.startOffset,de.fromDom(e.endContainer),e.endOffset)}function Qc(i,t){return r=i,o=t.match({domRange:function(t){return{ltr:tt(t),rtl:ft.none}},relative:function(t,n){return{ltr:_t(function(){return qc(r,t,n)}),rtl:_t(function(){return ft.some(qc(r,n,t))})}},exact:function(t,n,e,o){return{ltr:_t(function(){return Kc(r,t,n,e,o)}),rtl:_t(function(){return ft.some(Kc(r,e,o,t,n))})}}}),((e=(n=o).ltr()).collapsed?n.rtl().filter(function(t){return!1===t.collapsed}).map(function(t){return fs.rtl(de.fromDom(t.endContainer),t.endOffset,de.fromDom(t.startContainer),t.startOffset)}).getOrThunk(function(){return $c(0,fs.ltr,e)}):$c(0,fs.ltr,e)).match({ltr:function(t,n,e,o){var r=i.document.createRange();return r.setStart(t.dom,n),r.setEnd(e.dom,o),r},rtl:function(t,n,e,o){var r=i.document.createRange();return r.setStart(e.dom,o),r.setEnd(t.dom,n),r}});var r,n,e,o}(Sc=Sc||{}).TopToBottom="toptobottom",Sc.BottomToTop="bottomtotop";var Zc="data-alloy-vertical-dir",ts=[Jt("hotspot"),rn("bubble"),dn("overrides",{}),zc(),Zu("placement",function(t,n,e){var o=Aa(e,n.hotspot.element),r=Nc(t.element,n,ha(),va(),ga(),pa(),ft.some(n.hotspot.element));return ft.some(Vc({anchorBox:o,bubble:n.bubble.getOr(xc()),overrides:n.overrides,layouts:r,placer:ft.none()}))})],ns=[Jt("x"),Jt("y"),dn("height",0),dn("width",0),dn("bubble",xc()),dn("overrides",{}),zc(),Zu("placement",function(t,n,e){var o=uc(e,n.x,n.y),r=Bi(o.left,o.top,n.width,n.height),i=Nc(t.element,n,da(),ma(),da(),ma(),ft.none());return ft.some(Vc({anchorBox:r,bubble:n.bubble,overrides:n.overrides,layouts:i,placer:ft.none()}))})],es=Vn([{screen:["point"]},{absolute:["point","scrollLeft","scrollTop"]}]),os=es.screen,rs=es.absolute,is=[Jt("node"),Jt("root"),rn("bubble"),zc(),dn("overrides",{}),dn("showAbove",!1),Zu("placement",function(r,i,u){var a=Gc(r,0,i);return i.node.filter(du).bind(function(t){var n=t.dom.getBoundingClientRect(),e=Xc(n.left,n.top,n.width,n.height),o=i.node.getOr(r.element);return Yc(e,a,i,u,o)})})],us=function(t,n,e,o){return{start:t,soffset:n,finish:e,foffset:o}},as=Vn([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),cs=(as.before,as.on,as.after,function(t){return t.fold(h,h,h)}),ss=Vn([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),ls={domRange:ss.domRange,relative:ss.relative,exact:ss.exact,exactFromRange:function(t){return ss.exact(t.start,t.soffset,t.finish,t.foffset)},getWin:function(t){return ur(t.match({domRange:function(t){return de.fromDom(t.startContainer)},relative:function(t,n){return cs(t)},exact:function(t,n,e,o){return t}}))},range:us},fs=Vn([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function ds(t){return Ql.getOption(t)}function ms(t){return ds(t).filter(function(t){return 0!==t.trim().length||-1<t.indexOf("\xa0")}).isSome()||et(Zl,nr(t))}function gs(t,n){return Dn(e=void 0===t?document:t.dom)?[]:A(e.querySelectorAll(n),de.fromDom);var e}function ps(t){if(0<t.rangeCount){var n=t.getRangeAt(0),e=t.getRangeAt(t.rangeCount-1);return ft.some(us(de.fromDom(n.startContainer),n.startOffset,de.fromDom(e.endContainer),e.endOffset))}return ft.none()}function hs(t){if(null===t.anchorNode||null===t.focusNode)return ps(t);var n,e,o,r,i,u,a,c,s,l,f,d=de.fromDom(t.anchorNode),m=de.fromDom(t.focusNode);return n=d,e=t.anchorOffset,o=m,r=t.focusOffset,u=e,a=o,c=r,(s=or(i=n).dom.createRange()).setStart(i.dom,u),s.setEnd(a.dom,c),l=s,f=Bn(n,o)&&e===r,l.collapsed&&!f?ft.some(us(d,t.anchorOffset,m,t.focusOffset)):ps(t)}function vs(t,n){var e,o,r=(e=Qc(t,n)).getClientRects();return 0<(o=0<r.length?r[0]:e.getBoundingClientRect()).width||0<o.height?ft.some(o).map(Jc):ft.none()}function bs(t,n){return{element:t,offset:n}}function ys(t,n){return(Vi(t)?bs:function(t,n){var e=sr(t);if(0===e.length)return bs(t,n);if(n<e.length)return bs(e[n],0);var o=e[e.length-1];return bs(o,(Vi(o)?Ql.get(o):sr(o)).length)})(t,n)}function xs(t,n){return n.getSelection.getOrThunk(function(){return function(){return ft.from(t.getSelection()).filter(function(t){return 0<t.rangeCount}).bind(hs)}})().map(function(t){var n=ys(t.start,t.soffset),e=ys(t.finish,t.foffset);return ls.range(n.element,n.offset,e.element,e.offset)})}function ws(t){return t.x+t.width}function Ss(t,n){return t.x-n.width}function ks(t,n){return t.y-n.height+t.height}function Cs(t,n,e){return na(ws(t),t.y,e.southeast(),Ra(),"southeast",ra(t,{left:0,top:2}),nf)}function Os(t,n,e){return na(Ss(t,n),t.y,e.southwest(),Va(),"southwest",ra(t,{right:1,top:2}),nf)}function _s(t,n,e){return na(ws(t),ks(t,n),e.northeast(),Pa(),"northeast",ra(t,{left:0,bottom:3}),nf)}function Ts(t,n,e){return na(Ss(t,n),ks(t,n),e.northwest(),Ha(),"northwest",ra(t,{right:1,bottom:3}),nf)}function Es(){return[Cs,Os,_s,Ts]}function Ds(){return[Os,Cs,Ts,_s]}function Bs(t,n,e,o,r,i,u){var a,c,s,l,f,d,m,g,p,h,v,b,y,x,w={anchorBox:e.anchorBox,origin:n};return a=w,c=r.element,s=e.bubble,l=e.layouts,f=i,d=o,m=e.overrides,g=u,h=bc(m,"maxHeightFunction",Mc()),v=bc(m,"maxWidthFunction",ct),b=a.anchorBox,y=a.origin,x={bounds:(p=y,d.fold(function(){return p.fold(Fi,Fi,Bi)},function(e){return p.fold(e,e,function(){var t=e(),n=uc(p,t.x,t.y);return Bi(n.left,n.top,t.width,t.height)})})),origin:y,preference:l,maxHeightFunction:h,maxWidthFunction:v,lastPlacement:f,transition:g},Ic(b,c,s,x)}function As(t,n){Gi(t.element,n.element)}function Ms(n,t){var e,o=n.components();dt((e=n).components(),function(t){return Xi(t.element)}),xr(e.element),e.syncComponents();var r=j(o,t);dt(r,function(t){sf(t),n.getSystem().removeFromWorld(t)}),dt(t,function(t){t.getSystem().isConnected()?As(n,t):(n.getSystem().addToWorld(t),As(n,t),du(n.element)&&lf(t)),n.syncComponents()})}function Fs(t,n){ff(t,n,Gi)}function Is(t){sf(t),Xi(t.element),t.getSystem().removeFromWorld(t)}function Rs(n){var t=ar(n.element).bind(function(t){return n.getSystem().getByDom(t).toOptional()});Is(n),t.each(function(t){t.syncComponents()})}function Vs(t){var n=t.components();dt(n,Is),xr(t.element),t.syncComponents()}function Ps(t,n){df(t,n,Gi)}function Hs(n){var t=sr(n.element);dt(t,function(t){n.getByDom(t).each(sf)}),Xi(n.element)}function zs(n,t,e,o){e.get().each(function(t){Vs(n)}),Fs(t.getAttachPoint(n),n);var r=n.getSystem().build(o);return Fs(n,r),e.set(r),r}function Ns(t,n,e,o){var r=zs(t,n,e,o);return n.onOpen(t,r),r}function Ls(n,e,o){o.get().each(function(t){Vs(n),Rs(n),e.onClose(n,t),o.clear()})}function js(t,n,e){return e.isOpen()}function Ws(t){var e=Yt("Dismissal",yf,t),n={};return n[hf()]={schema:Ht([Jt("target")]),onReceive:function(n,t){pf.isOpen(n)&&(pf.isPartOf(n,t.target)||e.isExtraPart(n,t.target)||e.fireEventInstead.fold(function(){return pf.close(n)},function(t){return ze(n,t.event)}))}},n}function Us(t){var e=Yt("Reposition",xf,t),n={};return n[vf()]={onReceive:function(n){pf.isOpen(n)&&e.fireEventInstead.fold(function(){return e.doReposition(n)},function(t){return ze(n,t.event)})}},n}function Gs(t,n,e){n.store.manager.onLoad(t,n,e)}function Xs(t,n,e){n.store.manager.onUnload(t,n,e)}function Ys(){var t=wn(null);return au({set:t.set,get:t.get,isNotSet:function(){return null===t.get()},clear:function(){t.set(null)},readState:function(){return{mode:"memory",value:t.get()}}})}function qs(){var i=wn({}),u=wn({});return au({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(t){return kt(i.get(),t).orThunk(function(){return kt(u.get(),t)})},update:function(t){var n=i.get(),e=u.get(),o={},r={};dt(t,function(n){kt(o[n.value]=n,"meta").each(function(t){kt(t,"text").each(function(t){r[t]=n})})}),i.set(st(st({},n),o)),u.set(st(st({},e),r))},clear:function(){i.set({}),u.set({})}})}function Ks(t,n,e,o){var r=n.store;e.update([o]),r.setValue(t,o),n.onSetValue(t,o)}function Js(o,t){return xn(o,{},A(t,function(t){return n=t.name(),e="Cannot configure "+t.name()+" for "+o,le(n,n,Bt(),It(function(t){return Nn("The field: "+n+" is forbidden. "+e)}));var n,e}).concat([fe("dump",h)]))}function $s(t){return t.dump}function Qs(t,n){return st(st({},t.dump),Za(n))}function Zs(t){return Kn(t,"uiType")}function tl(t){return t.fold(ft.some,ft.none,ft.some,ft.some)}function nl(t){function n(t){return t.name}return t.fold(n,n,n,n)}function el(e,o){return function(t){var n=Yt("Converting part type",o,t);return e(n)}}function ol(t,n,e,o){return Jn(n.defaults(t,e,o),e,{uid:t.partUids[n.name]},n.overrides(t,e,o))}function rl(r,t){var n={};return dt(t,function(t){tl(t).each(function(e){var o=Zf(r,e.pname);n[e.name]=function(t){var n=Yt("Part: "+e.name+" in "+r,te(e.schema),t);return st(st({},o),{config:t,validated:n})}})}),n}function il(t,n,e){return{uiType:If(),owner:t,name:n,config:e,validated:{}}}function ul(t){return z(t,function(t){return t.fold(ft.none,ft.some,ft.none,ft.none).map(function(t){return nn(t.name,t.schema.concat([ta($f())]))}).toArray()})}function al(t){return A(t,nl)}function cl(t,n,e){return o=n,r={},i={},dt(e,function(t){t.fold(function(o){r[o.pname]=Mf(!0,function(t,n,e){return o.factory.sketch(ol(t,o,n,e))})},function(t){var n=o.parts[t.name];i[t.name]=tt(t.factory.sketch(ol(o,t,n[$f()]),n))},function(o){r[o.pname]=Mf(!1,function(t,n,e){return o.factory.sketch(ol(t,o,n,e))})},function(o){r[o.pname]=Ff(!0,function(n,t,e){return A(n[o.name],function(t){return o.factory.sketch(Jn(o.defaults(n,t,e),t,o.overrides(n,t)))})})})}),{internals:tt(r),externals:tt(i)};var o,r,i}function sl(t,n,e){return o=ft.some(t),i=(r=n).components,s=yt(e,function(t,n){return o=t,r=!1,{name:tt(e=n),required:function(){return o.fold(function(t,n){return t},function(t,n){return t})},used:function(){return r},replace:function(){if(r)throw new Error("Trying to use the same placeholder more than once: "+e);return r=!0,o}};var e,o,r}),u=o,a=r,c=s,l=z(i,function(t){return Af(u,a,t,c)}),bt(s,function(t){if(!1===t.used()&&t.required())throw new Error("Placeholder: "+t.name()+" was not found in components list\nNamespace: "+o.getOr("none")+"\nComponents: "+JSON.stringify(r.components,null,2))}),l;var o,r,i,u,a,c,s,l}function ll(t,n,e){var o=n.partUids[e];return t.getSystem().getByUid(o).toOptional()}function fl(t,n,e){return ll(t,n,e).getOrDie("Could not find part: "+e)}function dl(t,n,e){var o={},r=n.partUids,i=t.getSystem();return dt(e,function(t){o[t]=tt(i.getByUid(r[t]))}),o}function ml(t,n){var e=t.getSystem();return yt(n.partUids,function(t,n){return tt(e.getByUid(t))})}function gl(t){return Xn(t.partUids)}function pl(t,n,e){var o={},r=n.partUids,i=t.getSystem();return dt(e,function(t){o[t]=tt(i.getByUid(r[t]).getOrDie())}),o}function hl(n,t){return Me(A(al(t),function(t){return{key:t,value:n+"-"+t}}))}function vl(n){return le("partUids","partUids",At(function(t){return hl(t.uid,n)}),ee())}function bl(t,n,e,o,r){var i;return Yt(t+" [SpecSchema]",Ht((i=r,(0<o.length?[nn("parts",o)]:[]).concat([Jt("uid"),dn("dom",{}),dn("components",[]),ta("originalSpec"),dn("debug.sketcher",{})]).concat(i)).concat(n)),e)}function yl(t,n,e,o,r){var i=nd(r),u=bl(t,n,i,ul(e),[vl(e)]),a=cl(0,u,e);return o(u,sl(t,u,a.internals()),i,a.externals())}function xl(t){var r=Yt("Sketcher for "+t.name,ed,t),n=yt(r.apis,Vr),e=yt(r.extraApis,Ir);return st(st({name:r.name,configFields:r.configFields,sketch:function(t){return n=r.name,e=r.configFields,(0,r.factory)(bl(n,e,o=nd(t),[],[]),o);var n,e,o}},n),e)}function wl(t){var n=Yt("Sketcher for "+t.name,od,t),e=rl(n.name,n.partFields),o=yt(n.apis,Vr),r=yt(n.extraApis,Ir);return st(st({name:n.name,partFields:n.partFields,configFields:n.configFields,sketch:function(t){return yl(n.name,n.configFields,n.partFields,n.factory,t)},parts:e},o),r)}function Sl(t){return"input"===nr(t)&&"radio"!==_r(t,"type")||"textarea"===nr(t)}function kl(t,n,e){(n.disabled()?ad:cd)(t,n)}function Cl(t,n){return!0===n.useNative&&et(ud,nr(t.element))}function Ol(t,n){return Cl(t,n)?Er(t.element,"disabled"):"true"===_r(t.element,"aria-disabled")}function _l(e,o,t,r){var n=gs(e.element,"."+o.highlightClass);dt(n,function(n){T(r,function(t){return t.element===n})||(Gr(n,o.highlightClass),e.getSystem().getByDom(n).each(function(t){o.onDehighlight(e,t),ze(t,qo())}))})}function Tl(t,n,e,o){_l(t,n,0,[o]),Ul(0,n,0,o)||(Ur(o.element,n.highlightClass),n.onHighlight(t,o),ze(o,Yo()))}function El(e,n,t,o){var r=gs(e.element,"."+n.itemClass);return P(r,function(t){return Xr(t,n.highlightClass)}).bind(function(t){var n=ea(t,o,0,r.length-1);return e.getSystem().getByDom(r[n]).toOptional()})}function Dl(t,n,e){var o=L(t.slice(0,n)),r=L(t.slice(n+1));return V(o.concat(r),e)}function Bl(t,n,e){return V(L(t.slice(0,n)),e)}function Al(t,n,e){var o=t.slice(0,n);return V(t.slice(n+1).concat(o),e)}function Ml(t,n,e){return V(t.slice(n+1),e)}function Fl(e){return function(t){var n=t.raw;return et(e,n.which)}}function Il(t){return function(n){return N(t,function(t){return t(n)})}}function Rl(t){return!0===t.raw.shiftKey}function Vl(t){return!0===t.raw.ctrlKey}function Pl(t,n){return{matches:t,classification:n}}function Hl(t,n,e){n.exists(function(n){return e.exists(function(t){return Bn(t,n)})})||Ne(t,Wo(),{prevFocus:n,newFocus:e})}function zl(){function o(t){return Oa(t.element)}return{get:o,set:function(t,n){var e=o(t);t.getSystem().triggerFocus(n,t.element),Hl(t,e,o(t))}}}function Nl(){function r(t){return md.getHighlighted(t).map(function(t){return t.element})}return{get:r,set:function(n,t){var e=r(n);n.getSystem().getByDom(t).fold(ct,function(t){md.highlight(n,t)});var o=r(n);Hl(n,e,o)}}}fs.ltr,fs.rtl;function Ll(t,n,e,o,r,i){var u=i.map(Ai);return af(t,n,e,o,r,u)}function jl(t,n,e){var o,r,i,u=n.getAttachPoint(t);ni(t.element,"position",cf.getMode(u)),i=n.cloakVisibilityAttr,ii((o=t).element,r="visibility").fold(function(){Dr(o.element,i)},function(t){Or(o.element,i,t)}),ni(o.element,r,"hidden")}function Wl(t,n,e){var o,r,i,u=t.element;T(["top","left","right","bottom"],function(t){return ii(u,t).isSome()})||ai(t.element,"position"),r="visibility",i=n.cloakVisibilityAttr,Tr((o=t).element,i).fold(function(){return ai(o.element,r)},function(t){return ni(o.element,r,t)})}function Ul(t,n,e,o){return Xr(o.element,n.highlightClass)}function Gl(n,t,e){return Fu(n.element,"."+t.itemClass).bind(function(t){return n.getSystem().getByDom(t).toOptional()})}function Xl(n,t,e){var o=gs(n.element,"."+t.itemClass);return(0<o.length?ft.some(o[o.length-1]):ft.none()).bind(function(t){return n.getSystem().getByDom(t).toOptional()})}function Yl(n,t,e){return Jr(A(gs(n.element,"."+t.itemClass),function(t){return n.getSystem().getByDom(t).toOptional()}))}var ql,Kl,Jl,$l,Ql=(ql=Vi,{get:function(t){if(!ql(t))throw new Error("Can only get text value of a text node");return Kl(t).getOr("")},getOption:Kl=function(t){return ql(t)?ft.from(t.dom.nodeValue):ft.none()},set:function(t,n){if(!ql(t))throw new Error("Can only set raw text value of a text node");t.dom.nodeValue=n}}),Zl=["img","br"],tf=[rn("getSelection"),Jt("root"),rn("bubble"),zc(),dn("overrides",{}),dn("showAbove",!1),Zu("placement",function(t,n,e){var r=ur(n.root).dom,o=Gc(t,0,n);return Yc(xs(r,n).bind(function(e){return t=r,n=ls.exactFromRange(e),(0<(o=Qc(t,n).getBoundingClientRect()).width||0<o.height?ft.some(o).map(Jc):ft.none()).orThunk(function(){var t=de.fromText("\ufeff");hr(e.start,t);var n=vs(r,ls.exact(t,0,t,1));return Xi(t),n}).bind(function(t){return Xc(t.left,t.top,t.width,t.height)});var t,n,o}),o,n,e,xs(r,n).bind(function(t){return Ri(t.start)?ft.some(t.start):zi(t.start)}).getOr(t.element))})],nf="link-layout",ef=qt("type",{selection:tf,node:is,hotspot:ts,submenu:[Jt("item"),zc(),dn("overrides",{}),Zu("placement",function(t,n,e){var o=Aa(e,n.item.element),r=Nc(t.element,n,Es(),Ds(),Es(),Ds(),ft.none());return ft.some(Vc({anchorBox:o,bubble:xc(),overrides:n.overrides,layouts:r,placer:ft.none()}))})],makeshift:ns}),of=[on("classes",re),hn("mode","all",["all","layout","placement"])],rf=[dn("useFixed",O),rn("getBounds")],uf=[$t("anchor",ef),fn("transition",of)],af=function(c,s,l,f,t,d){var m=Yt("placement.info",te(uf),t),g=m.anchor,p=f.element,h=l.get(f.uid);_a(function(){ni(p,"position","fixed");var t=ii(p,"visibility");ni(p,"visibility","hidden");var n,e,o,r,i=s.useFixed()?(r=document.documentElement,Oc(0,0,r.clientWidth,r.clientHeight)):(e=xi((n=c).element),o=n.element.dom.getBoundingClientRect(),Cc(e.left,e.top,o.width,o.height)),u=g.placement,a=d.map(tt).or(s.getBounds);u(c,g,i).each(function(t){var n=t.placer.getOr(Bs)(c,i,t,a,f,h,m.transition);l.set(f.uid,n)}),t.fold(function(){ai(p,"visibility")},function(t){ni(p,"visibility",t)}),ii(p,"left").isNone()&&ii(p,"top").isNone()&&ii(p,"right").isNone()&&ii(p,"bottom").isNone()&&Kr(ii(p,"position"),"fixed")&&ai(p,"position")},p)},cf=xa({fields:rf,name:"positioning",active:rc,apis:Object.freeze({__proto__:null,position:function(t,n,e,o,r){Ll(t,n,e,o,r,ft.none())},positionWithin:Ll,positionWithinBounds:af,getMode:function(t,n,e){return n.useFixed()?"fixed":"absolute"},reset:function(t,n,e,o){var r=o.element;dt(["position","left","right","top","bottom"],function(t){return ai(r,t)}),Dr(r,_c),e.clear(o.uid)}}),state:Object.freeze({__proto__:null,init:function(){var e={};return au({readState:function(){return e},clear:function(t){f(t)?delete e[t]:e={}},set:function(t,n){e[t]=n},get:function(t){return kt(e,t)}})}})}),sf=function(t){ze(t,No());var n=t.components();dt(n,sf)},lf=function(t){var n=t.components();dt(n,lf),ze(t,zo())},ff=function(t,n,e){t.getSystem().addToWorld(n),e(t.element,n.element),du(t.element)&&lf(n),t.syncComponents()},df=function(t,n,e){e(t,n.element);var o=sr(n.element);dt(o,function(t){n.getByDom(t).each(lf)})},mf=Object.freeze({__proto__:null,cloak:jl,decloak:Wl,open:Ns,openWhileCloaked:function(t,n,e,o,r){jl(t,n),Ns(t,n,e,o),r(),Wl(t,n)},close:Ls,isOpen:js,isPartOf:function(n,e,t,o){return js(0,0,t)&&t.get().exists(function(t){return e.isPartOf(n,t,o)})},getState:function(t,n,e){return e.get()},setContent:function(t,n,e,o){return e.get().map(function(){return zs(t,n,e,o)})}}),gf=Object.freeze({__proto__:null,events:function(e,o){return Jo([Xe(Mo(),function(t,n){Ls(t,e,o)})])}}),pf=xa({fields:[Ku("onOpen"),Ku("onClose"),Jt("isPartOf"),Jt("getAttachPoint"),dn("cloakVisibilityAttr","data-precloak-visibility")],name:"sandboxing",active:gf,apis:mf,state:Object.freeze({__proto__:null,init:function(){var t=fc(),n=tt("not-implemented");return au({readState:n,isOpen:t.isSet,clear:t.clear,set:t.set,get:t.get})}})}),hf=tt("dismiss.popups"),vf=tt("reposition.popups"),bf=tt("mouse.released"),yf=Ht([dn("isExtraPart",O),fn("fireEventInstead",[dn("event",Lo())])]),xf=Ht([fn("fireEventInstead",[dn("event",jo())]),tn("doReposition")]),wf=Object.freeze({__proto__:null,onLoad:Gs,onUnload:Xs,setValue:function(t,n,e,o){n.store.manager.setValue(t,n,e,o)},getValue:function(t,n,e){return n.store.manager.getValue(t,n,e)},getState:function(t,n,e){return e}}),Sf=Object.freeze({__proto__:null,events:function(e,o){var t=e.resetOnDom?[$o(function(t,n){Gs(t,e,o)}),Qo(function(t,n){Xs(t,e,o)})]:[ba(e,o,Gs)];return Jo(t)}}),kf=Object.freeze({__proto__:null,memory:Ys,dataset:qs,manual:function(){return au({readState:ct})},init:function(t){return t.store.manager.state(t)}}),Cf=[rn("initialValue"),Jt("getFallbackEntry"),Jt("getDataKey"),Jt("setValue"),Zu("manager",{setValue:Ks,getValue:function(t,n,e){var o=n.store,r=o.getDataKey(t);return e.lookup(r).getOrThunk(function(){return o.getFallbackEntry(r)})},onLoad:function(n,e,o){e.store.initialValue.each(function(t){Ks(n,e,o,t)})},onUnload:function(t,n,e){e.clear()},state:qs})],Of=[Jt("getValue"),dn("setValue",ct),rn("initialValue"),Zu("manager",{setValue:function(t,n,e,o){n.store.setValue(t,o),n.onSetValue(t,o)},getValue:function(t,n,e){return n.store.getValue(t)},onLoad:function(n,e,t){e.store.initialValue.each(function(t){e.store.setValue(n,t)})},onUnload:ct,state:uu.init})],_f=xa({fields:[mn("store",{mode:"memory"},qt("mode",{memory:[rn("initialValue"),Zu("manager",{setValue:function(t,n,e,o){e.set(o),n.onSetValue(t,o)},getValue:function(t,n,e){return e.get()},onLoad:function(t,n,e){n.store.initialValue.each(function(t){e.isNotSet()&&e.set(t)})},onUnload:function(t,n,e){e.clear()},state:Ys})],manual:Of,dataset:Cf})),Ku("onSetValue"),dn("resetOnDom",!1)],name:"representing",active:Sf,apis:wf,extra:{setValueFrom:function(t,n){var e=_f.getValue(n);_f.setValue(t,e)}},state:kf}),Tf=Js,Ef=Qs,Df="placeholder",Bf=Vn([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),Af=function(r,i,u,a){return t=r,e=a,(Zs(n=u)&&n.uiType===Df?(c=n,s=e,(o=t).exists(function(t){return t!==c.owner})?Bf.single(!0,tt(c)):kt(s,c.name).fold(function(){throw new Error("Unknown placeholder component: "+c.name+"\nKnown: ["+Xn(s)+"]\nNamespace: "+o.getOr("none")+"\nSpec: "+JSON.stringify(c,null,2))},function(t){return t.replace()})):Bf.single(!1,tt(n))).fold(function(t,n){var e=Zs(u)?n(i,u.config,u.validated):n(i),o=z(kt(e,"components").getOr([]),function(t){return Af(r,i,t,a)});return[st(st({},e),{components:o})]},function(t,n){if(Zs(u)){var e=n(i,u.config,u.validated);return u.validated.preprocess.getOr(h)(e)}return n(i)});var t,n,e,o,c,s},Mf=Bf.single,Ff=Bf.multiple,If=tt(Df),Rf=Vn([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Vf=dn("factory",{sketch:h}),Pf=dn("schema",[]),Hf=Jt("name"),zf=le("pname","pname",Et(function(t){return"<alloy."+Ar(t.name)+">"}),ee()),Nf=fe("schema",function(){return[rn("preprocess")]}),Lf=dn("defaults",tt({})),jf=dn("overrides",tt({})),Wf=te([Vf,Pf,Hf,zf,Lf,jf]),Uf=te([Vf,Pf,Hf,Lf,jf]),Gf=te([Vf,Pf,Hf,zf,Lf,jf]),Xf=te([Vf,Nf,Hf,Jt("unit"),zf,Lf,jf]),Yf=el(Rf.required,Wf),qf=el(Rf.external,Uf),Kf=el(Rf.optional,Gf),Jf=el(Rf.group,Xf),$f=tt("entirety"),Qf=Object.freeze({__proto__:null,required:Yf,external:qf,optional:Kf,group:Jf,asNamedPart:tl,name:nl,asCommon:function(t){return t.fold(h,h,h,h)},original:$f}),Zf=function(t,n){return{uiType:If(),owner:t,name:n}},td=Object.freeze({__proto__:null,generate:rl,generateOne:il,schemas:ul,names:al,substitutes:cl,components:sl,defaultUids:hl,defaultUidsSchema:vl,getAllParts:ml,getAllPartNames:gl,getPart:ll,getPartOrDie:fl,getParts:dl,getPartsOrDie:pl}),nd=function(t){return Kn(t,"uid")?t:st(st({},t),{uid:nu("uid")})},ed=Ht([Jt("name"),Jt("factory"),Jt("configFields"),dn("apis",{}),dn("extraApis",{})]),od=Ht([Jt("name"),Jt("factory"),Jt("configFields"),Jt("partFields"),dn("apis",{}),dn("extraApis",{})]),rd=Object.freeze({__proto__:null,getCurrent:function(t,n,e){return n.find(t)}}),id=xa({fields:[Jt("find")],name:"composing",apis:rd}),ud=["input","button","textarea","select"],ad=function(n,t,e){t.disableClass.each(function(t){Ur(n.element,t)}),(Cl(n,t)?function(t){Or(t.element,"disabled","disabled")}:function(t){Or(t.element,"aria-disabled","true")})(n),t.onDisabled(n)},cd=function(n,t,e){t.disableClass.each(function(t){Gr(n.element,t)}),(Cl(n,t)?function(t){Dr(t.element,"disabled")}:function(t){Or(t.element,"aria-disabled","false")})(n),t.onEnabled(n)},sd=Object.freeze({__proto__:null,enable:cd,disable:ad,isDisabled:Ol,onLoad:kl,set:function(t,n,e,o){(o?ad:cd)(t,n)}}),ld=Object.freeze({__proto__:null,exhibit:function(t,n){return Hr({classes:n.disabled()?n.disableClass.toArray():[]})},events:function(e,t){return Jo([Ue(Eo(),function(t,n){return Ol(t,e)}),ba(e,t,kl)])}}),fd=xa({fields:[bn("disabled",O),dn("useNative",!0),rn("disableClass"),Ku("onDisabled"),Ku("onEnabled")],name:"disabling",active:ld,apis:sd}),dd=Object.freeze({__proto__:null,dehighlightAll:function(t,n,e){return _l(t,n,0,[])},dehighlight:function(t,n,e,o){Ul(0,n,0,o)&&(Gr(o.element,n.highlightClass),n.onDehighlight(t,o),ze(o,qo()))},highlight:Tl,highlightFirst:function(n,e,t){Gl(n,e).each(function(t){Tl(n,e,0,t)})},highlightLast:function(n,e,t){Xl(n,e).each(function(t){Tl(n,e,0,t)})},highlightAt:function(n,e,t,o){var r,i,u;i=o,u=gs((r=n).element,"."+e.itemClass),ft.from(u[i]).fold(function(){return mt.error(new Error("No element found with index "+i))},r.getSystem().getByDom).fold(function(t){throw t},function(t){Tl(n,e,0,t)})},highlightBy:function(n,e,t,o){V(Yl(n,e),o).each(function(t){Tl(n,e,0,t)})},isHighlighted:Ul,getHighlighted:function(n,t,e){return Fu(n.element,"."+t.highlightClass).bind(function(t){return n.getSystem().getByDom(t).toOptional()})},getFirst:Gl,getLast:Xl,getPrevious:function(t,n,e){return El(t,n,0,-1)},getNext:function(t,n,e){return El(t,n,0,1)},getCandidates:Yl}),md=xa({fields:[Jt("highlightClass"),Jt("itemClass"),Ku("onHighlight"),Ku("onDehighlight")],name:"highlighting",apis:dd}),gd=[8],pd=[9],hd=[13],vd=[27],bd=[32],yd=[37],xd=[38],wd=[39],Sd=[40],kd=k(Rl);function Cd(t,n,e,o,a){function c(n,e,t,o,r){var i=t(n,e,o,r),u=e.event;return V(i,function(t){return t.matches(u)}).map(function(t){return t.classification}).bind(function(t){return t(n,e,o,r)})}var r={schema:function(){return t.concat([dn("focusManager",zl()),mn("focusInside","onFocus",Wt(function(t){return et(["onFocus","onEnterOrSpace","onApi"],t)?mt.value(t):mt.error("Invalid value for focusInside")})),Zu("handler",r),Zu("state",n),Zu("sendFocusIn",a)])},processKey:c,toEvents:function(i,u){var t=i.focusInside!==Jl.OnFocusMode?ft.none():a(i).map(function(e){return Xe(Co(),function(t,n){e(t,i,u),n.stop()})}),n=[Xe(go(),function(o,r){c(o,r,e,i,u).fold(function(){var n=o,e=r,t=Fl(bd.concat(hd))(e.event);i.focusInside===Jl.OnEnterOrSpaceMode&&t&&Ve(n,e)&&a(i).each(function(t){t(n,i,u),e.stop()})},function(t){r.stop()})}),Xe(po(),function(t,n){c(t,n,o,i,u).each(function(t){n.stop()})})];return Jo(t.toArray().concat(n))}};return r}function Od(t){function a(t,n){return 0<vi(t.visibilitySelector.bind(function(t){return Iu(n,t)}).getOr(n))}function n(n,e,t){var o=e,r=F(gs(n.element,o.selector),function(t){return a(o,t)});ft.from(r[o.firstTabstop]).each(function(t){e.focusManager.set(n,t)})}function o(e,t,r,i){var n,u=gs(e.element,r.selector);return(n=r).focusManager.get(e).bind(function(t){return Iu(t,n.selector)}).bind(function(t){return P(u,S(Bn,t)).bind(function(t){return n=e,o=r,i(u,t,function(t){return a(n=o,e=t)&&n.useTabstopAt(e);var n,e}).fold(function(){return o.cyclic?ft.some(!0):ft.none()},function(t){return o.focusManager.set(n,t),ft.some(!0)});var n,o})})}var e=[rn("onEscape"),rn("onEnter"),dn("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),dn("firstTabstop",0),dn("useTabstopAt",_),rn("visibilitySelector")].concat([t]),r=tt([Pl(Il([Rl,Fl(pd)]),function(t,n,e){return o(t,0,e,e.cyclic?Dl:Bl)}),Pl(Fl(pd),function(t,n,e){return o(t,0,e,e.cyclic?Al:Ml)}),Pl(Fl(vd),function(n,e,t){return t.onEscape.bind(function(t){return t(n,e)})}),Pl(Il([kd,Fl(hd)]),function(n,e,t){return t.onEnter.bind(function(t){return t(n,e)})})]),i=tt([]);return Cd(e,uu.init,r,i,function(){return ft.some(n)})}function _d(t,n,e){return Sl(e)&&Fl(bd)(n.event)?ft.none():(je(t,e,Eo()),ft.some(!0))}function Td(t,n){return ft.some(!0)}function Ed(t,n,e){return e.execute(t,n,t.element)}function Dd(){var e=fc();return au({readState:function(){return e.get().map(function(t){return{numRows:String(t.numRows),numColumns:String(t.numColumns)}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(t,n){e.set({numRows:t,numColumns:n})},getNumRows:function(){return e.get().map(function(t){return t.numRows})},getNumColumns:function(){return e.get().map(function(t){return t.numColumns})}})}function Bd(i){return function(t,n,e,o){var r=i(t.element);return $m(r,t,n,e,o)}}function Ad(t,n){return Bd(wc(t,n))}function Md(t,n){return Bd(wc(n,t))}function Fd(r){return function(t,n,e,o){return $m(r,t,n,e,o)}}function Id(t){return!((n=t.dom).offsetWidth<=0&&n.offsetHeight<=0);var n}function Rd(t,n,e){var o,r=F(gs(t,e),Id);return P(o=r,function(t){return Bn(t,n)}).map(function(t){return{index:t,candidates:o}})}function Vd(t,n){return P(t,function(t){return Bn(n,t)})}function Pd(e,t,o,n){return n(Math.floor(t/o),t%o).bind(function(t){var n=t.row*o+t.column;return 0<=n&&n<e.length?ft.some(e[n]):ft.none()})}function Hd(r,t,i,u,a){return Pd(r,t,u,function(t,n){var e=t===i-1?r.length-t*u:u,o=ea(n,a,0,e-1);return ft.some({row:t,column:o})})}function zd(r,t,i,u,a){return Pd(r,t,u,function(t,n){var e=ea(t,a,0,i-1),o=oa(n,0,(e===i-1?r.length-e*u:u)-1);return ft.some({row:e,column:o})})}function Nd(n,e,t){Fu(n.element,e.selector).each(function(t){e.focusManager.set(n,t)})}function Ld(r){return function(t,n,e,o){return Rd(t,n,e.selector).bind(function(t){return r(t.candidates,t.index,o.getNumRows().getOr(e.initSize.numRows),o.getNumColumns().getOr(e.initSize.numColumns))})}}function jd(t,n,e){return e.captureTab?ft.some(!0):ft.none()}function Wd(t,n,e,i){var u=function(t,n,e){var o,r=ea(n,i,0,e.length-1);return r===t?ft.none():"button"===nr(o=e[r])&&"disabled"===_r(o,"disabled")?u(t,r,e):ft.from(e[r])};return Rd(t,e,n).bind(function(t){var n=t.index,e=t.candidates;return u(n,n,e)})}function Ud(n,e,o){return(r=o).focusManager.get(n).bind(function(t){return Iu(t,r.selector)}).bind(function(t){return o.execute(n,e,t)});var r}function Gd(n,e,t){e.getInitial(n).orThunk(function(){return Fu(n.element,e.selector)}).each(function(t){e.focusManager.set(n,t)})}function Xd(t,n,e){return Wd(t,e.selector,n,-1)}function Yd(t,n,e){return Wd(t,e.selector,n,1)}function qd(r){return function(t,n,e,o){return r(t,n,e,o).bind(function(){return e.executeOnMove?Ud(t,n,e):ft.some(!0)})}}function Kd(t,n,e){return e.onEscape(t,n)}function Jd(t,n,e){return ft.from(t[n]).bind(function(t){return ft.from(t[e]).map(function(t){return{rowIndex:n,columnIndex:e,cell:t}})})}function $d(t,n,e,o){return Jd(t,n,ea(e,o,0,t[n].length-1))}function Qd(t,n,e,o){var r=ea(e,o,0,t.length-1);return Jd(t,r,oa(n,0,t[r].length-1))}function Zd(t,n,e,o){return Jd(t,n,oa(e+o,0,t[n].length-1))}function tm(t,n,e,o){var r=oa(e+o,0,t.length-1);return Jd(t,r,oa(n,0,t[r].length-1))}function nm(n,e,t){e.previousSelector(n).orThunk(function(){var t=e.selectors;return Fu(n.element,t.cell)}).each(function(t){e.focusManager.set(n,t)})}function em(t,o){return function(n,e,i){var u=i.cycles?t:o;return Iu(e,i.selectors.row).bind(function(t){return Vd(gs(t,i.selectors.cell),e).bind(function(o){var r=gs(n,i.selectors.row);return Vd(r,t).bind(function(t){var n,e=(n=i,A(r,function(t){return gs(t,n.selectors.cell)}));return u(e,t,o).map(function(t){return t.cell})})})})}}function om(n,e,o){return o.focusManager.get(n).bind(function(t){return o.execute(n,e,t)})}function rm(n,e,t){Fu(n.element,e.selector).each(function(t){e.focusManager.set(n,t)})}function im(t,n,e){return Wd(t,e.selector,n,-1)}function um(t,n,e){return Wd(t,e.selector,n,1)}function am(t,n,e,o){var r=t.getSystem().build(o);ff(t,r,e)}function cm(t,n,e,o){V(Ag(t),function(t){return Bn(o.element,t.element)}).each(Rs)}function sm(n,t,e,r,o){var i=Ag(n);return ft.from(i[r]).map(function(t){return cm(n,0,0,t),o.each(function(t){am(n,0,function(t,n){var e,o=n;lr(e=t,r).fold(function(){Gi(e,o)},function(t){hr(t,o)})},t)}),t})}function lm(t,n){var e,o;return{key:t,value:{config:{},me:(e=t,o=Jo(n),xa({fields:[Jt("enabled")],name:e,active:{events:tt(o)}})),configAsRaw:tt({}),initialConfig:{},state:uu}}}function fm(t,n){n.ignore||(Sa(t.element),n.onFocus(t))}function dm(t,n,e){var o=n.aria;o.update(t,o,e.get())}function mm(n,t,e){t.toggleClass.each(function(t){(e.get()?Ur:Gr)(n.element,t)})}function gm(t,n,e){Um(t,n,e,!e.get())}function pm(t,n,e){e.set(!0),mm(t,n,e),dm(t,n,e)}function hm(t,n,e){e.set(!1),mm(t,n,e),dm(t,n,e)}function vm(t,n,e){Um(t,n,e,n.selected)}function bm(){function t(t,n){n.stop(),Le(t)}return[Xe(bo(),t),Xe(Bo(),t),$e(eo()),$e(uo())]}function ym(t){return Jo(lt([t.map(function(e){return tr(function(t,n){e(t),n.stop()})}).toArray(),bm()]))}function xm(t){(Oa(t.element).isNone()||Rg.isFocused(t))&&(Rg.isFocused(t)||Rg.focus(t),Ne(t,zg,{item:t}))}function wm(t){Ne(t,Ng,{item:t})}function Sm(t,n){return t.x+t.width/2-n.width/2}function km(t,n){return t.x+t.width-n.width}function Cm(t,n){return t.y+t.height-n.height}function Om(t,n){return t.y+t.height/2-n.height/2}function _m(t,n,e){return na(km(t,n),Cm(t,n),e.insetSouthwest(),Ha(),"southwest",ra(t,{right:0,bottom:3}),rp)}function Tm(t,n,e){return na(t.x,Cm(t,n),e.insetSoutheast(),Pa(),"southeast",ra(t,{left:1,bottom:3}),rp)}function Em(t,n,e){return na(km(t,n),t.y,e.insetNorthwest(),Va(),"northwest",ra(t,{right:0,top:2}),rp)}function Dm(t,n,e){return na(t.x,t.y,e.insetNortheast(),Ra(),"northeast",ra(t,{left:1,top:2}),rp)}function Bm(t,n,e){return na(km(t,n),Om(t,n),e.insetEast(),ja(),"east",ra(t,{right:0}),rp)}function Am(t,n,e){return na(t.x,Om(t,n),e.insetWest(),La(),"west",ra(t,{left:1}),rp)}function Mm(t){switch(t){case"north":return ip;case"northeast":return Dm;case"northwest":return Em;case"south":return up;case"southeast":return Tm;case"southwest":return _m;case"east":return Bm;case"west":return Am}}function Fm(t,n,e,o,r){return ac(o).map(Mm).getOr(ip)(t,n,e,o,r)}function Im(t){switch(t){case"north":return up;case"northeast":return Tm;case"northwest":return _m;case"south":return ip;case"southeast":return Dm;case"southwest":return Em;case"east":return Am;case"west":return Bm}}function Rm(t,n,e,o,r){return ac(o).map(Im).getOr(ip)(t,n,e,o,r)}function Vm(t){var n=void 0!==t.uid&&Ct(t,"uid")?t.uid:nu("memento");return{get:function(t){return t.getSystem().getByUid(n).getOrDie()},getOpt:function(t){return t.getSystem().getByUid(n).toOptional()},asSpec:function(){return st(st({},t),{uid:n})}}}function Pm(t){return function(){return kt(t,fp).getOr("!not found!")}}function Hm(t,n){var e,o=t.toLowerCase();if(sp.isRtl()){var r=he(e=o,"-rtl")?e:e+"-rtl";return Kn(n,r)?r:o}return o}function zm(t,n){return kt(n,Hm(t,n))}function Nm(t,n){var e=n();return zm(t,e).getOrThunk(Pm(e))}function Lm(){return lm("add-focusable",[$o(function(t){var n,e,o;n=t.element,e="svg",o=function(t){return En(t,e)},V(n.dom.childNodes,function(t){return o(de.fromDom(t))}).map(de.fromDom).each(function(t){return Or(t,"focusable","false")})})])}function jm(t,n,e,o){var r,i,u,a=(u=n,sp.isRtl()&&Kn(lp,u)?["tox-icon--flip"]:[]),c=kt(e,Hm(n,e)).or(o).getOrThunk(Pm(e));return{dom:{tag:t.tag,attributes:null!==(r=t.attributes)&&void 0!==r?r:{},classes:t.classes.concat(a),innerHtml:c},behaviours:Za(H(H([],null!==(i=t.behaviours)&&void 0!==i?i:[]),[Lm()]))}}function Wm(t,n,e,o){return void 0===o&&(o=ft.none()),jm(n,t,e(),o)}($l=Jl=Jl||{}).OnFocusMode="onFocus",$l.OnEnterOrSpaceMode="onEnterOrSpace",$l.OnApiMode="onApi";function Um(t,n,e,o){(o?pm:hm)(t,n,e)}function Gm(t,n,e){Or(t.element,"aria-expanded",e)}function Xm(t){return"prepared"===t.type?ft.some(t.menu):ft.none()}var Ym=Od(fe("cyclic",O)),qm=Od(fe("cyclic",_)),Km=Cd([dn("execute",_d),dn("useSpace",!1),dn("useEnter",!0),dn("useControlEnter",!1),dn("useDown",!1)],uu.init,function(t,n,e,o){var r=e.useSpace&&!Sl(t.element)?bd:[],i=e.useEnter?hd:[],u=e.useDown?Sd:[];return[Pl(Fl(r.concat(i).concat(u)),Ed)].concat(e.useControlEnter?[Pl(Il([Vl,Fl(hd)]),Ed)]:[])},function(t,n,e,o){return e.useSpace&&!Sl(t.element)?[Pl(Fl(bd),Td)]:[]},function(){return ft.none()}),Jm=Object.freeze({__proto__:null,flatgrid:Dd,init:function(t){return t.state(t)}}),$m=function(n,e,t,o,r){return o.focusManager.get(e).bind(function(t){return n(e.element,t,o,r)}).map(function(t){return o.focusManager.set(e,t),!0})},Qm=Fd,Zm=Fd,tg=Fd,ng=Ld(function(t,n,e,o){return Hd(t,n,e,o,-1)}),eg=Ld(function(t,n,e,o){return Hd(t,n,e,o,1)}),og=Ld(function(t,n,e,o){return zd(t,n,e,o,-1)}),rg=Ld(function(t,n,e,o){return zd(t,n,e,o,1)}),ig=Cd([Jt("selector"),dn("execute",_d),Ju("onEscape"),dn("captureTab",!1),Fa()],Dd,tt([Pl(Fl(yd),Ad(ng,eg)),Pl(Fl(wd),Md(ng,eg)),Pl(Fl(xd),Qm(og)),Pl(Fl(Sd),Zm(rg)),Pl(Il([Rl,Fl(pd)]),jd),Pl(Il([kd,Fl(pd)]),jd),Pl(Fl(vd),function(t,n,e){return e.onEscape(t,n)}),Pl(Fl(bd.concat(hd)),function(n,e,o,t){return(r=o).focusManager.get(n).bind(function(t){return Iu(t,r.selector)}).bind(function(t){return o.execute(n,e,t)});var r})]),tt([Pl(Fl(bd),Td)]),function(){return ft.some(Nd)}),ug=[Jt("selector"),dn("getInitial",ft.none),dn("execute",_d),Ju("onEscape"),dn("executeOnMove",!1),dn("allowVertical",!0)],ag=tt([Pl(Fl(bd),Td)]),cg=Cd(ug,uu.init,function(t,n,e,o){var r=yd.concat(e.allowVertical?xd:[]),i=wd.concat(e.allowVertical?Sd:[]);return[Pl(Fl(r),qd(Ad(Xd,Yd))),Pl(Fl(i),qd(Md(Xd,Yd))),Pl(Fl(hd),Ud),Pl(Fl(bd),Ud),Pl(Fl(vd),Kd)]},ag,function(){return ft.some(Gd)}),sg=[nn("selectors",[Jt("row"),Jt("cell")]),dn("cycles",!0),dn("previousSelector",ft.none),dn("execute",_d)],lg=em(function(t,n,e){return $d(t,n,e,-1)},function(t,n,e){return Zd(t,n,e,-1)}),fg=em(function(t,n,e){return $d(t,n,e,1)},function(t,n,e){return Zd(t,n,e,1)}),dg=em(function(t,n,e){return Qd(t,e,n,-1)},function(t,n,e){return tm(t,e,n,-1)}),mg=em(function(t,n,e){return Qd(t,e,n,1)},function(t,n,e){return tm(t,e,n,1)}),gg=tt([Pl(Fl(yd),Ad(lg,fg)),Pl(Fl(wd),Md(lg,fg)),Pl(Fl(xd),Qm(dg)),Pl(Fl(Sd),Zm(mg)),Pl(Fl(bd.concat(hd)),function(n,e,o){return Oa(n.element).bind(function(t){return o.execute(n,e,t)})})]),pg=tt([Pl(Fl(bd),Td)]),hg=Cd(sg,uu.init,gg,pg,function(){return ft.some(nm)}),vg=[Jt("selector"),dn("execute",_d),dn("moveOnTab",!1)],bg=tt([Pl(Fl(xd),tg(im)),Pl(Fl(Sd),tg(um)),Pl(Il([Rl,Fl(pd)]),function(t,n,e,o){return e.moveOnTab?tg(im)(t,n,e,o):ft.none()}),Pl(Il([kd,Fl(pd)]),function(t,n,e,o){return e.moveOnTab?tg(um)(t,n,e,o):ft.none()}),Pl(Fl(hd),om),Pl(Fl(bd),om)]),yg=tt([Pl(Fl(bd),Td)]),xg=Cd(vg,uu.init,bg,yg,function(){return ft.some(rm)}),wg=Cd([Ju("onSpace"),Ju("onEnter"),Ju("onShiftEnter"),Ju("onLeft"),Ju("onRight"),Ju("onTab"),Ju("onShiftTab"),Ju("onUp"),Ju("onDown"),Ju("onEscape"),dn("stopSpaceKeyup",!1),rn("focusIn")],uu.init,function(t,n,e){return[Pl(Fl(bd),e.onSpace),Pl(Il([kd,Fl(hd)]),e.onEnter),Pl(Il([Rl,Fl(hd)]),e.onShiftEnter),Pl(Il([Rl,Fl(pd)]),e.onShiftTab),Pl(Il([kd,Fl(pd)]),e.onTab),Pl(Fl(xd),e.onUp),Pl(Fl(Sd),e.onDown),Pl(Fl(yd),e.onLeft),Pl(Fl(wd),e.onRight),Pl(Fl(bd),e.onSpace),Pl(Fl(vd),e.onEscape)]},function(t,n,e){return e.stopSpaceKeyup?[Pl(Fl(bd),Td)]:[]},function(t){return t.focusIn}),Sg=Ym.schema(),kg=qm.schema(),Cg=cg.schema(),Og=ig.schema(),_g=hg.schema(),Tg=Km.schema(),Eg=xg.schema(),Dg=wg.schema(),Bg=wa({branchKey:"mode",branches:Object.freeze({__proto__:null,acyclic:Sg,cyclic:kg,flow:Cg,flatgrid:Og,matrix:_g,execution:Tg,menu:Eg,special:Dg}),name:"keying",active:{events:function(t,n){return t.handler.toEvents(t,n)}},apis:{focusIn:function(n,e,o){e.sendFocusIn(e).fold(function(){n.getSystem().triggerFocus(n.element,n.element)},function(t){t(n,e,o)})},setGridSize:function(t,n,e,o,r){Ct(e,"setGridSize")?e.setGridSize(o,r):console.error("Layout does not support setGridSize")}},state:Jm}),Ag=function(t,n){return t.components()},Mg=xa({fields:[],name:"replacing",apis:Object.freeze({__proto__:null,append:function(t,n,e,o){am(t,0,Gi,o)},prepend:function(t,n,e,o){am(t,0,br,o)},remove:cm,replaceAt:sm,replaceBy:function(n,t,e,o,r){return P(Ag(n),o).bind(function(t){return sm(n,0,0,t,r)})},set:function(n,t,e,o){_a(function(){var t=A(o,n.getSystem().build);Ms(n,t)},n.element)},contents:Ag})}),Fg=Object.freeze({__proto__:null,focus:fm,blur:function(t,n){n.ignore||t.element.dom.blur()},isFocused:function(t){return ka(t.element)}}),Ig=Object.freeze({__proto__:null,exhibit:function(t,n){return Hr(n.ignore?{}:{attributes:{tabindex:"-1"}})},events:function(e){return Jo([Xe(Co(),function(t,n){fm(t,e),n.stop()})].concat(e.stopMousedown?[Xe(uo(),function(t,n){n.event.prevent()})]:[]))}}),Rg=xa({fields:[Ku("onFocus"),dn("stopMousedown",!1),dn("ignore",!1)],name:"focusing",active:Ig,apis:Fg}),Vg=Object.freeze({__proto__:null,onLoad:vm,toggle:gm,isOn:function(t,n,e){return e.get()},on:pm,off:hm,set:Um}),Pg=Object.freeze({__proto__:null,exhibit:function(){return Hr({})},events:function(t,n){var e,o,r,i=(e=t,o=n,r=gm,tr(function(t){r(t,e,o)})),u=ba(t,n,vm);return Jo(lt([t.toggleOnExecute?[i]:[],[u]]))}}),Hg=xa({fields:[dn("selected",!1),rn("toggleClass"),dn("toggleOnExecute",!0),mn("aria",{mode:"none"},qt("mode",{pressed:[dn("syncWithExpanded",!1),Zu("update",function(t,n,e){Or(t.element,"aria-pressed",e),n.syncWithExpanded&&Gm(t,0,e)})],checked:[Zu("update",function(t,n,e){Or(t.element,"aria-checked",e)})],expanded:[Zu("update",Gm)],selected:[Zu("update",function(t,n,e){Or(t.element,"aria-selected",e)})],none:[Zu("update",ct)]}))],name:"toggling",active:Pg,apis:Vg,state:{init:function(){var n=wn(!1);return{get:function(){return n.get()},set:function(t){return n.set(t)},clear:function(){return n.set(!1)},readState:function(){return n.get()}}}}}),zg="alloy.item-hover",Ng="alloy.item-focus",Lg=tt(zg),jg=tt(Ng),Wg=[Jt("data"),Jt("components"),Jt("dom"),dn("hasSubmenu",!1),rn("toggling"),Tf("itemBehaviours",[Hg,Rg,Bg,_f]),dn("ignoreFocus",!1),dn("domModification",{}),Zu("builder",function(t){return{dom:t.dom,domModification:st(st({},t.domModification),{attributes:st(st(st({role:t.toggling.isSome()?"menuitemcheckbox":"menuitem"},t.domModification.attributes),{"aria-haspopup":t.hasSubmenu}),t.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:Ef(t.itemBehaviours,[t.toggling.fold(Hg.revoke,function(t){return Hg.config(st({aria:{mode:"checked"}},t))}),Rg.config({ignore:t.ignoreFocus,stopMousedown:t.ignoreFocus,onFocus:function(t){wm(t)}}),Bg.config({mode:"execution"}),_f.config({store:{mode:"memory",initialValue:t.data}}),lm("item-type-events",H(H([],bm()),[Xe(lo(),xm),Xe(Do(),Rg.focus)]))]),components:t.components,eventOrder:t.eventOrder}}),dn("eventOrder",{})],Ug=[Jt("dom"),Jt("components"),Zu("builder",function(t){return{dom:t.dom,components:t.components,events:Jo([Xe(Do(),function(t,n){n.stop()})])}})],Gg=tt("item-widget"),Xg=tt([Yf({name:"widget",overrides:function(n){return{behaviours:Za([_f.config({store:{mode:"manual",getValue:function(t){return n.data},setValue:ct}})])}}})]),Yg=qt("type",{widget:[Jt("uid"),Jt("data"),Jt("components"),Jt("dom"),dn("autofocus",!1),dn("ignoreFocus",!1),Tf("widgetBehaviours",[_f,Rg,Bg]),dn("domModification",{}),vl(Xg()),Zu("builder",function(e){function o(t){return ll(t,e,"widget").map(function(t){return Bg.focusIn(t),t})}function t(t,n){return Sl(n.event.target)||e.autofocus&&n.setSource(t.element),ft.none()}var n=cl(Gg(),e,Xg()),r=sl(Gg(),e,n.internals());return{dom:e.dom,components:r,domModification:e.domModification,events:Jo([tr(function(t,n){o(t).each(function(t){n.stop()})}),Xe(lo(),xm),Xe(Do(),function(t,n){e.autofocus?o(t):Rg.focus(t)})]),behaviours:Ef(e.widgetBehaviours,[_f.config({store:{mode:"memory",initialValue:e.data}}),Rg.config({ignore:e.ignoreFocus,onFocus:function(t){wm(t)}}),Bg.config({mode:"special",focusIn:e.autofocus?function(t){o(t)}:ec(),onLeft:t,onRight:t,onEscape:function(t,n){return Rg.isFocused(t)||e.autofocus?(e.autofocus&&n.setSource(t.element),ft.none()):(Rg.focus(t),ft.some(!0))}})])}})],item:Wg,separator:Ug}),qg=tt([Jf({factory:{sketch:function(t){var n=Yt("menu.spec item",Yg,t);return n.builder(n)}},name:"items",unit:"item",defaults:function(t,n){return Kn(n,"uid")?n:st(st({},n),{uid:nu("item")})},overrides:function(t,n){return{type:n.type,ignoreFocus:t.fakeFocus,domModification:{classes:[t.markers.item]}}}})]),Kg=tt([Jt("value"),Jt("items"),Jt("dom"),Jt("components"),dn("eventOrder",{}),Js("menuBehaviours",[md,_f,id,Bg]),mn("movement",{mode:"menu",moveOnTab:!0},qt("mode",{grid:[Fa(),Zu("config",function(t,n){return{mode:"flatgrid",selector:"."+t.markers.item,initSize:{numColumns:n.initSize.numColumns,numRows:n.initSize.numRows},focusManager:t.focusManager}})],matrix:[Zu("config",function(t,n){return{mode:"matrix",selectors:{row:n.rowSelector,cell:"."+t.markers.item},focusManager:t.focusManager}}),Jt("rowSelector")],menu:[dn("moveOnTab",!0),Zu("config",function(t,n){return{mode:"menu",selector:"."+t.markers.item,moveOnTab:n.moveOnTab,focusManager:t.focusManager}})]})),$t("markers",Ma()),dn("fakeFocus",!1),dn("focusManager",zl()),Ku("onHighlight")]),Jg=tt("alloy.menu-focus"),$g=wl({name:"Menu",configFields:Kg(),partFields:qg(),factory:function(t,n,e,o){return{uid:t.uid,dom:t.dom,markers:t.markers,behaviours:Qs(t.menuBehaviours,[md.config({highlightClass:t.markers.selectedItem,itemClass:t.markers.item,onHighlight:t.onHighlight}),_f.config({store:{mode:"memory",initialValue:t.value}}),id.config({find:ft.some}),Bg.config(t.movement.config(t,t.movement))]),events:Jo([Xe(jg(),function(n,e){var t=e.event;n.getSystem().getByDom(t.target).each(function(t){md.highlight(n,t),e.stop(),Ne(n,Jg(),{menu:n,item:t})})}),Xe(Lg(),function(t,n){var e=n.event.item;md.highlight(t,e)})]),components:n,eventOrder:t.eventOrder,domModification:{attributes:{role:"menu"}}}}}),Qg=function(e,o,r,t){return kt(r,t).bind(function(t){return kt(e,t).bind(function(t){var n=Qg(e,o,r,t);return ft.some([t].concat(n))})}).getOr([])},Zg=function(){function a(t){return n(t).bind(Xm)}function e(t){return kt(c.get(),t)}var c=wn({}),i=wn({}),s=wn({}),l=fc(),u=wn({}),n=function(t){return kt(i.get(),t)};return{setMenuBuilt:function(t,n){var e;i.set(st(st({},i.get()),((e={})[t]={type:"prepared",menu:n},e)))},setContents:function(t,n,e,o){l.set(t),c.set(e),i.set(n),u.set(o);var r=function(t,n){var e={};bt(t,function(t,n){dt(t,function(t){e[t]=n})});var o=n,r=qn(n,function(t,n){return{k:t,v:n}}),i=yt(r,function(t,n){return[n].concat(Qg(e,o,r,n))});return yt(e,function(t){return kt(i,t).getOr([t])})}(o,e);s.set(r)},expand:function(e){return kt(c.get(),e).map(function(t){var n=kt(s.get(),e).getOr([]);return[t].concat(n)})},refresh:function(t){return kt(s.get(),t)},collapse:function(t){return kt(s.get(),t).bind(function(t){return 1<t.length?ft.some(t.slice(1)):ft.none()})},lookupMenu:n,lookupItem:e,otherMenus:function(t){var n=u.get();return j(Xn(n),t)},getPrimary:function(){return l.get().bind(a)},getMenus:function(){return i.get()},clear:function(){c.set({}),i.set({}),s.set({}),l.clear()},isClear:function(){return l.get().isNone()},getTriggeringPath:function(t,u){var n=F(e(t).toArray(),function(t){return a(t).isSome()});return kt(s.get(),t).bind(function(t){var e=L(n.concat(t));return function(t){for(var n=[],e=0;e<t.length;e++){var o=t[e];if(!o.isSome())return ft.none();n.push(o.getOrDie())}return ft.some(n)}(z(e,function(t,n){return o=t,r=u,i=e.slice(0,n+1),a(o).bind(function(n){return e=o,wt(c.get(),function(t,n){return t===e}).bind(function(t){return r(t).map(function(t){return{triggeredMenu:n,triggeringItem:t,triggeringPath:i}})});var e}).fold(function(){return Kr(l.get(),t)?[]:[ft.none()]},function(t){return[ft.some(t)]});var o,r,i}))})}}},tp=Xm,np=tt("collapse-item"),ep=xl({name:"TieredMenu",configFields:[Qu("onExecute"),Qu("onEscape"),$u("onOpenMenu"),$u("onOpenSubmenu"),Ku("onRepositionMenu"),Ku("onCollapseMenu"),dn("highlightImmediately",!0),nn("data",[Jt("primary"),Jt("menus"),Jt("expansions")]),dn("fakeFocus",!1),Ku("onHighlight"),Ku("onHover"),Xu(),Jt("dom"),dn("navigateOnHover",!0),dn("stayInDom",!1),Js("tmenuBehaviours",[Bg,md,id,Mg]),dn("eventOrder",{})],apis:{collapseMenu:function(t,n){t.collapseMenu(n)},highlightPrimary:function(t,n){t.highlightPrimary(n)},repositionMenus:function(t,n){t.repositionMenus(n)}},factory:function(a,t){function e(t){var o,r,n=(o=t,r=a.data.primary,yt(a.data.menus,function(t,n){function e(){return $g.sketch(st(st({},t),{value:n,markers:a.markers,fakeFocus:a.fakeFocus,onHighlight:a.onHighlight,focusManager:(a.fakeFocus?Nl:zl)()}))}return n===r?{type:"prepared",menu:o.getSystem().build(e())}:{type:"notbuilt",nbMenu:e}})),e=yt(a.data.menus,function(t,n){return z(t.items,function(t){return"separator"===t.type?[]:[t.data.value]})});return g.setContents(a.data.primary,n,a.data.expansions,e),g.getPrimary()}function c(t){return _f.getValue(t).value}function u(n,t){md.highlight(n,t),md.getHighlighted(t).orThunk(function(){return md.getFirst(t)}).each(function(t){je(n,t.element,Do())})}function s(n,t){return Jr(A(t,function(t){return n.lookupMenu(t).bind(function(t){return"prepared"===t.type?ft.some(t.menu):ft.none()})}))}function l(n,t,e){var o=s(t,t.otherMenus(e));dt(o,function(t){qr(t.element,[a.markers.backgroundMenu]),a.stayInDom||Mg.remove(n,t)})}function f(t,o){var n;bt((n=t,r.get().getOrThunk(function(){var e={},t=F(gs(n.element,"."+a.markers.item),function(t){return"true"===_r(t,"aria-haspopup")});return dt(t,function(t){n.getSystem().getByDom(t).each(function(t){var n=c(t);e[n]=t})}),r.set(e),e})),function(t,n){var e=et(o,n);Or(t.element,"aria-expanded",e)})}function d(o,r,i){return ft.from(i[0]).bind(function(t){return r.lookupMenu(t).bind(function(t){if("notbuilt"===t.type)return ft.none();var n=t.menu,e=s(r,i.slice(1));return dt(e,function(t){Ur(t.element,a.markers.backgroundMenu)}),du(n.element)||Mg.append(o,yu(n)),qr(n.element,[a.markers.backgroundMenu]),u(o,n),l(o,r,i),ft.some(n)})})}var m,n,r=fc(),g=Zg();function i(r,i,u){if(void 0===u&&(u=m.HighlightSubmenu),i.hasConfigured(fd)&&fd.isDisabled(i))return ft.some(i);var t=c(i);return g.expand(t).bind(function(o){return f(r,o),ft.from(o[0]).bind(function(e){return g.lookupMenu(e).bind(function(t){var n=function(t,n,e){if("notbuilt"!==e.type)return e.menu;var o=t.getSystem().build(e.nbMenu());return g.setMenuBuilt(n,o),o}(r,e,t);return du(n.element)||Mg.append(r,yu(n)),a.onOpenSubmenu(r,i,n,L(o)),u===m.HighlightSubmenu?(md.highlightFirst(n),d(r,g,o)):(md.dehighlightAll(n),ft.some(i))})})})}function o(n,e){var t=c(e);return g.collapse(t).bind(function(t){return f(n,t),d(n,g,t).map(function(t){return a.onCollapseMenu(n,e,t),t})})}function p(e){return function(n,t){return Iu(t.getSource(),"."+a.markers.item).bind(function(t){return n.getSystem().getByDom(t).toOptional().bind(function(t){return e(n,t).map(_)})})}}function h(t){return md.getHighlighted(t).bind(md.getHighlighted)}(n=m={})[n.HighlightSubmenu=0]="HighlightSubmenu",n[n.HighlightParent=1]="HighlightParent";var v=Jo([Xe(Jg(),function(e,o){var t=o.event.item;g.lookupItem(c(t)).each(function(){var t=o.event.menu;md.highlight(e,t);var n=c(o.event.item);g.refresh(n).each(function(t){return l(e,g,t)})})}),tr(function(n,t){var e=t.event.target;n.getSystem().getByDom(e).each(function(t){0===c(t).indexOf("collapse-item")&&o(n,t),i(n,t,m.HighlightSubmenu).fold(function(){a.onExecute(n,t)},ct)})}),$o(function(n,t){e(n).each(function(t){Mg.append(n,yu(t)),a.onOpenMenu(n,t),a.highlightImmediately&&u(n,t)})})].concat(a.navigateOnHover?[Xe(Lg(),function(t,n){var e=n.event.item,o=t,r=c(e);g.refresh(r).bind(function(t){return f(o,t),d(o,g,t)}),i(t,e,m.HighlightParent),a.onHover(t,e)})]:[])),b={collapseMenu:function(n){h(n).each(function(t){o(n,t)})},highlightPrimary:function(n){g.getPrimary().each(function(t){u(n,t)})},repositionMenus:function(o){g.getPrimary().bind(function(n){return h(o).bind(function(t){var n=c(t),e=Jr(A(St(g.getMenus()),tp));return g.getTriggeringPath(n,function(t){return n=t,q(e,function(t){return t.getSystem().isConnected()?V(md.getCandidates(t),function(t){return c(t)===n}):ft.none()});var n})}).map(function(t){return{primary:n,triggeringPath:t}})}).fold(function(){ft.from(o.components()[0]).filter(function(t){return"menu"===_r(t.element,"role")}).each(function(t){a.onRepositionMenu(o,t,[])})},function(t){var n=t.primary,e=t.triggeringPath;a.onRepositionMenu(o,n,e)})}};return{uid:a.uid,dom:a.dom,markers:a.markers,behaviours:Qs(a.tmenuBehaviours,[Bg.config({mode:"special",onRight:p(function(t,n){return Sl(n.element)?ft.none():i(t,n,m.HighlightSubmenu)}),onLeft:p(function(t,n){return Sl(n.element)?ft.none():o(t,n)}),onEscape:p(function(t,n){return o(t,n).orThunk(function(){return a.onEscape(t,n).map(function(){return t})})}),focusIn:function(n,t){g.getPrimary().each(function(t){je(n,t.element,Do())})}}),md.config({highlightClass:a.markers.selectedMenu,itemClass:a.markers.menu}),id.config({find:function(t){return md.getHighlighted(t)}}),Mg.config({})]),eventOrder:a.eventOrder,apis:b,events:v}},extraApis:{tieredData:function(t,n,e){return{primary:t,menus:n,expansions:e}},singleData:function(t,n){return{primary:t,menus:Ae(t,n),expansions:{}}},collapseItem:function(t){return{value:Ar(np()),meta:{text:t}}}}}),op=xl({name:"InlineView",configFields:[Jt("lazySink"),Ku("onShow"),Ku("onHide"),sn("onEscape"),Js("inlineBehaviours",[pf,_f,oc]),fn("fireDismissalEventInstead",[dn("event",Lo())]),fn("fireRepositionEventInstead",[dn("event",jo())]),dn("getRelated",ft.none),dn("isExtraPart",O),dn("eventOrder",ft.none)],factory:function(d,t){function n(e){pf.isOpen(e)&&_f.getValue(e).each(function(t){switch(t.mode){case"menu":pf.getState(e).each(ep.repositionMenus);break;case"position":var n=d.lazySink(e).getOrDie();cf.positionWithinBounds(n,e,t.config,t.getBounds())}})}function o(t,n,e,o){i(t,n,e,function(){return o.map(Ai)})}function r(t,n,e,o){var r,i,u,a,c,s=(r=d,i=t,u=n,a=o,c="horizontal"===e.type?{layouts:{onLtr:ha,onRtl:va}}:{},ep.sketch({dom:{tag:"div"},data:e.data,markers:e.menu.markers,highlightImmediately:e.menu.highlightImmediately,onEscape:function(){return pf.close(i),r.onEscape.map(function(t){return t(i)}),ft.some(!0)},onExecute:function(){return ft.some(!0)},onOpenMenu:function(t,n){cf.positionWithinBounds(l().getOrDie(),n,u,a())},onOpenSubmenu:function(t,n,e,o){var r=l().getOrDie();cf.position(r,e,{anchor:st({type:"submenu",item:n},f(o))})},onRepositionMenu:function(t,n,e){var o=l().getOrDie();cf.positionWithinBounds(o,n,u,a()),dt(e,function(t){var n=f(t.triggeringPath);cf.position(o,t.triggeredMenu,{anchor:st({type:"submenu",item:t.triggeringItem},n)})})}}));function l(){return r.lazySink(i)}function f(t){return 2===t.length?c:{}}pf.open(t,s),_f.setValue(t,ft.some({mode:"menu",menu:s}))}var i=function(t,n,e,o){var r=d.lazySink(t).getOrDie();pf.openWhileCloaked(t,n,function(){return cf.positionWithinBounds(r,t,e,o())}),_f.setValue(t,ft.some({mode:"position",config:e,getBounds:o}))},e={setContent:function(t,n){pf.setContent(t,n)},showAt:function(t,n,e){o(t,n,e,ft.none())},showWithin:o,showWithinBounds:i,showMenuAt:function(t,n,e){r(t,n,e,ft.none)},showMenuWithinBounds:r,hide:function(t){pf.isOpen(t)&&(_f.setValue(t,ft.none()),pf.close(t))},getContent:function(t){return pf.getState(t)},reposition:n,isOpen:pf.isOpen};return{uid:d.uid,dom:d.dom,behaviours:Qs(d.inlineBehaviours,[pf.config({isPartOf:function(t,n,e){return Hu(n,e)||(o=e,d.getRelated(t).exists(function(t){return Hu(t,o)}));var o},getAttachPoint:function(t){return d.lazySink(t).getOrDie()},onOpen:function(t){d.onShow(t)},onClose:function(t){d.onHide(t)}}),_f.config({store:{mode:"memory",initialValue:ft.none()}}),oc.config({channels:st(st({},Ws(st({isExtraPart:t.isExtraPart},d.fireDismissalEventInstead.map(function(t){return{fireEventInstead:{event:t.event}}}).getOr({})))),Us(st(st({},d.fireRepositionEventInstead.map(function(t){return{fireEventInstead:{event:t.event}}}).getOr({})),{doReposition:n})))})]),eventOrder:d.eventOrder,apis:e}},apis:{showAt:function(t,n,e,o){t.showAt(n,e,o)},showWithin:function(t,n,e,o,r){t.showWithin(n,e,o,r)},showWithinBounds:function(t,n,e,o,r){t.showWithinBounds(n,e,o,r)},showMenuAt:function(t,n,e,o){t.showMenuAt(n,e,o)},showMenuWithinBounds:function(t,n,e,o,r){t.showMenuWithinBounds(n,e,o,r)},hide:function(t,n){t.hide(n)},isOpen:function(t,n){return t.isOpen(n)},getContent:function(t,n){return t.getContent(n)},setContent:function(t,n,e){t.setContent(n,e)},reposition:function(t,n){t.reposition(n)}}}),rp="layout-inset",ip=function(t,n,e){return na(Sm(t,n),t.y,e.insetNorth(),za(),"north",ra(t,{top:2}),rp)},up=function(t,n,e){return na(Sm(t,n),Cm(t,n),e.insetSouth(),Na(),"south",ra(t,{bottom:3}),rp)},ap=tinymce.util.Tools.resolve("tinymce.util.Delay"),cp=xl({name:"Button",factory:function(t){function e(n){return kt(t.dom,"attributes").bind(function(t){return kt(t,n)})}var n=ym(t.action),o=t.dom.tag;return{uid:t.uid,dom:t.dom,components:t.components,events:n,behaviours:Ef(t.buttonBehaviours,[Rg.config({}),Bg.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==o)return{role:e("role").getOr("button")};var t=e("type").getOr("button"),n=e("role").map(function(t){return{role:t}}).getOr({});return st({type:t},n)}()},eventOrder:t.eventOrder}},configFields:[dn("uid",void 0),Jt("dom"),dn("components",[]),Tf("buttonBehaviours",[Rg,Bg]),rn("action"),rn("role"),dn("eventOrder",{})]}),sp=tinymce.util.Tools.resolve("tinymce.util.I18n"),lp={indent:!0,outdent:!0,"table-insert-column-after":!0,"table-insert-column-before":!0,"paste-column-after":!0,"paste-column-before":!0,"unordered-list":!0,"list-bull-circle":!0,"list-bull-default":!0,"list-bull-square":!0},fp="temporary-placeholder",dp={success:"checkmark",error:"warning",err:"error",warning:"warning",warn:"warning",info:"info"},mp=xl({name:"Notification",factory:function(n){function e(t){return{dom:{tag:"div",classes:["tox-bar"],attributes:{style:"width: "+t+"%"}}}}function o(t){return{dom:{tag:"div",classes:["tox-text"],innerHtml:t+"%"}}}var t,r,i,u,a=Vm({dom:{tag:"p",innerHtml:n.translationProvider(n.text)},behaviours:Za([Mg.config({})])}),c=Vm({dom:{tag:"div",classes:n.progress?["tox-progress-bar","tox-progress-indicator"]:["tox-progress-bar"]},components:[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(0)]},o(0)],behaviours:Za([Mg.config({})])}),s={updateProgress:function(t,n){t.getSystem().isConnected()&&c.getOpt(t).each(function(t){Mg.set(t,[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(n)]},o(n)])})},updateText:function(t,n){var e;t.getSystem().isConnected()&&(e=a.get(t),Mg.set(e,[pi(n)]))}},l=lt([n.icon.toArray(),n.level.toArray(),n.level.bind(function(t){return ft.from(dp[t])}).toArray()]),f=Vm(cp.sketch({dom:{tag:"button",classes:["tox-notification__dismiss","tox-button","tox-button--naked","tox-button--icon"]},components:[Wm("close",{tag:"div",classes:["tox-icon"],attributes:{"aria-label":n.translationProvider("Close")}},n.iconProvider)],action:function(t){n.onAction(t)}})),d=[(t=l,r={tag:"div",classes:["tox-notification__icon"]},i=n.iconProvider,u=i(),jm(r,V(t,function(t){return Kn(u,Hm(t,u))}).getOr(fp),u,ft.none())),{dom:{tag:"div",classes:["tox-notification__body"]},components:[a.asSpec()],behaviours:Za([Mg.config({})])}];return{uid:n.uid,dom:{tag:"div",attributes:{role:"alert"},classes:n.level.map(function(t){return["tox-notification","tox-notification--in","tox-notification--"+t]}).getOr(["tox-notification","tox-notification--in"])},behaviours:Za([Rg.config({}),lm("notification-events",[Xe(fo(),function(t){f.getOpt(t).each(Rg.focus)})])]),components:d.concat(n.progress?[c.asSpec()]:[]).concat(n.closeButton?[f.asSpec()]:[]),apis:s}},configFields:[rn("level"),Jt("progress"),Jt("icon"),Jt("onAction"),Jt("text"),Jt("iconProvider"),Jt("translationProvider"),vn("closeButton",!0)],apis:{updateProgress:function(t,n,e){t.updateProgress(n,e)},updateText:function(t,n,e){t.updateText(n,e)}}});function gp(e,o){function r(){b(i)||(clearTimeout(i),i=null)}var i=null;return{cancel:r,throttle:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];r(),i=setTimeout(function(){i=null,e.apply(null,t)},o)}}}function pp(o,t,n,e,r){var i=Tp(o,function(t){return(n=o).isBlock(e=t)||et(["BR","IMG","HR","INPUT"],e.nodeName)||"false"===n.getContentEditable(e);var n,e});return ft.from(i.backwards(t,n,e,r))}function hp(e,n){return Ep(de.fromDom(e.selection.getNode())).getOrThunk(function(){var i,u,t=de.fromHtml('<span data-mce-autocompleter="1" data-mce-bogus="1"></span>',e.getDoc());return Gi(t,de.fromDom(n.extractContents())),n.insertNode(t.dom),ar(t).each(function(t){return t.dom.normalize()}),i=ms,(u=function(t){for(var n=sr(t),e=n.length-1;0<=e;e--){var o=n[e];if(i(o))return ft.some(o);var r=u(o);if(r.isSome())return r}return ft.none()})(t).map(function(t){var n;e.selection.setCursorLocation(t.dom,"img"===nr(n=t)?1:ds(n).fold(function(){return sr(n).length},function(t){return t.length}))}),t})}function vp(t){return t.toString().replace(/\u00A0/g," ").replace(/\uFEFF/g,"")}function bp(t){return""!==t&&-1!==" \xa0\f\n\r\t\v".indexOf(t)}function yp(t,n){return t.substring(n.length)}function xp(o,t,r,n){return void 0===n&&(n=0),Ep(de.fromDom(t.startContainer)).fold(function(){return function(t,o,i,r){if(void 0===r&&(r=0),!o.collapsed||3!==o.startContainer.nodeType)return ft.none();var n=t.getParent(o.startContainer,t.isBlock)||t.getRoot();return pp(t,o.startContainer,o.startOffset,function(t,r,n){return function(t,n){for(var e=r-1;0<=e;e--){var o=t.charAt(e);if(bp(o))return ft.none();if(o===n)break}return ft.some(e)}(n,i).getOr(r)},n).bind(function(t){var n=o.cloneRange();if(n.setStart(t.container,t.offset),n.setEnd(o.endContainer,o.endOffset),n.collapsed)return ft.none();var e=vp(n);return 0!==e.lastIndexOf(i)||yp(e,i).length<r?ft.none():ft.some({text:yp(e,i),range:n,triggerChar:i})})}(o,t,r,n)},function(t){var n=o.createRng();n.selectNode(t.dom);var e=vp(n);return ft.some({range:n,text:yp(e,r),triggerChar:r})})}function wp(t,n){return{container:t,offset:n}}function Sp(t){return Gt("toolbarbutton",Vp,t)}function kp(t){return Gt("ToggleButton",Hp,t)}function Cp(n,t,e,o){void 0===o&&(o={});var r=t(),i=n.selection.getRng().startContainer.nodeValue,u=F(r.lookupByChar(e.triggerChar),function(t){return e.text.length>=t.minChars&&t.matches.getOrThunk(function(){return e=n.dom,function(t){var n=Ap(t.startContainer,t.startOffset);return!pp(e,n.container,n.offset,function(t,n){return 0===n?-1:n},e.getRoot()).filter(function(t){return!bp(t.container.data.charAt(t.offset-1))}).isSome()};var e})(e.range,i,e.text)});if(0===u.length)return ft.none();var a=Dp.all(A(u,function(n){return n.fetch(e.text,n.maxResults,o).then(function(t){return{matchText:e.text,items:t,columns:n.columns,onAction:n.onAction,highlightOn:n.highlightOn}})}));return ft.some({lookupData:a,context:e})}var Op,_p,Tp=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker"),Ep=function(t){return Iu(t,"[data-mce-autocompleter]")},Dp=tinymce.util.Tools.resolve("tinymce.util.Promise"),Bp=function(t){if(3===t.nodeType)return wp(t,t.data.length);var n=t.childNodes;return 0<n.length?Bp(n[n.length-1]):wp(t,n.length)},Ap=function(t,n){var e=t.childNodes;return 0<e.length&&n<e.length?Ap(e[n],0):0<e.length&&1===t.nodeType&&e.length===n?Bp(e[e.length-1]):wp(t,n)},Mp=te([Qt("type"),cn("text")]),Fp=te([dn("type","autocompleteitem"),dn("active",!1),dn("disabled",!1),dn("meta",{}),Qt("value"),cn("text"),cn("icon")]),Ip=te([Qt("type"),Qt("ch"),gn("minChars",1),dn("columns",1),gn("maxResults",10),sn("matches"),tn("fetch"),tn("onAction"),yn("highlightOn",[],re)]),Rp=[vn("disabled",!1),cn("tooltip"),cn("icon"),cn("text"),bn("onSetup",function(){return ct})],Vp=te([Qt("type"),tn("onAction")].concat(Rp)),Pp=[vn("active",!1)].concat(Rp),Hp=te(Pp.concat([Qt("type"),tn("onAction")])),zp=[bn("predicate",O),hn("scope","node",["node","editor"]),hn("position","selection",["node","selection","line"])],Np=Rp.concat([dn("type","contextformbutton"),dn("primary",!1),tn("onAction"),fe("original",h)]),Lp=Pp.concat([dn("type","contextformbutton"),dn("primary",!1),tn("onAction"),fe("original",h)]),jp=Rp.concat([dn("type","contextformbutton")]),Wp=Pp.concat([dn("type","contextformtogglebutton")]),Up=qt("type",{contextformbutton:Np,contextformtogglebutton:Lp}),Gp=te([dn("type","contextform"),bn("initValue",tt("")),cn("label"),on("commands",Up),un("launch",qt("type",{contextformbutton:jp,contextformtogglebutton:Wp}))].concat(zp)),Xp=te([dn("type","contexttoolbar"),Qt("items")].concat(zp));function Yp(t){return kt(kh,t).getOr(xh)}function qp(t){return{backgroundMenu:"tox-background-menu",selectedMenu:"tox-selected-menu",selectedItem:"tox-collection__item--active",hasIcons:"tox-menu--has-icons",menu:"color"===t?"tox-swatches":"tox-menu",tieredMenu:"tox-tiered-menu"}}function Kp(t){var n=qp(t);return{backgroundMenu:n.backgroundMenu,selectedMenu:n.selectedMenu,menu:n.menu,selectedItem:n.selectedItem,item:Yp(t)}}function Jp(t,n,e){return{dom:{tag:"div",classes:lt([[qp(e).tieredMenu]])},markers:Kp(e)}}function $p(n,e){return function(t){return A(B(t,e),function(t){return{dom:n,components:t}})}}function Qp(t,e){var o=[],r=[];return dt(t,function(t,n){e(t,n)?(0<r.length&&o.push(r),r=[],Kn(t.dom,"innerHtml")&&r.push(t)):r.push(t)}),0<r.length&&o.push(r),A(o,function(t){return{dom:{tag:"div",classes:["tox-collection__group"]},components:t}})}function Zp(n,e){return{dom:{tag:"div",classes:["tox-menu","tox-collection"].concat(1===n?["tox-collection--list"]:["tox-collection--grid"])},components:[$g.parts.items({preprocess:function(t){return"auto"!==n&&1<n?$p({tag:"div",classes:["tox-collection__group"]},n)(t):Qp(t,function(t,n){return"separator"===e[n].type})}})]}}function th(t){return T(t,function(t){return"icon"in t&&void 0!==t.icon})}function nh(t){return console.error(se(t)),console.log(t),ft.none()}function eh(t,n,e,o,r){var i,u=(i=e,{dom:{tag:"div",classes:["tox-collection","tox-collection--horizontal"]},components:[$g.parts.items({preprocess:function(t){return Qp(t,function(t,n){return"separator"===i[n].type})}})]});return{value:t,dom:u.dom,components:u.components,items:e}}function oh(t,n,e,o,r){var i,u;return"color"===r?{value:t,dom:(i={dom:{tag:"div",classes:["tox-menu","tox-swatches-menu"]},components:[{dom:{tag:"div",classes:["tox-swatches"]},components:[$g.parts.items({preprocess:"auto"!==o?$p({tag:"div",classes:["tox-swatches__row"]},o):h})]}]}).dom,components:i.components,items:e}:"normal"===r&&"auto"===o?{value:t,dom:(i=Zp(o,e)).dom,components:i.components,items:e}:"normal"===r&&1===o?{value:t,dom:(i=Zp(1,e)).dom,components:i.components,items:e}:"normal"===r?{value:t,dom:(i=Zp(o,e)).dom,components:i.components,items:e}:"listpreview"!==r||"auto"===o?{value:t,dom:{tag:"div",classes:lt([[(u=qp(r)).menu,"tox-menu-"+o+"-column"],n?[u.hasIcons]:[]])},components:Ah,items:e}:{value:t,dom:(i={dom:{tag:"div",classes:["tox-menu","tox-collection","tox-collection--toolbar","tox-collection--toolbar-lg"]},components:[$g.parts.items({preprocess:$p({tag:"div",classes:["tox-collection__group"]},o)})]}).dom,components:i.components,items:e}}function rh(t,o,n){var r=gs(t.element,"."+n);if(0<r.length){var e=P(r,function(t){var n=t.dom.getBoundingClientRect().top,e=r[0].dom.getBoundingClientRect().top;return Math.abs(n-e)>o}).getOr(r.length);return ft.some({numColumns:e,numRows:Math.ceil(r.length/e)})}return ft.none()}function ih(t,n,e){t.getSystem().broadcastOn([Yh],{})}function uh(t){return t.getParam("height",Math.max(t.getElement().offsetHeight,200))}function ah(t){return t.getParam("width",Zh.DOM.getStyle(t.getElement(),"width"))}function ch(t){return ft.from(t.getParam("min_width")).filter(u)}function sh(t){return ft.from(t.getParam("min_height")).filter(u)}function lh(t){return ft.from(t.getParam("max_width")).filter(u)}function fh(t){return ft.from(t.getParam("max_height")).filter(u)}function dh(t){return!1!==t.getParam("menubar",!0,"boolean")}function mh(t){var n=t.getParam("toolbar",!0),e=!0===n,o=y(n),r=c(n)&&0<n.length;return!nv(t)&&(r||o||e)}function gh(n){var t=F(D(9,function(t){return n.getParam("toolbar"+(t+1),!1,"string")}),function(t){return"string"==typeof t});return 0<t.length?ft.some(t):ft.none()}(_p=Op={})[_p.CLOSE_ON_EXECUTE=0]="CLOSE_ON_EXECUTE",_p[_p.BUBBLE_TO_SANDBOX=1]="BUBBLE_TO_SANDBOX";var ph,hh,vh,bh,yh=Op,xh="tox-menu-nav__js",wh="tox-collection__item",Sh="tox-swatch",kh={normal:xh,color:Sh},Ch="tox-collection__item--enabled",Oh="tox-collection__item-icon",_h="tox-collection__item-label",Th="tox-collection__item-caret",Eh="tox-collection__item--active",Dh="tox-collection__item-container",Bh="tox-collection__item-container--row",Ah=[$g.parts.items({})],Mh=[Qt("type"),Qt("src"),cn("alt"),yn("classes",[],re)],Fh=te(Mh),Ih=[Qt("type"),Qt("text"),cn("name"),yn("classes",["tox-collection__item-label"],re)],Rh=te(Ih),Vh=Pt(function(){return jt("type",{cardimage:Fh,cardtext:Rh,cardcontainer:Ph})}),Ph=te([Qt("type"),pn("direction","horizontal"),pn("align","left"),pn("valign","middle"),on("items",Vh)]),Hh=[vn("disabled",!1),cn("text"),cn("shortcut"),le("value","value",Et(function(){return Ar("menuitem-value")}),ee()),dn("meta",{})],zh=te([Qt("type"),cn("label"),on("items",Vh),bn("onSetup",function(){return ct}),bn("onAction",ct)].concat(Hh)),Nh=te([Qt("type"),vn("active",!1),cn("icon")].concat(Hh)),Lh=[Qt("type"),Qt("fancytype"),bn("onAction",ct)],jh=qt("fancytype",{inserttable:[dn("initData",{})].concat(Lh),colorswatch:[xn("initData",{},[vn("allowCustomColors",!0),ln("colors",ee())])].concat(Lh)}),Wh=te([Qt("type"),bn("onSetup",function(){return ct}),bn("onAction",ct),cn("icon")].concat(Hh)),Uh=te([Qt("type"),tn("getSubmenuItems"),bn("onSetup",function(){return ct}),cn("icon")].concat(Hh)),Gh=te([Qt("type"),cn("icon"),vn("active",!1),bn("onSetup",function(){return ct}),tn("onAction")].concat(Hh)),Xh=function(t){return n=Ar("unnamed-events"),Za([lm(n,t)]);var n},Yh=Ar("tooltip.exclusive"),qh=Ar("tooltip.show"),Kh=Ar("tooltip.hide"),Jh=Object.freeze({__proto__:null,hideAllExclusive:ih,setComponents:function(t,n,e,o){e.getTooltip().each(function(t){t.getSystem().isConnected()&&Mg.set(t,o)})}}),$h=Object.freeze({__proto__:null,events:function(r,i){function e(n){i.getTooltip().each(function(t){Rs(t),r.onHide(n,t),i.clearTooltip()}),i.clearTimer()}return Jo(lt([[Xe(qh,function(o){i.resetTimer(function(){var t,n,e=o;i.isShowing()||(ih(e),t=r.lazySink(e).getOrDie(),n=e.getSystem().build({dom:r.tooltipDom,components:r.tooltipComponents,events:Jo("normal"===r.mode?[Xe(lo(),function(t){ze(e,qh)}),Xe(co(),function(t){ze(e,Kh)})]:[]),behaviours:Za([Mg.config({})])}),i.setTooltip(n),Fs(t,n),r.onShow(e,n),cf.position(t,n,{anchor:r.anchor(e)}))},r.delay)}),Xe(Kh,function(t){i.resetTimer(function(){e(t)},r.delay)}),Xe(To(),function(t,n){n.universal||et(n.channels,Yh)&&e(t)}),Qo(function(t){e(t)})],"normal"===r.mode?[Xe(fo(),function(t){ze(t,qh)}),Xe(Oo(),function(t){ze(t,Kh)}),Xe(lo(),function(t){ze(t,qh)}),Xe(co(),function(t){ze(t,Kh)})]:[Xe(Yo(),function(t,n){ze(t,qh)}),Xe(qo(),function(t){ze(t,Kh)})]]))}}),Qh=xa({fields:[Jt("lazySink"),Jt("tooltipDom"),dn("exclusive",!0),dn("tooltipComponents",[]),dn("delay",300),hn("mode","normal",["normal","follow-highlight"]),dn("anchor",function(t){return{type:"hotspot",hotspot:t,layouts:{onLtr:tt([Ka,qa,Ua,Xa,Ga,Ya]),onRtl:tt([Ka,qa,Ua,Xa,Ga,Ya])}}}),Ku("onHide"),Ku("onShow")],name:"tooltipping",active:$h,state:Object.freeze({__proto__:null,init:function(){function e(){o.on(clearTimeout)}var o=fc(),t=fc(),n=tt("not-implemented");return au({getTooltip:t.get,isShowing:t.isSet,setTooltip:t.set,clearTooltip:t.clear,clearTimer:e,resetTimer:function(t,n){e(),o.set(setTimeout(t,n))},readState:n})}}),apis:Jh}),Zh=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),tv=tinymce.util.Tools.resolve("tinymce.EditorManager"),nv=function(t){return gh(t).fold(function(){return 0<t.getParam("toolbar",[],"string[]").length},_)};function ev(t){return t.getParam("toolbar_mode","","string")}function ov(t){return t.getParam("toolbar_location",vh.auto,"string")}function rv(t){return ov(t)===vh.bottom}function iv(t){if(!t.inline)return ft.none();var n=t.getParam("fixed_toolbar_container","","string");if(0<n.length)return Fu(mu(),n);var e=t.getParam("fixed_toolbar_container_target");return f(e)?ft.some(de.fromDom(e)):ft.none()}function uv(t){return t.inline&&iv(t).isSome()}function av(t){return iv(t).getOrThunk(function(){return gr(ji(de.fromDom(t.getElement())))})}function cv(t){return t.inline&&!dh(t)&&!mh(t)&&!nv(t)}function sv(t){return(t.getParam("toolbar_sticky",!1,"boolean")||t.inline)&&!uv(t)&&!cv(t)}function lv(t,n){var e=t.outerContainer.element;n&&(t.mothership.broadcastOn([hf()],{target:e}),t.uiMothership.broadcastOn([hf()],{target:e})),t.mothership.broadcastOn([Xv],{readonly:n}),t.uiMothership.broadcastOn([Xv],{readonly:n})}function fv(t,n){t.on("init",function(){t.mode.isReadOnly()&&lv(n,!0)}),t.on("SwitchMode",function(){return lv(n,t.mode.isReadOnly())}),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly")}function dv(){var t;return oc.config({channels:((t={})[Xv]={schema:Yv,onReceive:function(t,n){fd.set(t,n.readonly)}},t)})}function mv(t,n){var e=t.getApi(n);return function(t){t(e)}}function gv(e,o){return $o(function(t){mv(e,t)(function(t){var n=e.onSetup(t);m(n)&&o.set(n)})})}function pv(n,e){return Qo(function(t){return mv(n,t)(e.get())})}function hv(t,n,e,o){var r,i,u=wn(ct);return{type:"item",dom:n.dom,components:$v(n.optComponents),data:t.data,eventOrder:Jv,hasSubmenu:t.triggersSubmenu,itemBehaviours:Za([lm("item-events",[(r=t,i=e,tr(function(t,n){mv(r,t)(r.onAction),r.triggersSubmenu||i!==yh.CLOSE_ON_EXECUTE||(ze(t,Mo()),n.stop())})),gv(t,u),pv(t,u)]),fd.config({disabled:function(){return t.disabled||o.isDisabled()},disableClass:"tox-collection__item--state-disabled"}),dv(),Mg.config({})].concat(t.itemBehaviours))}}function vv(t){return{value:t.value,meta:st({text:t.text.getOr("")},t.meta)}}function bv(t,n,e){return Wm(t,{tag:"div",classes:e=void 0===e?[Oh]:e},n)}function yv(t){return{dom:{tag:"div",classes:[_h]},components:[pi(sp.translate(t))]}}function xv(t,n){return{dom:{tag:"div",classes:n,innerHtml:t}}}function wv(t,n){return{dom:{tag:"div",classes:[_h]},components:[{dom:{tag:t.tag,styles:t.styles},components:[pi(sp.translate(n))]}]}}function Sv(t){return{dom:{tag:"div",classes:["tox-collection__item-accessory"],innerHtml:(e=Qv.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl",access:"Shift+Alt"},n=A(t.split("+"),function(t){var n=t.toLowerCase().trim();return Kn(e,n)?e[n]:t}),Qv.mac?n.join(""):n.join("+"))}};var e,n}function kv(t){return bv("checkmark",t,["tox-collection__item-checkmark"])}function Cv(t){var n=t.map(function(t){return{attributes:{title:sp.translate(t)}}}).getOr({});return st({tag:"div",classes:[xh,wh]},n)}function Ov(t,n,e,o){return void 0===o&&(o=ft.none()),"color"===t.presets?(r=n,i=o,c=t.ariaLabel,s=t.value,{dom:(u=t.iconContent.map(function(t){return n=r.icons,e=i,zm(t,o=n()).or(e).getOrThunk(Pm(o));var n,e,o}).getOr(""),a={tag:"div",attributes:c.map(function(t){return{title:r.translate(t)}}).getOr({}),classes:["tox-swatch"]},st(st({},a),"custom"===s?{tag:"button",classes:H(H([],a.classes),["tox-swatches__picker-btn"]),innerHtml:u}:"remove"===s?{classes:H(H([],a.classes),["tox-swatch--remove"]),innerHtml:u}:{attributes:st(st({},a.attributes),{"data-mce-color":s}),styles:{"background-color":s}})),optComponents:[]}):(l=t,f=n,d=o,m={tag:"div",classes:[Oh]},g=e?l.iconContent.map(function(t){return Wm(t,m,f.icons,d)}).orThunk(function(){return ft.some({dom:m})}):ft.none(),p=l.checkMark,h=ft.from(l.meta).fold(function(){return yv},function(t){return Kn(t,"style")?S(wv,t.style):yv}),v=l.htmlContent.fold(function(){return l.textContent.map(h)},function(t){return ft.some(xv(t,[_h]))}),{dom:Cv(l.ariaLabel),optComponents:[g,v,l.shortcutContent.map(Sv),p,l.caret]});var r,i,u,a,c,s,l,f,d,m,g,p,h,v}function _v(t,n){return kt(t,"tooltipWorker").map(function(e){return[Qh.config({lazySink:n.getSink,tooltipDom:{tag:"div",classes:["tox-tooltip-worker-container"]},tooltipComponents:[],anchor:function(t){return{type:"submenu",item:t,overrides:{maxHeightFunction:Fc}}},mode:"follow-highlight",onShow:function(n,t){e(function(t){Qh.setComponents(n,[hu({element:de.fromDom(t)})])})}})]}).getOr([])}function Tv(t,n){var e=sp.translate(t),o=Zh.DOM.encode(e);if(0<n.length){var r=new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");return o.replace(r,function(t){return'<span class="tox-autocompleter-highlight">'+t+"</span>"})}return o}function Ev(t){return{value:t}}function Dv(t){return nb.test(t)||eb.test(t)}function Bv(t){var n=t.toString(16);return(1===n.length?"0"+n:n).toUpperCase()}function Av(t){return Ev(Bv(t.red)+Bv(t.green)+Bv(t.blue))}function Mv(t,n,e,o){return{red:t,green:n,blue:e,alpha:o}}function Fv(t){var n=parseInt(t,10);return n.toString()===t&&0<=n&&n<=255}function Iv(t){var n,e,o,r=(t.hue||0)%360,i=t.saturation/100,u=t.value/100,i=rb(0,ob(i,1)),u=rb(0,ob(u,1));if(0===i)return Mv(n=e=o=ib(255*u),e,o,1);var a=r/60,c=u*i,s=c*(1-Math.abs(a%2-1)),l=u-c;switch(Math.floor(a)){case 0:n=c,e=s,o=0;break;case 1:n=s,e=c,o=0;break;case 2:n=0,e=c,o=s;break;case 3:n=0,e=s,o=c;break;case 4:n=s,e=0,o=c;break;case 5:n=c,e=0,o=s;break;default:n=e=o=0}return Mv(n=ib(255*(n+l)),e=ib(255*(e+l)),o=ib(255*(o+l)),1)}function Rv(t){var n,e,o=(n={value:t.value.replace(nb,function(t,n,e,o){return n+n+e+e+o+o})},null===(e=eb.exec(n.value))?["FFFFFF","FF","FF","FF"]:e);return Mv(parseInt(o[1],16),parseInt(o[2],16),parseInt(o[3],16),1)}function Vv(t,n,e,o){return Mv(parseInt(t,10),parseInt(n,10),parseInt(e,10),parseFloat(o))}function Pv(t){if("transparent"===t)return ft.some(Mv(0,0,0,0));var n=ub.exec(t);if(null!==n)return ft.some(Vv(n[1],n[2],n[3],"1"));var e=ab.exec(t);return null!==e?ft.some(Vv(e[1],e[2],e[3],e[4])):ft.none()}function Hv(t){return"rgba("+t.red+","+t.green+","+t.blue+","+t.alpha+")"}function zv(t,n){return t.fire("ResizeContent",n)}function Nv(t,n,e){return{hue:t,saturation:n,value:e}}function Lv(t){var n,e,o=0,r=t.red/255,i=t.green/255,u=t.blue/255,a=Math.min(r,Math.min(i,u)),c=Math.max(r,Math.max(i,u));return a===c?Nv(0,0,100*(o=a)):(e=60*((r===a?3:u===a?1:5)-(r===a?i-u:u===a?r-i:u-r)/(c-a)),n=(c-a)/c,o=c,Nv(Math.round(e),Math.round(100*n),Math.round(100*o)))}function jv(t){return Av(Iv(t))}function Wv(o){return(Dv(n=o)?ft.some({value:(pe(t=n,"#")?t.substring("#".length):t).toUpperCase()}):ft.none()).orThunk(function(){return Pv(o).map(Av)}).getOrThunk(function(){var t=document.createElement("canvas");t.height=1,t.width=1;var n=t.getContext("2d");n.clearRect(0,0,t.width,t.height),n.fillStyle="#FFFFFF",n.fillStyle=o,n.fillRect(0,0,1,1);var e=n.getImageData(0,0,1,1).data;return Av(Mv(e[0],e[1],e[2],e[3]))});var t,n}(hh=ph=ph||{}).default="wrap",hh.floating="floating",hh.sliding="sliding",hh.scrolling="scrolling",(bh=vh=vh||{}).auto="auto",bh.top="top",bh.bottom="bottom";function Uv(t){return fd.config({disabled:t,disableClass:"tox-tbtn--disabled"})}var Gv,Xv="silver.readonly",Yv=te([$t("readonly",ie)]),qv=function(t){return fd.config({disabled:t})},Kv=function(t){return fd.config({disabled:t,disableClass:"tox-tbtn--disabled",useNative:!1})},Jv=((Gv={})[Eo()]=["disabling","alloy.base.behaviour","toggling","item-events"],Gv),$v=Jr,Qv=tinymce.util.Tools.resolve("tinymce.Env"),Zv=function(t,a){return A(t,function(t){switch(t.type){case"cardcontainer":return r=Zv((o=t).items,a),i="vertical"===o.direction?"tox-collection__item-container--column":Bh,u="left"===o.align?"tox-collection__item-container--align-left":"tox-collection__item-container--align-right",{dom:{tag:"div",classes:[Dh,i,u,function(){switch(o.valign){case"top":return"tox-collection__item-container--valign-top";case"middle":return"tox-collection__item-container--valign-middle";case"bottom":return"tox-collection__item-container--valign-bottom"}}()]},components:r};case"cardimage":return e=t.src,{dom:{tag:"img",classes:t.classes,attributes:{src:e,alt:t.alt.getOr("")}}};case"cardtext":var n=t.name.exists(function(t){return et(a.cardText.highlightOn,t)})?ft.from(a.cardText.matchText).getOr(""):"";return xv(Tv(t.text,n),t.classes)}var e,o,r,i,u})},tb=rl(Gg(),Xg()),nb=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,eb=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,ob=Math.min,rb=Math.max,ib=Math.round,ub=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,ab=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,cb=Mv(255,0,0,1),sb=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),lb="tinymce-custom-colors";function fb(t){return!1!==t.getParam("custom_colors")}function db(t){var n=t.getParam("color_map");return void 0!==n?function(t){for(var n=[],e=0;e<t.length;e+=2)n.push({text:t[e+1],value:"#"+Wv(t[e]).value,type:"choiceitem"});return n}(n):Tb}function mb(t){Eb.add(t)}function gb(t){var n,e=(n=db(t).length,Math.max(5,Math.ceil(Math.sqrt(n))));return t.getParam("color_cols",e,"number")}function pb(t){var n="choiceitem",e={type:n,text:"Remove color",icon:"color-swatch-remove-color",value:"remove"};return t?[e,{type:n,text:"Custom color",icon:"color-picker",value:"custom"}]:[e]}function hb(n,e,t,o){"custom"===t?Db(n)(function(t){t.each(function(t){mb(t),n.execCommand("mceApplyTextcolor",e,t),o(t)})},"#000000"):"remove"===t?(o(""),n.execCommand("mceRemoveTextcolor",e)):(o(t),n.execCommand("mceApplyTextcolor",e,t))}function vb(t,n){return t.concat(A(Eb.state(),function(t){return{type:_b,text:t,value:t}}).concat(pb(n)))}function bb(n,e){return function(t){t(vb(n,e))}}function yb(t,n,e){t.setIconFill("forecolor"===n?"tox-icon-text-color__color":"tox-icon-highlight-bg-color__color",e)}function xb(i,e,u,t,o){i.ui.registry.addSplitButton(e,{tooltip:t,presets:"color",icon:"forecolor"===e?"text-color":"highlight-bg-color",select:function(e){var o,r;return ft.from((o=u,i.dom.getParents(i.selection.getStart(),function(t){var n;(n=t.style["forecolor"===o?"color":"background-color"])&&(r=r||n)}),r)).bind(function(t){return Pv(t).map(function(t){var n=Av(t).value;return Cn(e.toLowerCase(),n)})}).getOr(!1)},columns:gb(i),fetch:bb(db(i),fb(i)),onAction:function(t){null!==o.get()&&hb(i,u,o.get(),ct)},onItemAction:function(t,n){hb(i,u,n,function(t){o.set(t),i.fire("TextColorChange",{name:e,color:t})})},onSetup:function(n){function t(t){t.name===e&&yb(n,t.name,t.color)}return null!==o.get()&&yb(n,e,o.get()),i.on("TextColorChange",t),function(){i.off("TextColorChange",t)}}})}function wb(n,t,e,o){n.ui.registry.addNestedMenuItem(t,{text:o,icon:"forecolor"===t?"text-color":"highlight-bg-color",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"colorswatch",onAction:function(t){hb(n,e,t.value,ct)}}]}})}function Sb(t,n,e,o,r,i,u,a){return oh(t,th(n),Bb(n,e,o,"color"!==r?"normal":"color",i,u,a),o,r)}function kb(t,n){var e=Kp(n);return 1===t?{mode:"menu",moveOnTab:!0}:"auto"===t?{mode:"grid",selector:"."+e.item,initSize:{numColumns:1,numRows:1}}:{mode:"matrix",rowSelector:"."+("color"===n?"tox-swatches__row":"tox-collection__group")}}var Cb,Ob,_b="choiceitem",Tb=[{type:_b,text:"Light Green",value:"#BFEDD2"},{type:_b,text:"Light Yellow",value:"#FBEEB8"},{type:_b,text:"Light Red",value:"#F8CAC6"},{type:_b,text:"Light Purple",value:"#ECCAFA"},{type:_b,text:"Light Blue",value:"#C2E0F4"},{type:_b,text:"Green",value:"#2DC26B"},{type:_b,text:"Yellow",value:"#F1C40F"},{type:_b,text:"Red",value:"#E03E2D"},{type:_b,text:"Purple",value:"#B96AD9"},{type:_b,text:"Blue",value:"#3598DB"},{type:_b,text:"Dark Turquoise",value:"#169179"},{type:_b,text:"Orange",value:"#E67E23"},{type:_b,text:"Dark Red",value:"#BA372A"},{type:_b,text:"Dark Purple",value:"#843FA1"},{type:_b,text:"Dark Blue",value:"#236FA1"},{type:_b,text:"Light Gray",value:"#ECF0F1"},{type:_b,text:"Medium Gray",value:"#CED4D9"},{type:_b,text:"Gray",value:"#95A5A6"},{type:_b,text:"Dark Gray",value:"#7E8C8D"},{type:_b,text:"Navy Blue",value:"#34495E"},{type:_b,text:"Black",value:"#000000"},{type:_b,text:"White",value:"#ffffff"}],Eb=function(e){void 0===e&&(e=10);function o(t){i.splice(t,1)}var t,n=sb.getItem(lb),r=y(n)?JSON.parse(n):[],i=e-(t=r).length<0?t.slice(0,e):t;return{add:function(t){var n;(-1===(n=p(i,t))?ft.none():ft.some(n)).each(o),i.unshift(t),i.length>e&&i.pop(),sb.setItem(lb,JSON.stringify(i))},state:function(){return i.slice(0)}}}(10),Db=function(r){return function(e,t){var o=!1;r.windowManager.open({title:"Color Picker",size:"normal",body:{type:"panel",items:[{type:"colorpicker",name:"colorpicker",label:"Color"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{colorpicker:t},onAction:function(t,n){"hex-valid"===n.name&&(o=n.value)},onSubmit:function(t){var n=t.getData().colorpicker;o?(e(ft.from(n)),t.close()):r.windowManager.alert(r.translate(["Invalid hex color code: {0}",n]))},onClose:ct,onCancel:function(){e(ft.none())}})}},Bb=function(e,o,r,i,u,a,c){return Jr(A(e,function(n){return"choiceitem"===n.type?Gt("choicemenuitem",Nh,n).fold(nh,function(t){return ft.some(function(n,t,e,o,r,i,u,a){void 0===a&&(a=!0);var c=Ov({presets:e,textContent:t?n.text:ft.none(),htmlContent:ft.none(),ariaLabel:n.text,iconContent:n.icon,shortcutContent:t?n.shortcut:ft.none(),checkMark:t?ft.some(kv(u.icons)):ft.none(),caret:ft.none(),value:n.value},u,a);return Jn(hv({data:vv(n),disabled:n.disabled,getApi:function(n){return{setActive:function(t){Hg.set(n,t)},isActive:function(){return Hg.isOn(n)},isDisabled:function(){return fd.isDisabled(n)},setDisabled:function(t){return fd.set(n,t)}}},onAction:function(t){return o(n.value)},onSetup:function(t){return t.setActive(r),ct},triggersSubmenu:!1,itemBehaviours:[]},c,i,u),{toggling:{toggleClass:Ch,toggleOnExecute:!1,selected:n.active}})}(t,1===r,i,o,a(n.value),u,c,th(e)))}):ft.none()}))},Ab=Ar("cell-over"),Mb=Ar("cell-execute"),Fb={inserttable:function(o){var t=Ar("size-label"),i=function(t){for(var n=[],e=0;e<10;e++){for(var o=[],r=0;r<10;r++)o.push(function(n,e,t){function o(t){return Ne(t,Mb,{row:n,col:e})}function r(t,n){n.stop(),o(t)}var i;return bu({dom:{tag:"div",attributes:((i={role:"button"})["aria-labelledby"]=t,i)},behaviours:Za([lm("insert-table-picker-cell",[Xe(lo(),Rg.focus),Xe(Eo(),o),Xe(bo(),r),Xe(Bo(),r)]),Hg.config({toggleClass:"tox-insert-table-picker__selected",toggleOnExecute:!1}),Rg.config({onFocus:function(t){return Ne(t,Ab,{row:n,col:e})}})])})}(e,r,t));n.push(o)}return n}(t),u=Vm({dom:{tag:"span",classes:["tox-insert-table-picker__label"],attributes:{id:t}},components:[pi("0x0")],behaviours:Za([Mg.config({})])});return{type:"widget",data:{value:Ar("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[tb.widget({dom:{tag:"div",classes:["tox-insert-table-picker"]},components:z(i,function(t){return A(t,yu)}).concat(u.asSpec()),behaviours:Za([lm("insert-table-picker",[Je(Ab,function(t,n,e){var o=e.event.row,r=e.event.col;!function(t,n,e){for(var o=0;o<10;o++)for(var r=0;r<10;r++)Hg.set(t[o][r],o<=n&&r<=e)}(i,o,r),Mg.set(u.get(t),[pi(r+1+"x"+(o+1))])}),Je(Mb,function(t,n,e){o.onAction({numRows:e.event.row+1,numColumns:e.event.col+1}),ze(t,Mo())})]),Bg.config({initSize:{numRows:10,numColumns:10},mode:"flatgrid",selector:'[role="button"]'})])})]}},colorswatch:function(n,t){var e,o,r,i=(o=t,r=(e=n).initData.allowCustomColors&&o.colorinput.hasCustomColors(),e.initData.colors.fold(function(){return vb(o.colorinput.getColors(),r)},function(t){return t.concat(pb(r))})),u=t.colorinput.getColorCols(),a=Sb(Ar("menu-value"),i,function(t){n.onAction({value:t})},u,"color",yh.CLOSE_ON_EXECUTE,O,t.shared.providers),c=st(st({},a),{markers:Kp("color"),movement:kb(u,"color")});return{type:"widget",data:{value:Ar("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[tb.widget($g.sketch(c))]}}},Ib=function(t){var n=t.text.fold(function(){return{}},function(t){return{innerHtml:t}});return{type:"separator",dom:st({tag:"div",classes:[wh,"tox-collection__group-heading"]},n),components:[]}},Rb=function(t,n,e,o){void 0===o&&(o=!0);var r=Ov({presets:"normal",iconContent:t.icon,textContent:t.text,htmlContent:ft.none(),ariaLabel:t.text,caret:ft.none(),checkMark:ft.none(),shortcutContent:t.shortcut},e,o);return hv({data:vv(t),getApi:function(n){return{isDisabled:function(){return fd.isDisabled(n)},setDisabled:function(t){return fd.set(n,t)}}},disabled:t.disabled,onAction:t.onAction,onSetup:t.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,n,e)},Vb=function(t,n,e,o,r){void 0===o&&(o=!0);var i=(r=void 0!==r&&r)?bv("chevron-down",e.icons,[Th]):bv("chevron-right",e.icons,[Th]),u=Ov({presets:"normal",iconContent:t.icon,textContent:t.text,htmlContent:ft.none(),ariaLabel:t.text,caret:ft.some(i),checkMark:ft.none(),shortcutContent:t.shortcut},e,o);return hv({data:vv(t),getApi:function(n){return{isDisabled:function(){return fd.isDisabled(n)},setDisabled:function(t){return fd.set(n,t)}}},disabled:t.disabled,onAction:ct,onSetup:t.onSetup,triggersSubmenu:!0,itemBehaviours:[]},u,n,e)},Pb=function(t,n,e,o){void 0===o&&(o=!0);var r=Ov({iconContent:t.icon,textContent:t.text,htmlContent:ft.none(),ariaLabel:t.text,checkMark:ft.some(kv(e.icons)),caret:ft.none(),shortcutContent:t.shortcut,presets:"normal",meta:t.meta},e,o);return Jn(hv({data:vv(t),disabled:t.disabled,getApi:function(n){return{setActive:function(t){Hg.set(n,t)},isActive:function(){return Hg.isOn(n)},isDisabled:function(){return fd.isDisabled(n)},setDisabled:function(t){return fd.set(n,t)}}},onAction:t.onAction,onSetup:t.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,n,e),{toggling:{toggleClass:Ch,toggleOnExecute:!1,selected:t.active}})},Hb=function(n,e){return kt(Fb,n.fancytype).map(function(t){return t(n,e)})};function zb(t,u,a,n,c,s,l){var e=1===n,o=!e||th(t);return Jr(A(t,function(t){switch(t.type){case"separator":return Gt("Autocompleter.Separator",Mp,t).fold(nh,function(t){return ft.some(Ib(t))});case"cardmenuitem":return Gt("cardmenuitem",zh,t).fold(nh,function(n){return ft.some((t=st(st({},n),{onAction:function(t){n.onAction(t),a(n.value,n.meta)}}),e=c,o=s,r={itemBehaviours:_v(n.meta,s),cardText:{matchText:u,highlightOn:l}},i={dom:Cv(t.label),optComponents:[ft.some({dom:{tag:"div",classes:[Dh,Bh]},components:Zv(t.items,r)})]},hv({data:vv(st({text:ft.none()},t)),disabled:t.disabled,getApi:function(e){return{isDisabled:function(){return fd.isDisabled(e)},setDisabled:function(n){fd.set(e,n),dt(gs(e.element,"*"),function(t){e.getSystem().getByDom(t).each(function(t){t.hasConfigured(fd)&&fd.set(t,n)})})}}},onAction:t.onAction,onSetup:t.onSetup,triggersSubmenu:!1,itemBehaviours:ft.from(r.itemBehaviours).getOr([])},i,e,o.providers)));var t,e,o,r,i});default:return Gt("Autocompleter.Item",Fp,t).fold(nh,function(t){return ft.some(function(n,e,t,o,r,i,u,a){void 0===a&&(a=!0);var c=Ov({presets:o,textContent:ft.none(),htmlContent:t?n.text.map(function(t){return Tv(t,e)}):ft.none(),ariaLabel:n.text,iconContent:n.icon,shortcutContent:ft.none(),checkMark:ft.none(),caret:ft.none(),value:n.value},u.providers,a,n.icon);return hv({data:vv(n),disabled:n.disabled,getApi:tt({}),onAction:function(t){return r(n.value,n.meta)},onSetup:tt(ct),triggersSubmenu:!1,itemBehaviours:_v(n.meta,u)},c,i,u.providers)}(t,u,e,"normal",a,c,s,o))})}}))}function Nb(t,n,e,o,r){var i=th(n),u=Jr(A(n,function(t){function n(t){return function(t,n,e,o,r){function i(t){return r?st(st({},t),{shortcut:ft.none(),icon:t.text.isSome()?ft.none():t.icon}):t}var u=e.shared.providers;switch(t.type){case"menuitem":return Gt("menuitem",Wh,t).fold(nh,function(t){return ft.some(Rb(i(t),n,u,o))});case"nestedmenuitem":return Gt("nestedmenuitem",Uh,t).fold(nh,function(t){return ft.some(Vb(i(t),n,u,o,r))});case"togglemenuitem":return Gt("togglemenuitem",Gh,t).fold(nh,function(t){return ft.some(Pb(i(t),n,u,o))});case"separator":return Gt("separatormenuitem",Mp,t).fold(nh,function(t){return ft.some(Ib(t))});case"fancymenuitem":return Gt("fancymenuitem",jh,t).fold(nh,function(t){return Hb(i(t),e)});default:return console.error("Unknown item in general menu",t),ft.none()}}(t,e,o,r?!Kn(t,"text"):i,r)}return"nestedmenuitem"===t.type&&t.getSubmenuItems().length<=0?n(st(st({},t),{disabled:!0})):n(t)}));return(r?eh:oh)(t,i,u,1,"normal")}function Lb(t){return ep.singleData(t.value,t)}function jb(t,n,e){return Iu(t,n,e).isSome()}function Wb(e,o){var r=null;return{cancel:function(){null!==r&&(clearTimeout(r),r=null)},schedule:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];r=setTimeout(function(){e.apply(null,t),r=null},o)}}}function Ub(t){var n=t.raw;return void 0===n.touches||1!==n.touches.length?ft.none():ft.some(n.touches[0])}function Gb(){return Be().browser.isFirefox()}function Xb(n,t){var e,o,r,i,u,a,c,s,l,f=Yt("Getting GUI events settings",iy,t),d=(u=f,a=fc(),c=wn(!1),s=Wb(function(t){u.triggerEvent(Ao(),t),c.set(!0)},400),l=Me([{key:eo(),value:function(e){return Ub(e).each(function(t){s.cancel();var n={x:t.clientX,y:t.clientY,target:e.target};s.schedule(e),c.set(!1),a.set(n)}),ft.none()}},{key:oo(),value:function(t){return s.cancel(),Ub(t).each(function(i){a.on(function(t){var n=i,e=t,o=Math.abs(n.clientX-e.x),r=Math.abs(n.clientY-e.y);(5<o||5<r)&&a.clear()})}),ft.none()}},{key:ro(),value:function(n){return s.cancel(),a.get().filter(function(t){return Bn(t.target,n.target)}).map(function(t){return c.get()?(n.prevent(),!1):u.triggerEvent(Bo(),n)})}}]),{fireIfReady:function(n,t){return kt(l,t).bind(function(t){return t(n)})}}),m=A(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","transitioncancel","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(t){return dc(n,t,function(n){d.fireIfReady(n,t).each(function(t){t&&n.kill()}),f.triggerEvent(t,n)&&n.kill()})}),g=fc(),p=dc(n,"paste",function(n){d.fireIfReady(n,"paste").each(function(t){t&&n.kill()}),f.triggerEvent("paste",n)&&n.kill(),g.set(setTimeout(function(){f.triggerEvent(_o(),n)},0))}),h=dc(n,"keydown",function(t){var n;f.triggerEvent("keydown",t)?t.kill():!0!==f.stopBackspace||(n=t).raw.which!==gd[0]||et(["input","textarea"],nr(n.target))||jb(n.target,'[contenteditable="true"]')||t.prevent()}),v=(e=n,o=function(t){f.triggerEvent("focusin",t)&&t.kill()},Gb()?mc(e,"focus",o):dc(e,"focusin",o)),b=fc(),y=(r=n,i=function(t){f.triggerEvent("focusout",t)&&t.kill(),b.set(setTimeout(function(){f.triggerEvent(Oo(),t)},0))},Gb()?mc(r,"blur",i):dc(r,"focusout",i));return{unbind:function(){dt(m,function(t){t.unbind()}),h.unbind(),v.unbind(),y.unbind(),p.unbind(),g.on(clearTimeout),b.on(clearTimeout)}}}function Yb(t,n){return wn(kt(t,"target").getOr(n))}function qb(t,o,n,e,r,i){var u,a,c=t(o,e),s=(u=wn(!1),a=wn(!1),{stop:function(){u.set(!0)},cut:function(){a.set(!0)},isStopped:u.get,isCut:a.get,event:n,setSource:r.set,getSource:r.get});return c.fold(function(){return i.logEventNoHandlers(o,e),uy.complete()},function(n){var e=n.descHandler;return zr(e)(s),s.isStopped()?(i.logEventStopped(o,n.element,e.purpose),uy.stopped()):s.isCut()?(i.logEventCut(o,n.element,e.purpose),uy.complete()):ar(n.element).fold(function(){return i.logNoParent(o,n.element,e.purpose),uy.complete()},function(t){return i.logEventResponse(o,n.element,e.purpose),uy.resume(t)})})}function Kb(){function r(t){Mr(t.element).each(function(t){delete a[t],i.unregisterId(t)})}var u,i=(u={},{registerId:function(r,i,t){bt(t,function(t,n){var e,o=void 0!==u[n]?u[n]:{};o[i]={cHandler:S.apply(void 0,[(e=t).handler].concat(r)),purpose:e.purpose},u[n]=o})},unregisterId:function(e){bt(u,function(t,n){Kn(t,e)&&delete t[e]})},filterByType:function(t){return kt(u,t).map(function(t){return xt(t,function(t,n){return{id:n,descHandler:t}})}).getOr([])},find:function(t,n,e){var r=kt(u,n);return Re(e,function(t){return e=r,Mr(o=t).fold(function(){return ft.none()},function(n){return e.bind(function(t){return kt(t,n)}).map(function(t){return{element:o,descHandler:t}})});var e,o},t)}}),a={};return{find:function(t,n,e){return i.find(t,n,e)},filter:function(t){return i.filterByType(t)},register:function(t){var e,o=Mr((e=t).element).getOrThunk(function(){return t=e.element,n=Ar(Qi+"uid-"),tu(t,n),n;var t,n});Ct(a,o)&&function(t){var n=a[o];if(n!==t)throw new Error('The tagId "'+o+'" is already used by: '+Br(n.element)+"\nCannot use it for: "+Br(t.element)+"\nThe conflicting element is"+(du(n.element)?" ":" not ")+"already in the DOM");r(t)}(t),i.registerId([t],o,t.events),a[o]=t},unregister:r,getById:function(t){return kt(a,t)}}}function Jb(e){function o(n){return ar(e.element).fold(_,function(t){return Bn(n,t)})}function s(t,n){return i.find(o,t,n)}function r(n){var t=i.filter(To());dt(t,function(t){zr(t.descHandler)(n)})}var i=Kb(),t=Xb(e.element,{triggerEvent:function(n,e){return Nu(n,e.target,function(t){return cy(s,n,e,e.target,t)})}}),u={debugInfo:tt("real"),triggerEvent:function(n,e,o){Nu(n,e,function(t){return cy(s,n,o,e,t)})},triggerFocus:function(a,c){Mr(a).fold(function(){Sa(a)},function(t){Nu(Co(),a,function(t){var n,e,o=s,r=Co(),i=t,u=Yb(n={originator:c,kill:ct,prevent:ct,target:a},e=a);return qb(o,r,n,e,u,i),!1})})},triggerEscape:function(t,n){u.triggerEvent("keydown",t.element,n.event)},getByUid:function(t){return g(t)},getByDom:function(t){return p(t)},build:bu,addToGui:function(t){c(t)},removeFromGui:function(t){l(t)},addToWorld:function(t){n(t)},removeFromWorld:function(t){a(t)},broadcast:function(t){f(t)},broadcastOn:function(t,n){d(t,n)},broadcastEvent:function(t,n){m(t,n)},isConnected:_},n=function(t){t.connect(u),Vi(t.element)||(i.register(t),dt(t.components(),n),u.triggerEvent(Io(),t.element,{target:t.element}))},a=function(t){Vi(t.element)||(dt(t.components(),a),i.unregister(t)),t.disconnect()},c=function(t){Fs(e,t)},l=function(t){Rs(t)},f=function(t){r({universal:!0,data:t})},d=function(t,n){r({universal:!1,channels:t,data:n})},m=function(t,n){var e,o,r=i.filter(t);return o={stop:function(){e.set(!0)},cut:ct,isStopped:(e=wn(!1)).get,isCut:O,event:n,setSource:C("Cannot set source of a broadcasted event"),getSource:C("Cannot get source of a broadcasted event")},dt(r,function(t){zr(t.descHandler)(o)}),o.isStopped()},g=function(t){return i.getById(t).fold(function(){return mt.error(new Error('Could not find component with uid: "'+t+'" in system.'))},mt.value)},p=function(t){var n=Mr(t).getOr("not found");return g(n)};return n(e),{root:e,element:e.element,destroy:function(){t.unbind(),Xi(e.element)},add:c,remove:l,getByUid:g,getByDom:p,addToWorld:n,removeFromWorld:a,broadcast:f,broadcastOn:d,broadcastEvent:m}}function $b(t,n,e,o){var r=hy(t,n,e,o);return dy.sketch(r)}function Qb(t,n){return dy.parts.label({dom:{tag:"label",classes:["tox-label"],innerHtml:n.translate(t)}})}function Zb(t){return Za([Rg.config({onFocus:t.selectOnFocus?function(t){var n=t.element,e=si(n);n.dom.setSelectionRange(0,e.length)}:ct})])}function ty(t){return{tag:t.tag,attributes:st({type:"text"},t.inputAttributes),styles:t.inputStyles,classes:t.inputClasses}}(Ob=Cb={})[Ob.ContentFocus=0]="ContentFocus",Ob[Ob.UiFocus=1]="UiFocus";function ny(f,c){function e(){return r.get().isSome()}function s(){e()&&op.hide(d)}var o,t,r=fc(),l=wn(!1),d=bu(op.sketch({dom:{tag:"div",classes:["tox-autocompleter"]},components:[],fireDismissalEventInstead:{},inlineBehaviours:Za([lm("dismissAutocompleter",[Xe(Lo(),function(){return m()})])]),lazySink:c.getSink})),m=function(){var t;e()&&(t=r.get().map(function(t){return t.element}),Ep(t.getOr(de.fromDom(f.selection.getNode()))).each(wr),s(),r.clear(),l.set(!1))},u=_t(function(){return e=yt(f.ui.registry.getAll().popups,function(t){return Gt("Autocompleter",Ip,t).fold(function(t){throw new Error(se(t))},h)}),t=xt(e,function(t){return t.ch}),n={},dt(t,function(t){n[t]={}}),o=Xn(n),r=St(e),{dataset:e,triggerChars:o,lookupByChar:function(n){return F(r,function(t){return t.ch===n})}};var t,n,e,o,r}),g=function(t){var n=t;r.get().map(function(t){return xp(f.dom,f.selection.getRng(),t.triggerChar).bind(function(t){return Cp(f,u,t,n)})}).getOrThunk(function(){return n=f,t=(e=u)(),o=n.selection.getRng(),r=n.dom,i=o,q(t.triggerChars,function(t){return xp(r,i,t)}).bind(function(t){return Cp(n,e,t)});var n,e,t,o,r,i}).fold(m,function(a){var t,n=a.context;e()||(t=hp(f,n.range),r.set({triggerChar:n.triggerChar,element:t,matchLength:n.text.length}),l.set(!1)),a.lookupData.then(function(u){r.get().map(function(t){var n,e,o,r,i=a.context;t.triggerChar===i.triggerChar&&(e=i.triggerChar,r=q(o=u,function(t){return ft.from(t.columns)}).getOr(1),0<(n=z(o,function(i){return zb(i.items,i.matchText,function(o,r){var t=f.selection.getRng();xp(f.dom,t,e).fold(function(){return console.error("Lost context. Cursor probably moved")},function(t){var n=t.range,e={hide:function(){m()},reload:function(t){s(),g(t)}};l.set(!0),i.onAction(e,n,o,r),l.set(!1)})},r,yh.BUBBLE_TO_SANDBOX,c,i.highlightOn)})).length?function(t,n,e,o){t.matchLength=n.text.length;var r,i,u,a,c,s,l=q(e,function(t){return ft.from(t.columns)}).getOr(1);op.showAt(d,$g.sketch((r=oh("autocompleter-value",!0,o,l,"normal"),i=l,a=((u=Cb.ContentFocus)===Cb.ContentFocus?Nl:zl)(),c=kb(i,"normal"),s=Kp("normal"),{dom:r.dom,components:r.components,items:r.items,value:r.value,markers:{selectedItem:s.selectedItem,item:s.item},movement:c,fakeFocus:u===Cb.ContentFocus,focusManager:a,menuBehaviours:Xh("auto"!==i?[]:[$o(function(o,t){rh(o,4,s.item).each(function(t){var n=t.numColumns,e=t.numRows;Bg.setGridSize(o,e,n)})})])})),{anchor:{type:"node",root:de.fromDom(f.getBody()),node:ft.from(t.element)}}),op.getContent(d).each(md.highlightFirst)}(t,i,u,n):(10<=i.text.length-t.matchLength?m:s)())})})})},n={onKeypress:gp(function(t){27!==t.which&&g()},50),cancelIfNecessary:m,isMenuOpen:function(){return op.isOpen(d)},isActive:e,isProcessingAction:l.get,getView:function(){return op.getContent(d)}};function i(t,n){Ne(t,go(),{raw:n})}!1===f.hasPlugin("rtc")&&(o=n,(t=f).on("keypress compositionend",o.onKeypress.throttle),t.on("remove",o.onKeypress.cancel),t.on("keydown",function(n){function t(){return o.getView().bind(md.getHighlighted)}8===n.which&&o.onKeypress.throttle(n),o.isActive()&&(27===n.which&&o.cancelIfNecessary(),o.isMenuOpen()?13===n.which?(t().each(Le),n.preventDefault()):40===n.which?(t().fold(function(){o.getView().each(md.highlightFirst)},function(t){i(t,n)}),n.preventDefault(),n.stopImmediatePropagation()):37!==n.which&&38!==n.which&&39!==n.which||t().each(function(t){i(t,n),n.preventDefault(),n.stopImmediatePropagation()}):13!==n.which&&38!==n.which&&40!==n.which||o.cancelIfNecessary())}),t.on("NodeChange",function(t){o.isActive()&&!o.isProcessingAction()&&Ep(de.fromDom(t.element)).isNone()&&o.cancelIfNecessary()}))}var ey,oy,ry,iy=Ht([tn("triggerEvent"),dn("stopBackspace",!0)]),uy=Vn([{stopped:[]},{resume:["element"]},{complete:[]}]),ay=function(n,e,o,t,r,i){return qb(n,e,o,t,r,i).fold(_,function(t){return ay(n,e,o,t,r,i)},O)},cy=function(t,n,e,o,r){var i=Yb(e,o);return ay(t,n,e,o,i,r)},sy=xl({name:"Container",factory:function(t){var n=t.dom,e=n.attributes,o=s(n,["attributes"]);return{uid:t.uid,dom:st({tag:"div",attributes:st({role:"presentation"},e)},o),components:t.components,behaviours:$s(t.containerBehaviours),events:t.events,domModification:t.domModification,eventOrder:t.eventOrder}},configFields:[dn("components",[]),Js("containerBehaviours",[]),dn("events",{}),dn("domModification",{}),dn("eventOrder",{})]}),ly=tt([dn("prefix","form-field"),Js("fieldBehaviours",[id,_f])]),fy=tt([Kf({schema:[Jt("dom")],name:"label"}),Kf({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:t.text}}}},schema:[Jt("text")],name:"aria-descriptor"}),Yf({factory:{sketch:function(t){var e,o,n=(e=["factory"],o={},bt(t,function(t,n){et(e,n)||(o[n]=t)}),o);return t.factory.sketch(n)}},schema:[Jt("factory")],name:"field"})]),dy=wl({name:"FormField",configFields:ly(),partFields:fy(),factory:function(r,t,n,e){var o=Qs(r.fieldBehaviours,[id.config({find:function(t){return ll(t,r,"field")}}),_f.config({store:{mode:"manual",getValue:function(t){return id.getCurrent(t).bind(_f.getValue)},setValue:function(t,n){id.getCurrent(t).each(function(t){_f.setValue(t,n)})}}})]),i=Jo([$o(function(t,n){var o=dl(t,r,["label","field","aria-descriptor"]);o.field().each(function(e){var n=Ar(r.prefix);o.label().each(function(t){Or(t.element,"for",n),Or(e.element,"id",n)}),o["aria-descriptor"]().each(function(t){var n=Ar(r.prefix);Or(t.element,"id",n),Or(e.element,"aria-describedby",n)})})})]);return{uid:r.uid,dom:r.dom,components:t,behaviours:o,events:i,apis:{getField:function(t){return ll(t,r,"field")},getLabel:function(t){return ll(t,r,"label")}}}},apis:{getField:function(t,n){return t.getField(n)},getLabel:function(t,n){return t.getLabel(n)}}}),my=Object.freeze({__proto__:null,exhibit:function(t,n){return Hr({attributes:Me([{key:n.tabAttr,value:"true"}])})}}),gy=xa({fields:[dn("tabAttr","data-alloy-tabstop")],name:"tabstopping",active:my}),py=tinymce.util.Tools.resolve("tinymce.html.Entities"),hy=function(t,n,e,o){return{dom:vy(e),components:t.toArray().concat([n]),fieldBehaviours:Za(o)}},vy=function(t){return{tag:"div",classes:["tox-form__group"].concat(t)}},by=Ar("form-component-change"),yy=Ar("form-close"),xy=Ar("form-cancel"),wy=Ar("form-action"),Sy=Ar("form-submit"),ky=Ar("form-block"),Cy=Ar("form-unblock"),Oy=Ar("form-tabchange"),_y=Ar("form-resize"),Ty=tt([rn("data"),dn("inputAttributes",{}),dn("inputStyles",{}),dn("tag","input"),dn("inputClasses",[]),Ku("onSetValue"),dn("styles",{}),dn("eventOrder",{}),Js("inputBehaviours",[_f,Rg]),dn("selectOnFocus",!0)]),Ey=xl({name:"Input",configFields:Ty(),factory:function(t,n){return{uid:t.uid,dom:ty(t),components:[],behaviours:st(st({},Zb(e=t)),Qs(e.inputBehaviours,[_f.config({store:st(st({mode:"manual"},e.data.map(function(t){return{initialValue:t}}).getOr({})),{getValue:function(t){return si(t.element)},setValue:function(t,n){si(t.element)!==n&&li(t.element,n)}}),onSetValue:e.onSetValue})])),eventOrder:t.eventOrder};var e}}),Dy={},By={exports:Dy};function Ay(t){setTimeout(function(){throw t},0)}function My(t){var n=nr(t);return et(Gy,n)}function Fy(t,n){Gr(n.getRoot(t).getOr(t.element),n.invalidClass),n.notify.each(function(n){My(t.element)&&Or(t.element,"aria-invalid",!1),n.getContainer(t).each(function(t){kr(t,n.validHtml)}),n.onValid(t)})}function Iy(n,t,e,o){Ur(t.getRoot(n).getOr(n.element),t.invalidClass),t.notify.each(function(t){My(n.element)&&Or(n.element,"aria-invalid",!0),t.getContainer(n).each(function(t){kr(t,o)}),t.onInvalid(n,o)})}function Ry(n,t,e){return t.validator.fold(function(){return Uy(mt.value(!0))},function(t){return t.validate(n)})}function Vy(n,e,t){return e.notify.each(function(t){t.onValidate(n)}),Ry(n,e).map(function(t){return n.getSystem().isConnected()?t.fold(function(t){return Iy(n,e,0,t),mt.error(t)},function(t){return Fy(n,e),mt.value(t)}):mt.error("No longer in system")})}ey=Dy,oy=By,ry=void 0,function(t){"object"==typeof ey&&void 0!==oy?oy.exports=t():("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function i(u,a,c){function s(n,t){if(!a[n]){if(!u[n]){var e="function"==typeof ry;if(!t&&e)return e(n,!0);if(l)return l(n,!0);var o=new Error("Cannot find module '"+n+"'");throw o.code="MODULE_NOT_FOUND",o}var r=a[n]={exports:{}};u[n][0].call(r.exports,function(t){return s(u[n][1][t]||t)},r,r.exports,i,u,a,c)}return a[n].exports}for(var l="function"==typeof ry,t=0;t<c.length;t++)s(c[t]);return s}({1:[function(t,n,e){var o,r,i=n.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(n){if(o===setTimeout)return setTimeout(n,0);if((o===u||!o)&&setTimeout)return o=setTimeout,setTimeout(n,0);try{return o(n,0)}catch(t){try{return o.call(null,n,0)}catch(t){return o.call(this,n,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:u}catch(t){o=u}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var s,l=[],f=!1,d=-1;function m(){f&&s&&(f=!1,s.length?l=s.concat(l):d=-1,l.length&&g())}function g(){if(!f){var t=c(m);f=!0;for(var n=l.length;n;){for(s=l,l=[];++d<n;)s&&s[d].run();d=-1,n=l.length}s=null,f=!1,function(n){if(r===clearTimeout)return clearTimeout(n);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(n);try{r(n)}catch(t){try{return r.call(null,n)}catch(t){return r.call(this,n)}}}(t)}}function p(t,n){this.fun=t,this.array=n}function h(){}i.nextTick=function(t){var n=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)n[e-1]=arguments[e];l.push(new p(t,n)),1!==l.length||f||c(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,n){!function(n){function o(){}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(t,this)}function r(e,o){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,i._immediateFn(function(){var t,n=1===e._state?o.onFulfilled:o.onRejected;if(null!==n){try{t=n(e._value)}catch(t){return void a(o.promise,t)}u(o.promise,t)}else(1===e._state?u:a)(o.promise,e._value)})):e._deferreds.push(o)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void c(n);if("function"==typeof e)return void l((o=e,r=t,function(){o.apply(r,arguments)}),n)}n._state=1,n._value=t,c(n)}catch(t){a(n,t)}var o,r}function a(t,n){t._state=2,t._value=n,c(t)}function c(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var n=0,e=t._deferreds.length;n<e;n++)r(t,t._deferreds[n]);t._deferreds=null}function s(t,n,e){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof n?n:null,this.promise=e}function l(t,n){var e=!1;try{t(function(t){e||(e=!0,u(n,t))},function(t){e||(e=!0,a(n,t))})}catch(t){if(e)return;e=!0,a(n,t)}}var e=setTimeout;i.prototype.catch=function(t){return this.then(null,t)},i.prototype.then=function(t,n){var e=new this.constructor(o);return r(this,new s(t,n,e)),e},i.all=function(t){var a=Array.prototype.slice.call(t);return new i(function(r,i){if(0===a.length)return r([]);for(var u=a.length,t=0;t<a.length;t++)!function n(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var o=t.then;if("function"==typeof o)return o.call(t,function(t){n(e,t)},i),0}a[e]=t,0==--u&&r(a)}catch(t){i(t)}}(t,a[t])})},i.resolve=function(n){return n&&"object"==typeof n&&n.constructor===i?n:new i(function(t){t(n)})},i.reject=function(e){return new i(function(t,n){n(e)})},i.race=function(r){return new i(function(t,n){for(var e=0,o=r.length;e<o;e++)r[e].then(t,n)})},i._immediateFn="function"==typeof n?function(t){n(t)}:function(t){e(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=i:this.Promise||(this.Promise=i)}.call(this,t("timers").setImmediate)},{timers:3}],3:[function(c,t,s){!function(t,n){var o=c("process/browser.js").nextTick,e=Function.prototype.apply,r=Array.prototype.slice,i={},u=0;function a(t,n){this._id=t,this._clearFn=n}s.setTimeout=function(){return new a(e.call(setTimeout,window,arguments),clearTimeout)},s.setInterval=function(){return new a(e.call(setInterval,window,arguments),clearInterval)},s.clearTimeout=s.clearInterval=function(t){t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},s.enroll=function(t,n){clearTimeout(t._idleTimeoutId),t._idleTimeout=n},s.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},s._unrefActive=s.active=function(t){clearTimeout(t._idleTimeoutId);var n=t._idleTimeout;0<=n&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},n))},s.setImmediate="function"==typeof t?t:function(t){var n=u++,e=!(arguments.length<2)&&r.call(arguments,1);return i[n]=!0,o(function(){i[n]&&(e?t.apply(null,e):t.call(null),s.clearImmediate(n))}),n},s.clearImmediate="function"==typeof n?n:function(t){delete i[t]}}.call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,n,e){var o=t("promise-polyfill"),r="undefined"!=typeof window?window:Function("return this;")();n.exports={boltExport:r.Promise||o}},{"promise-polyfill":2}]},{},[4])(4)});var Py,Hy,zy=By.exports.boltExport,Ny=function(t){function o(t){r()?i(t):n.push(t)}var e=ft.none(),n=[],r=function(){return e.isSome()},i=function(n){e.each(function(t){setTimeout(function(){n(t)},0)})};return t(function(t){r()||(e=ft.some(t),dt(n,i),n=[])}),{get:o,map:function(e){return Ny(function(n){o(function(t){n(e(t))})})},isReady:r}},Ly={nu:Ny,pure:function(n){return Ny(function(t){t(n)})}},jy=function(e){function t(t){e().then(t,Ay)}return{map:function(t){return jy(function(){return e().then(t)})},bind:function(n){return jy(function(){return e().then(function(t){return n(t).toPromise()})})},anonBind:function(t){return jy(function(){return e().then(function(){return t.toPromise()})})},toLazy:function(){return Ly.nu(t)},toCached:function(){var t=null;return jy(function(){return t=null===t?e():t})},toPromise:e,get:t}},Wy=function(t){return jy(function(){return new zy(t)})},Uy=function(t){return jy(function(){return zy.resolve(t)})},Gy=["input","textarea"],Xy=Object.freeze({__proto__:null,markValid:Fy,markInvalid:Iy,query:Ry,run:Vy,isInvalid:function(t,n){return Xr(n.getRoot(t).getOr(t.element),n.invalidClass)}}),Yy=Object.freeze({__proto__:null,events:function(n,t){return n.validator.map(function(t){return Jo([Xe(t.onEvent,function(t){Vy(t,n).get(h)})].concat(t.validateOnLoad?[$o(function(t){Vy(t,n).get(ct)})]:[]))}).getOr({})}}),qy=xa({fields:[Jt("invalidClass"),dn("getRoot",ft.none),fn("notify",[dn("aria","alert"),dn("getContainer",ft.none),dn("validHtml",""),Ku("onValid"),Ku("onInvalid"),Ku("onValidate")]),fn("validator",[Jt("validate"),dn("onEvent","input"),dn("validateOnLoad",!0)])],name:"invalidating",active:Yy,apis:Xy,extra:{validation:function(e){return function(t){var n=_f.getValue(t);return Uy(e(n))}}}}),Ky=Object.freeze({__proto__:null,getCoupled:function(t,n,e,o){return e.getOrCreate(t,n,o)}}),Jy=xa({fields:[$t("others",Ut(mt.value,ee()))],name:"coupling",apis:Ky,state:Object.freeze({__proto__:null,init:function(){var i={},t=tt({});return au({readState:t,getOrCreate:function(e,o,r){var t=Xn(o.others);if(t)return kt(i,r).getOrThunk(function(){var t=kt(o.others,r).getOrDie("No information found for coupled component: "+r)(e),n=e.getSystem().build(t);return i[r]=n});throw new Error("Cannot find coupled component: "+r+". Known coupled components: "+JSON.stringify(t,null,2))}})}})}),$y=tt("sink"),Qy=tt(Kf({name:$y(),overrides:tt({dom:{tag:"div"},behaviours:Za([cf.config({useFixed:_})]),events:Jo([$e(go()),$e(uo()),$e(bo())])})}));function Zy(t,n){var e=t.getHotspot(n).getOr(n),o=t.getAnchorOverrides();return t.layouts.fold(function(){return{type:"hotspot",hotspot:e,overrides:o}},function(t){return{type:"hotspot",hotspot:e,overrides:o,layouts:t}})}function tx(t,n,e,o,r,i,u){var a,c=Zy(t,e),s=e,l=o,f=r,d=u,m=n,g=(0,(a=t).fetch)(s).map(m),p=T0(s,a);return g.map(function(t){return t.bind(function(t){return ft.from(ep.sketch(st(st({},f.menu()),{uid:nu(""),data:t,highlightImmediately:d===Py.HighlightFirst,onOpenMenu:function(t,n){var e=p().getOrDie();cf.position(e,n,{anchor:c}),pf.decloak(l)},onOpenSubmenu:function(t,n,e){var o=p().getOrDie();cf.position(o,e,{anchor:{type:"submenu",item:n}}),pf.decloak(l)},onRepositionMenu:function(t,n,e){var o=p().getOrDie();cf.position(o,n,{anchor:c}),dt(e,function(t){cf.position(o,t.triggeredMenu,{anchor:{type:"submenu",item:t.triggeringItem}})})},onEscape:function(){return Rg.focus(s),pf.close(l),ft.some(!0)}})))})}).map(function(t){return t.fold(function(){pf.isOpen(o)&&pf.close(o)},function(t){pf.cloak(o),pf.open(o,t),i(o)}),o})}function nx(t,n,e,o,r,i){var u=Jy.getCoupled(e,"sandbox");return(pf.isOpen(u)?function(t,n,e,o,r,i,u){return pf.close(o),Uy(o)}:tx)(t,n,e,u,o,r,i)}function ex(t){pf.getState(t).each(function(t){ep.repositionMenus(t)})}function ox(s,l,f){var d=Ru(),t=T0(l,s);return{dom:{tag:"div",classes:s.sandboxClasses,attributes:{id:d.id,role:"listbox"}},behaviours:Ef(s.sandboxBehaviours,[_f.config({store:{mode:"memory",initialValue:l}}),pf.config({onOpen:function(t,n){var e,o,r,i,u,a,c=Zy(s,l);d.link(l.element),s.matchWidth&&(e=c.hotspot,o=n,r=s.useMinWidth,u=id.getCurrent(o).getOr(o),a=wi(e.element),r?ni(u.element,"min-width",a+"px"):(i=u.element,Cu.set(i,a))),s.onOpen(c,t,n),void 0!==f&&void 0!==f.onOpen&&f.onOpen(t,n)},onClose:function(t,n){d.unlink(l.element),void 0!==f&&void 0!==f.onClose&&f.onClose(t,n)},isPartOf:function(t,n,e){return Hu(n,e)||Hu(l,e)},getAttachPoint:function(){return t().getOrDie()}}),id.config({find:function(t){return pf.getState(t).bind(function(t){return id.getCurrent(t)})}}),oc.config({channels:st(st({},Ws({isExtraPart:O})),Us({doReposition:ex}))})])}}function rx(t){ex(Jy.getCoupled(t,"sandbox"))}function ix(){return[dn("sandboxClasses",[]),Tf("sandboxBehaviours",[id,oc,pf,_f])]}function ux(n){return Kf({name:n+"-edge",overrides:function(t){return t.model.manager.edgeActions[n].fold(function(){return{}},function(o){return{events:Jo([Ye(eo(),function(t,n,e){return o(t,e)},[t]),Ye(uo(),function(t,n,e){return o(t,e)},[t]),Ye(ao(),function(t,n,e){e.mouseIsDown.get()&&o(t,e)},[t])])}})}})}function ax(t){var n=t.event.raw;return-1===n.type.indexOf("touch")?void 0!==n.clientX?ft.some(n).map(function(t){return Su(t.clientX,t.clientY)}):ft.none():void 0!==n.touches&&1===n.touches.length?ft.some(n.touches[0]).map(function(t){return Su(t.clientX,t.clientY)}):ft.none()}function cx(t){return t.model.minX}function sx(t){return t.model.minY}function lx(t){return t.model.minX-1}function fx(t){return t.model.minY-1}function dx(t){return t.model.maxX}function mx(t){return t.model.maxY}function gx(t){return t.model.maxX+1}function px(t){return t.model.maxY+1}function hx(t,n,e){return n(t)-e(t)}function vx(t){return hx(t,dx,cx)}function bx(t){return hx(t,mx,sx)}function yx(t){return vx(t)/2}function xx(t){return bx(t)/2}function wx(t){return t.stepSize}function Sx(t){return t.snapToGrid}function kx(t){return t.snapStart}function Cx(t){return t.rounded}function Ox(t,n){return void 0!==t[n+"-edge"]}function _x(t){return Ox(t,"left")}function Tx(t){return Ox(t,"right")}function Ex(t){return Ox(t,"top")}function Dx(t){return Ox(t,"bottom")}function Bx(t){return t.model.value.get()}function Ax(t,n){return{x:t,y:n}}function Mx(t,n){Ne(t,U0(),{value:n})}function Fx(t,n,e,o){return t<n?t:e<t?e:t===n?n-1:Math.max(n,t-o)}function Ix(t,n,e,o){return e<t?t:t<n?n:t===e?e+1:Math.min(e,t+o)}function Rx(t,n,e){return Math.max(n,Math.min(e,t))}function Vx(t){var n=t.min,e=t.max,o=t.range,r=t.value,i=t.step,u=t.snap,a=t.snapStart,c=t.rounded,s=t.hasMinEdge,l=t.hasMaxEdge,f=t.minBound,d=t.maxBound,m=t.screenRange,g=s?n-1:n,p=l?e+1:e;if(r<f)return g;if(d<r)return p;var h,v,b,y,x,w=Rx((x=f,Math.min(d,Math.max(r,x))-x)/m*o+n,g,p);return u&&n<=w&&w<=e?(h=w,v=n,b=e,y=i,a.fold(function(){var t=Math.round((h-v)/y)*y;return Rx(v+t,v-1,b+1)},function(t){var n=Math.round((h-t)%y/y),e=Math.floor((h-t)/y),o=Math.floor((b-t)/y),r=Math.min(o,e+n);return Math.max(t,t+r*y)})):c?Math.round(w):w}function Px(t){var n=t.min,e=t.max,o=t.range,r=t.value,i=t.hasMinEdge,u=t.hasMaxEdge,a=t.maxBound,c=t.maxOffset,s=t.centerMinEdge,l=t.centerMaxEdge;return r<n?i?0:s:e<r?u?a:l:(r-n)/o*c}function Hx(t){return t.element.dom.getBoundingClientRect()}function zx(t){return Hx(t)[G0]}function Nx(t){return Hx(t).right}function Lx(t){return Hx(t).top}function jx(t){return Hx(t).bottom}function Wx(t){return Hx(t).width}function Ux(t){return Hx(t).height}function Gx(t,n){var e=Hx(t),o=Hx(n);return(e[G0]+e.right)/2-o[G0]}function Xx(t,n){var e=Hx(t),o=Hx(n);return(e.top+e.bottom)/2-o.top}function Yx(t,n){Ne(t,U0(),{value:n})}function qx(t,n,e){return Vx({min:cx(n),max:dx(n),range:vx(n),value:e,step:wx(n),snap:Sx(n),snapStart:kx(n),rounded:Cx(n),hasMinEdge:_x(n),hasMaxEdge:Tx(n),minBound:zx(t),maxBound:Nx(t),screenRange:Wx(t)})}function Kx(r){return function(t,n){return Yx(t,{x:o=(0<r?Ix:Fx)(Bx(e=n).x,cx(e),dx(e),wx(e))}),ft.some(o).map(_);var e,o}}function Jx(t,n,e,o,r,i){var u,a,c,s,l,f,d,m,g=(a=i,c=e,s=o,l=r,f=Wx(u=n),d=s.bind(function(t){return ft.some(Gx(t,u))}).getOr(0),m=l.bind(function(t){return ft.some(Gx(t,u))}).getOr(f),Px({min:cx(a),max:dx(a),range:vx(a),value:c,hasMinEdge:_x(a),hasMaxEdge:Tx(a),minBound:zx(u),minOffset:0,maxBound:Nx(u),maxOffset:f,centerMinEdge:d,centerMaxEdge:m}));return zx(n)-zx(t)+g}function $x(t,n){Ne(t,U0(),{value:n})}function Qx(t,n,e){return Vx({min:sx(n),max:mx(n),range:bx(n),value:e,step:wx(n),snap:Sx(n),snapStart:kx(n),rounded:Cx(n),hasMinEdge:Ex(n),hasMaxEdge:Dx(n),minBound:Lx(t),maxBound:jx(t),screenRange:Ux(t)})}function Zx(r){return function(t,n){return $x(t,{y:o=(0<r?Ix:Fx)(Bx(e=n).y,sx(e),mx(e),wx(e))}),ft.some(o).map(_);var e,o}}function t0(t,n,e,o,r,i){var u,a,c,s,l,f,d,m,g=(a=i,c=e,s=o,l=r,f=Ux(u=n),d=s.bind(function(t){return ft.some(Xx(t,u))}).getOr(0),m=l.bind(function(t){return ft.some(Xx(t,u))}).getOr(f),Px({min:sx(a),max:mx(a),range:bx(a),value:c,hasMinEdge:Ex(a),hasMaxEdge:Dx(a),minBound:Lx(u),minOffset:0,maxBound:jx(u),maxOffset:f,centerMinEdge:d,centerMaxEdge:m}));return Lx(n)-Lx(t)+g}function n0(t,n){Ne(t,U0(),{value:n})}function e0(t,n){return{x:t,y:n}}function o0(u,a){return function(t,n){return o=n,r=0<u?Ix:Fx,n0(t,e0(i=(e=a)?Bx(o).x:r(Bx(o).x,cx(o),dx(o),wx(o)),e?r(Bx(o).y,sx(o),mx(o),wx(o)):Bx(o).y)),ft.some(i).map(_);var e,o,r,i}}function r0(t){return"<alloy.field."+t+">"}function i0(f,d,m,g){function p(t,n,e,o,r){var i,u,a=f(xw+"range"),c=[dy.parts.label({dom:{tag:"label",innerHtml:e,attributes:{"aria-label":o}}}),dy.parts.field({data:r,factory:Ey,inputAttributes:st({type:"text"},"hex"===n?{"aria-live":"polite"}:{}),inputClasses:[d("textfield")],inputBehaviours:Za([(i=n,u=t,qy.config({invalidClass:d("invalid"),notify:{onValidate:function(t){Ne(t,yw,{type:i})},onValid:function(t){Ne(t,vw,{type:i,value:_f.getValue(t)})},onInvalid:function(t){Ne(t,bw,{type:i,value:_f.getValue(t)})}},validator:{validate:function(t){var n=_f.getValue(t),e=u(n)?mt.value(!0):mt.error(f("aria.input.invalid"));return Uy(e)},validateOnLoad:!1}})),gy.config({})]),onSetValue:function(t){qy.isInvalid(t)&&qy.run(t).get(ct)}})],s="hex"!==n?[dy.parts["aria-descriptor"]({text:a})]:[];return{dom:{tag:"div",attributes:{role:"presentation"}},components:c.concat(s)}}function h(t,n){var e=n.red,o=n.green,r=n.blue;_f.setValue(t,{red:e,green:o,blue:r})}function v(t,n){b.getOpt(t).each(function(t){ni(t.element,"background-color","#"+n.value)})}var b=Vm({dom:{tag:"div",classes:[d("rgba-preview")],styles:{"background-color":"white"},attributes:{role:"presentation"}}});return xl({factory:function(){function a(t){return o[t].get()}function c(t,n){o[t].set(n)}function n(t,n){var e=n.event;"hex"!==e.type?c(e.type,ft.none()):g(t)}function e(t,n){var r,e,o,i,u=n.event;"hex"===u.type?function(t,n){m(t);var e=Ev(n);c("hex",ft.some(n));var o=Rv(e);h(t,o),s(o),Ne(t,dw,{hex:e}),v(t,e)}(t,u.value):(r=t,e=u.type,o=u.value,i=parseInt(o,10),c(e,ft.some(i)),a("red").bind(function(e){return a("green").bind(function(n){return a("blue").map(function(t){return Mv(e,n,t,1)})})}).each(function(t){var n,e,o=(n=r,e=Av(t),hw.getField(n,"hex").each(function(t){Rg.isFocused(t)||_f.setValue(n,{hex:e.value})}),e);Ne(r,dw,{hex:o}),v(r,o)}))}function t(t){return{label:f(xw+t+".label"),description:f(xw+t+".description")}}function s(t){var n=t.red,e=t.green,o=t.blue;c("red",ft.some(n)),c("green",ft.some(e)),c("blue",ft.some(o))}var o={red:wn(ft.some(255)),green:wn(ft.some(255)),blue:wn(ft.some(255)),hex:wn(ft.some("ffffff"))},r=t("red"),i=t("green"),u=t("blue"),l=t("hex");return Jn(hw.sketch(function(t){return{dom:{tag:"form",classes:[d("rgb-form")],attributes:{"aria-label":f("aria.color.picker")}},components:[t.field("red",dy.sketch(p(Fv,"red",r.label,r.description,255))),t.field("green",dy.sketch(p(Fv,"green",i.label,i.description,255))),t.field("blue",dy.sketch(p(Fv,"blue",u.label,u.description,255))),t.field("hex",dy.sketch(p(Dv,"hex",l.label,l.description,"ffffff"))),b.asSpec()],formBehaviours:Za([qy.config({invalidClass:d("form-invalid")}),lm("rgb-form-events",[Xe(vw,e),Xe(bw,n),Xe(yw,n)])])}}),{apis:{updateHex:function(t,n){var e;_f.setValue(t,{hex:n.value}),h(t,e=Rv(n)),s(e),v(t,n)}}})},name:"RgbForm",configFields:[],apis:{updateHex:function(t,n,e){t.updateHex(n,e)}},extraApis:{}})}function u0(x,w){return xl({name:"ColourPicker",configFields:[Jt("dom"),dn("onValidHex",ct),dn("onInvalidHex",ct)],factory:function(t){function n(t,n,e){v.getOpt(t).each(function(t){g.setHue(t,e)})}function e(t,n){b.getOpt(t).each(function(t){m.updateHex(t,n)})}function r(n,e,o,t){var r=o,i=Rv(e);p.paletteRgba.set(i),p.paletteHue.set(r),dt(t,function(t){t(n,e,o)})}var o,i,u,a,c,s,l,f,d,m=i0(x,w,t.onValidHex,t.onInvalidHex),g=(l=w,f=fw.parts.spectrum({dom:{tag:"canvas",attributes:{role:"presentation"},classes:[l("sv-palette-spectrum")]}}),d=fw.parts.thumb({dom:{tag:"div",attributes:{role:"presentation"},classes:[l("sv-palette-thumb")],innerHtml:"<div class="+l("sv-palette-inner-thumb")+' role="presentation"></div>'}}),xl({factory:function(t){var n=tt({x:0,y:0}),e=Za([id.config({find:ft.some}),Rg.config({})]);return fw.sketch({dom:{tag:"div",attributes:{role:"presentation"},classes:[l("sv-palette")]},model:{mode:"xy",getInitialValue:n},rounded:!1,components:[f,d],onChange:function(t,n,e){Ne(t,gw,{value:e})},onInit:function(t,n,e,o){y(e.element.dom,Hv(cb))},sliderBehaviours:e})},name:"SaturationBrightnessPalette",configFields:[],apis:{setHue:function(t,n,e){var o=e;y(n.components()[0].element.dom,Hv(Iv(Nv(o,100,100))))},setThumb:function(t,n,e){var o=n,r=Lv(Rv(e));fw.setValue(o,{x:r.saturation,y:100-r.value})}},extraApis:{}})),p={paletteRgba:wn(cb),paletteHue:wn(0)},h=Vm((i=fw.parts.spectrum({dom:{tag:"div",classes:[(o=w)("hue-slider-spectrum")],attributes:{role:"presentation"}}}),u=fw.parts.thumb({dom:{tag:"div",classes:[o("hue-slider-thumb")],attributes:{role:"presentation"}}}),fw.sketch({dom:{tag:"div",classes:[o("hue-slider")],attributes:{role:"presentation"}},rounded:!1,model:{mode:"y",getInitialValue:tt({y:0})},components:[i,u],sliderBehaviours:Za([Rg.config({})]),onChange:function(t,n,e){Ne(t,mw,{value:e})}}))),v=Vm(g.sketch({})),b=Vm(m.sketch({}));function y(t,n){var e,o,r=t.width,i=t.height,u=t.getContext("2d");null!==u&&(u.fillStyle=n,u.fillRect(0,0,r,i),(e=u.createLinearGradient(0,0,r,0)).addColorStop(0,"rgba(255,255,255,1)"),e.addColorStop(1,"rgba(255,255,255,0)"),u.fillStyle=e,u.fillRect(0,0,r,i),(o=u.createLinearGradient(0,0,0,i)).addColorStop(0,"rgba(0,0,0,0)"),o.addColorStop(1,"rgba(0,0,0,1)"),u.fillStyle=o,u.fillRect(0,0,r,i))}return{uid:t.uid,dom:t.dom,components:[v.asSpec(),h.asSpec(),b.asSpec()],behaviours:Za([lm("colour-picker-events",[Xe(dw,(s=[n,function(t,n,e){h.getOpt(t).each(function(t){fw.setValue(t,{y:100-e/360*100})})},function(t,n){v.getOpt(t).each(function(t){g.setThumb(t,n)})}],function(t,n){var e=n.event.hex;r(t,e,Lv(Rv(e)).hue,s)})),Xe(gw,(c=[e],function(t,n){var e=n.event.value,o=p.paletteHue.get();r(t,jv(Nv(o,e.x,100-e.y)),o,c)})),Xe(mw,(a=[n,e],function(t,n){var e=(100-n.event.value.y)/100*360,o=Lv(p.paletteRgba.get());r(t,jv(Nv(e,o.saturation,o.value)),e,a)}))]),id.config({find:function(t){return b.getOpt(t)}}),Bg.config({mode:"acyclic"})])}}})}function a0(t){return kw[t]}function c0(t,n,e){return _f.config(Jn({store:{mode:"manual",getValue:n,setValue:e}},t.map(function(t){return{store:{initialValue:t}}}).getOr({})))}function s0(r,i){function n(t,n){n.stop()}function e(t){return function(n,e){dt(t,function(t){t(n,e)})}}function o(t,n){var e;fd.isDisabled(t)||(e=n.event.raw,a(t,e.dataTransfer.files))}function u(t,n){var e=n.event.raw.target;a(t,e.files)}function a(t,n){var e,o;_f.setValue(t,(e=n,o=Ow.explode(i.getSetting("images_file_types","jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp","string")),F(rt(e),function(n){return T(o,function(t){return he(n.name.toLowerCase(),"."+t.toLowerCase())})}))),Ne(t,by,{name:r.name})}var c=Vm({dom:{tag:"input",attributes:{type:"file",accept:"image/*"},styles:{display:"none"}},behaviours:Za([lm("input-file-events",[$e(bo()),$e(Bo())])])});return $b(r.label.map(function(t){return Qb(t,i)}),dy.parts.field({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"div",classes:["tox-dropzone-container"]},behaviours:Za([Dw([]),x0(),fd.config({}),Hg.config({toggleClass:"dragenter",toggleOnExecute:!1}),lm("dropzone-events",[Xe("dragenter",e([n,Hg.toggle])),Xe("dragleave",e([n,Hg.toggle])),Xe("dragover",n),Xe("drop",e([n,o])),Xe(vo(),u)])]),components:[{dom:{tag:"div",classes:["tox-dropzone"],styles:{}},components:[{dom:{tag:"p",innerHtml:i.translate("Drop an image here")}},cp.sketch({dom:{tag:"button",innerHtml:i.translate("Browse for an image"),styles:{position:"relative"},classes:["tox-button","tox-button--secondary"]},components:[c.asSpec()],action:function(t){c.get(t).element.dom.click()},buttonBehaviours:Za([gy.config({}),qv(i.isDisabled),dv()])})]}]}}}}),["tox-form__group--stretched"],[])}function l0(t){return{dom:{tag:"div",styles:{width:"1px",height:"1px",outline:"none"},attributes:{tabindex:"0"},classes:t},behaviours:Za([Rg.config({ignore:!0}),gy.config({})])}}function f0(t){return{dom:{tag:"div",classes:["tox-navobj"]},components:[l0([Bw]),t,l0([Aw])],behaviours:Za([Sw(1)])}}function d0(t,n){Ne(t,go(),{raw:{which:9,shiftKey:n}})}function m0(t,n){var e=n.element;Xr(e,Bw)?d0(t,!0):Xr(e,Aw)&&d0(t,!1)}function g0(t){return jb(t,["."+Bw,"."+Aw].join(","),O)}function p0(t,n){return Iw(document.createElement("canvas"),t,n)}function h0(t){var n=p0(t.width,t.height);return Fw(n).drawImage(t,0,0),n}function v0(t){return t.naturalWidth||t.width}function b0(t){return t.naturalHeight||t.height}(Hy=Py=Py||{})[Hy.HighlightFirst=0]="HighlightFirst",Hy[Hy.HighlightNone=1]="HighlightNone";function y0(o,t){return{uid:o.uid,dom:o.dom,components:t,behaviours:Qs(o.formBehaviours,[_f.config({store:{mode:"manual",getValue:function(t){return yt(ml(t,o),function(t,o){return t().bind(function(t){var n=id.getCurrent(t),e=new Error("Cannot find a current component to extract the value from for form part '"+o+"': "+Br(t.element));return n.fold(function(){return mt.error(e)},mt.value)}).map(_f.getValue)})},setValue:function(e,t){bt(t,function(n,t){ll(e,o,t).each(function(t){id.getCurrent(t).each(function(t){_f.setValue(t,n)})})})}}})]),apis:{getField:function(t,n){return ll(t,o,n).bind(id.getCurrent)}}}}function x0(){return id.config({find:ft.some})}function w0(t){return n=Sr,e=kr,c0(t,function(t){return n(t.element)},function(t,n){return e(t.element,n)});var n,e}var S0,k0,C0,O0,_0,T0=function(n,t){return n.getSystem().getByUid(t.uid+"-"+$y()).map(function(t){return function(){return mt.value(t)}}).getOrThunk(function(){return t.lazySink.fold(function(){return function(){return mt.error(new Error("No internal sink is specified, nor could an external sink be found"))}},function(t){return function(){return t(n)}})})},E0=tt([Jt("dom"),Jt("fetch"),Ku("onOpen"),Ju("onExecute"),dn("getHotspot",ft.some),dn("getAnchorOverrides",tt({})),zc(),Js("dropdownBehaviours",[Hg,Jy,Bg,Rg]),Jt("toggleClass"),dn("eventOrder",{}),rn("lazySink"),dn("matchWidth",!1),dn("useMinWidth",!1),rn("role")].concat(ix())),D0=tt([qf({schema:[Xu()],name:"menu",defaults:function(t){return{onExecute:t.onExecute}}}),Qy()]),B0=wl({name:"Dropdown",configFields:E0(),partFields:D0(),factory:function(n,t,e,o){function r(t){pf.getState(t).each(function(t){ep.highlightPrimary(t)})}function i(t,n){return Le(t),ft.some(!0)}var u,a={expand:function(t){Hg.isOn(t)||nx(n,h,t,o,ct,Py.HighlightNone).get(ct)},open:function(t){Hg.isOn(t)||nx(n,h,t,o,ct,Py.HighlightFirst).get(ct)},isOpen:Hg.isOn,close:function(t){Hg.isOn(t)&&nx(n,h,t,o,ct,Py.HighlightFirst).get(ct)},repositionMenus:function(t){Hg.isOn(t)&&rx(t)}};return{uid:n.uid,dom:n.dom,components:t,behaviours:Qs(n.dropdownBehaviours,[Hg.config({toggleClass:n.toggleClass,aria:{mode:"expanded"}}),Jy.config({others:{sandbox:function(t){return ox(n,t,{onOpen:function(){return Hg.on(t)},onClose:function(){return Hg.off(t)}})}}}),Bg.config({mode:"special",onSpace:i,onEnter:i,onDown:function(t,n){return B0.isOpen(t)?r(Jy.getCoupled(t,"sandbox")):B0.open(t),ft.some(!0)},onEscape:function(t,n){return B0.isOpen(t)?(B0.close(t),ft.some(!0)):ft.none()}}),Rg.config({})]),events:ym(ft.some(function(t){nx(n,h,t,o,r,Py.HighlightFirst).get(ct)})),eventOrder:st(st({},n.eventOrder),((u={})[Eo()]=["disabling","toggling","alloy.base.behaviour"],u)),apis:a,domModification:{attributes:st(st({"aria-haspopup":"true"},n.role.fold(function(){return{}},function(t){return{role:t}})),"button"===n.dom.tag?{type:kt(n.dom,"attributes").bind(function(t){return kt(t,"type")}).getOr("button")}:{})}}},apis:{open:function(t,n){return t.open(n)},expand:function(t,n){return t.expand(n)},close:function(t,n){return t.close(n)},isOpen:function(t,n){return t.isOpen(n)},repositionMenus:function(t,n){return t.repositionMenus(n)}}}),A0=xa({fields:[],name:"unselecting",active:Object.freeze({__proto__:null,events:function(){return Jo([Ue(So(),_)])},exhibit:function(){return Hr({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),M0=Ar("color-input-change"),F0=Ar("color-swatch-change"),I0=Ar("color-picker-cancel"),R0=Kf({schema:[Jt("dom")],name:"label"}),V0=ux("top-left"),P0=ux("top"),H0=ux("top-right"),z0=ux("right"),N0=ux("bottom-right"),L0=ux("bottom"),j0=ux("bottom-left"),W0=[R0,ux("left"),z0,P0,L0,V0,H0,j0,N0,Yf({name:"thumb",defaults:tt({dom:{styles:{position:"absolute"}}}),overrides:function(t){return{events:Jo([Ke(eo(),t,"spectrum"),Ke(oo(),t,"spectrum"),Ke(ro(),t,"spectrum"),Ke(uo(),t,"spectrum"),Ke(ao(),t,"spectrum"),Ke(so(),t,"spectrum")])}}}),Yf({schema:[fe("mouseIsDown",function(){return wn(!1)})],name:"spectrum",overrides:function(e){function o(n,t){return r.getValueFromEvent(t).map(function(t){return r.setValueFrom(n,e,t)})}var r=e.model.manager;return{behaviours:Za([Bg.config({mode:"special",onLeft:function(t){return r.onLeft(t,e)},onRight:function(t){return r.onRight(t,e)},onUp:function(t){return r.onUp(t,e)},onDown:function(t){return r.onDown(t,e)}}),Rg.config({})]),events:Jo([Xe(eo(),o),Xe(oo(),o),Xe(uo(),o),Xe(ao(),function(t,n){e.mouseIsDown.get()&&o(t,n)})])}}})],U0=tt("slider.change.value"),G0="left",X0=Kx(-1),Y0=Kx(1),q0=ft.none,K0=ft.none,J0={"top-left":ft.none(),top:ft.none(),"top-right":ft.none(),right:ft.some(function(t,n){Mx(t,{x:gx(n)})}),"bottom-right":ft.none(),bottom:ft.none(),"bottom-left":ft.none(),left:ft.some(function(t,n){Mx(t,{x:lx(n)})})},$0=Object.freeze({__proto__:null,setValueFrom:function(t,n,e){var o=qx(t,n,e);return Yx(t,{x:o}),o},setToMin:function(t,n){Yx(t,{x:cx(n)})},setToMax:function(t,n){Yx(t,{x:dx(n)})},findValueOfOffset:qx,getValueFromEvent:function(t){return ax(t).map(function(t){return t.left})},findPositionOfValue:Jx,setPositionFromValue:function(t,n,e,o){var r=Bx(e),i=Jx(t,o.getSpectrum(t),r.x,o.getLeftEdge(t),o.getRightEdge(t),e),u=wi(n.element)/2;ni(n.element,"left",i-u+"px")},onLeft:X0,onRight:Y0,onUp:q0,onDown:K0,edgeActions:J0}),Q0=ft.none,Z0=ft.none,tw=Zx(-1),nw=Zx(1),ew={"top-left":ft.none(),top:ft.some(function(t,n){Mx(t,{y:fx(n)})}),"top-right":ft.none(),right:ft.none(),"bottom-right":ft.none(),bottom:ft.some(function(t,n){Mx(t,{y:px(n)})}),"bottom-left":ft.none(),left:ft.none()},ow=Object.freeze({__proto__:null,setValueFrom:function(t,n,e){var o=Qx(t,n,e);return $x(t,{y:o}),o},setToMin:function(t,n){$x(t,{y:sx(n)})},setToMax:function(t,n){$x(t,{y:mx(n)})},findValueOfOffset:Qx,getValueFromEvent:function(t){return ax(t).map(function(t){return t.top})},findPositionOfValue:t0,setPositionFromValue:function(t,n,e,o){var r=Bx(e),i=t0(t,o.getSpectrum(t),r.y,o.getTopEdge(t),o.getBottomEdge(t),e),u=vi(n.element)/2;ni(n.element,"top",i-u+"px")},onLeft:Q0,onRight:Z0,onUp:tw,onDown:nw,edgeActions:ew}),rw=ax,iw=o0(-1,!1),uw=o0(1,!1),aw=o0(-1,!0),cw=o0(1,!0),sw={"top-left":ft.some(function(t,n){Mx(t,Ax(lx(n),fx(n)))}),top:ft.some(function(t,n){Mx(t,Ax(yx(n),fx(n)))}),"top-right":ft.some(function(t,n){Mx(t,Ax(gx(n),fx(n)))}),right:ft.some(function(t,n){Mx(t,Ax(gx(n),xx(n)))}),"bottom-right":ft.some(function(t,n){Mx(t,Ax(gx(n),px(n)))}),bottom:ft.some(function(t,n){Mx(t,Ax(yx(n),px(n)))}),"bottom-left":ft.some(function(t,n){Mx(t,Ax(lx(n),px(n)))}),left:ft.some(function(t,n){Mx(t,Ax(lx(n),xx(n)))})},lw=Object.freeze({__proto__:null,setValueFrom:function(t,n,e){var o=e0(qx(t,n,e.left),Qx(t,n,e.top));return n0(t,o),o},setToMin:function(t,n){n0(t,e0(cx(n),sx(n)))},setToMax:function(t,n){n0(t,e0(dx(n),mx(n)))},getValueFromEvent:rw,setPositionFromValue:function(t,n,e,o){var r=Bx(e),i=Jx(t,o.getSpectrum(t),r.x,o.getLeftEdge(t),o.getRightEdge(t),e),u=t0(t,o.getSpectrum(t),r.y,o.getTopEdge(t),o.getBottomEdge(t),e),a=wi(n.element)/2,c=vi(n.element)/2;ni(n.element,"left",i-a+"px"),ni(n.element,"top",u-c+"px")},onLeft:iw,onRight:uw,onUp:aw,onDown:cw,edgeActions:sw}),fw=wl({name:"Slider",configFields:[dn("stepSize",1),dn("onChange",ct),dn("onChoose",ct),dn("onInit",ct),dn("onDragStart",ct),dn("onDragEnd",ct),dn("snapToGrid",!1),dn("rounded",!0),rn("snapStart"),$t("model",qt("mode",{x:[dn("minX",0),dn("maxX",100),fe("value",function(t){return wn(t.mode.minX)}),Jt("getInitialValue"),Zu("manager",$0)],y:[dn("minY",0),dn("maxY",100),fe("value",function(t){return wn(t.mode.minY)}),Jt("getInitialValue"),Zu("manager",ow)],xy:[dn("minX",0),dn("maxX",100),dn("minY",0),dn("maxY",100),fe("value",function(t){return wn({x:t.mode.minX,y:t.mode.minY})}),Jt("getInitialValue"),Zu("manager",lw)]})),Js("sliderBehaviours",[Bg,_f]),fe("mouseIsDown",function(){return wn(!1)})],partFields:W0,factory:function(i,t,n,e){function u(t){return fl(t,i,"thumb")}function a(t){return fl(t,i,"spectrum")}function o(t){return ll(t,i,"left-edge")}function r(t){return ll(t,i,"right-edge")}function c(t){return ll(t,i,"top-edge")}function s(t){return ll(t,i,"bottom-edge")}function l(t,n){v.setPositionFromValue(t,n,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:c,getBottomEdge:s,getSpectrum:a})}function f(t,n){h.value.set(n),l(t,u(t))}function d(e){var t=i.mouseIsDown.get();i.mouseIsDown.set(!1),t&&ll(e,i,"thumb").each(function(t){var n=h.value.get();i.onChoose(e,t,n)})}function m(t,n){n.stop(),i.mouseIsDown.set(!0),i.onDragStart(t,u(t))}function g(t,n){n.stop(),i.onDragEnd(t,u(t)),d(t)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:t,behaviours:Qs(i.sliderBehaviours,[Bg.config({mode:"special",focusIn:function(t){return ll(t,i,"spectrum").map(Bg.focusIn).map(_)}}),_f.config({store:{mode:"manual",getValue:function(t){return h.value.get()}}}),oc.config({channels:((p={})[bf()]={onReceive:d},p)})]),events:Jo([Xe(U0(),function(t,n){!function(t,n){f(t,n);var e=u(t);i.onChange(t,e,n),ft.some(!0)}(t,n.event.value)}),$o(function(t,n){var e=h.getInitialValue();h.value.set(e);var o=u(t);l(t,o);var r=a(t);i.onInit(t,o,r,h.value.get())}),Xe(eo(),m),Xe(ro(),g),Xe(uo(),m),Xe(so(),g)]),apis:{resetToMin:function(t){v.setToMin(t,i)},resetToMax:function(t){v.setToMax(t,i)},setValue:f,refresh:l},domModification:{styles:{position:"relative"}}}},apis:{setValue:function(t,n,e){t.setValue(n,e)},resetToMin:function(t,n){t.resetToMin(n)},resetToMax:function(t,n){t.resetToMax(n)},refresh:function(t,n){t.refresh(n)}}}),dw=Ar("rgb-hex-update"),mw=Ar("slider-update"),gw=Ar("palette-update"),pw=[Js("formBehaviours",[_f])],hw={getField:Vr(function(t,n,e){return t.getField(n,e)}),sketch:function(t){var e,n={field:function(t,n){return e.push(t),il("form",r0(t),n)},record:tt(e=[])},o=t(n),r=A(n.record(),function(t){return Yf({name:t,pname:r0(t)})});return yl("form",pw,r,y0,o)}},vw=Ar("valid-input"),bw=Ar("invalid-input"),yw=Ar("validating-input"),xw="colorcustom.rgb.",ww=function(t){return id.config({find:t.getOpt})},Sw=function(t){return id.config({find:function(n){return lr(n.element,t).bind(function(t){return n.getSystem().getByDom(t).toOptional()})}})},kw={"colorcustom.rgb.red.label":"R","colorcustom.rgb.red.description":"Red component","colorcustom.rgb.green.label":"G","colorcustom.rgb.green.description":"Green component","colorcustom.rgb.blue.label":"B","colorcustom.rgb.blue.description":"Blue component","colorcustom.rgb.hex.label":"#","colorcustom.rgb.hex.description":"Hex color code","colorcustom.rgb.range":"Range 0 to 255","colorcustom.sb.saturation":"Saturation","colorcustom.sb.brightness":"Brightness","colorcustom.sb.picker":"Saturation and Brightness Picker","colorcustom.sb.palette":"Saturation and Brightness Palette","colorcustom.sb.instructions":"Use arrow keys to select saturation and brightness, on x and y axes","colorcustom.hue.hue":"Hue","colorcustom.hue.slider":"Hue Slider","colorcustom.hue.palette":"Hue Palette","colorcustom.hue.instructions":"Use arrow keys to select a hue","aria.color.picker":"Color Picker","aria.input.invalid":"Invalid input"},Cw=tinymce.util.Tools.resolve("tinymce.Resource"),Ow=tinymce.util.Tools.resolve("tinymce.util.Tools"),_w=te([dn("preprocess",h),dn("postprocess",h)]),Tw=function(r,t){var i=Yt("RepresentingConfigs.memento processors",_w,t);return _f.config({store:{mode:"manual",getValue:function(t){var n=r.get(t),e=_f.getValue(n);return i.postprocess(e)},setValue:function(t,n){var e=i.preprocess(n),o=r.get(t);_f.setValue(o,e)}}})},Ew=c0,Dw=function(t){return _f.config({store:{mode:"memory",initialValue:t}})},Bw=Ar("alloy-fake-before-tabstop"),Aw=Ar("alloy-fake-after-tabstop"),Mw=!(Be().browser.isIE()||Be().browser.isEdge()),Fw=function(t){return t.getContext("2d")},Iw=function(t,n,e){return t.width=n,t.height=e,t},Rw=window.Promise||(S0=window,k0=Vw.immediateFn||"function"==typeof S0.setImmediate&&S0.setImmediate||function(t){return setTimeout(t,1)},C0=function(e,o){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return e.apply(o,t)}},O0=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},_0=function(t,n,e){var o=!1;try{t(function(t){o||(o=!0,n(t))},function(t){o||(o=!0,e(t))})}catch(t){if(o)return;o=!0,e(t)}},Vw.prototype.catch=function(t){return this.then(null,t)},Vw.prototype.then=function(e,o){var r=this;return new Vw(function(t,n){Pw.call(r,new Lw(e,o,t,n))})},Vw.all=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var a=Array.prototype.slice.call(1===t.length&&O0(t[0])?t[0]:t);return new Vw(function(o,r){if(0===a.length)return o([]);for(var i=a.length,u=function(n,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void e.call(t,function(t){u(n,t)},r)}a[n]=t,0==--i&&o(a)}catch(t){r(t)}},t=0;t<a.length;t++)u(t,a[t])})},Vw.resolve=function(n){return n&&"object"==typeof n&&n.constructor===Vw?n:new Vw(function(t){t(n)})},Vw.reject=function(e){return new Vw(function(t,n){n(e)})},Vw.race=function(r){return new Vw(function(t,n){for(var e=0,o=r;e<o.length;e++)o[e].then(t,n)})},Vw);function Vw(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],_0(t,C0(Hw,this),C0(zw,this))}function Pw(e){var o=this;null!==this._state?k0(function(){var t,n=o._state?e.onFulfilled:e.onRejected;if(null!==n){try{t=n(o._value)}catch(t){return void e.reject(t)}e.resolve(t)}else(o._state?e.resolve:e.reject)(o._value)}):this._deferreds.push(e)}function Hw(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void _0(C0(n,t),C0(Hw,this),C0(zw,this))}this._state=!0,this._value=t,Nw.call(this)}catch(t){zw.call(this,t)}}function zw(t){this._state=!1,this._value=t,Nw.call(this)}function Nw(){for(var t=0,n=this._deferreds;t<n.length;t++){var e=n[t];Pw.call(this,e)}this._deferreds=[]}function Lw(t,n,e,o){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof n?n:null,this.resolve=e,this.reject=o}function jw(t,o,r){return o=o||"image/png",m(HTMLCanvasElement.prototype.toBlob)?new Rw(function(n,e){t.toBlob(function(t){t?n(t):e()},o,r)}):(g=t.toDataURL(o,r),new Rw(function(t,n){!function(){var t=g.split(","),n=/data:([^;]+)/.exec(t[0]);if(!n)return ft.none();for(var e=n[1],o=t[1],r=atob(o),i=r.length,u=Math.ceil(i/1024),a=new Array(u),c=0;c<u;++c){for(var s=1024*c,l=Math.min(1024+s,i),f=new Array(l-s),d=s,m=0;d<l;++m,++d)f[m]=r[d].charCodeAt(0);a[c]=new Uint8Array(f)}return ft.some(new Blob(a,{type:e}))}().fold(function(){n("uri is not base64: "+g)},t)}));var g}function Ww(t,n,e){function o(n,e){return t.then(function(t){return t.toDataURL(n||"image/png",e)})}return{getType:tt(n.type),toBlob:function(){return Rw.resolve(n)},toDataURL:tt(e),toBase64:function(){return e.split(",")[1]},toAdjustedBlob:function(n,e){return t.then(function(t){return jw(t,n,e)})},toAdjustedDataURL:o,toAdjustedBase64:function(t,n){return o(t,n).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(h0)}}}function Uw(n,t){return jw(n,t).then(function(t){return Ww(Rw.resolve(n),t,n.toDataURL())})}function Gw(n){return e=n,new Rw(function(t){var n=new FileReader;n.onloadend=function(){t(n.result)},n.readAsDataURL(e)}).then(function(t){return Ww((a=n,new Rw(function(t,n){function e(){r.removeEventListener("load",i),r.removeEventListener("error",u)}var o=URL.createObjectURL(a),r=new Image,i=function(){e(),t(r)},u=function(){e(),n("Unable to load data of type "+a.type+": "+o)};r.addEventListener("load",i),r.addEventListener("error",u),r.src=o,r.complete&&setTimeout(i,0)}).then(function(t){MS(t);var n=p0(v0(t),b0(t));return Fw(n).drawImage(t,0,0),n})),n,t);var a});var e}function Xw(t,n,e){var o="string"==typeof t?parseFloat(t):t;return e<o?o=e:o<n&&(o=n),o}function Yw(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function qw(t,n){for(var e=[],o=new Array(25),r=0;r<5;r++){for(var i=0;i<5;i++)e[i]=n[i+5*r];for(i=0;i<5;i++){for(var u=0,a=0;a<5;a++)u+=t[i+5*a]*e[a];o[i+5*r]=u}}return o}function Kw(n,e){return n.toCanvas().then(function(t){return IS(t,n.getType(),e)})}function Jw(e){return function(t,n){return Kw(t,e(Yw(),n))}}function $w(t,n){void 0===n&&(n=2);var e=Math.pow(10,n),o=Math.round(t*e);return Math.ceil(o/e)}function Qw(t){return RS(t)}function Zw(t){return HS(t)}function tS(t,n){return zS(t,n)}function nS(t,n){return VS(t,n)}function eS(t,n){return PS(t,n)}function oS(t,n){return o=n,(e=t).toCanvas().then(function(t){return WS(t,e.getType(),o)});var e,o}function rS(t,n){return o=n,(e=t).toCanvas().then(function(t){return jS(t,e.getType(),o)});var e,o}function iS(t,n,e){return Wm(t,{tag:"span",classes:["tox-icon","tox-tbtn__icon-wrap"],behaviours:e},n)}function uS(t,n){return iS(t,n,[])}function aS(t,n){return iS(t,n,[Mg.config({})])}function cS(t,n,e){return{dom:{tag:"span",innerHtml:e.translate(t),classes:[n+"__select-label"]},behaviours:Za([Mg.config({})])}}function sS(n,e,o){function t(t,n){var e=_f.getValue(t);return Rg.focus(e),Ne(e,"keydown",{raw:n.event.raw}),B0.close(e),ft.some(!0)}var r=wn(ct),i=n.text.map(function(t){return Vm(cS(t,e,o.providers))}),u=n.icon.map(function(t){return Vm(aS(t,o.providers.icons))}),a=n.role.fold(function(){return{}},function(t){return{role:t}}),c=n.tooltip.fold(function(){return{}},function(t){var n=o.providers.translate(t);return{title:n,"aria-label":n}}),s=Wm("chevron-down",{tag:"div",classes:[e+"__select-chevron"]},o.providers.icons);return Vm(B0.sketch(st(st(st({},n.uid?{uid:n.uid}:{}),a),{dom:{tag:"button",classes:[e,e+"--select"].concat(A(n.classes,function(t){return e+"--"+t})),attributes:st({},c)},components:$v([u.map(function(t){return t.asSpec()}),i.map(function(t){return t.asSpec()}),ft.some(s)]),matchWidth:!0,useMinWidth:!0,dropdownBehaviours:Za(H(H([],n.dropdownBehaviours),[qv(function(){return n.disabled||o.providers.isDisabled()}),dv(),A0.config({}),Mg.config({}),lm("dropdown-events",[gv(n,r),pv(n,r)]),lm("menubutton-update-display-text",[Xe(YS,function(n,e){i.bind(function(t){return t.getOpt(n)}).each(function(t){Mg.set(t,[pi(o.providers.translate(e.event.text))])})}),Xe(qS,function(n,e){u.bind(function(t){return t.getOpt(n)}).each(function(t){Mg.set(t,[aS(e.event.icon,o.providers.icons)])})})])])),eventOrder:Jn(XS,{mousedown:["focusing","alloy.base.behaviour","item-type-events","normal-dropdown-events"]}),sandboxBehaviours:Za([Bg.config({mode:"special",onLeft:t,onRight:t})]),lazySink:o.getSink,toggleClass:e+"--active",parts:{menu:Jp(0,n.columns,n.presets)},fetch:function(t){return Wy(S(n.fetch,t))}}))).asSpec()}function lS(t){return"separator"===t.type}function fS(t,e,o,n){var r=Ar("primary-menu"),i=JS(t,o.shared.providers.menuItems());if(0===i.items.length)return ft.none();var u=Nb(r,i.items,e,o,n),a=yt(i.menus,function(t,n){return Nb(n,t,e,o,!1)}),c=Jn(a,Ae(r,u));return ft.from(ep.tieredData(r,c,i.expansions))}function dS(e){return{isDisabled:function(){return fd.isDisabled(e)},setDisabled:function(t){return fd.set(e,t)},setActive:function(t){var n=e.element;t?(Ur(n,"tox-tbtn--enabled"),Or(n,"aria-pressed",!0)):(Gr(n,"tox-tbtn--enabled"),Dr(n,"aria-pressed"))},isActive:function(){return Xr(e.element,"tox-tbtn--enabled")}}}function mS(e,t,o,n){return sS({text:e.text,icon:e.icon,tooltip:e.tooltip,role:n,fetch:function(t,n){e.fetch(function(t){n(fS(t,yh.CLOSE_ON_EXECUTE,o,!1))})},onSetup:e.onSetup,getApi:dS,columns:1,presets:"normal",classes:[],dropdownBehaviours:[gy.config({})]},t,o.shared)}function gS(t,n,e,o,r,i){void 0===e&&(e=[]);var u=n.fold(function(){return{}},function(t){return{action:t}}),a=st({buttonBehaviours:Za([qv(function(){return t.disabled||i.isDisabled()}),dv(),gy.config({}),lm("button press",[Ge("click"),Ge("mousedown")])].concat(e)),eventOrder:{click:["button press","alloy.base.behaviour"],mousedown:["button press","alloy.base.behaviour"]}},u),c=Jn(a,{dom:o});return Jn(c,{components:r})}function pS(t,n,e,o){void 0===o&&(o=[]);var r={tag:"button",classes:["tox-tbtn"],attributes:t.tooltip.map(function(t){return{"aria-label":e.translate(t),title:e.translate(t)}}).getOr({})},i=t.icon.map(function(t){return uS(t,e.icons)});return gS(t,n,o,r,$v([i]),e)}function hS(t,n,e,o){void 0===o&&(o=[]);var r=pS(t,ft.some(n),e,o);return cp.sketch(r)}function vS(t,n,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=e.translate(t.text),u=t.icon?t.icon.map(function(t){return uS(t,e.icons)}):ft.none(),a=u.isSome()?$v([u]):[],c=u.isSome()?{}:{innerHtml:i},s=H(H(H(H([],t.primary||t.borderless?["tox-button"]:["tox-button","tox-button--secondary"]),u.isSome()?["tox-button--icon"]:[]),t.borderless?["tox-button--naked"]:[]),r);return gS(t,n,o,st(st({tag:"button",classes:s},c),{attributes:{title:i}}),a,e)}function bS(t,n,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=vS(t,ft.some(n),e,o,r);return cp.sketch(i)}function yS(n,e){return function(t){"custom"===e?Ne(t,wy,{name:n,value:{}}):"submit"===e?ze(t,Sy):"cancel"===e?ze(t,xy):console.error("Unknown button type: ",e)}}function xS(n,t,e){if("menu"===t){var o=n,r=Vm(mS(st(st({},n),{onSetup:function(t){return t.setDisabled(n.disabled),ct},fetch:(i=o.items,u=function(){return r},a=e,function(t){t(A(i,function(t){var n,e,o=t.text.fold(function(){return{}},function(t){return{text:t}});return st(st({type:t.type,active:!1},o),{onAction:function(t){var n=!t.isActive();t.setActive(n),e.storage.set(n),a.shared.getSink().each(function(t){u().getOpt(t).each(function(t){Sa(t.element),Ne(t,wy,{name:e.name,value:e.storage.get()})})})},onSetup:(n=e=t,function(t){t.setActive(n.storage.get())})})}))})}),"tox-tbtn",e,ft.none()));return r.asSpec()}var i,u,a;if("custom"===t||"cancel"===t||"submit"===t){var c=yS(n.name,t);return bS(st(st({},n),{borderless:!1}),c,e.shared.providers,[])}console.error("Unknown footer button type: ",t)}function wS(t,n){return Yf({factory:dy,name:t,overrides:function(o){return{fieldBehaviours:Za([lm("coupled-input-behaviour",[Xe(ho(),function(e){ll(e,o,n).bind(id.getCurrent).each(function(n){ll(e,o,"lock").each(function(t){Hg.isOn(t)&&o.onLockedChange(e,n,t)})})})])])}}})}function SS(t){var n=/^\s*(\d+(?:\.\d+)?)\s*(|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)\s*$/.exec(t);if(null===n)return mt.error(t);var e=parseFloat(n[1]),o=n[2];return mt.value({value:e,unit:o})}function kS(t,n){function e(t){return Kn(o,t)}var o={"":96,px:96,pt:72,cm:2.54,pc:12,mm:25.4,in:1};return t.unit===n?ft.some(t.value):e(t.unit)&&e(n)?o[t.unit]===o[n]?ft.some(t.value):ft.some(t.value/o[t.unit]*o[n]):ft.none()}function CS(t){return ft.none()}function OS(o,n){function t(t){return Wm(t,{tag:"span",classes:["tox-icon","tox-lock-icon__"+t]},n.icons)}function e(t){return{dom:{tag:"div",classes:["tox-form__group"]},components:t}}function r(e){return dy.parts.field({factory:Ey,inputClasses:["tox-textfield"],inputBehaviours:Za([fd.config({disabled:function(){return o.disabled||n.isDisabled()}}),dv(),gy.config({}),lm("size-input-events",[Xe(fo(),function(t,n){Ne(t,u,{isField1:e})}),Xe(vo(),function(t,n){Ne(t,by,{name:o.name})})])]),selectOnFocus:!1})}function i(t){return{dom:{tag:"label",classes:["tox-label"],innerHtml:n.translate(t)}}}var l=CS,u=Ar("ratio-event"),a=ZS.parts.lock({dom:{tag:"button",classes:["tox-lock","tox-button","tox-button--naked","tox-button--icon"],attributes:{title:n.translate(o.label.getOr("Constrain proportions"))}},components:[t("lock"),t("unlock")],buttonBehaviours:Za([fd.config({disabled:function(){return o.disabled||n.isDisabled()}}),dv(),gy.config({})])}),c=ZS.parts.field1(e([dy.parts.label(i("Width")),r(!0)])),s=ZS.parts.field2(e([dy.parts.label(i("Height")),r(!1)]));return ZS.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:[{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:[c,s,e([i("&nbsp;"),a])]}],field1Name:"width",field2Name:"height",locked:!0,markers:{lockClass:"tox-locked"},onLockedChange:function(t,i,n){SS(_f.getValue(t)).each(function(t){l(t).each(function(t){var n,e,o,r;_f.setValue(i,(r=-1!==(r=(n=t).value.toFixed((e=n.unit)in(o={"":0,px:0,pt:1,mm:1,pc:2,ex:2,em:2,ch:2,rem:2,cm:3,in:4,"%":4})?o[e]:1)).indexOf(".")?r.replace(/\.?0*$/,""):r)+n.unit)})})},coupledFieldBehaviours:Za([fd.config({disabled:function(){return o.disabled||n.isDisabled()},onDisabled:function(t){ZS.getField1(t).bind(dy.getField).each(fd.disable),ZS.getField2(t).bind(dy.getField).each(fd.disable),ZS.getLock(t).each(fd.disable)},onEnabled:function(t){ZS.getField1(t).bind(dy.getField).each(fd.enable),ZS.getField2(t).bind(dy.getField).each(fd.enable),ZS.getLock(t).each(fd.enable)}}),dv(),lm("size-input-events2",[Xe(u,function(t,n){var e,o,r,i=n.event.isField1,u=i?ZS.getField1(t):ZS.getField2(t),a=i?ZS.getField2(t):ZS.getField1(t),c=u.map(_f.getValue).getOr(""),s=a.map(_f.getValue).getOr("");e=s,o=SS(c).toOptional(),r=SS(e).toOptional(),l=fu(o,r,function(t,o){return kS(t,o.unit).map(function(t){return o.value/t}).map(function(t){return n=t,e=o.unit,function(t){return kS(t,e).map(function(t){return{value:t*n,unit:e}})};var n,e}).getOr(CS)}).getOr(CS)})])])})}function _S(f,c){function t(t,n,e,o){return Vm(bS({name:t,text:t,disabled:e,primary:o,icon:ft.none(),borderless:!1},n,c))}function n(t,n,e,o){return Vm(hS({name:t,icon:ft.some(t),tooltip:ft.some(n),disabled:o,primary:!1,borderless:!1},e,c))}function d(t,e){t.map(function(t){var n=t.get(e);n.hasConfigured(fd)&&fd.disable(n)})}function m(t,e){t.map(function(t){var n=t.get(e);n.hasConfigured(fd)&&fd.enable(n)})}function r(t,n,e){Ne(t,n,e)}function i(t){return ze(t,rk.disable()),0}function u(t){return ze(t,rk.enable()),0}function g(t,n){i(t),r(t,tk.transform(),{transform:n}),u(t)}function e(t){return function(){q.getOpt(t).each(function(t){Mg.set(t,[Y])})}}function s(t,n){i(t),r(t,tk.transformApply(),{transform:n,swap:e(t)}),u(t)}function p(){return t("Back",function(t){return r(t,tk.back(),{swap:e(t)})},!1,!1)}function o(){return Vm({dom:{tag:"div",classes:["tox-spacer"]},behaviours:Za([fd.config({})])})}function h(){return t("Apply",function(t){return r(t,tk.apply(),{swap:e(t)})},!0,!0)}function v(n,e){return function(t){return n(t,e)}}function a(t,n){var e,o=n;i(e=t),r(e,tk.tempTransform(),{transform:o}),u(e)}function b(t,n,e,o,r){var i=fw.parts.label({dom:{tag:"label",classes:["tox-label"],innerHtml:c.translate(t)}}),u=fw.parts.spectrum({dom:{tag:"div",classes:["tox-slider__rail"],attributes:{role:"presentation"}}}),a=fw.parts.thumb({dom:{tag:"div",classes:["tox-slider__handle"],attributes:{role:"presentation"}}});return Vm(fw.sketch({dom:{tag:"div",classes:["tox-slider"],attributes:{role:"presentation"}},model:{mode:"x",minX:e,maxX:r,getInitialValue:tt({x:o})},components:[i,u,a],sliderBehaviours:Za([Rg.config({})]),onChoose:n}))}function l(t,n,e,o,r){var i,u,a,c,s,l,f=(i=t,u=n,a=e,c=o,s=r,[p(),(l=u,b(i,function(t,n,e){g(t,v(l,e.x/100))},a,c,s)),h()]);return sy.sketch({dom:w,components:f.map(function(t){return t.asSpec()}),containerBehaviours:Za([lm("image-tools-filter-panel-buttons-events",[Xe(rk.disable(),function(t,n){d(f,t)}),Xe(rk.enable(),function(t,n){m(f,t)})])])})}function y(t){return b(t,function(l,t,n){var e=z.getOpt(l),o=L.getOpt(l),r=N.getOpt(l);e.each(function(s){o.each(function(c){r.each(function(t){var o,r,i,n=_f.getValue(s).x/100,e=_f.getValue(t).x/100,u=_f.getValue(c).x/100,a=(o=n,r=e,i=u,function(t){return Kw(t,(n=r,e=i,qw(Yw(),[Xw(o,0,2),0,0,0,0,0,Xw(n,0,2),0,0,0,0,0,Xw(e,0,2),0,0,0,0,0,1,0,0,0,0,0,1])));var n,e});g(l,a)})})})},0,100,200)}function x(n,e,o){return function(t){r(t,tk.swap(),{transform:e,swap:function(){q.getOpt(t).each(function(t){Mg.set(t,[n]),o(t)})}})}}var w={tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools-edit-panel"]},S=ct,k=[p(),o(),t("Apply",function(t){s(t,function(t){var n,e,o,r,i,u,a,c,s,l=f.getRect();return n=l.x,e=l.y,o=l.w,r=l.h,u=n,a=e,c=o,s=r,(i=t).toCanvas().then(function(t){return US(t,i.getType(),u,a,c,s)})}),f.hideCrop()},!1,!0)],C=sy.sketch({dom:w,components:k.map(function(t){return t.asSpec()}),containerBehaviours:Za([lm("image-tools-crop-buttons-events",[Xe(rk.disable(),function(t,n){d(k,t)}),Xe(rk.enable(),function(t,n){m(k,t)})])])}),O=Vm(OS({name:"size",label:ft.none(),constrain:!0,disabled:!1},c)),_=[p(),o(),O,o(),t("Apply",function(a){O.getOpt(a).each(function(t){var r,i,n=_f.getValue(t),e=parseInt(n.width,10),o=parseInt(n.height,10),u=(r=e,i=o,function(t){return e=r,o=i,(n=t).toCanvas().then(function(t){return NS(t,e,o).then(function(t){return Uw(t,n.getType())})});var n,e,o});s(a,u)})},!1,!0)],T=sy.sketch({dom:w,components:_.map(function(t){return t.asSpec()}),containerBehaviours:Za([lm("image-tools-resize-buttons-events",[Xe(rk.disable(),function(t,n){d(_,t)}),Xe(rk.enable(),function(t,n){m(_,t)})])])}),E=v(oS,"h"),D=v(oS,"v"),B=v(rS,-90),A=v(rS,90),M=[p(),o(),n("flip-horizontally","Flip horizontally",function(t){a(t,E)},!1),n("flip-vertically","Flip vertically",function(t){a(t,D)},!1),n("rotate-left","Rotate counterclockwise",function(t){a(t,B)},!1),n("rotate-right","Rotate clockwise",function(t){a(t,A)},!1),o(),h()],F=sy.sketch({dom:w,components:M.map(function(t){return t.asSpec()}),containerBehaviours:Za([lm("image-tools-fliprotate-buttons-events",[Xe(rk.disable(),function(t,n){d(M,t)}),Xe(rk.enable(),function(t,n){m(M,t)})])])}),I=[p(),o(),h()],R=sy.sketch({dom:w,components:I.map(function(t){return t.asSpec()})}),V=l("Brightness",nS,-100,0,100),P=l("Contrast",eS,-100,0,100),H=l("Gamma",tS,-100,0,100),z=y("R"),N=y("G"),L=y("B"),j=[p(),z,N,L,h()],W=sy.sketch({dom:w,components:j.map(function(t){return t.asSpec()})}),U=ft.some(Zw),G=ft.some(Qw),X=[n("crop","Crop",x(C,ft.none(),function(t){f.showCrop()}),!1),n("resize","Resize",x(T,ft.none(),function(t){O.getOpt(t).each(function(t){var n=f.getMeasurements(),e=n.width,o=n.height;_f.setValue(t,{width:e,height:o})})}),!1),n("orientation","Orientation",x(F,ft.none(),S),!1),n("brightness","Brightness",x(V,ft.none(),S),!1),n("sharpen","Sharpen",x(R,U,S),!1),n("contrast","Contrast",x(P,ft.none(),S),!1),n("color-levels","Color levels",x(W,ft.none(),S),!1),n("gamma","Gamma",x(H,ft.none(),S),!1),n("invert","Invert",x(R,G,S),!1)],Y=sy.sketch({dom:w,components:X.map(function(t){return t.asSpec()})}),q=Vm(sy.sketch({dom:{tag:"div"},components:[Y],containerBehaviours:Za([Mg.config({})])}));return{memContainer:q,getApplyButton:function(t){return q.getOpt(t).map(function(t){var n=t.components()[0];return n.components()[n.components().length-1]})}}}function TS(t){var n,e;if(t.changedTouches)for(n="screenX screenY pageX pageY clientX clientY".split(" "),e=0;e<n.length;e++)t[n[e]]=t.changedTouches[0][n[e]]}var ES,DS,BS,AS,MS=function(t){URL.revokeObjectURL(t.src)},FS=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10],IS=function(t,n,T){var e=Fw(t),o=function(t){for(var n,e,o,r,i=t.data,u=T[0],a=T[1],c=T[2],s=T[3],l=T[4],f=T[5],d=T[6],m=T[7],g=T[8],p=T[9],h=T[10],v=T[11],b=T[12],y=T[13],x=T[14],w=T[15],S=T[16],k=T[17],C=T[18],O=T[19],_=0;_<i.length;_+=4)n=i[_],e=i[_+1],o=i[_+2],r=i[_+3],i[_]=n*u+e*a+o*c+r*s+l,i[_+1]=n*f+e*d+o*m+r*g+p,i[_+2]=n*h+e*v+o*b+r*y+x,i[_+3]=n*w+e*S+o*k+r*C+O;return t}(e.getImageData(0,0,t.width,t.height));return e.putImageData(o,0,0),Uw(t,n)},RS=(ES=[-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0,0,0,0,0,1],function(t){return Kw(t,ES)}),VS=Jw(function(t,n){return qw(t,[1,0,0,0,n=Xw(255*n,-255,255),0,1,0,0,n,0,0,1,0,n,0,0,0,1,0,0,0,0,0,1])}),PS=Jw(function(t,n){var e;return n=Xw(n,-1,1),qw(t,[(e=(n*=100)<0?127+n/100*127:127*(0==(e=n%1)?FS[n]:FS[Math.floor(n)]*(1-e)+FS[Math.floor(n)+1]*e)+127)/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}),HS=(DS=[0,-1,0,-1,5,-1,0,-1,0],function(t){return a=DS,(u=t).toCanvas().then(function(t){return n=t,e=u.getType(),o=a,r=Fw(n),i=function(t,n,e){for(var o=function(t,n,e){return e<t?t=e:t<n&&(t=n),t},r=Math.round(Math.sqrt(e.length)),i=Math.floor(r/2),u=t.data,a=n.data,c=t.width,s=t.height,l=0;l<s;l++)for(var f=0;f<c;f++){for(var d=0,m=0,g=0,p=0;p<r;p++)for(var h=0;h<r;h++){var v=o(f+h-i,0,c-1),b=4*(o(l+p-i,0,s-1)*c+v),y=e[p*r+h];d+=u[b]*y,m+=u[1+b]*y,g+=u[2+b]*y}var x=4*(l*c+f);a[x]=o(d,0,255),a[1+x]=o(m,0,255),a[2+x]=o(g,0,255)}return n}(r.getImageData(0,0,n.width,n.height),r.getImageData(0,0,n.width,n.height),o),r.putImageData(i,0,0),Uw(n,e);var n,e,o,r,i});var u,a}),zS=(BS=function(t,n){return 255*Math.pow(t/255,1-n)},function(n,e){return n.toCanvas().then(function(t){return function(t,n,e){for(var o=Fw(t),r=new Array(256),i=0;i<r.length;i++)r[i]=BS(i,e);var u=function(t,n){for(var e=t.data,o=0;o<e.length;o+=4)e[o]=n[e[o]],e[o+1]=n[e[o+1]],e[o+2]=n[e[o+2]];return t}(o.getImageData(0,0,t.width,t.height),r);return o.putImageData(u,0,0),Uw(t,n)}(t,n.getType(),e)})}),NS=function(t,n,e){var o=v0(t),r=b0(t),i=n/o,u=e/r,a=!1;(i<.5||2<i)&&(i=i<.5?.5:2,a=!0),(u<.5||2<u)&&(u=u<.5?.5:2,a=!0);var c=LS(t,i,u);return a?c.then(function(t){return NS(t,n,e)}):c},LS=function(u,a,c){return new Rw(function(t){var n=v0(u),e=b0(u),o=Math.floor(n*a),r=Math.floor(e*c),i=p0(o,r);Fw(i).drawImage(u,0,0,n,e,0,0,o,r),t(i)})},jS=function(t,n,e){var o=(e<0?360+e:e)*Math.PI/180,r=t.width,i=t.height,u=Math.sin(o),a=Math.cos(o),c=$w(Math.abs(r*a)+Math.abs(i*u)),s=$w(Math.abs(r*u)+Math.abs(i*a)),l=p0(c,s),f=Fw(l);return f.translate(c/2,s/2),f.rotate(o),f.drawImage(t,-r/2,-i/2),Uw(l,n)},WS=function(t,n,e){var o=p0(t.width,t.height),r=Fw(o);return"v"===e?(r.scale(1,-1),r.drawImage(t,0,-o.height)):(r.scale(-1,1),r.drawImage(t,-o.width,0)),Uw(o,n)},US=function(t,n,e,o,r,i){var u=p0(r,i);return Fw(u).drawImage(t,-e,-o),Uw(u,n)},GS=Ar("toolbar.button.execute"),XS=((AS={})[Eo()]=["disabling","alloy.base.behaviour","toggling","toolbar-button-events"],AS),YS=Ar("update-menu-text"),qS=Ar("update-menu-icon"),KS={type:"separator"},JS=function(t,l){var n,e,o;return I((n=y(t)?t.split(" "):t,e=l,0<(o=R(n,function(t,n){return y(n)?""===n?t:"|"===n?0<t.length&&!lS(t[t.length-1])?t.concat([KS]):t:Kn(e,n.toLowerCase())?t.concat([e[n.toLowerCase()]]):t:t.concat([n])},[])).length&&lS(o[o.length-1])&&o.pop(),o),function(t,n){var e,o,r,i,u,a,c=function(t){if(lS(t))return t;var n=kt(t,"value").getOrThunk(function(){return Ar("generated-menu-item")});return Jn({value:n},t)}(n),s=(o=l,Kn(e=c,"getSubmenuItems")?(i=o,u=(r=e).getSubmenuItems(),a=JS(u,i),{item:r,menus:Jn(a.menus,Ae(r.value,a.items)),expansions:Jn(a.expansions,Ae(r.value,r.value))}):{item:e,menus:{},expansions:{}});return{menus:Jn(t.menus,s.menus),items:[s.item].concat(t.items),expansions:Jn(t.expansions,s.expansions)}},{menus:{},expansions:{},items:[]})},$S=tt([dn("field1Name","field1"),dn("field2Name","field2"),$u("onLockedChange"),Yu(["lockClass"]),dn("locked",!1),Tf("coupledFieldBehaviours",[id,_f])]),QS=tt([wS("field1","field2"),wS("field2","field1"),Yf({factory:cp,schema:[Jt("dom")],name:"lock",overrides:function(t){return{buttonBehaviours:Za([Hg.config({selected:t.locked,toggleClass:t.markers.lockClass,aria:{mode:"pressed"}})])}}})]),ZS=wl({name:"FormCoupledInputs",configFields:$S(),partFields:QS(),factory:function(o,t,n,e){return{uid:o.uid,dom:o.dom,components:t,behaviours:Ef(o.coupledFieldBehaviours,[id.config({find:ft.some}),_f.config({store:{mode:"manual",getValue:function(t){var n=pl(t,o,["field1","field2"]),e={};return e[o.field1Name]=_f.getValue(n.field1()),e[o.field2Name]=_f.getValue(n.field2()),e},setValue:function(t,n){var e=pl(t,o,["field1","field2"]);Ct(n,o.field1Name)&&_f.setValue(e.field1(),n[o.field1Name]),Ct(n,o.field2Name)&&_f.setValue(e.field2(),n[o.field2Name])}}})]),apis:{getField1:function(t){return ll(t,o,"field1")},getField2:function(t){return ll(t,o,"field2")},getLock:function(t){return ll(t,o,"lock")}}}},apis:{getField1:function(t,n){return t.getField1(n)},getField2:function(t,n){return t.getField2(n)},getLock:function(t,n){return t.getLock(n)}}}),tk={undo:tt(Ar("undo")),redo:tt(Ar("redo")),zoom:tt(Ar("zoom")),back:tt(Ar("back")),apply:tt(Ar("apply")),swap:tt(Ar("swap")),transform:tt(Ar("transform")),tempTransform:tt(Ar("temp-transform")),transformApply:tt(Ar("transform-apply"))},nk=tt("save-state"),ek=tt("disable"),ok=tt("enable"),rk={formActionEvent:wy,saveState:nk,disable:ek,enable:ok},ik=tinymce.util.Tools.resolve("tinymce.geom.Rect"),uk=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),ak=tinymce.util.Tools.resolve("tinymce.util.Observable"),ck=tinymce.util.Tools.resolve("tinymce.util.VK");function sk(t,d){function m(t){if(TS(t),t.button!==p)return x(t);t.deltaX=t.screenX-h,t.deltaY=t.screenY-v,t.preventDefault(),d.drag(t)}var g,p,h,v,b=d.document||document,y=b.getElementById(d.handle||t),x=function(t){TS(t),uk(b).off("mousemove touchmove",m).off("mouseup touchend",x),g.remove(),d.stop&&d.stop(t)};return uk(y).on("mousedown touchstart",function(t){var n,e,o,r,i,u,a,c,s,l=(n=Math.max,e=b.documentElement,o=b.body,r=n(e.scrollWidth,o.scrollWidth),i=n(e.clientWidth,o.clientWidth),u=n(e.offsetWidth,o.offsetWidth),a=n(e.scrollHeight,o.scrollHeight),c=n(e.clientHeight,o.clientHeight),{width:r<u?i:r,height:a<n(e.offsetHeight,o.offsetHeight)?c:a});TS(t),t.preventDefault(),p=t.button;var f=y;h=t.screenX,v=t.screenY,s=window.getComputedStyle?window.getComputedStyle(f,null).getPropertyValue("cursor"):f.runtimeStyle.cursor,g=uk("<div></div>").css({position:"absolute",top:0,left:0,width:l.width,height:l.height,zIndex:2147483647,opacity:1e-4,cursor:s}).appendTo(b.body),uk(b).on("mousemove touchmove",m).on("mouseup touchend",x),d.start(t)}),{destroy:function(){uk(y).off()}}}function lk(t,n,e,o,r){return hS({name:t,icon:ft.some(n),disabled:e,tooltip:ft.some(t),primary:!1,borderless:!1},o,r)}function fk(t,n){n?fd.enable(t):fd.disable(t)}var dk=0,mk=function(s,e,l,o,r){function f(t,n){return{x:n.x-t.x,y:n.y-t.y,w:n.w,h:n.h}}function u(t,n,e,o){var r,i=n.x,u=n.y,a=n.w,c=n.h;i+=e*t.deltaX,u+=o*t.deltaY,a+=e*t.deltaW,c+=o*t.deltaH,s=ik.clamp({x:i,y:u,w:a=a<20?20:a,h:c=c<20?20:c},l,"move"===t.name),r=f(l,s),p.fire("updateRect",{rect:r}),g(r)}function i(t){n(s=t)}function n(n){function t(t,n){n.h<0&&(n.h=0),n.w<0&&(n.w=0),uk("#"+c+"-"+t,o).css({left:n.x,top:n.y,width:n.w,height:n.h})}Ow.each(d,function(t){uk("#"+c+"-"+t.name,o).css({left:n.w*t.xMul+n.x,top:n.h*t.yMul+n.y})}),t("top",{x:e.x,y:e.y,w:e.w,h:n.y-e.y}),t("right",{x:n.x+n.w,y:n.y,w:e.w-n.x-n.w+e.x,h:n.h}),t("bottom",{x:e.x,y:n.y+n.h,w:e.w,h:e.h-n.y-n.h+e.y}),t("left",{x:e.x,y:n.y,w:n.x-e.x,h:n.h}),t("move",n)}var t,a="tox-",c="tox-crid-"+dk++,d=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],m=["top","right","bottom","left"],g=function(t){var n;i((n=l,{x:t.x+n.x,y:t.y+n.y,w:t.w,h:t.h}))};uk('<div id="'+c+'" class="'+a+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(o),Ow.each(m,function(t){uk("#"+c,o).append('<div id="'+c+"-"+t+'"class="'+a+'croprect-block" style="display: none" data-mce-bogus="all">')}),Ow.each(d,function(t){uk("#"+c,o).append('<div id="'+c+"-"+t.name+'" class="'+a+"croprect-handle "+a+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false" title="'+t.label+'">')}),t=Ow.map(d,function(n){var e;return sk(c,{document:o.ownerDocument,handle:c+"-"+n.name,start:function(){e=s},drag:function(t){u(n,e,t.deltaX,t.deltaY)}})}),n(s),uk(o).on("focusin focusout",function(t){uk(t.target).attr("aria-grabbed","focus"===t.type?"true":"false")}),uk(o).on("keydown",function(n){var i;function t(t,n,e,o,r){t.stopPropagation(),t.preventDefault(),u(i,e,o,r)}switch(Ow.each(d,function(t){if(n.target.id===c+"-"+t.name)return i=t,!1}),n.keyCode){case ck.LEFT:t(n,0,s,-10,0);break;case ck.RIGHT:t(n,0,s,10,0);break;case ck.UP:t(n,0,s,0,-10);break;case ck.DOWN:t(n,0,s,0,10);break;case ck.ENTER:case ck.SPACEBAR:n.preventDefault(),r()}});var p=Ow.extend({toggleVisibility:function(t){var n=Ow.map(d,function(t){return"#"+c+"-"+t.name}).concat(Ow.map(m,function(t){return"#"+c+"-"+t})).join(",");t?uk(n,o).show():uk(n,o).hide()},setClampRect:function(t){l=t,n(s)},setRect:i,getInnerRect:function(){return f(l,s)},setInnerRect:g,setViewPortRect:function(t){e=t,n(s)},destroy:function(){Ow.each(t,function(t){t.destroy()}),t=[]}},ak);return p};function gk(t){var e,o,n,r,i=wn(t),u=fc(),a=(o=-1,{data:e=[],add:function(t){var n=e.splice(++o);return e.push(t),{state:t,removed:n}},undo:function(){if(n())return e[--o]},redo:function(){if(r())return e[++o]},canUndo:n=function(){return 0<o},canRedo:r=function(){return-1!==o&&o<e.length-1}});function c(t){i.set(t)}function s(t){URL.revokeObjectURL(t.url)}function l(t){var n=f(t);c(n);var e=a.add(n).removed;return Ow.each(e,s),n.url}a.add(t);function f(t){return{blob:t,url:URL.createObjectURL(t)}}function d(){u.on(s),u.clear()}return{getBlobState:function(){return i.get()},setBlobState:c,addBlobState:l,getTempState:function(){return u.get().getOrThunk(i.get)},updateTempState:function(t){var n=f(t);return d(),u.set(n),n.url},addTempState:function(t){var n=f(t);return u.set(n),n.url},applyTempState:function(n){return u.get().fold(ct,function(t){l(t.blob),n()})},destroyTempState:d,undo:function(){var t=a.undo();return c(t),t.url},redo:function(){var t=a.redo();return c(t),t.url},getHistoryStates:function(){return{undoEnabled:a.canUndo(),redoEnabled:a.canRedo()}}}}function pk(t,n){function i(t){var n=b.getHistoryStates();S.updateButtonUndoStates(t,n.undoEnabled,n.redoEnabled),Ne(t,rk.formActionEvent,{name:rk.saveState(),value:n.undoEnabled})}function u(t){return t.toBlob()}function a(t){Ne(t,rk.formActionEvent,{name:rk.disable(),value:{}})}function c(n,t,e,o,r){a(n),Gw(t).then(e).then(u).then(o).then(function(t){return x(n,t)}).then(function(){i(n),r(),y(n)}).catch(function(t){console.log(t),n.getSystem().isConnected()&&y(n)})}function r(t,n,e){c(t,b.getBlobState().blob,n,function(t){return b.updateTempState(t)},e)}function s(t){var n=b.getBlobState().url;return b.destroyTempState(),i(t),n}var e,o,l,f,d,m,g,p,h,v,b=gk(t.currentState),y=function(t){k.getApplyButton(t).each(function(t){fd.enable(t)}),Ne(t,rk.formActionEvent,{name:rk.enable(),value:{}})},x=function(t,n){return a(t),w.updateSrc(t,n)},w=(f=t.currentState.url,d=Vm({dom:{tag:"div",classes:["tox-image-tools__image-bg"],attributes:{role:"presentation"}}}),m=wn(1),g=fc(),p=wn({x:0,y:0,w:1,h:1}),h=wn({x:0,y:0,w:1,h:1}),{memContainer:v=Vm(sy.sketch({dom:{tag:"div",classes:["tox-image-tools__image"]},components:[d.asSpec(),{dom:{tag:"img",attributes:{src:f}}},{dom:{tag:"div"},behaviours:Za([lm("image-panel-crop-events",[$o(function(t){v.getOpt(t).each(function(t){var n=t.element.dom,e=mk({x:10,y:10,w:100,h:100},{x:0,y:0,w:200,h:200},{x:0,y:0,w:200,h:200},n,ct);e.toggleVisibility(!1),e.on("updateRect",function(t){var n=t.rect,e=m.get(),o={x:Math.round(n.x/e),y:Math.round(n.y/e),w:Math.round(n.w/e),h:Math.round(n.h/e)};p.set(o)}),g.set(e)})})])])}],containerBehaviours:Za([Mg.config({}),lm("image-panel-events",[$o(function(t){O(t,f)})])])})),updateSrc:O,zoom:function(t,n){var e=m.get(),o=0<n?Math.min(2,e+.1):Math.max(.1,e-.1);m.set(o),v.getOpt(t).each(function(t){var n=t.components()[1].element;C(t,n)})},showCrop:function(){g.on(function(t){t.toggleVisibility(!0)})},hideCrop:function(){g.on(function(t){t.toggleVisibility(!1)})},getRect:function(){return p.get()},getMeasurements:function(){var t=h.get();return{width:t.w,height:t.h}}}),S=(o=Vm(lk("Undo","undo",!0,function(t){Ne(t,tk.undo(),{direction:1})},e=n)),l=Vm(lk("Redo","redo",!0,function(t){Ne(t,tk.redo(),{direction:1})},e)),{container:sy.sketch({dom:{tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools__sidebar"]},components:[o.asSpec(),l.asSpec(),lk("Zoom in","zoom-in",!1,function(t){Ne(t,tk.zoom(),{direction:1})},e),lk("Zoom out","zoom-out",!1,function(t){Ne(t,tk.zoom(),{direction:-1})},e)]}),updateButtonUndoStates:function(t,n,e){o.getOpt(t).each(function(t){fk(t,n)}),l.getOpt(t).each(function(t){fk(t,e)})}}),k=_S(w,n);function C(t,s){v.getOpt(t).each(function(t){var e=m.get(),o=wi(t.element),r=vi(t.element),i=s.dom.naturalWidth*e,u=s.dom.naturalHeight*e,a=Math.max(0,o/2-i/2),c=Math.max(0,r/2-u/2),n={left:a.toString()+"px",top:c.toString()+"px",width:i.toString()+"px",height:u.toString()+"px",position:"absolute"};ei(s,n),d.getOpt(t).each(function(t){ei(t.element,n)}),g.on(function(t){var n=p.get();t.setRect({x:n.x*e+a,y:n.y*e+c,w:n.w*e,h:n.h*e}),t.setClampRect({x:a,y:c,w:i,h:u}),t.setViewPortRect({x:0,y:0,w:o,h:r})})})}function O(t,n){var e,i=de.fromTag("img");return Or(i,"src",n),e=i.dom,new Dp(function(t){var n=function(){e.removeEventListener("load",n),t(e)};e.complete?t(e):e.addEventListener("load",n)}).then(function(){t.getSystem().isConnected()&&v.getOpt(t).map(function(t){var n=hu({element:i});Mg.replaceAt(t,1,ft.some(n));var e=h.get(),o={x:0,y:0,w:i.dom.naturalWidth,h:i.dom.naturalHeight};h.set(o);var u,r=ik.inflate(o,-20,-20);p.set(r),e.w===o.w&&e.h===o.h||(u=i,v.getOpt(t).each(function(t){var n=wi(t.element),e=vi(t.element),o=u.dom.naturalWidth,r=u.dom.naturalHeight,i=Math.min(n/o,e/r);1<=i?m.set(1):m.set(i)})),C(t,i)})})}return{dom:{tag:"div",attributes:{role:"presentation"}},components:[k.memContainer.asSpec(),w.memContainer.asSpec(),S.container],behaviours:Za([_f.config({store:{mode:"manual",getValue:function(){return b.getBlobState()}}}),lm("image-tools-events",[Xe(tk.undo(),function(n,t){var e=b.undo();x(n,e).then(function(t){y(n),i(n)})}),Xe(tk.redo(),function(n,t){var e=b.redo();x(n,e).then(function(t){y(n),i(n)})}),Xe(tk.zoom(),function(t,n){var e=n.event.direction;w.zoom(t,e)}),Xe(tk.back(),function(t,n){var e,o=s(e=t);x(e,o).then(function(t){y(e)}),(0,n.event.swap)(),w.hideCrop()}),Xe(tk.apply(),function(t,n){b.applyTempState(function(){s(t),(0,n.event.swap)()})}),Xe(tk.transform(),function(t,n){return r(t,n.event.transform,ct)}),Xe(tk.tempTransform(),function(t,n){var e=n.event.transform;c(t,b.getTempState().blob,e,function(t){return b.addTempState(t)},ct)}),Xe(tk.transformApply(),function(t,n){var e=t,o=n.event.transform,r=n.event.swap,i=b.getBlobState().blob;c(e,i,o,function(t){var n=b.addBlobState(t);return s(e),n},r)}),Xe(tk.swap(),function(n,t){S.updateButtonUndoStates(n,!1,!1);var e=t.event.transform,o=t.event.swap;e.fold(function(){o()},function(t){r(n,t,o)})})]),x0()])}}function hk(t){return!Kn(t,"items")}function vk(t,n){function e(t){return{dom:{tag:"td",innerHtml:n.translate(t)}}}return{dom:{tag:"table",classes:["tox-dialog__table"]},components:[{dom:{tag:"thead"},components:[{dom:{tag:"tr"},components:A(t.header,function(t){return{dom:{tag:"th",innerHtml:n.translate(t)}}})}]},{dom:{tag:"tbody"},components:A(t.cells,function(t){return{dom:{tag:"tr"},components:A(t,e)}})}],behaviours:Za([gy.config({}),Rg.config({})])}}function bk(e,n){var t=e.label.map(function(t){return Qb(t,n)}),o=[fd.config({disabled:function(){return e.disabled||n.isDisabled()}}),dv(),Bg.config({mode:"execution",useEnter:!0!==e.multiline,useControlEnter:!0===e.multiline,execute:function(t){return ze(t,Sy),ft.some(!0)}}),lm("textfield-change",[Xe(ho(),function(t,n){Ne(t,by,{name:e.name})}),Xe(_o(),function(t,n){Ne(t,by,{name:e.name})})]),gy.config({})],r=e.validation.map(function(o){return qy.config({getRoot:function(t){return ar(t.element)},invalidClass:"tox-invalid",validator:{validate:function(t){var n=_f.getValue(t),e=o.validator(n);return Uy(!0===e?mt.value(n):mt.error(e))},validateOnLoad:o.validateOnLoad}})}).toArray(),i=e.placeholder.fold(tt({}),function(t){return{placeholder:n.translate(t)}}),u=e.inputMode.fold(tt({}),function(t){return{inputmode:t}}),a=st(st({},i),u);return $b(t,dy.parts.field({tag:!0===e.multiline?"textarea":"input",inputAttributes:a,inputClasses:[e.classname],inputBehaviours:Za(lt([o,r])),selectOnFocus:!1,factory:Ey}),(e.flex?["tox-form__group--stretched"]:[]).concat(e.maximized?["tox-form-group--maximize"]:[]),[fd.config({disabled:function(){return e.disabled||n.isDisabled()},onDisabled:function(t){dy.getField(t).each(fd.disable)},onEnabled:function(t){dy.getField(t).each(fd.enable)}}),dv()])}function yk(t){var n=wn(null);return au({readState:function(){return{timer:null!==n.get()?"set":"unset"}},setTimer:function(t){n.set(t)},cancel:function(){var t=n.get();null!==t&&t.cancel()}})}function xk(t,n,e){var o=_f.getValue(e);_f.setValue(n,o),w1(n)}function wk(t,n){var e=t.element,o=si(e),r=e.dom;"number"!==_r(e,"type")&&n(r,o)}function Sk(t){return{type:"menuitem",value:t.url,text:t.title,meta:{attach:t.attach},onAction:ct}}function kk(t,n){return{type:"menuitem",value:n,text:t,meta:{attach:void 0},onAction:ct}}function Ck(t,n){return e=t,A(F(n,function(t){return t.type===e}),Sk);var e}function Ok(t,n){var e=t.toLowerCase();return F(n,function(t){return Cn((void 0!==t.meta&&void 0!==t.meta.text?t.meta:t).text.toLowerCase(),e)||Cn(t.value.toLowerCase(),e)})}function _k(u,a,c){function r(t){var n=_f.getValue(t);c.addToHistory(n.value,u.filetype)}var t,n,e,o,i=a.shared.providers,s=dy.parts.field({factory:O1,dismissOnBlur:!0,inputClasses:["tox-textfield"],sandboxClasses:["tox-dialog__popups"],inputAttributes:{"aria-errormessage":D1,type:"url"},minChars:0,responseTime:0,fetch:function(t){var e,o,n,r,i=fS((e=u.filetype,o=c,n=_f.getValue(t),r=void 0!==n.meta.text?n.meta.text:n.value,o.getLinkInformation().fold(function(){return[]},function(t){var n=Ok(r,A(o.getHistory(e),function(t){return kk(t,t)}));return"file"===e?R([n,Ok(r,Ck("header",t.targets)),Ok(r,lt([ft.from(t.anchorTop).map(function(t){return kk("<top>",t)}).toArray(),Ck("anchor",t.targets),ft.from(t.anchorBottom).map(function(t){return kk("<bottom>",t)}).toArray()]))],function(t,n){return 0===t.length||0===n.length?t.concat(n):t.concat(E1,n)},[]):n})),yh.BUBBLE_TO_SANDBOX,a,!1);return Uy(i)},getHotspot:function(t){return p.getOpt(t)},onSetValue:function(t,n){t.hasConfigured(qy)&&qy.run(t).get(ct)},typeaheadBehaviours:Za(lt([c.getValidationHandler().map(function(e){return qy.config({getRoot:function(t){return ar(t.element)},invalidClass:"tox-control-wrap--status-invalid",notify:{onInvalid:function(t,n){f.getOpt(t).each(function(t){Or(t.element,"title",i.translate(n))})}},validator:{validate:function(t){var n=_f.getValue(t);return T1(function(o){e({type:u.filetype,url:n.value},function(t){var n,e;"invalid"===t.status?(n=mt.error(t.message),o(n)):(e=mt.value(t.message),o(e))})})},validateOnLoad:!1}})}).toArray(),[fd.config({disabled:function(){return u.disabled||i.isDisabled()}}),gy.config({}),lm("urlinput-events",lt(["file"===u.filetype?[Xe(ho(),function(t){Ne(t,by,{name:u.name})})]:[],[Xe(vo(),function(t){Ne(t,by,{name:u.name}),r(t)}),Xe(_o(),function(t){Ne(t,by,{name:u.name}),r(t)})]]))]])),eventOrder:((t={})[ho()]=["streaming","urlinput-events","invalidating"],t),model:{getDisplayText:function(t){return t.value},selectsOver:!1,populateFromBrowse:!1},markers:{openClass:"tox-textfield--popup-open"},lazySink:a.shared.getSink,parts:{menu:Jp(0,0,"normal")},onExecute:function(t,n,e){Ne(n,Sy,{})},onItemExecute:function(t,n,e,o){r(t),Ne(t,by,{name:u.name})}}),l=u.label.map(function(t){return Qb(t,i)}),f=Vm((n="invalid",e=ft.some(D1),Wm("warning",{tag:"div",classes:["tox-icon","tox-control-wrap__status-icon-"+n],attributes:st({title:i.translate(o=void 0===o?n:o),"aria-live":"polite"},e.fold(function(){return{}},function(t){return{id:t}}))},i.icons))),d=Vm({dom:{tag:"div",classes:["tox-control-wrap__status-icon-wrap"]},components:[f.asSpec()]}),m=c.getUrlPicker(u.filetype),g=Ar("browser.url.event"),p=Vm({dom:{tag:"div",classes:["tox-control-wrap"]},components:[s,d.asSpec()],behaviours:Za([fd.config({disabled:function(){return u.disabled||i.isDisabled()}})])}),h=Vm(bS({name:u.name,icon:ft.some("browse"),text:u.label.getOr(""),disabled:u.disabled,primary:!1,borderless:!0},function(t){return ze(t,g)},i,[],["tox-browse-url"]));return dy.sketch({dom:vy([]),components:l.toArray().concat([{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:lt([[p.asSpec()],m.map(function(){return h.asSpec()}).toArray()])}]),fieldBehaviours:Za([fd.config({disabled:function(){return u.disabled||i.isDisabled()},onDisabled:function(t){dy.getField(t).each(fd.disable),h.getOpt(t).each(fd.disable)},onEnabled:function(t){dy.getField(t).each(fd.enable),h.getOpt(t).each(fd.enable)}}),dv(),lm("url-input-events",[Xe(g,function(o){id.getCurrent(o).each(function(n){var t=_f.getValue(n),e=st({fieldname:u.name},t);m.each(function(t){t(e).get(function(t){_f.setValue(n,t),Ne(o,by,{name:u.name})})})})})])])})}function Tk(r){return function(n,e,o){return kt(e,"name").fold(function(){return r(e,o)},function(t){return n.field(t,r(e,o))})}}function Ek(n,t,e){var o=Jn(e,{shared:{interpreter:function(t){return M1(n,t,o)}}});return M1(n,t,o)}function Dk(t,n,e){function o(){return de.fromDom(t.getContentAreaContainer())}function r(){return p||!e()}var i,u,a,c,s,l,f,d,m,g,p=uv(t);return{inlineDialog:(f=o,d=n,m=r,g={maxHeightFunction:Fc()},function(){return m()?{type:"node",root:gr(f()),node:ft.from(f()),bubble:yc(12,12,F1),layouts:{onRtl:function(){return[Dm]},onLtr:function(){return[Em]}},overrides:g}:{type:"hotspot",hotspot:d(),bubble:yc(-12,12,F1),layouts:{onRtl:function(){return[Ua]},onLtr:function(){return[Ga]}},overrides:g}}),banner:(c=o,s=n,l=r,function(){return l()?{type:"node",root:gr(c()),node:ft.from(c()),layouts:{onRtl:function(){return[ip]},onLtr:function(){return[ip]}}}:{type:"hotspot",hotspot:s(),layouts:{onRtl:function(){return[Ka]},onLtr:function(){return[Ka]}}}}),cursor:(u=t,function(){return{type:"selection",root:a(),getSelection:function(){var t=u.selection.getRng();return ft.some(ls.range(de.fromDom(t.startContainer),t.startOffset,de.fromDom(t.endContainer),t.endOffset))}}}),node:(i=a=function(){return de.fromDom(t.getBody())},function(t){return{type:"node",root:i(),node:t}})}}function Bk(i){return ft.from(i.getParam("style_formats")).filter(c).map(function(t){var n,e,o=(n=i,e=R1(t),n.formatter?r(e.customFormats):n.on("init",function(){r(e.customFormats)}),e.formats);function r(t){dt(t,function(t){n.formatter.has(t.name)||n.formatter.register(t.name,t.format)})}return i.getParam("style_formats_merge",!1,"boolean")?I1.concat(o):o}).getOr(I1)}function Ak(t,n,e){var o={type:"formatter",isSelected:n(t.format),getStylePreview:e(t.format)};return Jn(t,o)}function Mk(c,t,s,l){var f=function(t){return A(t,function(t){var n,e,o,r,i,u=Xn(t);if(Ct(t,"items")){var a=f(t.items);return Jn(Jn(t,{type:"submenu"}),{getStyleItems:tt(a)})}return Ct(t,"format")?Ak(t,s,l):1===u.length&&et(u,"title")?Jn(t,{type:"separator"}):(r={type:"formatter",format:o="custom-"+(e=y((n=t).name)?n.name:Ar(n.title)),isSelected:s(o),getStylePreview:l(o)},i=Jn(n,r),c.formatter.register(e,i),i)})};return f(t)}function Fk(e){return function(t){if(f(n=t)&&1===n.nodeType){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}var n;return!1}}function Ik(t,n,e,o,r){return{type:t,title:n,url:e,level:o,attach:r}}function Rk(t){return t.innerText||t.textContent}function Vk(t){return t&&"A"===t.nodeName&&void 0!==(t.id||t.name)&&c1(t)}function Pk(t){return t&&/^(H[1-6])$/.test(t.nodeName)}function Hk(t){return Pk(t)&&c1(t)}function zk(t){var n,e=t.id||Ar("h");return Ik("header",Rk(t),"#"+e,Pk(n=t)?parseInt(n.nodeName.substr(1),10):0,function(){t.id=e})}function Nk(t){var n=t.id||t.name;return Ik("anchor",Rk(t)||"#"+n,"#"+n,0,ct)}function Lk(t){return 0<V1(t.title).length}function jk(t){return y(t)&&/^https?/.test(t)}function Wk(t){return x(t)&&wt(t,function(t){return!(c(n=t)&&n.length<=5&&N(n,jk));var n}).isNone()}function Uk(){var t,n=sb.getItem(N1);if(null===n)return{};try{t=JSON.parse(n)}catch(t){if(t instanceof SyntaxError)return console.log("Local storage "+N1+" was not valid JSON",t),{};throw t}return Wk(t)?t:(console.log("Local storage "+N1+" was not valid format",t),{})}function Gk(t){return kt(Uk(),t).getOr([])}function Xk(n,t){var e,o;jk(n)&&(o=F(kt(e=Uk(),t).getOr([]),function(t){return t!==n}),e[t]=[n].concat(o).slice(0,5),function(t){if(!Wk(t))throw new Error("Bad format for history:\n"+JSON.stringify(t));sb.setItem(N1,JSON.stringify(t))}(e))}function Yk(t){return!!t}function qk(t){return yt(Ow.makeMap(t,/[, ]/),Yk)}function Kk(t){return ft.from(t.getParam("file_picker_callback")).filter(m)}function Jk(t){return ft.from(t).filter(y).getOrUndefined()}function $k(l){return{getHistory:Gk,addToHistory:Xk,getLinkInformation:function(){return!1===(t=l).getParam("typeahead_urls")?ft.none():ft.some({targets:z1(t.getBody()),anchorTop:Jk(t.getParam("anchor_top","#top")),anchorBottom:Jk(t.getParam("anchor_bottom","#bottom"))});var t},getValidationHandler:function(){return ft.from(void 0===(n=(t=l).getParam("file_picker_validator_handler",void 0,"function"))?t.getParam("filepicker_validator_handler",void 0,"function"):n);var t,n},getUrlPicker:function(t){return n=c=l,e=s=t,r=ft.some((o=n).getParam("file_picker_types")).filter(Yk),i=ft.some(o.getParam("file_browser_callback_types")).filter(Yk),u=r.or(i).map(qk),a=Kk(o).fold(O,function(t){return u.fold(_,function(t){return 0<Xn(t).length&&t})}),(w(a)?a?Kk(n):ft.none():a[e]?Kk(n):ft.none()).map(function(o){return function(n){return Wy(function(e){var t=st({filetype:s,fieldname:n.fieldname},ft.from(n.meta).getOr({}));o.call(c,function(t,n){if(!y(t))throw new Error("Expected value to be string");if(void 0!==n&&!x(n))throw new Error("Expected meta to be a object");e({value:t,meta:n})},n.value,t)})}});var n,e,o,r,i,u,a,c,s}}}function Qk(t,n,e){var o,r,i,u,a,c,s,l,f,d,m,g,p,h=wn(!1),v={isPositionedAtTop:function(){return"top"===o.get()},getDockingMode:(o=wn(rv(n)?"bottom":"top")).get,setDockingMode:o.set},b={shared:{providers:{icons:function(){return n.ui.registry.getAll().icons},menuItems:function(){return n.ui.registry.getAll().menuItems},translate:sp.translate,isDisabled:function(){return n.mode.isReadOnly()||n.ui.isDisabled()},getSetting:n.getParam.bind(n)},interpreter:function(t){return M1(A1,t,b)},anchors:Dk(n,e,v.isPositionedAtTop),header:v,getSink:function(){return mt.value(t)}},urlinput:$k(n),styleselect:(f=wn([]),d=wn([]),m=wn([]),g=wn([]),p=wn(!(l=function(t){var n=t.items;return void 0!==n&&0<n.length?z(n,l):[t.format]})),(s=n).on("PreInit",function(t){var n=Bk(s),e=Mk(s,n,y,x);f.set(e),d.set(z(e,l))}),s.on("addStyleModifications",function(t){var n=Mk(s,t.items,y,x);m.set(n),p.set(t.replace),g.set(z(n,l))}),{getData:function(){var t=p.get()?[]:f.get(),n=m.get();return t.concat(n)},getFlattenedKeys:function(){var t=p.get()?[]:d.get(),n=g.get();return t.concat(n)}}),colorinput:{colorPicker:function(t,n){Db(c)(t,n)},hasCustomColors:function(){return fb(a)},getColors:function(){return db(u)},getColorCols:(i=u=a=c=n,function(){return gb(i)})},dialog:{isDraggableModal:(r=n,function(){return r.getParam("draggable_modal",!1,"boolean")})},isContextMenuOpen:function(){return h.get()},setContextMenuState:function(t){return h.set(t)}};function y(t){return function(){return s.formatter.match(t)}}function x(n){return function(){var t=s.formatter.get(n);return void 0!==t?ft.some({tag:0<t.length&&(t[0].inline||t[0].block)||"div",styles:s.dom.parseStyle(s.formatter.getCssText(n))}):ft.none()}}return b}function Zk(t){return(Kr(ii(t,"position"),"fixed")?ft.none():cr(t)).orThunk(function(){var e=de.fromTag("span");return ar(t).bind(function(t){Gi(t,e);var n=cr(e);return Xi(e),n})})}function tC(t){return Zk(t).map(xi).getOrThunk(function(){return Su(0,0)})}function nC(t,n){var e=t.element;Ur(e,n.transitionClass),Gr(e,n.fadeOutClass),Ur(e,n.fadeInClass),n.onShow(t)}function eC(t,n){var e=t.element;Ur(e,n.transitionClass),Gr(e,n.fadeInClass),Ur(e,n.fadeOutClass),n.onHide(t)}function oC(t,n,e){return N(t,function(t){switch(t){case"bottom":return n.bottom<=e.bottom;case"top":return n.y>=e.y}})}function rC(n,t){return t.getInitialPos().map(function(t){return Bi(t.bounds.x,t.bounds.y,wi(n),vi(n))})}function iC(e,o,r){return r.getInitialPos().bind(function(t){switch(r.clearInitialPos(),t.position){case"static":return ft.some($1.static());case"absolute":var n=Zk(e).map(Ai).getOrThunk(function(){return Ai(mu())});return ft.some($1.absolute(Ta("absolute",kt(t.style,"left").map(function(t){return o.x-n.x}),kt(t.style,"top").map(function(t){return o.y-n.y}),kt(t.style,"right").map(function(t){return n.right-o.right}),kt(t.style,"bottom").map(function(t){return n.bottom-o.bottom}))));default:return ft.none()}})}function uC(t,n,e){var o,r,i,u=t.element;return Kr(ii(u,"position"),"fixed")?(r=n,rC(o=u,i=e).filter(function(t){return oC(i.getModes(),t,r)}).bind(function(t){return iC(o,t,i)})):function(t,n,e){var r,o,i=Ai(t);if(oC(e.getModes(),i,n))return ft.none();r=t,o=i,e.setInitialPos({style:function(){var t={},n=r.dom;if(Qr(n))for(var e=0;e<n.style.length;e++){var o=n.style.item(e);t[o]=n.style[o]}return t}(),position:ri(r,"position")||"static",bounds:o});var u=Fi(),a=i.x-u.x,c=n.y-u.y,s=u.bottom-n.bottom,l=i.y<=n.y;return ft.some($1.fixed(Ta("fixed",ft.some(a),l?ft.some(c):ft.none(),ft.none(),l?ft.none():ft.some(s))))}(u,n,e)}function aC(n,t){dt(["left","right","top","bottom","position"],function(t){return ai(n.element,t)}),t.onUndocked(n)}function cC(t,n,e){Ea(t.element,e),("fixed"===e.position?n.onDocked:n.onUndocked)(t)}function sC(o,t,r,i,u){void 0===u&&(u=!1),t.contextual.each(function(e){e.lazyContext(o).each(function(t){var n=t.y<i.bottom&&t.bottom>i.y;n!==r.isVisible()&&(r.setVisible(n),u&&!n?(Yr(o.element,[e.fadeOutClass]),e.onHide(o)):(n?nC:eC)(o,e))})})}function lC(t,n,e){var o,r,i,u,a,c;e.isDocked()&&(r=n,i=e,c=(o=t).element,i.setDocked(!1),rC(a=o.element,u=i).bind(function(t){return iC(a,t,u)}).each(function(t){t.fold(function(){return aC(o,r)},function(t){return cC(o,r,t)},ct)}),i.setVisible(!0),r.contextual.each(function(t){qr(c,[t.fadeInClass,t.fadeOutClass,t.transitionClass]),t.onShow(o)}),Q1(o,r,i))}function fC(t,n){return et(nO.getModes(t),n)}function dC(r){var i=r.element;ar(i).each(function(t){var n,e,o="padding-"+nO.getModes(r)[0];nO.isDocked(r)?(n=wi(t),ni(i,"width",n+"px"),ni(t,o,bi(e=i)+(parseInt(ri(e,"margin-top"),10)||0)+(parseInt(ri(e,"margin-bottom"),10)||0)+"px")):(ai(i,"width"),ai(t,o))})}function mC(t,n){n?(Gr(t,oO.fadeOutClass),Yr(t,[oO.transitionClass,oO.fadeInClass])):(Gr(t,oO.fadeInClass),Yr(t,[oO.fadeOutClass,oO.transitionClass]))}function gC(t,n){var e=de.fromDom(t.getContainer());n?(Ur(e,rO),Gr(e,iO)):(Ur(e,iO),Gr(e,rO))}function pC(u,t){function o(n){r().each(function(t){return n(t.element)})}function n(t){u.inline||dC(t),gC(u,nO.isDocked(t)),t.getSystem().broadcastOn([vf()],{}),r().each(function(t){return t.getSystem().broadcastOn([vf()],{})})}var e,i=fc(),r=t.getSink,a=u.inline?[]:[oc.config({channels:((e={})[eO()]={onReceive:dC},e)})];return H([Rg.config({}),nO.config({contextual:st({lazyContext:function(t){var n=bi(t.element),e=u.inline?u.getContentAreaContainer():u.getContainer(),o=Ai(de.fromDom(e)),r=o.height-n,i=o.y+(fC(t,"top")?0:n);return ft.some(Bi(o.x,i,o.width,r))},onShow:function(){o(function(t){return mC(t,!0)})},onShown:function(r){o(function(t){return qr(t,[oO.transitionClass,oO.fadeInClass])}),i.get().each(function(t){var n,e=r.element,o=or(n=t);Ca(o).filter(function(t){return!Bn(n,t)}).filter(function(t){return Bn(t,de.fromDom(o.dom.body))||An(e,t)}).each(function(){return Sa(n)}),i.clear()})},onHide:function(t){var n=t.element,e=r;Oa(n).orThunk(function(){return e().toOptional().bind(function(t){return Oa(t.element)})}).fold(i.clear,i.set),o(function(t){return mC(t,!1)})},onHidden:function(){o(function(t){return qr(t,[oO.transitionClass])})}},oO),lazyViewport:function(t){var n=Fi(),e=u.getParam("toolbar_sticky_offset",0,"number"),o=n.y+(fC(t,"top")?e:0),r=n.height-(fC(t,"bottom")?e:0);return Bi(n.x,o,n.width,r)},modes:[t.header.getDockingMode()],onDocked:n,onUndocked:n})],a)}function hC(t){return Gt("menubutton",sO,t)}function vC(n,t){return t.getAnimationRoot.fold(function(){return n.element},function(t){return t(n)})}function bC(t){return t.dimension.property}function yC(t,n){return t.dimension.getDimension(n)}function xC(t,n){qr(vC(t,n),[n.shrinkingClass,n.growingClass])}function wC(t,n){Gr(t.element,n.openClass),Ur(t.element,n.closedClass),ni(t.element,bC(n),"0px"),ci(t.element)}function SC(t,n){Gr(t.element,n.closedClass),Ur(t.element,n.openClass),ai(t.element,bC(n))}function kC(t,n,e,o){e.setCollapsed(),ni(t.element,bC(n),yC(n,t.element)),ci(t.element),xC(t,n),wC(t,n),n.onStartShrink(t),n.onShrunk(t)}function CC(t,n,e){var o=yC(n,t.element);("0px"===o?kC:function(t,n,e,o){var r=o.getOrThunk(function(){return yC(n,t.element)});e.setCollapsed(),ni(t.element,bC(n),r),ci(t.element);var i=vC(t,n);Gr(i,n.growingClass),Ur(i,n.shrinkingClass),wC(t,n),n.onStartShrink(t)})(t,n,e,ft.some(o))}function OC(t,n,e){var o=vC(t,n),r=Xr(o,n.shrinkingClass),i=yC(n,t.element);SC(t,n);var u=yC(n,t.element);(r?function(){ni(t.element,bC(n),i),ci(t.element)}:function(){wC(t,n)})(),Gr(o,n.shrinkingClass),Ur(o,n.growingClass),SC(t,n),ni(t.element,bC(n),u),e.setExpanded(),n.onStartGrow(t)}function _C(t,n,e){return!0===Xr(vC(t,n),n.growingClass)}function TC(t,n,e){return!0===Xr(vC(t,n),n.shrinkingClass)}function EC(t){return"<alloy.field."+t+">"}function DC(t){return{element:function(){return t.element.dom}}}function BC(t,e){id.getCurrent(t).each(function(t){return Mg.set(t,[(n=e,bO.sketch(function(t){return{dom:{tag:"div",classes:["tox-sidebar__pane-container"]},components:(e=t,r=A(Xn(o=n),function(t){var n=o[t],e=Xt(Gt("sidebar",yO,n));return{name:t,getApi:DC,onSetup:e.onSetup,onShow:e.onShow,onHide:e.onHide}}),A(r,function(t){var n=wn(ct);return e.slot(t.name,{dom:{tag:"div",classes:["tox-sidebar__pane"]},behaviours:Xh([gv(t,n),pv(t,n),Xe(Uo(),function(n,t){var e=t.event;V(r,function(t){return t.name===e.name}).each(function(t){(e.visible?t.onShow:t.onHide)(t.getApi(n))})})])})})),slotBehaviours:Xh([$o(function(t){return bO.hideAllSlots(t)})])};var e,o,r}))]);var n})}function AC(t){return id.getCurrent(t).bind(function(t){return gO.isGrowing(t)||gO.hasGrown(t)?id.getCurrent(t).bind(function(n){return V(bO.getSlotNames(n),function(t){return bO.isShowing(n,t)})}):ft.none()})}function MC(t){var n=de.fromHtml(t),e=sr(n),o=R(void 0!==n.dom.attributes?n.dom.attributes:[],function(t,n){var e;return"class"===n.name?t:st(st({},t),((e={})[n.name]=n.value,e))},{}),r=Array.prototype.slice.call(n.dom.classList,0),i=0===e.length?{}:{innerHtml:Sr(n)};return st({tag:nr(n),classes:r,attributes:o},i)}function FC(t){return id.getCurrent(t).each(function(t){return Sa(t.element)})}function IC(f,d,m){function n(t){var n;!g.get()||"focusin"===(n=t).type&&(n.composed?ot(n.composedPath()):ft.from(n.target)).map(de.fromDom).filter(Ri).exists(function(t){return Xr(t,"mce-pastebin")})||(t.preventDefault(),FC(d()),f.editorManager.setActive(f))}var g=wn(!1),e=fc();function o(t){var n,e,o,r,i,u,a,c,s,l;t!==g.get()&&(g.set(t),n=f,e=d(),o=t,r=m.providers,c=e.element,s=o,l="data-mce-"+(i="tabindex"),ft.from(n.iframeElement).map(de.fromDom).each(function(n){s?(Tr(n,i).each(function(t){return Or(n,l,t)}),Or(n,i,-1)):(Dr(n,i),Tr(n,l).each(function(t){Or(n,i,t),Dr(n,l)}))}),o?(kO.block(e,(a=r,function(t,n){return{dom:{tag:"div",attributes:{"aria-label":a.translate("Loading..."),tabindex:"0"},classes:["tox-throbber__busy-spinner"]},components:[{dom:MC('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}})),ai(c,"display"),Dr(c,"aria-hidden"),n.hasFocus()&&FC(e)):(u=id.getCurrent(e).exists(function(t){return ka(t.element)}),kO.unblock(e),ni(c,"display","none"),Or(c,"aria-hidden","true"),u&&n.focus()),f.fire("AfterProgressState",{state:t}))}f.inline||f.on("PreInit",function(){f.dom.bind(f.getWin(),"focusin",n),f.on("BeforeExecCommand",function(t){"mcefocus"===t.command.toLowerCase()&&!0!==t.value&&n(t)})}),f.on("ProgressState",function(t){var n;e.on(ap.clearTimeout),u(t.time)?(n=ap.setEditorTimeout(f,function(){return o(t.state)},t.time),e.set(n)):(o(t.state),e.clear())})}function RC(t,n,e){return{within:t,extra:n,withinWidth:e}}function VC(t,n,o){var e,r=(e=function(t,n){var e=o(t);return ft.some({element:t,start:n,finish:n+e,width:e})},R(t,function(n,t){return e(t,n.len).fold(tt(n),function(t){return{len:t.finish,list:n.list.concat([t])}})},{len:0,list:[]}).list),i=F(r,function(t){return t.finish<=n}),u=I(i,function(t,n){return t+n.width},0);return{within:i,extra:r.slice(i.length),withinWidth:u}}function PC(t){return A(t,function(t){return t.element})}function HC(t,n){var e=A(n,function(t){return yu(t)});q1.setGroups(t,e)}function zC(t,n,e){var o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k=n.builtGroups.get();0!==k.length&&(o=fl(t,n,"primary"),r=Jy.getCoupled(t,"overflowGroup"),ni(o.element,"visibility","hidden"),u=q(i=k.concat([r]),function(n){return Oa(n.element).bind(function(t){return n.getSystem().getByDom(t).toOptional()})}),e([]),HC(o,i),a=wi(o.element),0===(s=a,l=n.builtGroups.get(),d=r,y=(0===(m=VC(l,s,f=function(t){return wi(t.element)})).extra.length?ft.some(m):ft.none()).getOrThunk(function(){return VC(l,s-f(d),f)}),x=y.within,w=y.extra,S=y.withinWidth,(c=1===w.length&&w[0].width<=f(d)?(b=S,RC(PC(x.concat(w)),[],b)):1<=w.length?(p=w,h=d,v=S,RC(PC(x).concat([h]),PC(p),v)):(g=S,RC(PC(x),[],g))).extra.length)?(Mg.remove(o,r),e([])):(HC(o,c.within),e(c.extra)),ai(o.element,"visibility"),ci(o.element),u.each(Rg.focus))}function NC(t,n){var e=Jy.getCoupled(t,"toolbarSandbox");pf.isOpen(e)?pf.close(e):pf.open(e,n.toolbar())}function LC(t,n,e,o){var r=e.getBounds.map(function(t){return t()}),i=e.lazySink(t).getOrDie();cf.positionWithinBounds(i,n,{anchor:{type:"hotspot",hotspot:t,layouts:o,overrides:{maxWidthFunction:TO()}}},r)}function jC(t,n,e,o,r){q1.setGroups(n,r),LC(t,n,e,o),Hg.on(t)}function WC(t){return A(t,function(t){return yu(t)})}function UC(t,e,o){zC(t,o,function(n){o.overflowGroups.set(n),e.getOpt(t).each(function(t){BO.setGroups(t,WC(n))})})}function GC(n,e){ll(n,e,"overflow-button").bind(function(){return ll(n,e,"overflow")}).each(function(t){l1(n,e),gO.toggleGrow(t)})}function XC(t){var n=t.title.fold(function(){return{}},function(t){return{attributes:{title:t}}});return{dom:st({tag:"div",classes:["tox-toolbar__group"]},n),components:[FO.parts.items({})],items:t.items,markers:{itemSelector:"*:not(.tox-split-button) > .tox-tbtn:not([disabled]), .tox-split-button:not([disabled]), .tox-toolbar-nav-js:not([disabled])"},tgroupBehaviours:Za([gy.config({}),Rg.config({})])}}function YC(t){return FO.sketch(XC(t))}function qC(e,t){var n=$o(function(t){var n=A(e.initGroups,YC);q1.setGroups(t,n)});return Za([Kv(e.providers.isDisabled),dv(),Bg.config({mode:t,onEscape:e.onEscape,selector:".tox-toolbar__group"}),lm("toolbar-events",[n])])}function KC(t){var n=t.cyclicKeying?"cyclic":"acyclic";return{uid:t.uid,dom:{tag:"div",classes:["tox-toolbar-overlord"]},parts:{"overflow-group":XC({title:ft.none(),items:[]}),"overflow-button":pS({name:"more",icon:ft.some("more-drawer"),disabled:!1,tooltip:ft.some("More..."),primary:!1,borderless:!1},ft.none(),t.providers)},splitToolbarBehaviours:qC(t,n)}}function JC(t){var n=t.cyclicKeying?"cyclic":"acyclic";return q1.sketch({uid:t.uid,dom:{tag:"div",classes:["tox-toolbar"].concat(t.type===ph.scrolling?["tox-toolbar--scrolling"]:[])},components:[q1.parts.groups({})],toolbarBehaviours:qC(t,n)})}function $C(t){return"string"==typeof t?t.split(" "):t}function QC(i,u){var a=st(st({},XO),u.menus),e=0<Xn(u.menus).length,t=F(void 0===u.menubar||!0===u.menubar?$C("file edit view insert format tools table help"):$C(!1===u.menubar?"":u.menubar),function(t){var n=Kn(XO,t);return e?n||kt(u.menus,t).exists(function(t){return Kn(t,"items")}):n});return F(A(t,function(t){var n=a[t],e={title:n.title,items:$C(n.items)},o=u,r=i.getParam("removed_menuitems","").split(/[ ,]/);return{text:e.title,getItems:function(){return z(e.items,function(t){var n=t.toLowerCase();return 0===n.trim().length||T(r,function(t){return t===n})?[]:"separator"===n||"|"===n?[{type:"separator"}]:o.menuItems[n]?[o.menuItems[n]]:[]})}}}),function(t){return 0<t.getItems().length&&T(t.getItems(),function(t){return"separator"!==t.type})})}function ZC(t){function n(){t._skinLoaded=!0,t.fire("SkinLoaded")}return function(){t.initialized?n():t.on("init",n)}}function t1(e,o,r){return new Dp(function(t,n){r.load(o,t,n),e.on("remove",function(){return r.unload(o)})})}function n1(t,n){var e,o,r,i,u,a,c,s,l,f=(r=(e=n).getParam("skin"),i=e.getParam("skin_url"),!1!==r&&(o=r||"oxide",i=i?e.documentBaseURI.toAbsolute(i):tv.baseURL+"/skins/ui/"+o),i);f&&n.contentCSS.push(f+(t?"/content.inline":"/content")+".min.css"),!1===n.getParam("skin")==0&&y(f)?Dp.all([t1(n,f+"/skin.min.css",n.ui.styleSheetLoader),(c=n,s=f,l=de.fromDom(c.getElement()),Wi(l).isSome()?t1(c,s+"/skin.shadowdom.min.css",Zh.DOM.styleSheetLoader):Dp.resolve())]).then(ZC(n),(u=n,a="Skin could not be loaded",function(){return u.fire("SkinLoadError",{message:a})})):ZC(n)()}function e1(o,r){return function(n){function t(){n.setActive(o.formatter.match(r));var t=o.formatter.formatChanged(r,n.setActive);e.set(t)}var e=lc();return o.initialized?t():o.once("init",t),function(){o.off("init",t),e.clear()}}}function o1(o,r,i){return function(t){function n(){return i(t)}function e(){i(t),o.on(r,n)}return o.initialized?e():o.once("init",e),function(){o.off("init",e),o.off(r,n)}}}function r1(n){return function(t){return function(){n.undoManager.transact(function(){n.focus(),n.execCommand("mceToggleFormat",!1,t.format)})}}}function i1(t,n){return function(){return t.execCommand(n)}}function u1(t,n,e){var u,a,c,o=e.dataset,r="basic"===o.type?function(){return A(o.data,function(t){return Ak(t,e.isSelectedFor,e.getPreviewFor)})}:o.getData;return{items:(u=n,a=e,c=function(t,n,e){var o="formatter"===t.type&&a.isInvalid(t);return 0===n?o?[]:i(t,n,!1,e).toArray():i(t,n,o,e).toArray()},{validateItems:s,getFetch:function(e,o){return function(t,n){n(fS(s(o()),yh.CLOSE_ON_EXECUTE,e,!1))}}}),getStyleItems:r};function i(t,n,e,o){var r=u.shared.providers.translate(t.title);if("separator"===t.type)return ft.some({type:"separator",text:r});if("submenu"!==t.type)return ft.some(st({type:"togglemenuitem",text:r,icon:t.icon,active:t.isSelected(o),disabled:e,onAction:a.onAction(t)},t.getStylePreview().fold(function(){return{}},function(t){return{meta:{style:t}}})));var i=z(t.getStyleItems(),function(t){return c(t,n,o)});return 0===n&&i.length<=0?ft.none():ft.some({type:"nestedmenuitem",text:r,disabled:i.length<=0,getSubmenuItems:function(){return z(t.getStyleItems(),function(t){return c(t,n,o)})}})}function s(t){var n=a.getCurrentValue(),e=a.shouldHide?0:1;return z(t,function(t){return c(t,e,n)})}}function a1(t,n,e){var o=u1(0,n,e),r=o.items,i=o.getStyleItems,u=o1(t,"NodeChange",function(t){var n=t.getComponent();e.updateText(n)});return sS({text:e.icon.isSome()?ft.none():e.text,icon:e.icon,tooltip:ft.from(e.tooltip),role:ft.none(),fetch:r.getFetch(n,i),onSetup:u,getApi:function(t){return{getComponent:tt(t)}},columns:1,presets:"normal",classes:e.icon.isSome()?[]:["bespoke"],dropdownBehaviours:[]},"tox-tbtn",n.shared)}function c1(t){return function(t){for(;t=t.parentNode;){var n=t.contentEditable;if(n&&"inherit"!==n)return P1(t)}return!1}(t)&&!H1(t)}function s1(r,t){function n(t){return gl(r)}function e(e,o){return function(t,n){return ll(t,r,n).map(function(t){return e(t,n)}).getOr(o)}}function o(t,n){return"true"!==_r(t.element,"aria-hidden")}var i,u=e(o,!1),a=e(function(t,n){var e;o(t)&&(ni(e=t.element,"display","none"),Or(e,"aria-hidden","true"),Ne(t,Uo(),{name:n,visible:!1}))}),c=(i=a,function(n,t){dt(t,function(t){return i(n,t)})}),s=e(function(t,n){var e;o(t)||(ai(e=t.element,"display"),Dr(e,"aria-hidden"),Ne(t,Uo(),{name:n,visible:!0}))});return{uid:r.uid,dom:r.dom,components:t,behaviours:$s(r.slotBehaviours),apis:{getSlotNames:n,getSlot:function(t,n){return ll(t,r,n)},isShowing:u,hideSlot:a,hideAllSlots:function(t){return c(t,n())},showSlot:s}}}function l1(t,n){ll(t,n,"overflow").each(function(e){zC(t,n,function(t){var n=A(t,function(t){return yu(t)});q1.setGroups(e,n)}),ll(t,n,"overflow-button").each(function(t){gO.hasGrown(e)&&Hg.on(t)}),gO.refresh(e)})}var f1,d1,m1,g1="data-value",p1=function(n,e,t,o){return A(t,function(t){return hk(t)?{type:"togglemenuitem",text:t.text,value:t.value,active:t.value===o,onAction:function(){_f.setValue(n,t.value),Ne(n,by,{name:e}),Rg.focus(n)}}:{type:"nestedmenuitem",text:t.text,getSubmenuItems:function(){return p1(n,e,t.items,o)}}})},h1=function(t,n){return q(t,function(t){return hk(t)?$r(t.value===n,t):h1(t.items,n)})},v1=xl({name:"HtmlSelect",configFields:[Jt("options"),Js("selectBehaviours",[Rg,_f]),dn("selectClasses",[]),dn("selectAttributes",{}),rn("data")],factory:function(e,t){var n=A(e.options,function(t){return{dom:{tag:"option",value:t.value,innerHtml:t.text}}}),o=e.data.map(function(t){return Ae("initialValue",t)}).getOr({});return{uid:e.uid,dom:{tag:"select",classes:e.selectClasses,attributes:e.selectAttributes},components:n,behaviours:Qs(e.selectBehaviours,[Rg.config({}),_f.config({store:st({mode:"manual",getValue:function(t){return si(t.element)},setValue:function(t,n){V(e.options,function(t){return t.value===n}).isSome()&&li(t.element,n)}},o)})])}}}),b1=Object.freeze({__proto__:null,events:function(t,n){var e=t.stream.streams.setup(t,n);return Jo([Xe(t.event,e),Qo(function(){return n.cancel()})].concat(t.cancelEvent.map(function(t){return[Xe(t,function(){return n.cancel()})]}).getOr([])))}}),y1=Object.freeze({__proto__:null,throttle:yk,init:function(t){return t.stream.streams.state(t)}}),x1=xa({fields:[$t("stream",qt("mode",{throttle:[Jt("delay"),dn("stopEvent",!0),Zu("streams",{setup:function(t,n){var e=t.stream,o=gp(t.onStream,e.delay);return n.setTimer(o),function(t,n){o.throttle(t,n),e.stopEvent&&n.stop()}},state:yk})]})),dn("event","input"),rn("cancelEvent"),$u("onStream")],name:"streaming",active:b1,state:y1}),w1=function(t){wk(t,function(t,n){return t.setSelectionRange(n.length,n.length)})},S1=tt("alloy.typeahead.itemexecute"),k1=tt([rn("lazySink"),Jt("fetch"),dn("minChars",5),dn("responseTime",1e3),Ku("onOpen"),dn("getHotspot",ft.some),dn("getAnchorOverrides",tt({})),dn("layouts",ft.none()),dn("eventOrder",{}),xn("model",{},[dn("getDisplayText",function(t){return void 0!==t.meta&&void 0!==t.meta.text?t.meta.text:t.value}),dn("selectsOver",!0),dn("populateFromBrowse",!0)]),Ku("onSetValue"),Ju("onExecute"),Ku("onItemExecute"),dn("inputClasses",[]),dn("inputAttributes",{}),dn("inputStyles",{}),dn("matchWidth",!0),dn("useMinWidth",!1),dn("dismissOnBlur",!0),Yu(["openClass"]),rn("initialData"),Js("typeaheadBehaviours",[Rg,_f,x1,Bg,Hg,Jy]),fe("previewing",function(){return wn(!0)})].concat(Ty()).concat(ix())),C1=tt([qf({schema:[Xu()],name:"menu",overrides:function(o){return{fakeFocus:!0,onHighlight:function(n,e){o.previewing.get()?n.getSystem().getByUid(o.uid).each(function(t){!function(t,n,o){if(t.selectsOver){var e=_f.getValue(n),r=t.getDisplayText(e),i=_f.getValue(o);return 0===t.getDisplayText(i).indexOf(r)?ft.some(function(){var e;xk(0,n,o),e=r.length,wk(n,function(t,n){return t.setSelectionRange(e,n.length)})}):ft.none()}return ft.none()}(o.model,t,e).fold(function(){return md.dehighlight(n,e)},function(t){return t()})}):n.getSystem().getByUid(o.uid).each(function(t){o.model.populateFromBrowse&&xk(o.model,t,e)}),o.previewing.set(!1)},onExecute:function(t,n){return t.getSystem().getByUid(o.uid).toOptional().map(function(t){return Ne(t,S1(),{item:n}),!0})},onHover:function(t,n){o.previewing.set(!1),t.getSystem().getByUid(o.uid).each(function(t){o.model.populateFromBrowse&&xk(o.model,t,n)})}}}})]),O1=wl({name:"Typeahead",configFields:k1(),partFields:C1(),factory:function(r,t,n,i){function e(t,n,e){r.previewing.set(!1);var o=Jy.getCoupled(t,"sandbox");pf.isOpen(o)?id.getCurrent(o).each(function(t){md.getHighlighted(t).fold(function(){e(t)},function(){We(o,t.element,"keydown",n)})}):tx(r,u(t),t,o,i,function(t){id.getCurrent(t).each(e)},Py.HighlightFirst).get(ct)}function u(e){return function(t){return t.map(function(t){var n=z(St(t.menus),function(t){return F(t.items,function(t){return"item"===t.type})});return _f.getState(e).update(A(n,function(t){return t.data})),t})}}var o=Zb(r),a=[Rg.config({}),_f.config({onSetValue:r.onSetValue,store:st({mode:"dataset",getDataKey:function(t){return si(t.element)},getFallbackEntry:function(t){return{value:t,meta:{}}},setValue:function(t,n){li(t.element,r.model.getDisplayText(n))}},r.initialData.map(function(t){return Ae("initialValue",t)}).getOr({}))}),x1.config({stream:{mode:"throttle",delay:r.responseTime,stopEvent:!1},onStream:function(t,n){var e,o=Jy.getCoupled(t,"sandbox");Rg.isFocused(t)&&si(t.element).length>=r.minChars&&(e=id.getCurrent(o).bind(function(t){return md.getHighlighted(t).map(_f.getValue)}),r.previewing.set(!0),tx(r,u(t),t,o,i,function(t){id.getCurrent(o).each(function(t){e.fold(function(){r.model.selectsOver&&md.highlightFirst(t)},function(n){md.highlightBy(t,function(t){return _f.getValue(t).value===n.value}),md.getHighlighted(t).orThunk(function(){return md.highlightFirst(t),ft.none()})})})},Py.HighlightFirst).get(ct))},cancelEvent:Fo()}),Bg.config({mode:"special",onDown:function(t,n){return e(t,n,md.highlightFirst),ft.some(!0)},onEscape:function(t){var n=Jy.getCoupled(t,"sandbox");return pf.isOpen(n)?(pf.close(n),ft.some(!0)):ft.none()},onUp:function(t,n){return e(t,n,md.highlightLast),ft.some(!0)},onEnter:function(n){var t=Jy.getCoupled(n,"sandbox"),e=pf.isOpen(t);if(e&&!r.previewing.get())return id.getCurrent(t).bind(function(t){return md.getHighlighted(t)}).map(function(t){return Ne(n,S1(),{item:t}),!0});var o=_f.getValue(n);return ze(n,Fo()),r.onExecute(t,n,o),e&&pf.close(t),ft.some(!0)}}),Hg.config({toggleClass:r.markers.openClass,aria:{mode:"expanded"}}),Jy.config({others:{sandbox:function(t){return ox(r,t,{onOpen:function(){return Hg.on(t)},onClose:function(){return Hg.off(t)}})}}}),lm("typeaheadevents",[tr(function(t){nx(r,u(t),t,i,ct,Py.HighlightFirst).get(ct)}),Xe(S1(),function(t,n){var e=Jy.getCoupled(t,"sandbox");xk(r.model,t,n.event.item),ze(t,Fo()),r.onItemExecute(t,e,n.event.item,_f.getValue(t)),pf.close(e),w1(t)})].concat(r.dismissOnBlur?[Xe(Oo(),function(t){var n=Jy.getCoupled(t,"sandbox");Oa(n.element).isNone()&&pf.close(n)})]:[]))];return{uid:r.uid,dom:ty(Jn(r,{inputAttributes:{role:"combobox","aria-autocomplete":"list","aria-haspopup":"true"}})),behaviours:st(st({},o),Qs(r.typeaheadBehaviours,a)),eventOrder:r.eventOrder}}}),_1=function(i){return st(st({},i),{toCached:function(){return _1(i.toCached())},bindFuture:function(n){return _1(i.bind(function(t){return t.fold(function(t){return Uy(mt.error(t))},function(t){return n(t)})}))},bindResult:function(n){return _1(i.map(function(t){return t.bind(n)}))},mapResult:function(n){return _1(i.map(function(t){return t.map(n)}))},mapError:function(n){return _1(i.map(function(t){return t.mapError(n)}))},foldResult:function(n,e){return i.map(function(t){return t.fold(n,e)})},withTimeout:function(t,r){return _1(Wy(function(n){var e=!1,o=setTimeout(function(){e=!0,n(mt.error(r()))},t);i.get(function(t){e||(clearTimeout(o),n(t))})}))}})},T1=function(t){return _1(Wy(t))},E1={type:"separator"},D1=Ar("aria-invalid"),B1={bar:Tk(function(t,n){return e=n.shared,{dom:{tag:"div",classes:["tox-bar","tox-form__controls-h-stack"]},components:A(t.items,e.interpreter)};var e}),collection:Tk(function(t,n){return u=t,a=n.shared.providers,c=u.label.map(function(t){return Qb(t,a)}),s=e(function(t,n,e,o){n.stop(),a.isDisabled()||Ne(t,wy,{name:u.name,value:o})}),l=[Xe(lo(),e(function(t,n,e){Sa(e)})),Xe(bo(),s),Xe(Bo(),s),Xe(fo(),e(function(t,n,e){Fu(t.element,"."+Eh).each(function(t){Gr(t,Eh)}),Ur(e,Eh)})),Xe(mo(),e(function(t){Fu(t.element,"."+Eh).each(function(t){Gr(t,Eh)})})),tr(e(function(t,n,e,o){Ne(t,wy,{name:u.name,value:o})}))],$b(c,dy.parts.field({dom:{tag:"div",classes:["tox-collection"].concat(1!==u.columns?["tox-collection--grid"]:["tox-collection--list"])},components:[],factory:{sketch:h},behaviours:Za([fd.config({disabled:a.isDisabled,onDisabled:function(t){o(t,function(t){Ur(t,"tox-collection__item--state-disabled"),Or(t,"aria-disabled",!0)})},onEnabled:function(t){o(t,function(t){Gr(t,"tox-collection__item--state-disabled"),Dr(t,"aria-disabled")})}}),dv(),Mg.config({}),_f.config({store:{mode:"memory",initialValue:[]},onSetValue:function(o,t){var n=o,e=A(t,function(t){var n=sp.translate(t.text),e=1===u.columns?'<div class="tox-collection__item-label">'+n+"</div>":"",o='<div class="tox-collection__item-icon">'+t.icon+"</div>",r={_:" "," - ":" ","-":" "},i=n.replace(/\_| \- |\-/g,function(t){return r[t]});return'<div class="tox-collection__item'+(a.isDisabled()?" tox-collection__item--state-disabled":"")+'" tabindex="-1" data-collection-item-value="'+py.encodeAllRaw(t.value)+'" title="'+i+'" aria-label="'+i+'">'+o+e+"</div>"}),r=A("auto"!==u.columns&&1<u.columns?B(e,u.columns):[e],function(t){return'<div class="tox-collection__group">'+t.join("")+"</div>"});kr(n.element,r.join("")),"auto"===u.columns&&rh(o,5,"tox-collection__item").each(function(t){var n=t.numRows,e=t.numColumns;Bg.setGridSize(o,n,e)}),ze(o,_y)}}),gy.config({}),Bg.config(1===(i=u.columns)?{mode:"menu",moveOnTab:!1,selector:".tox-collection__item"}:"auto"===i?{mode:"flatgrid",selector:".tox-collection__item",initSize:{numColumns:1,numRows:1}}:{mode:"matrix",selectors:{row:".tox-collection__group",cell:"."+wh}}),lm("collection-events",l)]),eventOrder:((r={})[Eo()]=["disabling","alloy.base.behaviour","collection-events"],r)}),["tox-form__group--collection"],[]);function e(o){return function(n,e){Iu(e.event.target,"[data-collection-item-value]").each(function(t){o(n,e,t,_r(t,"data-collection-item-value"))})}}function o(t,n){return A(gs(t.element,".tox-collection__item"),n)}var u,a,r,i,c,s,l}),alertbanner:Tk(function(t,n){return o=n.shared.providers,sy.sketch({dom:{tag:"div",attributes:{role:"alert"},classes:["tox-notification","tox-notification--in","tox-notification--"+(e=t).level]},components:[{dom:{tag:"div",classes:["tox-notification__icon"]},components:[cp.sketch({dom:{tag:"button",classes:["tox-button","tox-button--naked","tox-button--icon"],innerHtml:Nm(e.icon,o.icons),attributes:{title:o.translate(e.iconTooltip)}},action:function(t){Ne(t,wy,{name:"alert-banner",value:e.url})},buttonBehaviours:Za([Lm()])})]},{dom:{tag:"div",classes:["tox-notification__body"],innerHtml:o.translate(e.text)}}]});var e,o}),input:Tk(function(t,n){return o=n.shared.providers,bk({name:(e=t).name,multiline:!1,label:e.label,inputMode:e.inputMode,placeholder:e.placeholder,flex:!1,disabled:e.disabled,classname:"tox-textfield",validation:ft.none(),maximized:e.maximized},o);var e,o}),textarea:Tk(function(t,n){return o=n.shared.providers,bk({name:(e=t).name,multiline:!0,label:e.label,inputMode:ft.none(),placeholder:e.placeholder,flex:!0,disabled:e.disabled,classname:"tox-textarea",validation:ft.none(),maximized:e.maximized},o);var e,o}),label:Tk(function(t,n){return r={dom:{tag:"label",innerHtml:(o=n.shared).providers.translate((e=t).label),classes:["tox-label"]}},i=A(e.items,o.interpreter),{dom:{tag:"div",classes:["tox-form__group"]},components:[r].concat(i),behaviours:Za([x0(),Mg.config({}),w0(ft.none()),Bg.config({mode:"acyclic"})])};var e,o,r,i}),iframe:(f1=function(t,n){return e=t,o=n.shared.providers,u=Mw&&e.sandboxed,a=st(st({},e.label.map(function(t){return{title:t}}).getOr({})),u?{sandbox:"allow-scripts allow-same-origin"}:{}),r=u,i=wn(""),c={getValue:function(t){return i.get()},setValue:function(t,n){var e;r?Or(t.element,"srcdoc",n):(Or(t.element,"src","javascript:''"),(e=t.element.dom.contentWindow.document).open(),e.write(n),e.close()),i.set(n)}},$b(e.label.map(function(t){return Qb(t,o)}),dy.parts.field({factory:{sketch:function(t){return f0({uid:t.uid,dom:{tag:"iframe",attributes:a},behaviours:Za([gy.config({}),Rg.config({}),Ew(ft.none(),c.getValue,c.setValue)])})}}}),["tox-form__group--stretched"],[]);var e,o,r,i,u,a,c},function(t,n,e){var o=Jn(n,{source:"dynamic"});return Tk(f1)(t,o,e)}),button:Tk(function(t,n){return e=t,o=n.shared.providers,r=yS(e.name,"custom"),$b(ft.none(),dy.parts.field(st({factory:cp},vS(e,ft.some(r),o,[Dw(""),x0()]))),[],[]);var e,o,r}),checkbox:Tk(function(t,n){return r=t,i=n.shared.providers,u=_f.config({store:{mode:"manual",getValue:function(t){return t.element.dom.checked},setValue:function(t,n){t.element.dom.checked=n}}}),a=dy.parts.field({factory:{sketch:h},dom:{tag:"input",classes:["tox-checkbox__input"],attributes:{type:"checkbox"}},behaviours:Za([x0(),fd.config({disabled:function(){return r.disabled||i.isDisabled()}}),gy.config({}),Rg.config({}),u,Bg.config({mode:"special",onEnter:e,onSpace:e,stopSpaceKeyup:!0}),lm("checkbox-events",[Xe(vo(),function(t,n){Ne(t,by,{name:r.name})})])])}),c=dy.parts.label({dom:{tag:"span",classes:["tox-checkbox__label"],innerHtml:i.translate(r.label)},behaviours:Za([A0.config({})])}),s=Vm({dom:{tag:"div",classes:["tox-checkbox__icons"]},components:[o("checked"),o("unchecked")]}),dy.sketch({dom:{tag:"label",classes:["tox-checkbox"]},components:[a,s.asSpec(),c],fieldBehaviours:Za([fd.config({disabled:function(){return r.disabled||i.isDisabled()},disableClass:"tox-checkbox--disabled",onDisabled:function(t){dy.getField(t).each(fd.disable)},onEnabled:function(t){dy.getField(t).each(fd.enable)}}),dv()])});function e(t){return t.element.dom.click(),ft.some(!0)}function o(t){return Wm("checked"===t?"selected":"unselected",{tag:"span",classes:["tox-icon","tox-checkbox-icon__"+t]},i.icons)}var r,i,u,a,c,s}),colorinput:Tk(function(t,n){return e=t,r=n.shared,i=n.colorinput,c=dy.parts.field({factory:Ey,inputClasses:["tox-textfield"],onSetValue:function(t){return qy.run(t).get(ct)},inputBehaviours:Za([fd.config({disabled:r.providers.isDisabled}),dv(),gy.config({}),qy.config({invalidClass:"tox-textbox-field-invalid",getRoot:function(t){return ar(t.element)},notify:{onValid:function(t){var n=_f.getValue(t);Ne(t,M0,{color:n})}},validator:{validateOnLoad:!1,validate:function(t){var n=_f.getValue(t);if(0===n.length)return Uy(mt.value(!0));var e=de.fromTag("span");ni(e,"background-color",n);var o=ii(e,"background-color").fold(function(){return mt.error("blah")},function(t){return mt.value(n)});return Uy(o)}}})]),selectOnFocus:!1}),s=e.label.map(function(t){return Qb(t,r.providers)}),l=Vm((u={dom:{tag:"span",attributes:{"aria-label":r.providers.translate("Color swatch")}},layouts:{onRtl:function(){return[Ga,Ua,Ka]},onLtr:function(){return[Ua,Ga,Ka]}},components:[],fetch:bb(i.getColors(),i.hasCustomColors()),columns:i.getColorCols(),presets:"color",onItemAction:function(t,e){l.getOpt(t).each(function(n){"custom"===e?i.colorPicker(function(t){t.fold(function(){return ze(n,I0)},function(t){o(n,t),mb(t)})},"#ffffff"):o(n,"remove"===e?"":e)})}},B0.sketch({dom:u.dom,components:u.components,toggleClass:"mce-active",dropdownBehaviours:Za([qv((a=r).providers.isDisabled),dv(),A0.config({}),gy.config({})]),layouts:u.layouts,sandboxClasses:["tox-dialog__popups"],lazySink:a.getSink,fetch:function(n){return Wy(function(t){return u.fetch(t)}).map(function(t){return ft.from(Lb(Jn(Sb(Ar("menu-value"),t,function(t){u.onItemAction(n,t)},u.columns,u.presets,yh.CLOSE_ON_EXECUTE,O,a.providers),{movement:kb(u.columns,u.presets)})))})},parts:{menu:Jp(0,0,u.presets)}}))),dy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:s.toArray().concat([{dom:{tag:"div",classes:["tox-color-input"]},components:[c,l.asSpec()]}]),fieldBehaviours:Za([lm("form-field-events",[Xe(M0,function(t,n){l.getOpt(t).each(function(t){ni(t.element,"background-color",n.event.color)}),Ne(t,by,{name:e.name})}),Xe(F0,function(n,e){dy.getField(n).each(function(t){_f.setValue(t,e.event.value),id.getCurrent(n).each(Rg.focus)})}),Xe(I0,function(n,t){dy.getField(n).each(function(t){id.getCurrent(n).each(Rg.focus)})})])])});function o(t,n){Ne(t,F0,{value:n})}var e,r,i,u,a,c,s,l}),colorpicker:Tk(function(t){var r=Vm(u0(a0,function(t){return"tox-"+t}).sketch({dom:{tag:"div",classes:["tox-color-picker-container"],attributes:{role:"presentation"}},onValidHex:function(t){Ne(t,wy,{name:"hex-valid",value:!0})},onInvalidHex:function(t){Ne(t,wy,{name:"hex-valid",value:!1})}}));return{dom:{tag:"div"},components:[r.asSpec()],behaviours:Za([_f.config({store:{mode:"manual",getValue:function(t){var n=r.get(t);return id.getCurrent(n).bind(function(t){return _f.getValue(t).hex}).map(function(t){return"#"+t}).getOr("")},setValue:function(t,n){var e=/^#([a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?)/.exec(n),o=r.get(t);id.getCurrent(o).fold(function(){console.log("Can not find form")},function(t){_f.setValue(t,{hex:ft.from(e[1]).getOr("")}),hw.getField(t,"hex").each(function(t){ze(t,ho())})})}}}),x0()])}}),dropzone:Tk(function(t,n){return s0(t,n.shared.providers)}),grid:Tk(function(t,n){return e=n.shared,{dom:{tag:"div",classes:["tox-form__grid","tox-form__grid--"+t.columns+"col"]},components:A(t.items,e.interpreter)};var e}),listbox:Tk(function(t,n){return e=t,r=(o=n).shared.providers,i=ot(e.items).filter(hk),u=e.label.map(function(t){return Qb(t,r)}),a={dom:{tag:"div",classes:["tox-listboxfield"]},components:[dy.parts.field({dom:{},factory:{sketch:function(t){return sS({uid:t.uid,text:i.map(function(t){return t.text}),icon:ft.none(),tooltip:e.label,role:ft.none(),fetch:function(t,n){n(fS(p1(t,e.name,e.items,_f.getValue(t)),yh.CLOSE_ON_EXECUTE,o,!1))},onSetup:tt(ct),getApi:tt({}),columns:1,presets:"normal",classes:[],dropdownBehaviours:[gy.config({}),_f.config({store:{mode:"manual",initialValue:i.map(function(t){return t.value}).getOr(""),getValue:function(t){return _r(t.element,g1)},setValue:function(n,t){h1(e.items,t).each(function(t){Or(n.element,g1,t.value),Ne(n,YS,{text:t.text})})}}})]},"tox-listbox",o.shared)}}})]},dy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:lt([u.toArray(),[a]]),fieldBehaviours:Za([fd.config({disabled:tt(e.disabled),onDisabled:function(t){dy.getField(t).each(fd.disable)},onEnabled:function(t){dy.getField(t).each(fd.enable)}})])});var e,o,r,i,u,a}),selectbox:Tk(function(t,n){return e=t,o=n.shared.providers,r=A(e.items,function(t){return{text:o.translate(t.text),value:t.value}}),i=e.label.map(function(t){return Qb(t,o)}),u={dom:{tag:"div",classes:["tox-selectfield"]},components:lt([[dy.parts.field({dom:{},selectAttributes:{size:e.size},options:r,factory:v1,selectBehaviours:Za([fd.config({disabled:function(){return e.disabled||o.isDisabled()}}),gy.config({}),lm("selectbox-change",[Xe(vo(),function(t,n){Ne(t,by,{name:e.name})})])])})],(1<e.size?ft.none():ft.some(Wm("chevron-down",{tag:"div",classes:["tox-selectfield__icon-js"]},o.icons))).toArray()])},dy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:lt([i.toArray(),[u]]),fieldBehaviours:Za([fd.config({disabled:function(){return e.disabled||o.isDisabled()},onDisabled:function(t){dy.getField(t).each(fd.disable)},onEnabled:function(t){dy.getField(t).each(fd.enable)}}),dv()])});var e,o,r,i,u}),sizeinput:Tk(function(t,n){return OS(t,n.shared.providers)}),urlinput:Tk(function(t,n){return _k(t,n,n.urlinput)}),customeditor:Tk(function(e){var o=fc(),n=Vm({dom:{tag:e.tag}}),r=fc();return{dom:{tag:"div",classes:["tox-custom-editor"]},behaviours:Za([lm("custom-editor-events",[$o(function(t){n.getOpt(t).each(function(n){(Kn(e,"init")?e.init(n.element.dom):Cw.load(e.scriptId,e.scriptUrl).then(function(t){return t(n.element.dom,e.settings)})).then(function(n){r.on(function(t){n.setValue(t)}),r.clear(),o.set(n)})})})]),_f.config({store:{mode:"manual",getValue:function(){return o.get().fold(function(){return r.get().getOr("")},function(t){return t.getValue()})},setValue:function(t,n){o.get().fold(function(){r.set(n)},function(t){return t.setValue(n)})}}}),x0()]),components:[n.asSpec()]}}),htmlpanel:Tk(function(t){return"presentation"===t.presets?sy.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:t.html}}):sy.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:t.html,attributes:{role:"document"}},containerBehaviours:Za([gy.config({}),Rg.config({})])})}),imagetools:Tk(function(t,n){return pk(t,n.shared.providers)}),table:Tk(function(t,n){return vk(t,n.shared.providers)}),panel:Tk(function(t,n){return{dom:{tag:"div",classes:t.classes},components:A(t.items,n.shared.interpreter)}})},A1={field:function(t,n){return n}},M1=function(n,e,o){return kt(B1,e.type).fold(function(){return console.error('Unknown factory type "'+e.type+'", defaulting to container: ',e),e},function(t){return t(n,e,o)})},F1={valignCentre:[],alignCentre:[],alignLeft:[],alignRight:[],right:[],left:[],bottom:[],top:[]},I1=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",format:"bold"},{title:"Italic",format:"italic"},{title:"Underline",format:"underline"},{title:"Strikethrough",format:"strikethrough"},{title:"Superscript",format:"superscript"},{title:"Subscript",format:"subscript"},{title:"Code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Align",items:[{title:"Left",format:"alignleft"},{title:"Center",format:"aligncenter"},{title:"Right",format:"alignright"},{title:"Justify",format:"alignjustify"}]}],R1=function(t){return R(t,function(t,n){if(Kn(n,"items")){var e=R1(n.items);return{customFormats:t.customFormats.concat(e.customFormats),formats:t.formats.concat([{title:n.title,items:e.formats}])}}if(Kn(n,"inline")||Kn(n,"block")||Kn(n,"selector")){var o="custom-"+(y(n.name)?n.name:n.title.toLowerCase());return{customFormats:t.customFormats.concat([{name:o,format:n}]),formats:t.formats.concat([{title:n.title,format:o,icon:n.icon}])}}return st(st({},t),{formats:t.formats.concat(n)})},{customFormats:[],formats:[]})},V1=Ow.trim,P1=Fk("true"),H1=Fk("false"),z1=function(t){var n=A(gs(de.fromDom(t),"h1,h2,h3,h4,h5,h6,a:not([href])"),function(t){return t.dom});return F(A(F(n,Hk),zk).concat(A(F(n,Vk),Nk)),Lk)},N1="tinymce-url-history",L1=td,j1=Qf,W1=tt([dn("shell",!1),Jt("makeItem"),dn("setupItem",ct),Tf("listBehaviours",[Mg])]),U1=tt([Kf({name:"items",overrides:function(){return{behaviours:Za([Mg.config({})])}}})]),G1=wl({name:tt("CustomList")(),configFields:W1(),partFields:U1(),factory:function(s,t,n,e){var o=s.shell?{behaviours:[Mg.config({})],components:[]}:{behaviours:[],components:t};return{uid:s.uid,dom:s.dom,components:o.components,behaviours:Qs(s.listBehaviours,o.behaviours),apis:{setItems:function(a,c){var t;t=a,(s.shell?ft.some(t):ll(t,s,"items")).fold(function(){throw console.error("Custom List was defined to not be a shell, but no item container was specified in components"),new Error("Custom List was defined to not be a shell, but no item container was specified in components")},function(n){var t=Mg.contents(n),e=c.length,o=e-t.length,r=0<o?D(o,function(){return s.makeItem()}):[],i=t.slice(e);dt(i,function(t){return Mg.remove(n,t)}),dt(r,function(t){return Mg.append(n,t)});var u=Mg.contents(n);dt(u,function(t,n){s.setupItem(a,t,c[n],n)})})}}}},apis:{setItems:function(t,n,e){t.setItems(n,e)}}}),X1=tt([Jt("dom"),dn("shell",!0),Js("toolbarBehaviours",[Mg])]),Y1=tt([Kf({name:"groups",overrides:function(){return{behaviours:Za([Mg.config({})])}}})]),q1=wl({name:"Toolbar",configFields:X1(),partFields:Y1(),factory:function(o,t,n,e){var r=o.shell?{behaviours:[Mg.config({})],components:[]}:{behaviours:[],components:t};return{uid:o.uid,dom:o.dom,components:r.components,behaviours:Qs(o.toolbarBehaviours,r.behaviours),apis:{setGroups:function(t,n){var e;e=t,(o.shell?ft.some(e):ll(e,o,"groups")).fold(function(){throw console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(t){Mg.set(t,n)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(t,n,e){t.setGroups(n,e)}}}),K1=tt([]),J1=Object.freeze({__proto__:null,setup:ct,isDocked:O,getBehaviours:K1}),$1=Vn([{static:[]},{absolute:["positionCss"]},{fixed:["positionCss"]}]),Q1=function(t,n,e){var o,r,i,u,a;t.getSystem().isConnected()&&(i=e,u=(r=n).lazyViewport(o=t),(a=i.isDocked())&&sC(o,r,i,u),uC(o,u,i).each(function(t){i.setDocked(!a),t.fold(function(){return aC(o,r)},function(t){return cC(o,r,t)},function(t){sC(o,r,i,u,!0),cC(o,r,t)})}))},Z1=Object.freeze({__proto__:null,refresh:Q1,reset:lC,isDocked:function(t,n,e){return e.isDocked()},getModes:function(t,n,e){return e.getModes()},setModes:function(t,n,e,o){return e.setModes(o)}}),tO=Object.freeze({__proto__:null,events:function(o,r){return Jo([Qe(xo(),function(n,e){o.contextual.each(function(t){Xr(n.element,t.transitionClass)&&(qr(n.element,[t.transitionClass,t.fadeInClass]),(r.isVisible()?t.onShown:t.onHidden)(n)),e.stop()})}),Xe(Po(),function(t,n){Q1(t,o,r)}),Xe(Ho(),function(t,n){lC(t,o,r)})])}}),nO=xa({fields:[fn("contextual",[Qt("fadeInClass"),Qt("fadeOutClass"),Qt("transitionClass"),tn("lazyContext"),Ku("onShow"),Ku("onShown"),Ku("onHide"),Ku("onHidden")]),bn("lazyViewport",Fi),yn("modes",["top","bottom"],re),Ku("onDocked"),Ku("onUndocked")],name:"docking",active:tO,apis:Z1,state:Object.freeze({__proto__:null,init:function(t){var n=wn(!1),e=wn(!0),o=fc(),r=wn(t.modes);return au({isDocked:n.get,setDocked:n.set,getInitialPos:o.get,setInitialPos:o.set,clearInitialPos:o.clear,isVisible:e.get,setVisible:e.set,getModes:r.get,setModes:r.set,readState:function(){return"docked:  "+n.get()+", visible: "+e.get()+", modes: "+r.get().join(",")}})}})}),eO=tt(Ar("toolbar-height-change")),oO={fadeInClass:"tox-editor-dock-fadein",fadeOutClass:"tox-editor-dock-fadeout",transitionClass:"tox-editor-dock-transition"},rO="tox-tinymce--toolbar-sticky-on",iO="tox-tinymce--toolbar-sticky-off",uO=Object.freeze({__proto__:null,setup:function(t,n,e){t.inline||(n.header.isPositionedAtTop()||t.on("ResizeEditor",function(){e().each(nO.reset)}),t.on("ResizeWindow ResizeEditor",function(){e().each(dC)}),t.on("SkinLoaded",function(){e().each(function(t){nO.isDocked(t)?nO.reset(t):nO.refresh(t)})}),t.on("FullscreenStateChanged",function(){e().each(nO.reset)})),t.on("AfterScrollIntoView",function(b){e().each(function(t){nO.refresh(t);var n,e,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v=t.element;Id(v)&&(n=b,r=(o=or(e=v)).dom.defaultView.innerHeight,i=Oi(o),a=Mi(u=de.fromDom(n.elm)),c=vi(u),l=(s=a.y)+c,f=xi(e),d=vi(e),g=(m=f.top)+d,p=Math.abs(m-i.top)<2,h=Math.abs(g-(i.top+r))<2,p&&s<g?_i(i.left,s-d,o):h&&m<l&&_i(i.left,s-r+c+d,o))})}),t.on("PostRender",function(){gC(t,!1)})},isDocked:function(t){return t().map(nO.isDocked).getOr(!1)},getBehaviours:pC}),aO=te([Qt("type"),$t("items",Nt([ne([Qt("name"),on("items",re)]),re]))].concat(Rp)),cO=[cn("text"),cn("tooltip"),cn("icon"),tn("fetch"),bn("onSetup",function(){return ct})],sO=te(H([Qt("type")],cO)),lO=te([Qt("type"),cn("tooltip"),cn("icon"),cn("text"),sn("select"),tn("fetch"),bn("onSetup",function(){return ct}),hn("presets","normal",["normal","color","listpreview"]),dn("columns",1),tn("onAction"),tn("onItemAction")]),fO=xl({factory:function(n,o){var t={focus:Bg.focusIn,setMenus:function(t,n){var e=A(n,function(n){return mS(hC({type:"menubutton",text:n.text,fetch:function(t){t(n.getItems())}}).mapError(function(t){return se(t)}).getOrDie(),"tox-mbtn",o.backstage,ft.some("menuitem"))});Mg.set(t,e)}};return{uid:n.uid,dom:n.dom,components:[],behaviours:Za([Mg.config({}),lm("menubar-events",[$o(function(t){n.onSetup(t)}),Xe(lo(),function(e,t){Fu(e.element,".tox-mbtn--active").each(function(n){Iu(t.event.target,".tox-mbtn").each(function(t){Bn(n,t)||e.getSystem().getByDom(n).each(function(n){e.getSystem().getByDom(t).each(function(t){B0.expand(t),B0.close(n),Rg.focus(t)})})})})}),Xe(Wo(),function(e,t){t.event.prevFocus.bind(function(t){return e.getSystem().getByDom(t).toOptional()}).each(function(n){t.event.newFocus.bind(function(t){return e.getSystem().getByDom(t).toOptional()}).each(function(t){B0.isOpen(n)&&(B0.expand(t),B0.close(n))})})})]),Bg.config({mode:"flow",selector:".tox-mbtn",onEscape:function(t){return n.onEscape(t),ft.some(!0)}}),gy.config({})]),apis:t,domModification:{attributes:{role:"menubar"}}}},name:"silver.Menubar",configFields:[Jt("dom"),Jt("uid"),Jt("onEscape"),Jt("backstage"),dn("onSetup",ct)],apis:{focus:function(t,n){t.focus(n)},setMenus:function(t,n,e){t.setMenus(n,e)}}}),dO=Object.freeze({__proto__:null,refresh:function(t,n,e){var o;e.isExpanded()&&(ai(t.element,bC(n)),o=yC(n,t.element),ni(t.element,bC(n),o))},grow:function(t,n,e){e.isExpanded()||OC(t,n,e)},shrink:function(t,n,e){e.isExpanded()&&CC(t,n,e)},immediateShrink:function(t,n,e){e.isExpanded()&&kC(t,n,e)},hasGrown:function(t,n,e){return e.isExpanded()},hasShrunk:function(t,n,e){return e.isCollapsed()},isGrowing:_C,isShrinking:TC,isTransitioning:function(t,n,e){return _C(t,n)||TC(t,n)},toggleGrow:function(t,n,e){(e.isExpanded()?CC:OC)(t,n,e)},disableTransitions:xC}),mO=Object.freeze({__proto__:null,exhibit:function(t,n,e){return Hr(n.expanded?{classes:[n.openClass],styles:{}}:{classes:[n.closedClass],styles:Ae(n.dimension.property,"0px")})},events:function(e,o){return Jo([Qe(xo(),function(t,n){n.event.raw.propertyName===e.dimension.property&&(xC(t,e),o.isExpanded()&&ai(t.element,e.dimension.property),(o.isExpanded()?e.onGrown:e.onShrunk)(t))})])}}),gO=xa({fields:[Jt("closedClass"),Jt("openClass"),Jt("shrinkingClass"),Jt("growingClass"),rn("getAnimationRoot"),Ku("onShrunk"),Ku("onStartShrink"),Ku("onGrown"),Ku("onStartGrow"),dn("expanded",!1),$t("dimension",qt("property",{width:[Zu("property","width"),Zu("getDimension",function(t){return wi(t)+"px"})],height:[Zu("property","height"),Zu("getDimension",function(t){return vi(t)+"px"})]}))],name:"sliding",active:mO,apis:dO,state:Object.freeze({__proto__:null,init:function(t){var n=wn(t.expanded);return au({isExpanded:function(){return!0===n.get()},isCollapsed:function(){return!1===n.get()},setCollapsed:S(n.set,!1),setExpanded:S(n.set,!0),readState:function(){return"expanded: "+n.get()}})}})}),pO="container",hO=[Js("slotBehaviours",[])],vO=yt({getSlotNames:function(t,n){return t.getSlotNames(n)},getSlot:function(t,n,e){return t.getSlot(n,e)},isShowing:function(t,n,e){return t.isShowing(n,e)},hideSlot:function(t,n,e){return t.hideSlot(n,e)},hideAllSlots:function(t,n){return t.hideAllSlots(n)},showSlot:function(t,n,e){return t.showSlot(n,e)}},Vr),bO=st(st({},vO),{sketch:function(t){var e,n={slot:function(t,n){return e.push(t),il(pO,EC(t),n)},record:tt(e=[])},o=t(n),r=A(n.record(),function(t){return Yf({name:t,pname:EC(t)})});return yl(pO,hO,r,s1,o)}}),yO=te([cn("icon"),cn("tooltip"),bn("onShow",ct),bn("onHide",ct),bn("onSetup",function(){return ct})]),xO=Ar("FixSizeEvent"),wO=Ar("AutoSizeEvent"),SO=Object.freeze({__proto__:null,block:function(t,n,e,o){Or(t.element,"aria-busy",!0);var r=n.getRoot(t).getOr(t),i=Za([Bg.config({mode:"special",onTab:function(){return ft.some(!0)},onShiftTab:function(){return ft.some(!0)}}),Rg.config({})]),u=o(r,i),a=r.getSystem().build(u);Mg.append(r,yu(a)),a.hasConfigured(Bg)&&n.focus&&Bg.focusIn(a),e.isBlocked()||n.onBlock(t),e.blockWith(function(){return Mg.remove(r,a)})},unblock:function(t,n,e){Dr(t.element,"aria-busy"),e.isBlocked()&&n.onUnblock(t),e.clear()}}),kO=xa({fields:[bn("getRoot",ft.none),vn("focus",!0),Ku("onBlock"),Ku("onUnblock")],name:"blocking",apis:SO,state:Object.freeze({__proto__:null,init:function(){var n=sc(function(t){return t.destroy()});return au({readState:n.isSet,blockWith:function(t){n.set({destroy:t})},clear:n.clear,isBlocked:n.isSet})}})}),CO=tt([Js("splitToolbarBehaviours",[Jy]),fe("builtGroups",function(){return wn([])})]),OO=tt([Yu(["overflowToggledClass"]),sn("getOverflowBounds"),Jt("lazySink"),fe("overflowGroups",function(){return wn([])})].concat(CO())),_O=tt([Yf({factory:q1,schema:X1(),name:"primary"}),qf({schema:X1(),name:"overflow"}),qf({name:"overflow-button"}),qf({name:"overflow-group"})]),TO=tt(function(t,n){var e=t,o=Math.floor(n);ni(e,"max-width",Cu.max(e,o,["margin-left","border-left-width","padding-left","padding-right","border-right-width","margin-right"])+"px")}),EO=tt([Yu(["toggledClass"]),Jt("lazySink"),tn("fetch"),sn("getBounds"),fn("fireDismissalEventInstead",[dn("event",Lo())]),zc()]),DO=tt([qf({name:"button",overrides:function(t){return{dom:{attributes:{"aria-haspopup":"true"}},buttonBehaviours:Za([Hg.config({toggleClass:t.markers.toggledClass,aria:{mode:"expanded"},toggleOnExecute:!1})])}}}),qf({factory:q1,schema:X1(),name:"toolbar",overrides:function(n){return{toolbarBehaviours:Za([Bg.config({mode:"cyclic",onEscape:function(t){return ll(t,n,"button").each(Rg.focus),ft.none()}})])}}})]),BO=wl({name:"FloatingToolbarButton",factory:function(u,t,a,n){return st(st({},cp.sketch(st(st({},n.button()),{action:function(t){NC(t,n)},buttonBehaviours:Ef({dump:n.button().buttonBehaviours},[Jy.config({others:{toolbarSandbox:function(t){return o=t,e=a,r=u,{dom:{tag:"div",attributes:{id:(i=Ru()).id}},behaviours:Za([Bg.config({mode:"special",onEscape:function(t){return pf.close(t),ft.some(!0)}}),pf.config({onOpen:function(t,n){r.fetch().get(function(t){jC(o,n,r,e.layouts,t),i.link(o.element),Bg.focusIn(n)})},onClose:function(){Hg.off(o),Rg.focus(o),i.unlink(o.element)},isPartOf:function(t,n,e){return Hu(n,e)||Hu(o,e)},getAttachPoint:function(){return r.lazySink(o).getOrDie()}}),oc.config({channels:st(st({},Ws(st({isExtraPart:O},r.fireDismissalEventInstead.map(function(t){return{fireEventInstead:{event:t.event}}}).getOr({})))),Us({doReposition:function(){pf.getState(Jy.getCoupled(o,"toolbarSandbox")).each(function(t){LC(o,t,r,e.layouts)})}}))})])};var o,e,r,i}}})])}))),{apis:{setGroups:function(n,e){pf.getState(Jy.getCoupled(n,"toolbarSandbox")).each(function(t){jC(n,t,u,a.layouts,e)})},reposition:function(n){pf.getState(Jy.getCoupled(n,"toolbarSandbox")).each(function(t){LC(n,t,u,a.layouts)})},toggle:function(t){NC(t,n)},getToolbar:function(t){return pf.getState(Jy.getCoupled(t,"toolbarSandbox"))},isOpen:function(t){return pf.isOpen(Jy.getCoupled(t,"toolbarSandbox"))}}})},configFields:EO(),partFields:DO(),apis:{setGroups:function(t,n,e){t.setGroups(n,e)},reposition:function(t,n){t.reposition(n)},toggle:function(t,n){t.toggle(n)},getToolbar:function(t,n){return t.getToolbar(n)},isOpen:function(t,n){return t.isOpen(n)}}}),AO=tt([Jt("items"),Yu(["itemSelector"]),Js("tgroupBehaviours",[Bg])]),MO=tt([Jf({name:"items",unit:"item"})]),FO=wl({name:"ToolbarGroup",configFields:AO(),partFields:MO(),factory:function(t,n,e,o){return{uid:t.uid,dom:t.dom,components:n,behaviours:Qs(t.tgroupBehaviours,[Bg.config({mode:"flow",selector:t.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),IO=wl({name:"SplitFloatingToolbar",configFields:OO(),partFields:_O(),factory:function(e,t,n,o){var r=Vm(BO.sketch({fetch:function(){return Wy(function(t){t(WC(e.overflowGroups.get()))})},layouts:{onLtr:function(){return[Ga,Ua]},onRtl:function(){return[Ua,Ga]},onBottomLtr:function(){return[Ya,Xa]},onBottomRtl:function(){return[Xa,Ya]}},getBounds:n.getOverflowBounds,lazySink:e.lazySink,fireDismissalEventInstead:{},markers:{toggledClass:e.markers.overflowToggledClass},parts:{button:o["overflow-button"](),toolbar:o.overflow()}}));return{uid:e.uid,dom:e.dom,components:t,behaviours:Qs(e.splitToolbarBehaviours,[Jy.config({others:{overflowGroup:function(){return FO.sketch(st(st({},o["overflow-group"]()),{items:[r.asSpec()]}))}}})]),apis:{setGroups:function(t,n){e.builtGroups.set(A(n,t.getSystem().build)),UC(t,r,e)},refresh:function(t){return UC(t,r,e)},toggle:function(t){r.getOpt(t).each(function(t){BO.toggle(t)})},isOpen:function(t){return r.getOpt(t).map(BO.isOpen).getOr(!1)},reposition:function(t){r.getOpt(t).each(function(t){BO.reposition(t)})},getOverflow:function(t){return r.getOpt(t).bind(BO.getToolbar)}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(t,n,e){t.setGroups(n,e)},refresh:function(t,n){t.refresh(n)},reposition:function(t,n){t.reposition(n)},toggle:function(t,n){t.toggle(n)},isOpen:function(t,n){return t.isOpen(n)},getOverflow:function(t,n){return t.getOverflow(n)}}}),RO=tt([Yu(["closedClass","openClass","shrinkingClass","growingClass","overflowToggledClass"]),Ku("onOpened"),Ku("onClosed")].concat(CO())),VO=tt([Yf({factory:q1,schema:X1(),name:"primary"}),Yf({factory:q1,schema:X1(),name:"overflow",overrides:function(n){return{toolbarBehaviours:Za([gO.config({dimension:{property:"height"},closedClass:n.markers.closedClass,openClass:n.markers.openClass,shrinkingClass:n.markers.shrinkingClass,growingClass:n.markers.growingClass,onShrunk:function(t){ll(t,n,"overflow-button").each(function(t){Hg.off(t),Rg.focus(t)}),n.onClosed(t)},onGrown:function(t){Bg.focusIn(t),n.onOpened(t)},onStartGrow:function(t){ll(t,n,"overflow-button").each(Hg.on)}}),Bg.config({mode:"acyclic",onEscape:function(t){return ll(t,n,"overflow-button").each(Rg.focus),ft.some(!0)}})])}}}),qf({name:"overflow-button",overrides:function(t){return{buttonBehaviours:Za([Hg.config({toggleClass:t.markers.overflowToggledClass,aria:{mode:"pressed"},toggleOnExecute:!1})])}}}),qf({name:"overflow-group"})]),PO=wl({name:"SplitSlidingToolbar",configFields:RO(),partFields:VO(),factory:function(o,t,n,e){var r="alloy.toolbar.toggle";return{uid:o.uid,dom:o.dom,components:t,behaviours:Qs(o.splitToolbarBehaviours,[Jy.config({others:{overflowGroup:function(n){return FO.sketch(st(st({},e["overflow-group"]()),{items:[cp.sketch(st(st({},e["overflow-button"]()),{action:function(t){ze(n,r)}}))]}))}}}),lm("toolbar-toggle-events",[Xe(r,function(t){GC(t,o)})])]),apis:{setGroups:function(t,n){var e=A(n,t.getSystem().build);o.builtGroups.set(e),l1(t,o)},refresh:function(t){return l1(t,o)},toggle:function(t){return GC(t,o)},isOpen:function(t){return ll(t,o,"overflow").map(gO.hasGrown).getOr(!1)}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(t,n,e){t.setGroups(n,e)},refresh:function(t,n){t.refresh(n)},toggle:function(t,n){t.toggle(n)},isOpen:function(t,n){return t.isOpen(n)}}}),HO=j1.optional({factory:fO,name:"menubar",schema:[Jt("backstage")]}),zO=j1.optional({factory:{sketch:function(t){return G1.sketch({uid:t.uid,dom:t.dom,listBehaviours:Za([Bg.config({mode:"acyclic",selector:".tox-toolbar"})]),makeItem:function(){return JC({type:t.type,uid:Ar("multiple-toolbar-item"),cyclicKeying:!1,initGroups:[],providers:t.providers,onEscape:function(){return t.onEscape(),ft.some(!0)}})},setupItem:function(t,n,e,o){q1.setGroups(n,e)},shell:!0})}},name:"multiple-toolbar",schema:[Jt("dom"),Jt("onEscape")]}),NO=j1.optional({factory:{sketch:function(t){return(t.type===ph.sliding?function(t){var n=PO.parts.primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}}),e=PO.parts.overflow({dom:{tag:"div",classes:["tox-toolbar__overflow"]}}),o=KC(t);return PO.sketch(st(st({},o),{components:[n,e],markers:{openClass:"tox-toolbar__overflow--open",closedClass:"tox-toolbar__overflow--closed",growingClass:"tox-toolbar__overflow--growing",shrinkingClass:"tox-toolbar__overflow--shrinking",overflowToggledClass:"tox-tbtn--enabled"},onOpened:function(t){t.getSystem().broadcastOn([eO()],{type:"opened"})},onClosed:function(t){t.getSystem().broadcastOn([eO()],{type:"closed"})}}))}:t.type===ph.floating?function(i){var t=KC(i),n=IO.parts.primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}});return IO.sketch(st(st({},t),{lazySink:i.getSink,getOverflowBounds:function(){var t=i.moreDrawerData.lazyHeader().element,n=Mi(t),e=ir(t),o=Mi(e),r=Math.max(e.dom.scrollHeight,o.height);return Bi(n.x+4,o.y,n.width-8,r)},parts:st(st({},t.parts),{overflow:{dom:{tag:"div",classes:["tox-toolbar__overflow"],attributes:i.attributes}}}),components:[n],markers:{overflowToggledClass:"tox-tbtn--enabled"}}))}:JC)({type:t.type,uid:t.uid,onEscape:function(){return t.onEscape(),ft.some(!0)},cyclicKeying:!1,initGroups:[],getSink:t.getSink,providers:t.providers,moreDrawerData:{lazyToolbar:t.lazyToolbar,lazyMoreButton:t.lazyMoreButton,lazyHeader:t.lazyHeader},attributes:t.attributes})}},name:"toolbar",schema:[Jt("dom"),Jt("onEscape"),Jt("getSink")]}),LO=j1.optional({factory:{sketch:function(t){var n=t.editor,e=t.sticky?pC:K1;return{uid:t.uid,dom:t.dom,components:t.components,behaviours:Za(e(n,t.sharedBackstage))}}},name:"header",schema:[Jt("dom")]}),jO=j1.optional({name:"socket",schema:[Jt("dom")]}),WO=j1.optional({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"div",classes:["tox-sidebar"],attributes:{role:"complementary"}},components:[{dom:{tag:"div",classes:["tox-sidebar__slider"]},components:[],behaviours:Za([gy.config({}),Rg.config({}),gO.config({dimension:{property:"width"},closedClass:"tox-sidebar--sliding-closed",openClass:"tox-sidebar--sliding-open",shrinkingClass:"tox-sidebar--sliding-shrinking",growingClass:"tox-sidebar--sliding-growing",onShrunk:function(t){id.getCurrent(t).each(bO.hideAllSlots),ze(t,wO)},onGrown:function(t){ze(t,wO)},onStartGrow:function(t){Ne(t,xO,{width:ii(t.element,"width").getOr("")})},onStartShrink:function(t){Ne(t,xO,{width:wi(t.element)+"px"})}}),Mg.config({}),id.config({find:function(t){var n=Mg.contents(t);return ot(n)}})])}],behaviours:Za([Sw(0),lm("sidebar-sliding-events",[Xe(xO,function(t,n){ni(t.element,"width",n.event.width)}),Xe(wO,function(t,n){ai(t.element,"width")})])])}}},name:"sidebar",schema:[Jt("dom")]}),UO=j1.optional({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"div",attributes:{"aria-hidden":"true"},classes:["tox-throbber"],styles:{display:"none"}},behaviours:Za([Mg.config({}),kO.config({focus:!1}),id.config({find:function(t){return ot(t.components())}})]),components:[]}}},name:"throbber",schema:[Jt("dom")]}),GO=wl({name:"OuterContainer",factory:function(e,t,n){return{uid:e.uid,dom:e.dom,components:t,apis:{getSocket:function(t){return L1.getPart(t,e,"socket")},setSidebar:function(t,n){L1.getPart(t,e,"sidebar").each(function(t){return BC(t,n)})},toggleSidebar:function(t,n){L1.getPart(t,e,"sidebar").each(function(t){var e=n;id.getCurrent(t).each(function(n){id.getCurrent(n).each(function(t){gO.hasGrown(n)?bO.isShowing(t,e)?gO.shrink(n):(bO.hideAllSlots(t),bO.showSlot(t,e)):(bO.hideAllSlots(t),bO.showSlot(t,e),gO.grow(n))})})})},whichSidebar:function(t){return L1.getPart(t,e,"sidebar").bind(AC).getOrNull()},getHeader:function(t){return L1.getPart(t,e,"header")},getToolbar:function(t){return L1.getPart(t,e,"toolbar")},setToolbar:function(t,n){L1.getPart(t,e,"toolbar").each(function(t){t.getApis().setGroups(t,n)})},setToolbars:function(t,n){L1.getPart(t,e,"multiple-toolbar").each(function(t){G1.setItems(t,n)})},refreshToolbar:function(t){L1.getPart(t,e,"toolbar").each(function(t){return t.getApis().refresh(t)})},toggleToolbarDrawer:function(t){L1.getPart(t,e,"toolbar").each(function(n){var t=n.getApis().toggle;null!=t?ft.some(function(t){return t(n)}(t)):ft.none()})},isToolbarDrawerToggled:function(t){return L1.getPart(t,e,"toolbar").bind(function(n){return ft.from(n.getApis().isOpen).map(function(t){return t(n)})}).getOr(!1)},getThrobber:function(t){return L1.getPart(t,e,"throbber")},focusToolbar:function(t){L1.getPart(t,e,"toolbar").orThunk(function(){return L1.getPart(t,e,"multiple-toolbar")}).each(function(t){Bg.focusIn(t)})},setMenubar:function(t,n){L1.getPart(t,e,"menubar").each(function(t){fO.setMenus(t,n)})},focusMenubar:function(t){L1.getPart(t,e,"menubar").each(function(t){fO.focus(t)})}},behaviours:e.behaviours}},configFields:[Jt("dom"),Jt("behaviours")],partFields:[LO,HO,NO,zO,jO,WO,UO],apis:{getSocket:function(t,n){return t.getSocket(n)},setSidebar:function(t,n,e){t.setSidebar(n,e)},toggleSidebar:function(t,n,e){t.toggleSidebar(n,e)},whichSidebar:function(t,n){return t.whichSidebar(n)},getHeader:function(t,n){return t.getHeader(n)},getToolbar:function(t,n){return t.getToolbar(n)},setToolbar:function(t,n,e){var o=A(e,YC);t.setToolbar(n,o)},setToolbars:function(t,n,e){var o=A(e,function(t){return A(t,YC)});t.setToolbars(n,o)},refreshToolbar:function(t,n){return t.refreshToolbar(n)},toggleToolbarDrawer:function(t,n){t.toggleToolbarDrawer(n)},isToolbarDrawerToggled:function(t,n){return t.isToolbarDrawerToggled(n)},getThrobber:function(t,n){return t.getThrobber(n)},setMenubar:function(t,n,e){t.setMenubar(n,e)},focusMenubar:function(t,n){t.focusMenubar(n)},focusToolbar:function(t,n){t.focusToolbar(n)}}}),XO={file:{title:"File",items:"newdocument restoredraft | preview | export print | deleteallconversations"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall | searchreplace"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments"},insert:{title:"Insert",items:"image link media addcomment pageembed template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align lineheight | forecolor backcolor | language | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code wordcount"},table:{title:"Table",items:"inserttable | cell row column | advtablesort | tableprops deletetable"},help:{title:"Help",items:"help"}},YO=S(n1,!1),qO=S(n1,!0);function KO(t,n,e,o){var r;return{type:"basic",data:(r=t.getParam(n,e,"string"),A(o===d1.SemiColon?r.replace(/;$/,"").split(";"):r.split(" "),function(t){var n=t,e=t,o=t.split("=");return 1<o.length&&(n=o[0],e=o[1]),{title:n,format:e}}))}}function JO(e){var t={type:"basic",data:D_};return{tooltip:"Align",text:ft.none(),icon:ft.some("align-left"),isSelectedFor:function(t){return function(){return e.formatter.match(t)}},getCurrentValue:ft.none,getPreviewFor:function(t){return ft.none},onAction:function(n){return function(){return V(D_,function(t){return t.format===n.format}).each(function(t){return e.execCommand(t.command)})}},updateText:function(t){var n=V(D_,function(t){return e.formatter.match(t.format)}).fold(tt("left"),function(t){return t.title.toLowerCase()});Ne(t,qS,{icon:"align-"+n})},dataset:t,shouldHide:!1,isInvalid:function(t){return!e.formatter.canApply(t.format)}}}function $O(t){return A(t.split(/\s*,\s*/),function(t){return t.replace(/^['"]+|['"]+$/g,"")})}function QO(r){function i(){function e(t){return t?$O(t)[0]:""}var t=r.queryCommandValue("FontName"),n=a.data,o=t?t.toLowerCase():"";return{matchOpt:V(n,function(t){var n=t.format;return n.toLowerCase()===o||e(n).toLowerCase()===e(o).toLowerCase()}).orThunk(function(){return $r(0===(t=o).indexOf("-apple-system")&&(n=$O(t.toLowerCase()),N(B_,function(t){return-1<n.indexOf(t.toLowerCase())})),{title:u,format:o});var t,n}),font:t}}var u="System Font",a=KO(r,"font_formats","Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",d1.SemiColon);return{tooltip:"Fonts",text:ft.some(u),icon:ft.none(),isSelectedFor:function(n){return function(t){return t.exists(function(t){return t.format===n})}},getCurrentValue:function(){return i().matchOpt},getPreviewFor:function(t){return function(){return ft.some({tag:"div",styles:-1===t.indexOf("dings")?{"font-family":t}:{}})}},onAction:function(t){return function(){r.undoManager.transact(function(){r.focus(),r.execCommand("FontName",!1,t.format)})}},updateText:function(t){var n=i(),e=n.matchOpt,o=n.font,r=e.fold(tt(o),function(t){return t.title});Ne(t,YS,{text:r})},dataset:a,shouldHide:!1,isInvalid:O}}function ZO(e){function i(){var a=ft.none(),c=o.data,s=e.queryCommandValue("FontSize");if(s)for(var t=function(t){var n,e,o,r,i=(e=t,/[0-9.]+px$/.test(n=s)?(o=72*parseInt(n,10)/96,r=Math.pow(10,e||0),Math.round(o*r)/r+"pt"):kt(M_,n).getOr(n)),u=kt(A_,i).getOr("");a=V(c,function(t){return t.format===s||t.format===i||t.format===u})},n=3;a.isNone()&&0<=n;n--)t(n);return{matchOpt:a,size:s}}var t=tt(ft.none),o=KO(e,"fontsize_formats","8pt 10pt 12pt 14pt 18pt 24pt 36pt",d1.Space);return{tooltip:"Font sizes",text:ft.some("12pt"),icon:ft.none(),isSelectedFor:function(n){return function(t){return t.exists(function(t){return t.format===n})}},getPreviewFor:t,getCurrentValue:function(){return i().matchOpt},onAction:function(t){return function(){e.undoManager.transact(function(){e.focus(),e.execCommand("FontSize",!1,t.format)})}},updateText:function(t){var n=i(),e=n.matchOpt,o=n.size,r=e.fold(tt(o),function(t){return t.title});Ne(t,YS,{text:r})},dataset:o,shouldHide:!1,isInvalid:O}}function t_(t,n){var e=n(),o=A(e,function(t){return t.format});return ft.from(t.formatter.closest(o)).bind(function(n){return V(e,function(t){return t.format===n})}).orThunk(function(){return $r(t.formatter.match("p"),{title:"Paragraph",format:"p"})})}function n_(e){var o=KO(e,"block_formats","Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre",d1.SemiColon);return{tooltip:"Blocks",text:ft.some("Paragraph"),icon:ft.none(),isSelectedFor:function(t){return function(){return e.formatter.match(t)}},getCurrentValue:ft.none,getPreviewFor:function(n){return function(){var t=e.formatter.get(n);return ft.some({tag:0<t.length&&(t[0].inline||t[0].block)||"div",styles:e.dom.parseStyle(e.formatter.getCssText(n))})}},onAction:r1(e),updateText:function(t){var n=t_(e,function(){return o.data}).fold(tt("Paragraph"),function(t){return t.title});Ne(t,YS,{text:n})},dataset:o,shouldHide:!1,isInvalid:function(t){return!e.formatter.canApply(t.format)}}}function e_(r,t){return{tooltip:"Formats",text:ft.some("Paragraph"),icon:ft.none(),isSelectedFor:function(t){return function(){return r.formatter.match(t)}},getCurrentValue:ft.none,getPreviewFor:function(n){return function(){var t=r.formatter.get(n);return void 0!==t?ft.some({tag:0<t.length&&(t[0].inline||t[0].block)||"div",styles:r.dom.parseStyle(r.formatter.getCssText(n))}):ft.none()}},onAction:r1(r),updateText:function(t){var e=function(t){var n=t.items;return void 0!==n&&0<n.length?z(n,e):[{title:t.title,format:t.format}]},n=z(Bk(r),e),o=t_(r,tt(n)).fold(tt("Paragraph"),function(t){return t.title});Ne(t,YS,{text:o})},shouldHide:r.getParam("style_formats_autohide",!1,"boolean"),isInvalid:function(t){return!r.formatter.canApply(t.format)},dataset:t}}function o_(n){return{isDisabled:function(){return fd.isDisabled(n)},setDisabled:function(t){return fd.set(n,t)}}}function r_(n){return{setActive:function(t){Hg.set(n,t)},isActive:function(){return Hg.isOn(n)},isDisabled:function(){return fd.isDisabled(n)},setDisabled:function(t){return fd.set(n,t)}}}function i_(t,n){return t.map(function(t){return{"aria-label":n.translate(t),title:n.translate(t)}}).getOr({})}function u_(n,e,t,o,r,i){var u;return{dom:{tag:"button",classes:["tox-tbtn"].concat(e.isSome()?["tox-tbtn--select"]:[]),attributes:i_(t,i)},components:$v([n.map(function(t){return uS(t,i.icons)}),e.map(function(t){return cS(t,"tox-tbtn",i)})]),eventOrder:((u={})[uo()]=["focusing","alloy.base.behaviour","common-button-display-events"],u),buttonBehaviours:Za([Kv(i.isDisabled),dv(),lm("common-button-display-events",[Xe(uo(),function(t,n){n.event.prevent(),ze(t,z_)})])].concat(o.map(function(t){return R_.config({channel:t,initialData:{icon:n,text:e},renderComponents:function(t,n){return $v([t.icon.map(function(t){return uS(t,i.icons)}),t.text.map(function(t){return cS(t,"tox-tbtn",i)})])}})}).toArray()).concat(r.getOr([])))}}function a_(t,n,e){var o,r=wn(ct),i=u_(t.icon,t.text,t.tooltip,ft.none(),ft.none(),e);return cp.sketch({dom:i.dom,components:i.components,eventOrder:XS,buttonBehaviours:Za([lm("toolbar-button-events",[(o={onAction:t.onAction,getApi:n.getApi},tr(function(n,t){mv(o,n)(function(t){Ne(n,GS,{buttonApi:t}),o.onAction(t)})})),gv(n,r),pv(n,r)]),Kv(function(){return t.disabled||e.isDisabled()}),dv()].concat(n.toolbarButtonBehaviours))})}function c_(r,i){return function(t,n,e){var o=r(t).mapError(function(t){return se(t)}).getOrDie();return i(o,n,e)}}function s_(e,t,o,r){var n,i=t.outerContainer,u=o.toolbar,a=o.buttons;d(u,y)?(n=u.map(function(t){var n={toolbar:t,buttons:a,allowToolbarGroups:o.allowToolbarGroups};return G_(e,n,{backstage:r},ft.none())}),GO.setToolbars(i,n)):GO.setToolbar(i,G_(e,o,{backstage:r},ft.none()))}function l_(t){return/^[0-9\.]+(|px)$/i.test(""+t)?ft.some(parseInt(""+t,10)):ft.none()}function f_(t){return u(t)?t+"px":t}function d_(n,t,e){var o=t.filter(function(t){return n<t}),r=e.filter(function(t){return t<n});return o.or(r).getOr(n)}function m_(t){var n=ah(t),e=ch(t),o=lh(t);return l_(n).map(function(t){return d_(t,e,o)})}function g_(u,a,t,n,c){function s(){return x.get()&&!u.removed}function l(t){return y?t.fold(tt(0),function(t){return 1<t.components().length?vi(t.components()[1].element):0}):0}function f(){r.broadcastOn([vf()],{})}function o(t){var n,e,o,r,i;void 0===t&&(t=!1),s()&&(m||(n=p.getOrThunk(function(){var t=l_(ri(mu(),"margin-left")).getOr(0);return wi(mu())-xi(a).left+t}),ni(c.get().element,"max-width",n+"px")),y&&GO.refreshToolbar(d),m||(e=l(GO.getToolbar(d)),o=Ai(a),r=v()?Math.max(o.y-vi(c.get().element)+e,0):o.bottom,ei(d.element,{position:"absolute",top:Math.round(r)+"px",left:Math.round(o.x)+"px"})),g&&(i=c.get(),t?nO.reset(i):nO.refresh(i)),f())}function e(t){var n,e;void 0===t&&(t=!0),!m&&g&&s()&&(n=h.getDockingMode(),(e=function(t){switch(ov(u)){case vh.auto:var n=l(GO.getToolbar(d)),e=vi(t.element)-n,o=Ai(a);if(o.y>e)return"top";var r=ir(a),i=Math.max(r.dom.scrollHeight,vi(r));return o.bottom<i-e||Fi().bottom<o.bottom-e?"bottom":"top";case vh.bottom:return"bottom";default:return vh.top,"top"}}(c.get()))!==n&&(function(t){var n=c.get();nO.setModes(n,[t]),h.setDockingMode(t);var e=v()?Sc.TopToBottom:Sc.BottomToTop;Or(n.element,Zc,e)}(e),t&&o(!0)))}var r=t.uiMothership,d=t.outerContainer,i=Zh.DOM,m=uv(u),g=sv(u),p=lh(u).or(m_(u)),h=n.shared.header,v=h.isPositionedAtTop,b=ev(u),y=b===ph.sliding||b===ph.floating,x=wn(!1);return{isVisible:s,isPositionedAtTop:v,show:function(){x.set(!0),ni(d.element,"display","flex"),i.addClass(u.getBody(),"mce-edit-focus"),ai(r.element,"display"),e(!1),o()},hide:function(){x.set(!1),t.outerContainer&&(ni(d.element,"display","none"),i.removeClass(u.getBody(),"mce-edit-focus")),ni(r.element,"display","none")},update:o,updateMode:e,repositionPopups:f}}function p_(t,n){var e=Ai(t);return{pos:n?e.y:e.bottom,bounds:e}}function h_(i,u){return Xe(GS,function(t,n){var e,o=i.get(t),r=(e=o,{hide:function(){return ze(e,Mo())},getValue:function(){return _f.getValue(e)}});u.onAction(r,n.event.buttonApi)})}function v_(t,n,e){return n.bottom-t.y>=(e=void 0===e?.01:e)&&t.bottom-n.y>=e}function b_(t){var n=function(t){var n=t.getBoundingClientRect();if(n.height<=0&&n.width<=0){var e=dr(de.fromDom(t.startContainer),t.startOffset).element;return(Vi(e)?ar(e):ft.some(e)).filter(Ri).map(function(t){return t.dom.getBoundingClientRect()}).getOr(n)}return n}(t.selection.getRng());if(t.inline){var e=Oi();return Bi(e.left+n.left,e.top+n.top,n.width,n.height)}var o=Mi(de.fromDom(t.getBody()));return Bi(o.x+n.left,o.y+n.top,n.width,n.height)}function y_(t,n,e,o){void 0===o&&(o=0);var r,i,u,a,c=Ei(window),s=Ai(de.fromDom(t.getContentAreaContainer())),l=dh(t)||mh(t)||nv(t),f=(r=s,i=c,u=o,{x:a=Math.max(r.x+u,i.x),width:Math.min(r.right-u,i.right)-a}),d=f.x,m=f.width;if(t.inline&&!l)return Bi(d,c.y,m,c.height);var g=function(t,n,e,o,r,i){var u=de.fromDom(t.getContainer()),a=Ai(Fu(u,".tox-editor-header").getOr(u)),c=a.y>=n.bottom,s=o&&!c;if(t.inline&&s)return{y:Math.max(a.bottom+i,e.y),bottom:e.bottom};if(t.inline&&!s)return{y:e.y,bottom:Math.min(a.y-i,e.bottom)};var l="line"===r?Ai(u):n;return s?{y:Math.max(a.bottom+i,e.y),bottom:Math.min(l.bottom-i,e.bottom)}:{y:Math.max(l.y+i,e.y),bottom:Math.min(a.y-i,e.bottom)}}(t,s,c,n.header.isPositionedAtTop(),e,o),p=g.y;return Bi(d,p,m,g.bottom-p)}function x_(t){return"node"===t}function w_(t,r,n,i,e){var u=b_(t),o=i.lastElement().exists(function(t){return Bn(n,t)}),a=n,c=t.selection.getRng(),s=dr(de.fromDom(c.startContainer),c.startOffset);return c.startContainer===c.endContainer&&c.startOffset===c.endOffset-1&&Bn(s.element,a)?o?Fm:ip:o?function(n,t){var e=ii(n,"position");ni(n,"position",t);var o=v_(u,Ai(r))&&!i.isReposition()?Rm:Fm;return e.each(function(t){return ni(n,"position",t)}),o}(r,i.getMode()):("fixed"===i.getMode()?e.y+Oi().top:e.y)+(vi(r)+12)<=u.y?ip:up}function S_(n,t){var e=M(F(t,function(t){return t.predicate(n.dom)}),function(t){return"contexttoolbar"===t.type});return{contextToolbars:e.pass,contextForms:e.fail}}function k_(e,t){function o(t){return Bn(t,r)}var n,r=de.fromDom(t.getBody()),i=de.fromDom(t.selection.getNode());return o(n=i)||An(r,n)?function(t,n,e){var o=S_(t,n);if(0<o.contextForms.length)return ft.some({elem:t,toolbars:[o.contextForms[0]]});var r=S_(t,e);if(0<r.contextForms.length)return ft.some({elem:t,toolbars:[r.contextForms[0]]});if(0<o.contextToolbars.length||0<r.contextToolbars.length){var i=function(t){if(t.length<=1)return t;function n(n){return T(t,function(t){return t.position===n})}function e(n){return F(t,function(t){return t.position===n})}var o=n("selection"),r=n("node");if(o||r){if(r&&o){var i=e("node"),u=A(e("selection"),function(t){return st(st({},t),{position:"node"})});return i.concat(u)}return e(o?"selection":"node")}return e("line")}(o.contextToolbars.concat(r.contextToolbars));return ft.some({elem:t,toolbars:i})}return ft.none()}(i,e.inNodeScope,e.inEditorScope).orThunk(function(){return a=e,(t=o)(n=i)?ft.none():Ie(n,function(t){if(Ri(t)){var n=S_(t,a.inNodeScope),e=n.contextToolbars,o=n.contextForms,r=0<o.length?o:(u=e).length<=1?u:i("selection").orThunk(function(){return i("node")}).orThunk(function(){return i("line")}).map(function(t){return t.position}).fold(function(){return[]},function(n){return F(u,function(t){return t.position===n})});return 0<r.length?ft.some({elem:t,toolbars:r}):ft.none()}function i(n){return V(u,function(t){return t.position===n})}var u;return ft.none()},t);var t,n,a}):ft.none()}function C_(a,c){var s={},l=[],f=[],d={},m={},t=Xn(a);return dt(t,function(t){var n,e,o,r,i,u=a[t];"contextform"===u.type?(o=t,i=Xt(Gt("ContextForm",Gp,r=u)),(s[o]=i).launch.map(function(t){d["form:"+o]=st(st({},r.launch),{type:"contextformtogglebutton"===t.type?"togglebutton":"button",onAction:function(){c(i)}})}),("editor"===i.scope?f:l).push(i),m[o]=i):"contexttoolbar"===u.type&&(n=t,Gt("ContextToolbar",Xp,e=u).each(function(t){("editor"===e.scope?f:l).push(t),m[n]=t}))}),{forms:s,inNodeScope:l,inEditorScope:f,lookupTable:m,formNavigators:d}}function O_(d,t,m,u){function a(){var t=y.get().getOr("node"),n=x_(t)?1:0;return y_(d,p,t,n)}function c(){return!(d.removed||h()&&g.isContextMenuOpen())}function s(){if(c()){var t=a(),n=Kr(y.get(),"node")?(e=d,v.get().filter(du).map(Mi).getOrThunk(function(){return b_(e)})):b_(d);return t.height<=0||!v_(n,t)}return 1;var e}function n(){v.clear(),b.clear(),y.clear(),op.hide(x)}function e(){var t;op.isOpen(x)&&(ai(t=x.element,"display"),s()?ni(t,"display","none"):(b.set(0),op.reposition(x)))}function l(t){return{dom:{tag:"div",classes:["tox-pop__dialog"]},components:[t],behaviours:Za([Bg.config({mode:"acyclic"}),lm("pop-dialog-wrap-events",[$o(function(t){d.shortcuts.add("ctrl+F9","focus statusbar",function(){return Bg.focusIn(t)})}),Qo(function(t){d.shortcuts.remove("ctrl+F9")})])])}}function f(t,n){var e,o,r,i,c,s,u,a="node"===t?p.anchors.node(n):p.anchors.cursor(),l=(e=d,o=t,r=h(),i={lastElement:v.get,isReposition:function(){return Kr(b.get(),0)},getMode:function(){return cf.getMode(m)}},"line"===o?{bubble:yc(12,0,Q_),layouts:{onLtr:function(){return[la]},onRtl:function(){return[fa]}},overrides:Z_}:{bubble:yc(0,12,Q_,1/12),layouts:(c=e,s=i,u=o,r?{onLtr:function(t){return[Ka,Ua,Ga,Xa,Ya,qa].concat(f(t))},onRtl:function(t){return[Ka,Ga,Ua,Ya,Xa,qa].concat(f(t))}}:{onLtr:function(t){return[qa,Ka,Xa,Ua,Ya,Ga].concat(f(t))},onRtl:function(t){return[qa,Ka,Ya,Ga,Xa,Ua].concat(f(t))}}),overrides:Z_});function f(t){return x_(u)?[(a=t,function(t,n,e,o,r){var i=w_(c,o,a,s,r),u=st(st({},t),{y:r.y,height:r.height});return st(st({},i(u,n,e,o,r)),{alwaysFit:!0})})]:[];var a}return Jn(a,l)}function o(t,n){var e,o,r,i;k.cancel(),c()&&(e=S(t),r=f(o=t[0].position,n),y.set(o),b.set(1),ai(i=x.element,"display"),Kr(fu(n,v.get(),Bn),!0)||(Gr(i,rT),cf.reset(m,x)),op.showWithinBounds(x,l(e),{anchor:r,transition:{classes:[rT],mode:"placement"}},function(){return ft.some(a())}),n.fold(v.clear,v.set),s()&&ni(i,"display","none"))}var r,i,g=u.backstage,p=g.shared,h=Be().deviceType.isTouch,v=fc(),b=fc(),y=fc(),x=bu((r={sink:m,onEscape:function(){return d.focus(),ft.some(!0)}},i=wn([]),op.sketch({dom:{tag:"div",classes:["tox-pop"]},fireDismissalEventInstead:{event:"doNotDismissYet"},onShow:function(t){i.set([]),op.getContent(t).each(function(t){ai(t.element,"visibility")}),Gr(t.element,oT),ai(t.element,"width")},inlineBehaviours:Za([lm("context-toolbar-events",[Qe(xo(),function(t,n){"width"===n.event.raw.propertyName&&(Gr(t.element,oT),ai(t.element,"width"))}),Xe(eT,function(t,n){var e=t.element;ai(e,"width");var o=wi(e);op.setContent(t,n.event.contents),Ur(e,oT);var r=wi(e);ni(e,"width",o+"px"),op.getContent(t).each(function(t){n.event.focus.bind(function(t){return Sa(t),Oa(e)}).orThunk(function(){return Bg.focusIn(t),Ca(ji(e))})}),ap.setTimeout(function(){ni(t.element,"width",r+"px")},0)}),Xe(tT,function(n,t){op.getContent(n).each(function(t){i.set(i.get().concat([{bar:t,focus:Ca(ji(n.element))}]))}),Ne(n,eT,{contents:t.event.forwardContents,focus:ft.none()})}),Xe(nT,function(n,t){Y(i.get()).each(function(t){i.set(i.get().slice(0,i.get().length-1)),Ne(n,eT,{contents:yu(t.bar),focus:t.focus})})})]),Bg.config({mode:"special",onEscape:function(n){return Y(i.get()).fold(function(){return r.onEscape()},function(t){return ze(n,nT),ft.some(!0)})}})]),lazySink:function(){return mt.value(r.sink)}}))),w=_t(function(){return C_(t,function(t){var n=S([t]);Ne(x,tT,{forwardContents:l(n)})})}),S=function(t){var n=d.ui.registry.getAll().buttons,e=w(),o=st(st({},n),e.formNavigators),r=ev(d)===ph.scrolling?ph.scrolling:ph.default,i=lt(A(t,function(t){return"contexttoolbar"===t.type?G_(d,{buttons:o,toolbar:t.items,allowToolbarGroups:!1},u,ft.some(["form:"])):(n=p.providers,$_(t,n));var n}));return JC({type:r,uid:Ar("context-toolbar"),initGroups:i,onEscape:ft.none,cyclicKeying:!0,providers:p.providers})},k=gp(function(){d.hasFocus()&&!d.removed&&(Xr(x.element,rT)?k.throttle():k_(w(),d).fold(n,function(t){o(t.toolbars,ft.some(t.elem))}))},17);d.on("init",function(){d.on("remove",n),d.on("ScrollContent ScrollWindow ObjectResized ResizeEditor longpress",e),d.on("click keyup focus SetContent",k.throttle),d.on(J_,n),d.on("contexttoolbar-show",function(n){kt(w().lookupTable,n.toolbarKey).each(function(t){o([t],$r(n.target!==d,n.target)),op.getContent(x).each(Bg.focusIn)})}),d.on("focusout",function(t){ap.setEditorTimeout(d,function(){Oa(m.element).isNone()&&Oa(x.element).isNone()&&n()},0)}),d.on("SwitchMode",function(){d.mode.isReadOnly()&&n()}),d.on("AfterProgressState",function(t){t.state?n():d.hasFocus()&&k.throttle()}),d.on("NodeChange",function(t){Oa(x.element).fold(k.throttle,ct)})})}(m1=d1=d1||{})[m1.SemiColon=0]="SemiColon",m1[m1.Space=1]="Space";var __,T_,E_,D_=[{title:"Left",icon:"align-left",format:"alignleft",command:"JustifyLeft"},{title:"Center",icon:"align-center",format:"aligncenter",command:"JustifyCenter"},{title:"Right",icon:"align-right",format:"alignright",command:"JustifyRight"},{title:"Justify",icon:"align-justify",format:"alignjustify",command:"JustifyFull"}],B_=["-apple-system","Segoe UI","Roboto","Helvetica Neue","sans-serif"],A_={"8pt":"1","10pt":"2","12pt":"3","14pt":"4","18pt":"5","24pt":"6","36pt":"7"},M_={"xx-small":"7pt","x-small":"8pt",small:"10pt",medium:"12pt",large:"14pt","x-large":"18pt","xx-large":"24pt"},F_=Object.freeze({__proto__:null,events:function(r,i){function u(e,o){r.updateState.each(function(t){var n=t(e,o);i.set(n)}),r.renderComponents.each(function(t){var n=A(t(o,i.get()),e.getSystem().build);Ms(e,n)})}return Jo([Xe(To(),function(t,n){var e,o=n;o.universal||(e=r.channel,et(o.channels,e)&&u(t,o.data))}),$o(function(n,t){r.initialData.each(function(t){u(n,t)})})])}}),I_=Object.freeze({__proto__:null,getState:function(t,n,e){return e}}),R_=xa({fields:[Jt("channel"),rn("renderComponents"),rn("updateState"),rn("initialData")],name:"reflecting",active:F_,apis:I_,state:Object.freeze({__proto__:null,init:function(){var t=wn(ft.none());return{readState:function(){return t.get().getOr("none")},get:t.get,set:t.set,clear:function(){return t.set(ft.none())}}}})}),V_=tt([Jt("toggleClass"),Jt("fetch"),$u("onExecute"),dn("getHotspot",ft.some),dn("getAnchorOverrides",tt({})),zc(),$u("onItemExecute"),rn("lazySink"),Jt("dom"),Ku("onOpen"),Js("splitDropdownBehaviours",[Jy,Bg,Rg]),dn("matchWidth",!1),dn("useMinWidth",!1),dn("eventOrder",{}),rn("role")].concat(ix())),P_=tt([Yf({factory:cp,schema:[Jt("dom")],name:"arrow",defaults:function(){return{buttonBehaviours:Za([Rg.revoke()])}},overrides:function(n){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(t){t.getSystem().getByUid(n.uid).each(Le)},buttonBehaviours:Za([Hg.config({toggleOnExecute:!1,toggleClass:n.toggleClass})])}}}),Yf({factory:cp,schema:[Jt("dom")],name:"button",defaults:function(){return{buttonBehaviours:Za([Rg.revoke()])}},overrides:function(e){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(n){n.getSystem().getByUid(e.uid).each(function(t){e.onExecute(t,n)})}}}}),Kf({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:t.text}}}},schema:[Jt("text")],name:"aria-descriptor"}),qf({schema:[Xu()],name:"menu",defaults:function(o){return{onExecute:function(n,e){n.getSystem().getByUid(o.uid).each(function(t){o.onItemExecute(t,n,e)})}}}}),Qy()]),H_=wl({name:"SplitDropdown",configFields:V_(),partFields:P_(),factory:function(o,t,n,e){function r(t){id.getCurrent(t).each(function(t){md.highlightFirst(t),Bg.focusIn(t)})}function i(t){nx(o,h,t,e,r,Py.HighlightFirst).get(ct)}function u(t){return Le(fl(t,o,"button")),ft.some(!0)}var a,c=st(st({},Jo([$o(function(e,t){ll(e,o,"aria-descriptor").each(function(t){var n=Ar("aria");Or(t.element,"id",n),Or(e.element,"aria-describedby",n)})})])),ym(ft.some(i))),s={repositionMenus:function(t){Hg.isOn(t)&&rx(t)}};return{uid:o.uid,dom:o.dom,components:t,apis:s,eventOrder:st(st({},o.eventOrder),((a={})[Eo()]=["disabling","toggling","alloy.base.behaviour"],a)),events:c,behaviours:Qs(o.splitDropdownBehaviours,[Jy.config({others:{sandbox:function(t){var n=fl(t,o,"arrow");return ox(o,t,{onOpen:function(){Hg.on(n),Hg.on(t)},onClose:function(){Hg.off(n),Hg.off(t)}})}}}),Bg.config({mode:"special",onSpace:u,onEnter:u,onDown:function(t){return i(t),ft.some(!0)}}),Rg.config({}),Hg.config({toggleOnExecute:!1,aria:{mode:"expanded"}})]),domModification:{attributes:{role:o.role.getOr("button"),"aria-haspopup":!0}}}},apis:{repositionMenus:function(t,n){return t.repositionMenus(n)}}}),z_=Ar("focus-button"),N_=function(t,n,e){return a_(t,{toolbarButtonBehaviours:[].concat(0<e.length?[lm("toolbarButtonWith",e)]:[]),getApi:o_,onSetup:t.onSetup},n)},L_=function(t,n,e){return Jn(a_(t,{toolbarButtonBehaviours:[Mg.config({}),Hg.config({toggleClass:"tox-tbtn--enabled",aria:{mode:"pressed"},toggleOnExecute:!1})].concat(0<e.length?[lm("toolbarToggleButtonWith",e)]:[]),getApi:r_,onSetup:t.onSetup},n))},j_=[{name:"history",items:["undo","redo"]},{name:"styles",items:["styleselect"]},{name:"formatting",items:["bold","italic"]},{name:"alignment",items:["alignleft","aligncenter","alignright","alignjustify"]},{name:"indentation",items:["outdent","indent"]},{name:"permanent pen",items:["permanentpen"]},{name:"comments",items:["addcomment"]}],W_={button:c_(Sp,function(t,n){return e=n.backstage.shared.providers,N_(t,e,[]);var e}),togglebutton:c_(kp,function(t,n){return e=n.backstage.shared.providers,L_(t,e,[]);var e}),menubutton:c_(hC,function(t,n){return mS(t,"tox-tbtn",n.backstage,ft.none())}),splitbutton:c_(function(t){return Gt("SplitButton",lO,t)},function(t,n){return o=t,r=n.backstage.shared,s=Ar("channel-update-split-dropdown-display"),l=wn(ct),f={getApi:e,onSetup:o.onSetup},H_.sketch({dom:{tag:"div",classes:["tox-split-button"],attributes:st({"aria-pressed":!1},i_(o.tooltip,r.providers))},onExecute:function(t){o.onAction(e(t))},onItemExecute:function(t,n,e){},splitDropdownBehaviours:Za([Uv(r.providers.isDisabled),dv(),lm("split-dropdown-events",[Xe(z_,Rg.focus),gv(f,l),pv(f,l)]),A0.config({})]),eventOrder:((i={})[zo()]=["alloy.base.behaviour","split-dropdown-events"],i),toggleClass:"tox-tbtn--enabled",lazySink:r.getSink,fetch:(u=e,a=o,c=r.providers,function(n){return Wy(function(t){return a.fetch(t)}).map(function(t){return ft.from(Lb(Jn(Sb(Ar("menu-value"),t,function(t){a.onItemAction(u(n),t)},a.columns,a.presets,yh.CLOSE_ON_EXECUTE,a.select.getOr(O),c),{movement:kb(a.columns,a.presets),menuBehaviours:Xh("auto"!==a.columns?[]:[$o(function(o,t){rh(o,4,Yp(a.presets)).each(function(t){var n=t.numRows,e=t.numColumns;Bg.setGridSize(o,n,e)})})])})))})}),parts:{menu:Jp(0,o.columns,o.presets)},components:[H_.parts.button(u_(o.icon,o.text,ft.none(),ft.some(s),ft.some([Hg.config({toggleClass:"tox-tbtn--enabled",toggleOnExecute:!1})]),r.providers)),H_.parts.arrow({dom:{tag:"button",classes:["tox-tbtn","tox-split-button__chevron"],innerHtml:Nm("chevron-down",r.providers.icons)},buttonBehaviours:Za([Uv(r.providers.isDisabled),dv(),Lm()])}),H_.parts["aria-descriptor"]({text:r.providers.translate("To open the popup, press Shift+Enter")})]});function e(e){return{isDisabled:function(){return fd.isDisabled(e)},setDisabled:function(t){return fd.set(e,t)},setIconFill:function(t,n){Fu(e.element,'svg path[id="'+t+'"], rect[id="'+t+'"]').each(function(t){Or(t,"fill",n)})},setIconStroke:function(t,n){Fu(e.element,'svg path[id="'+t+'"], rect[id="'+t+'"]').each(function(t){Or(t,"stroke",n)})},setActive:function(n){Or(e.element,"aria-pressed",n),Fu(e.element,"span").each(function(t){e.getSystem().getByDom(t).each(function(t){return Hg.set(t,n)})})},isActive:function(){return Fu(e.element,"span").exists(function(t){return e.getSystem().getByDom(t).exists(Hg.isOn)})}}}var o,r,i,u,a,c,s,l,f}),grouptoolbarbutton:c_(function(t){return Gt("GroupToolbarButton",aO,t)},function(t,n,e){var o,r,i,u,a,c,s=e.ui.registry.getAll().buttons,l=((o={})[Zc]=n.backstage.shared.header.isPositionedAtTop()?Sc.TopToBottom:Sc.BottomToTop,o);if(ev(e)!==ph.floating)throw new Error("Toolbar groups are only supported when using floating toolbar mode");return i=n.backstage,u=function(t){return G_(e,{buttons:s,toolbar:t,allowToolbarGroups:!1},n,ft.none())},a=l,c=i.shared,BO.sketch({lazySink:c.getSink,fetch:function(){return Wy(function(t){t(A(u(r.items),YC))})},markers:{toggledClass:"tox-tbtn--enabled"},parts:{button:u_((r=t).icon,r.text,r.tooltip,ft.none(),ft.none(),c.providers),toolbar:{dom:{tag:"div",classes:["tox-toolbar__overflow"],attributes:a}}}})}),styleSelectButton:function(t,n){return a1(t,e=n.backstage,e_(t,st({type:"advanced"},e.styleselect)));var e},fontsizeSelectButton:function(t,n){return a1(t,n.backstage,ZO(t))},fontSelectButton:function(t,n){return a1(t,n.backstage,QO(t))},formatButton:function(t,n){return a1(t,n.backstage,n_(t))},alignMenuButton:function(t,n){return a1(t,n.backstage,JO(t))}},U_={styleselect:W_.styleSelectButton,fontsizeselect:W_.fontsizeSelectButton,fontselect:W_.fontSelectButton,formatselect:W_.formatButton,align:W_.alignMenuButton},G_=function(o,c,s,l){var e,t,n,r,i=(n=c.toolbar,r=c.buttons,!1===n?[]:void 0===n||!0===n?(e=r,t=A(j_,function(t){var n=F(t.items,function(t){return Kn(e,t)||Kn(U_,t)});return{name:t.name,items:n}}),F(t,function(t){return 0<t.items.length})):y(n)?A(n.split("|"),function(t){return{items:t.trim().split(" ")}}):d(n,function(t){return Kn(t,"name")&&Kn(t,"items")})?n:(console.error("Toolbar type should be string, string[], boolean or ToolbarGroup[]"),[]));return F(A(i,function(t){var n=z(t.items,function(t){return 0===t.trim().length?[]:(r=o,n=c.buttons,i=t,u=c.allowToolbarGroups,a=s,e=l,kt(n,i.toLowerCase()).orThunk(function(){return e.bind(function(t){return q(t,function(t){return kt(n,t+i.toLowerCase())})})}).fold(function(){return kt(U_,i.toLowerCase()).map(function(t){return t(r,a)}).orThunk(function(){return ft.none()})},function(t){return"grouptoolbarbutton"!==t.type||u?(e=a,o=r,kt(W_,(n=t).type).fold(function(){return console.error("skipping button defined by",n),ft.none()},function(t){return ft.some(t(n,e,o))})):(console.warn("Ignoring the '"+i+"' toolbar button. Group toolbar buttons are only supported when using floating toolbar mode and cannot be nested."),ft.none());var n,e,o}).toArray());var r,n,i,u,a,e});return{title:ft.from(o.translate(t.name)),items:n}}),function(t){return 0<t.items.length})},X_=Be(),Y_=X_.os.isiOS()&&X_.os.version.major<=12,q_=Object.freeze({__proto__:null,render:function(e,n,t,o,r){var i=wn(0),u=n.outerContainer;YO(e);var a=de.fromDom(r.targetNode),c=gr(ji(a)),s=n.mothership;df(a,s,vr),Ps(c,n.uiMothership),e.on("PostRender",function(){s_(e,n,t,o),i.set(e.getWin().innerWidth),GO.setMenubar(u,QC(e,t)),GO.setSidebar(u,t.sidebar),function(e,t){function n(){var t=c.get();t.left===u.innerWidth&&t.top===u.innerHeight||(c.set(Su(u.innerWidth,u.innerHeight)),zv(e))}function o(){var t=e.getDoc().documentElement,n=s.get();n.left===t.offsetWidth&&n.top===t.offsetHeight||(s.set(Su(t.offsetWidth,t.offsetHeight)),zv(e))}function r(t){return e.fire("ScrollContent",t)}var i=e.dom,u=e.getWin(),a=e.getDoc().documentElement,c=wn(Su(u.innerWidth,u.innerHeight)),s=wn(Su(a.offsetWidth,a.offsetHeight));i.bind(u,"resize",n),i.bind(u,"scroll",r);var l=mc(de.fromDom(e.getBody()),"load",o),f=t.uiMothership.element;e.on("hide",function(){ni(f,"display","none")}),e.on("show",function(){ai(f,"display")}),e.on("NodeChange",o),e.on("remove",function(){l.unbind(),i.unbind(u,"resize",n),i.unbind(u,"scroll",r),u=null})}(e,n)});var l,f,d,m,g=GO.getSocket(u).getOrDie("Could not find expected socket element");Y_&&(ei(g.element,{overflow:"scroll","-webkit-overflow-scrolling":"touch"}),f=function(){e.fire("ScrollContent")},d=null,m=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];b(d)&&(d=setTimeout(function(){d=null,f.apply(null,t)},20))},l=dc(g.element,"scroll",m),e.on("remove",l.unbind)),fv(e,n),e.addCommand("ToggleSidebar",function(t,n){GO.toggleSidebar(u,n),e.fire("ToggleSidebar")}),e.addQueryValueHandler("ToggleSidebar",function(){return GO.whichSidebar(u)});var p=ev(e);p!==ph.sliding&&p!==ph.floating||e.on("ResizeWindow ResizeEditor ResizeContent",function(){var t=e.getWin().innerWidth;t!==i.get()&&(GO.refreshToolbar(n.outerContainer),i.set(t))});var h={enable:function(){lv(n,!1)},disable:function(){lv(n,!0)},isDisabled:function(){return fd.isDisabled(u)}};return{iframeContainer:g.element.dom,editorContainer:u.element.dom,api:h}}}),K_=Object.freeze({__proto__:null,render:function(n,e,o,r,t){var i=e.mothership,u=e.uiMothership,a=e.outerContainer,c=wn(null),s=de.fromDom(t.targetNode),l=g_(n,s,e,r,c),f=n.getParam("toolbar_persist",!1,"boolean");function d(){var t;c.get()?l.show():(c.set(GO.getHeader(a).getOrDie()),Ps(t=av(n),i),Ps(t,u),s_(n,e,o,r),GO.setMenubar(a,QC(n,o)),l.show(),function(c,s,l,t){function n(t){var n=p_(s,l.isPositionedAtTop()),e=n.pos,o=n.bounds,r=f.get(),i=r.pos,u=r.bounds,a=o.height!==u.height||o.width!==u.width;f.set({pos:e,bounds:o}),a&&zv(c,t),l.isVisible()&&(i!==e?l.update(!0):a&&(l.updateMode(),l.repositionPopups()))}var f=wn(p_(s,l.isPositionedAtTop()));t||(c.on("activate",l.show),c.on("deactivate",l.hide)),c.on("SkinLoaded ResizeWindow",function(){return l.update(!0)}),c.on("NodeChange keydown",function(t){ap.requestAnimationFrame(function(){return n(t)})}),c.on("ScrollWindow",function(){return l.updateMode()});var e=lc();e.set(mc(de.fromDom(c.getBody()),"load",n)),c.on("remove",function(){e.clear()})}(n,s,l,f),n.nodeChanged())}function m(){return ap.setEditorTimeout(n,d,0)}qO(n),n.on("show",d),n.on("hide",l.hide),f||(n.on("focus",m),n.on("blur",l.hide)),n.on("init",function(){(n.hasFocus()||f)&&m()}),fv(n,e);var g={show:function(){l.show()},hide:function(){l.hide()},enable:function(){lv(e,!1)},disable:function(){lv(e,!0)},isDisabled:function(){return fd.isDisabled(a)}};return{editorContainer:a.element.dom,api:g}}}),J_="contexttoolbar-hide",$_=function(t,n){var e,o,r,i,u=t.label.fold(function(){return{}},function(t){return{"aria-label":t}}),a=Vm(Ey.sketch({inputClasses:["tox-toolbar-textfield","tox-toolbar-nav-js"],data:t.initValue(),inputAttributes:u,selectOnFocus:!0,inputBehaviours:Za([Bg.config({mode:"special",onEnter:function(t){return c.findPrimary(t).map(function(t){return Le(t),!0})},onLeft:function(t,n){return n.cut(),ft.none()},onRight:function(t,n){return n.cut(),ft.none()}})])})),c=(e=a,o=t.commands,r=n,i=A(o,function(t){return Vm(("contextformtogglebutton"===t.type?function(t,n,e){var o=n.original;o.primary;var r=s(o,["primary"]),i=Xt(kp(st(st({},r),{type:"togglebutton",onAction:ct})));return L_(i,e.backstage.shared.providers,[h_(t,n)])}:function(t,n,e){var o=n.original;o.primary;var r=s(o,["primary"]),i=Xt(Sp(st(st({},r),{type:"button",onAction:ct})));return N_(i,e.backstage.shared.providers,[h_(t,n)])})(e,t,{backstage:{shared:{providers:r}}}))}),{asSpecs:function(){return A(i,function(t){return t.asSpec()})},findPrimary:function(e){return q(o,function(t,n){return t.primary?ft.from(i[n]).bind(function(t){return t.getOpt(e)}).filter(k(fd.isDisabled)):ft.none()})}});return[{title:ft.none(),items:[a.asSpec()]},{title:ft.none(),items:c.asSpecs()}]},Q_={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"],inset:["tox-pop--inset"]},Z_={maxHeightFunction:Fc(),maxWidthFunction:TO()},tT=Ar("forward-slide"),nT=Ar("backward-slide"),eT=Ar("change-slide-event"),oT="tox-pop--resizing",rT="tox-pop--transition",iT={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},uT=(E_=["Infinity",(__="[0-9]+")+"\\."+aT(__)+aT(T_="[eE][+-]?[0-9]+"),"\\."+__+aT(T_),__+aT(T_)].join("|"),new RegExp("^([+-]?(?:"+E_+"))(.*)$"));function aT(t){return"(?:"+t+")?"}function cT(u,a){function n(){var t=a.getOptions(u),r=a.getCurrent(u).map(a.hash),i=fc();return A(t,function(o){return{type:"togglemenuitem",text:a.display(o),onSetup:function(n){function t(t){t&&(i.on(function(t){return t.setActive(!1)}),i.set(n)),n.setActive(t)}t(Kr(r,a.hash(o)));var e=a.watcher(u,o,t);return function(){i.clear(),e()}},onAction:function(){return a.setCurrent(u,o)}}})}u.ui.registry.addMenuButton(a.name,{tooltip:a.text,icon:a.icon,fetch:function(t){return t(n())},onSetup:a.onToolbarSetup}),u.ui.registry.addNestedMenuItem(a.name,{type:"nestedmenuitem",text:a.text,getSubmenuItems:n,onSetup:a.onMenuSetup})}function sT(t,n){return function(){t.execCommand("mceToggleFormat",!1,n)}}function lT(t){var n,e;!function(e){Ow.each([{name:"bold",text:"Bold",icon:"bold"},{name:"italic",text:"Italic",icon:"italic"},{name:"underline",text:"Underline",icon:"underline"},{name:"strikethrough",text:"Strikethrough",icon:"strike-through"},{name:"subscript",text:"Subscript",icon:"subscript"},{name:"superscript",text:"Superscript",icon:"superscript"}],function(t,n){e.ui.registry.addToggleButton(t.name,{tooltip:t.text,icon:t.icon,onSetup:e1(e,t.name),onAction:sT(e,t.name)})});for(var t=1;t<=6;t++){var n="h"+t;e.ui.registry.addToggleButton(n,{text:n.toUpperCase(),tooltip:"Heading "+t,onSetup:e1(e,n),onAction:sT(e,n)})}}(t),n=t,Ow.each([{name:"cut",text:"Cut",action:"Cut",icon:"cut"},{name:"copy",text:"Copy",action:"Copy",icon:"copy"},{name:"paste",text:"Paste",action:"Paste",icon:"paste"},{name:"help",text:"Help",action:"mceHelp",icon:"help"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all"},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document"},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting"},{name:"remove",text:"Remove",action:"Delete",icon:"remove"}],function(t){n.ui.registry.addButton(t.name,{tooltip:t.text,icon:t.icon,onAction:i1(n,t.action)})}),e=t,Ow.each([{name:"blockquote",text:"Blockquote",action:"mceBlockQuote",icon:"quote"}],function(t){e.ui.registry.addToggleButton(t.name,{tooltip:t.text,icon:t.icon,onAction:i1(e,t.action),onSetup:e1(e,t.name)})})}function fT(n,e){return o1(n,"Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(t){t.setDisabled(n.mode.isReadOnly()||!n.undoManager[e]())})}function dT(t){var n;t.ui.registry.addButton("visualaid",{tooltip:"Visual aids",text:"Visual aids",onAction:i1(t,"mceToggleVisualAid")}),t.ui.registry.addToggleMenuItem("visualaid",{text:"Visual aids",onSetup:o1(n=t,"VisualAid",function(t){t.setActive(n.hasVisual)}),onAction:i1(t,"mceToggleVisualAid")})}function mT(t,n){var e,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_,T=t;dt([{name:"alignleft",text:"Align left",cmd:"JustifyLeft",icon:"align-left"},{name:"aligncenter",text:"Align center",cmd:"JustifyCenter",icon:"align-center"},{name:"alignright",text:"Align right",cmd:"JustifyRight",icon:"align-right"},{name:"alignjustify",text:"Justify",cmd:"JustifyFull",icon:"align-justify"}],function(t){T.ui.registry.addToggleButton(t.name,{tooltip:t.text,icon:t.icon,onAction:i1(T,t.cmd),onSetup:e1(T,t.name)})}),T.ui.registry.addButton("alignnone",{tooltip:"No alignment",icon:"align-none",onAction:i1(T,"JustifyNone")}),lT(O=t),_=O,Ow.each([{name:"bold",text:"Bold",action:"Bold",icon:"bold",shortcut:"Meta+B"},{name:"italic",text:"Italic",action:"Italic",icon:"italic",shortcut:"Meta+I"},{name:"underline",text:"Underline",action:"Underline",icon:"underline",shortcut:"Meta+U"},{name:"strikethrough",text:"Strikethrough",action:"Strikethrough",icon:"strike-through",shortcut:""},{name:"subscript",text:"Subscript",action:"Subscript",icon:"subscript",shortcut:""},{name:"superscript",text:"Superscript",action:"Superscript",icon:"superscript",shortcut:""},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting",shortcut:""},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document",shortcut:""},{name:"cut",text:"Cut",action:"Cut",icon:"cut",shortcut:"Meta+X"},{name:"copy",text:"Copy",action:"Copy",icon:"copy",shortcut:"Meta+C"},{name:"paste",text:"Paste",action:"Paste",icon:"paste",shortcut:"Meta+V"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all",shortcut:"Meta+A"}],function(t){_.ui.registry.addMenuItem(t.name,{text:t.text,icon:t.icon,shortcut:t.shortcut,onAction:i1(_,t.action)})}),_.ui.registry.addMenuItem("codeformat",{text:"Code",icon:"sourcecode",onAction:sT(_,"code")}),C=u1(0,d=l=n,JO(f=s=t)),f.ui.registry.addNestedMenuItem("align",{text:d.shared.providers.translate("Align"),getSubmenuItems:function(){return C.items.validateItems(C.getStyleItems())}}),p=u1(0,g=l,QO(m=s)),m.ui.registry.addNestedMenuItem("fontformats",{text:g.shared.providers.translate("Fonts"),getSubmenuItems:function(){return p.items.validateItems(p.getStyleItems())}}),h=s,b=st({type:"advanced"},(v=l).styleselect),y=u1(0,v,e_(h,b)),h.ui.registry.addNestedMenuItem("formats",{text:"Formats",getSubmenuItems:function(){return y.items.validateItems(y.getStyleItems())}}),w=u1(0,l,n_(x=s)),x.ui.registry.addNestedMenuItem("blockformats",{text:"Blocks",getSubmenuItems:function(){return w.items.validateItems(w.getStyleItems())}}),k=u1(0,l,ZO(S=s)),S.ui.registry.addNestedMenuItem("fontsizes",{text:"Font sizes",getSubmenuItems:function(){return k.items.validateItems(k.getStyleItems())}}),(a=u=t).ui.registry.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onSetup:fT(a,"hasUndo"),onAction:i1(a,"undo")}),a.ui.registry.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onSetup:fT(a,"hasRedo"),onAction:i1(a,"redo")}),(c=u).ui.registry.addButton("undo",{tooltip:"Undo",icon:"undo",disabled:!0,onSetup:fT(c,"hasUndo"),onAction:i1(c,"undo")}),c.ui.registry.addButton("redo",{tooltip:"Redo",icon:"redo",disabled:!0,onSetup:fT(c,"hasRedo"),onAction:i1(c,"redo")}),function(t){var i;(i=t).addCommand("mceApplyTextcolor",function(t,n){var e,o=t,r=n;(e=i).undoManager.transact(function(){e.focus(),e.formatter.apply(o,{value:r}),e.nodeChanged()})}),i.addCommand("mceRemoveTextcolor",function(t){var n,e=t;(n=i).undoManager.transact(function(){n.focus(),n.formatter.remove(e,{value:null},null,!0),n.nodeChanged()})});var n=wn(null),e=wn(null);xb(t,"forecolor","forecolor","Text color",n),xb(t,"backcolor","hilitecolor","Background color",e),wb(t,"forecolor","forecolor","Text color"),wb(t,"backcolor","hilitecolor","Background color")}(t),dT(t),(r=t).ui.registry.addButton("outdent",{tooltip:"Decrease indent",icon:"outdent",onSetup:o1(i=r,"NodeChange",function(t){t.setDisabled(!i.queryCommandState("outdent"))}),onAction:i1(r,"outdent")}),r.ui.registry.addButton("indent",{tooltip:"Increase indent",icon:"indent",onAction:i1(r,"indent")}),cT(e=t,QT),o=e,ft.from(o.getParam("content_langs",void 0,"array")).map(function(t){return{name:"language",text:"Language",icon:"language",getOptions:tt(t),hash:function(t){return E(t.customCode)?t.code:t.code+"/"+t.customCode},display:function(t){return t.title},watcher:function(t,n,e){return t.formatter.formatChanged("lang",e,!1,{value:n.code,customValue:n.customCode}).unbind},getCurrent:function(t){return Re(de.fromDom(t.selection.getNode()),function(t){return ft.some(t).filter(Ri).bind(function(n){return Tr(n,"lang").map(function(t){return{code:t,customCode:Tr(n,"data-mce-lang").getOrUndefined(),title:""}})})})},setCurrent:function(t,n){return t.execCommand("Lang",!1,n)},onToolbarSetup:function(t){var n=lc();return t.setActive(o.formatter.match("lang",{},void 0,!0)),n.set(o.formatter.formatChanged("lang",t.setActive,!0)),n.clear}}}).each(function(t){return cT(e,t)})}function gT(t,n){return{type:"makeshift",x:t,y:n}}function pT(t){return"longpress"===t.type||0===t.type.indexOf("touch")}function hT(t,n){return"contextmenu"===n.type||"longpress"===n.type?t.inline?function(t){if(pT(t)){var n=t.touches[0];return gT(n.pageX,n.pageY)}return gT(t.pageX,t.pageY)}(n):(e=t.getContentAreaContainer(),o=function(t){if(pT(t)){var n=t.touches[0];return gT(n.clientX,n.clientY)}return gT(t.clientX,t.clientY)}(n),r=Zh.DOM.getPos(e),i=r.x,u=r.y,gT(o.x+i,o.y+u)):ZT(t);var e,o,r,i,u}function vT(t,n,e){switch(e){case"node":return{type:"node",node:ft.some(de.fromDom((o=t).selection.getNode())),root:de.fromDom(o.getBody())};case"point":return hT(t,n);case"selection":return ZT(t)}var o}function bT(f,d,m,g,p,h){function t(){var n,e,t,o,r,i,u,a,c,s,l=m();t=l,o=g,r=p,u=!(y||v||b&&x),c=vT(n=f,e=d,a=i=h),s=st({bubble:yc(0,"point"===a?12:0,nE),layouts:tE,overrides:{maxWidthFunction:TO(),maxHeightFunction:Fc()}},c),fS(t,yh.CLOSE_ON_EXECUTE,o,!0).map(function(t){e.preventDefault(),op.showMenuWithinBounds(r,{anchor:s},{menu:{markers:Kp("normal"),highlightImmediately:u},data:t,type:"horizontal"},function(){return ft.some(y_(n,o.shared,"node"===i?"node":"selection"))}),n.fire(J_)})}var n,e=Be(),v=e.os.isiOS(),b=e.os.isOSX(),y=e.os.isAndroid(),x=e.deviceType.isTouch();(b||v)&&"node"!==h?(n=function(){(function(t){function n(){ap.setEditorTimeout(t,function(){t.selection.setRng(e)},10),i()}var e=t.selection.getRng();function o(t){t.preventDefault(),t.stopImmediatePropagation()}function r(){return i()}t.once("touchend",n),t.on("mousedown",o,!0),t.once("longpresscancel",r);var i=function(){t.off("touchend",n),t.off("longpresscancel",r),t.off("mousedown",o)}})(f),t()},function(t,n){var e=t.selection;if(!(e.isCollapsed()||n.touches.length<1)){var o=n.touches[0],r=e.getRng();return vs(t.getWin(),ls.domRange(r)).exists(function(t){return t.left<=o.clientX&&t.right>=o.clientX&&t.top<=o.clientY&&t.bottom>=o.clientY})}}(f,d)?n():(f.once("selectionchange",n),f.once("touchend",function(){return f.off("selectionchange",n)}))):t()}function yT(t){return"string"==typeof t?t.split(/[ ,]/):t}function xT(t){return t.getParam("contextmenu_never_use_native",!1,"boolean")}function wT(t){return y(t)?"|"===t:"separator"===t.type}function ST(t,n){if(0===n.length)return t;var e=Y(t).filter(function(t){return!wT(t)}).fold(function(){return[]},function(t){return[eE]});return t.concat(e).concat(n).concat([eE])}function kT(t,n){return"longpress"!==n.type&&(2!==n.button||n.target===t.getBody()&&""===n.pointerType)}function CT(t,n){return kT(t,n)?t.selection.getStart(!0):n.target}function OT(s,t,n){function e(t){return op.hide(i)}function o(c){var t;xT(s)&&c.preventDefault(),c.ctrlKey&&!xT(s)||!1===s.getParam("contextmenu")||(t=function(t,n){var e=t.getParam("contextmenu_avoid_overlap","","string"),o=kT(t,n)?"selection":"point";if(On(e)){var r=CT(t,n);return jb(de.fromDom(r),e)?"node":o}return o}(s,c),(r()?bT:function(t,n,e,o,r,i){var u=e(),a=vT(t,n,i);fS(u,yh.CLOSE_ON_EXECUTE,o,!1).map(function(t){n.preventDefault(),op.showMenuAt(r,{anchor:a},{menu:{markers:Kp("normal")},data:t})})})(s,c,function(){var t,n,e,o=CT(s,c),r=s.ui.registry.getAll(),i=(e=(n=s).ui.registry.getAll().contextMenus,ft.from(n.getParam("contextmenu")).map(yT).getOrThunk(function(){return F(yT("link linkchecker image imagetools table spellchecker configurepermanentpen"),function(t){return Kn(e,t)})})),u=r.contextMenus,a=o;return 0<(t=R(i,function(o,t){return kt(u,t.toLowerCase()).map(function(t){var n=t.update(a);if(y(n))return ST(o,n.split(" "));if(0<n.length){var e=A(n,oE);return ST(o,e)}return o}).getOrThunk(function(){return o.concat([t])})},[])).length&&wT(t[t.length-1])&&t.pop(),t},n,i,t))}var r=Be().deviceType.isTouch,i=bu(op.sketch({dom:{tag:"div"},lazySink:t,onEscape:function(){return s.focus()},onShow:function(){return n.setContextMenuState(!0)},onHide:function(){return n.setContextMenuState(!1)},fireDismissalEventInstead:{},inlineBehaviours:Za([lm("dismissContextMenu",[Xe(Lo(),function(t,n){pf.close(t),s.focus()})])])}));s.on("init",function(){var t="ResizeEditor ScrollContent ScrollWindow longpresscancel"+(r()?"":" ResizeWindow");s.on(t,e),s.on("longpress contextmenu",o)})}function _T(n){return function(t){return t.translate(-n.left,-n.top)}}function TT(n){return function(t){return t.translate(n.left,n.top)}}function ET(e){return function(t,n){return R(e,function(t,n){return n(t)},Su(t,n))}}function DT(t,n,e){return t.fold(ET([TT(e),_T(n)]),ET([_T(n)]),ET([]))}function BT(t,n,e){return t.fold(ET([TT(e)]),ET([]),ET([TT(n)]))}function AT(t,n,e){return t.fold(ET([]),ET([_T(e)]),ET([TT(n),_T(e)]))}function MT(t,n,e){var o=t.fold(function(t,n){return{position:ft.some("absolute"),left:ft.some(t+"px"),top:ft.some(n+"px")}},function(t,n){return{position:ft.some("absolute"),left:ft.some(t-e.left+"px"),top:ft.some(n-e.top+"px")}},function(t,n){return{position:ft.some("fixed"),left:ft.some(t+"px"),top:ft.some(n+"px")}});return st({right:ft.none(),bottom:ft.none()},o)}function FT(t,i,u,a){function n(o,r){return function(t,n){var e=o(i,u,a);return r(t.getOr(e.left),n.getOr(e.top))}}return t.fold(n(AT,iE),n(BT,uE),n(DT,aE))}function IT(t,n){var e=_r(t,n);return E(e)?NaN:parseInt(e,10)}function RT(t,n,e,o,r,i){var u,a,c,s,l,f,d=(u=e,a=o,l=IT(s=t.element,(c=n).leftAttr),f=IT(s,c.topAttr),(isNaN(l)||isNaN(f)?ft.none():ft.some(Su(l,f))).fold(function(){return u},function(t){return aE(t.left+a.left,t.top+a.top)})),m=(n.mustSnap?cE:sE)(t,n,d,r,i),g=DT(d,r,i),p=n,h=g,v=t.element;return Or(v,p.leftAttr,h.left+"px"),Or(v,p.topAttr,h.top+"px"),m.fold(function(){return{coord:aE(g.left,g.top),extra:ft.none()}},function(t){return{coord:t.output,extra:t.extra}})}function VT(t,c,s,l){return q(t,function(t){var n,e,o=t.sensor,r=t.range.left,i=t.range.top,u=BT(c,n=s,e=l),a=BT(o,n,e);return Math.abs(u.left-a.left)<=r&&Math.abs(u.top-a.top)<=i?ft.some({output:FT(t.output,c,s,l),extra:t.extra}):ft.none()})}function PT(t,n){var e;t.getSystem().addToGui(n),ar((e=n).element).filter(Ri).each(function(n){ii(n,"z-index").each(function(t){Or(n,fE,t)}),ni(n,"z-index",ri(e.element,"z-index"))})}function HT(t){ar(t.element).filter(Ri).each(function(n){Tr(n,fE).fold(function(){return ai(n,"z-index")},function(t){return ni(n,"z-index",t)}),Dr(n,fE)}),t.getSystem().removeFromGui(t)}function zT(t,n,e){return t.getSystem().build(sy.sketch({dom:{styles:{left:"0px",top:"0px",width:"100%",height:"100%",position:"fixed","z-index":"1000000000000000"},classes:[n]},events:e}))}function NT(t,n){return{bounds:t.getBounds(),height:bi(n.element),width:Si(n.element)}}function LT(B,A,t,n,e){var o=t.update(n,e),M=t.getStartData().getOrThunk(function(){return NT(A,B)});o.each(function(t){var n,e,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_=B,T=M,E=t,D=(n=A).getTarget(_.element);n.repositionTarget&&(e=Oi(or(_.element)),o=tC(D),S=ii(w=D,"left"),k=ii(w,"top"),C=ii(w,"position"),O=function(t,n,e){return("fixed"===e?aE:iE)(parseInt(t,10),parseInt(n,10))},r=(S.isSome()&&k.isSome()&&C.isSome()?ft.some(O(S.getOrDie(),k.getOrDie(),C.getOrDie())):ft.none()).getOrThunk(function(){var t=xi(w);return uE(t.left,t.top)}),i=_,u=n.snaps,a=r,c=e,s=o,l=E,f=T,m=u.fold(function(){var e,o,t=DT((e=l.left,o=l.top,a.fold(function(t,n){return iE(t+e,n+o)},function(t,n){return uE(t+e,n+o)},function(t,n){return aE(t+e,n+o)})),c,s);return aE(t.left,t.top)},function(n){var t=RT(i,n,a,l,c,s);return t.extra.each(function(t){n.onSensor(i,t)}),t.coord}),g=c,p=s,h=(d=f).bounds,v=BT(m,g,p),b=oa(v.left,h.x,h.x+h.width-d.width),y=oa(v.top,h.y,h.y+h.height-d.height),x=uE(b,y),oi(D,MT(m.fold(function(){var t=AT(x,g,p);return iE(t.left,t.top)},tt(x),function(){var t=DT(x,g,p);return aE(t.left,t.top)}),0,o))),n.onDrag(_,D,E)})}function jT(o,t,n,e){t.each(HT),n.snaps.each(function(t){var n,e;n=t,Dr(e=o.element,n.leftAttr),Dr(e,n.topAttr)});var r=n.getTarget(o.element);e.reset(),n.onDrop(o,r)}function WT(t){return function(n,e){function o(t){e.setStartData(NT(n,t))}return Jo(H([Xe(Po(),function(t){e.getStartData().each(function(){return o(t)})})],t(n,e,o)))}}function UT(a,c,s){return[Xe(uo(),function(n,t){var e,o,r,i,u;0===t.event.raw.button&&(t.stop(),r={drop:e=function(){return jT(n,ft.some(i),a,c)},delayDrop:(o=Wb(e,200)).schedule,forceDrop:e,move:function(t){o.cancel(),LT(n,a,c,gE,t)}},i=zT(n,a.blockerClass,(u=r,Jo([Xe(uo(),u.forceDrop),Xe(so(),u.drop),Xe(ao(),function(t,n){u.move(n.event)}),Xe(co(),u.delayDrop)]))),s(n),PT(n,i))})]}function GT(a,c,s){function l(t){jT(t,f.get(),a,c),f.clear()}var f=fc();return[Xe(eo(),function(n,t){function e(){return l(n)}t.stop();var o,r,i,u=zT(n,a.blockerClass,(r=o=e,i=function(t){LT(n,a,c,hE,t)},Jo([Xe(eo(),r),Xe(ro(),o),Xe(io(),o),Xe(oo(),function(t,n){i(n.event)})])));f.set(u),s(n),PT(n,u)}),Xe(oo(),function(t,n){n.stop(),LT(t,a,c,hE,n.event)}),Xe(ro(),function(t,n){n.stop(),l(t)}),Xe(io(),l)]}function XT(t,r,i,u,n,e){return t.fold(function(){return yE.snap({sensor:uE(i-20,u-20),range:Su(n,e),output:uE(ft.some(i),ft.some(u)),extra:{td:r}})},function(t){var n=i-20,e=u-20,o=t.element.dom.getBoundingClientRect();return yE.snap({sensor:uE(n,e),range:Su(40,40),output:uE(ft.some(i-o.width/2),ft.some(u-o.height/2)),extra:{td:r}})})}function YT(t,i,u){return{getSnapPoints:t,leftAttr:"data-drag-left",topAttr:"data-drag-top",onSensor:function(t,n){var e=n.td,o=i.get(),r=e;o.exists(function(t){return Bn(t,r)})||(i.set(e),u(e))},mustSnap:!0}}function qT(t){return Vm(cp.sketch({dom:{tag:"div",classes:["tox-selector"]},buttonBehaviours:Za([yE.config({mode:"mouseOrTouch",blockerClass:"blocker",snaps:t}),A0.config({})]),eventOrder:{mousedown:["dragging","alloy.base.behaviour"],touchstart:["dragging","alloy.base.behaviour"]}}))}function KT(a,e){function n(t){var n=Mi(t);return XT(g.getOpt(e),t,n.x,n.y,n.width,n.height)}function o(t){var n=Mi(t);return XT(p.getOpt(e),t,n.right,n.bottom,n.width,n.height)}function r(t,i,n,u){var e=n(i);yE.snapTo(t,e),function(t){var n=i.dom.getBoundingClientRect();ai(t.element,"display");var e=ur(de.fromDom(a.getBody())).dom.innerHeight,o=n[u]<0,r=n[u]>e;(o||r)&&ni(t.element,"display","none")}(t)}function i(t){return r(h,t,n,"top")}function u(t){return r(v,t,o,"bottom")}var c=wn([]),s=wn([]),t=wn(!1),l=fc(),f=fc(),d=YT(function(){return A(c.get(),n)},l,function(n){f.get().each(function(t){a.fire("TableSelectorChange",{start:n,finish:t})})}),m=YT(function(){return A(s.get(),o)},f,function(n){l.get().each(function(t){a.fire("TableSelectorChange",{start:t,finish:n})})}),g=qT(d),p=qT(m),h=bu(g.asSpec()),v=bu(p.asSpec());Be().deviceType.isTouch()&&(a.on("TableSelectionChange",function(n){t.get()||(Fs(e,h),Fs(e,v),t.set(!0)),l.set(n.start),f.set(n.finish),n.otherCells.each(function(t){c.set(t.upOrLeftCells),s.set(t.downOrRightCells),i(n.start),u(n.finish)})}),a.on("ResizeEditor ResizeWindow ScrollContent",function(){l.get().each(i),f.get().each(u)}),a.on("TableSelectionClear",function(){t.get()&&(Rs(h),Rs(v),t.set(!1)),l.clear(),f.clear()}))}var JT,$T,QT={name:"lineheight",text:"Line height",icon:"line-height",getOptions:function(t){return t.getParam("lineheight_formats","1 1.1 1.2 1.3 1.4 1.5 2","string").split(" ")},hash:function(t){return r=["fixed","relative","empty"],ft.from(uT.exec(t)).bind(function(t){var n=Number(t[1]),e=t[2],o=e;return T(r,function(t){return T(iT[t],function(t){return o===t})})?ft.some({value:n,unit:e}):ft.none()}).map(function(t){return t.value+t.unit}).getOr(t);var r},display:h,watcher:function(t,n,e){return t.formatter.formatChanged("lineheight",e,!1,{value:n}).unbind},getCurrent:function(t){return ft.from(t.queryCommandValue("LineHeight"))},setCurrent:function(t,n){return t.execCommand("LineHeight",!1,n)}},ZT=function(t){return{type:"selection",root:de.fromDom(t.selection.getNode())}},tE={onLtr:function(){return[Ka,Ua,Ga,Xa,Ya,qa,ip,up,Dm,Tm,Em,_m]},onRtl:function(){return[Ka,Ga,Ua,Ya,Xa,qa,ip,up,Em,_m,Dm,Tm]}},nE={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},eE={type:"separator"},oE=function(n){function t(t){return{text:t.text,icon:t.icon,disabled:t.disabled,shortcut:t.shortcut}}var e;if(y(n))return n;switch(n.type){case"separator":return eE;case"submenu":return st(st({type:"nestedmenuitem"},t(n)),{getSubmenuItems:function(){var t=n.getSubmenuItems();return y(t)?t:A(t,oE)}});default:return st(st({type:"menuitem"},t(n)),{onAction:(e=n.onAction,function(){return e()})})}},rE=Vn([{offset:["x","y"]},{absolute:["x","y"]},{fixed:["x","y"]}]),iE=rE.offset,uE=rE.absolute,aE=rE.fixed,cE=function(t,n,l,f,d){var e=n.getSnapPoints(t);return VT(e,l,f,d).orThunk(function(){return R(e,function(n,e){var t,o,r,i,u,a,c,s=(t=e.sensor,e.range.left,e.range.top,i=BT(l,o=f,r=d),u=BT(t,o,r),a=Math.abs(i.left-u.left),c=Math.abs(i.top-u.top),Su(a,c));return n.deltas.fold(function(){return{deltas:ft.some(s),snap:ft.some(e)}},function(t){return(s.left+s.top)/2<=(t.left+t.top)/2?{deltas:ft.some(s),snap:ft.some(e)}:n})},{deltas:ft.none(),snap:ft.none()}).snap.map(function(t){return{output:FT(t.output,l,f,d),extra:t.extra}})})},sE=function(t,n,e,o,r){return VT(n.getSnapPoints(t),e,o,r)},lE=Object.freeze({__proto__:null,snapTo:function(t,n,e,o){var r,i,u,a=n.getTarget(t.element);n.repositionTarget&&(r=Oi(or(t.element)),i=tC(a),oi(a,MT({coord:FT((u=o).output,u.output,r,i),extra:u.extra}.coord,0,i)))}}),fE="data-initial-z-index",dE=fn("snaps",[Jt("getSnapPoints"),Ku("onSensor"),Jt("leftAttr"),Jt("topAttr"),dn("lazyViewport",Fi),dn("mustSnap",!1)]),mE=[dn("useFixed",O),Jt("blockerClass"),dn("getTarget",h),dn("onDrag",ct),dn("repositionTarget",!0),dn("onDrop",ct),bn("getBounds",Fi),dE],gE=Object.freeze({__proto__:null,getData:function(t){return ft.from(Su(t.x,t.y))},getDelta:function(t,n){return Su(n.left-t.left,n.top-t.top)}}),pE=H(H([],mE),[Zu("dragger",{handlers:WT(UT)})]),hE=Object.freeze({__proto__:null,getData:function(t){var n,e=t.raw.touches;return 1===e.length?(n=e[0],ft.some(Su(n.clientX,n.clientY))):ft.none()},getDelta:function(t,n){return Su(n.left-t.left,n.top-t.top)}}),vE=H(H([],mE),[Zu("dragger",{handlers:WT(GT)})]),bE=H(H([],mE),[Zu("dragger",{handlers:WT(function(t,n,e){return H(H([],UT(t,n,e)),GT(t,n,e))})})]),yE=wa({branchKey:"mode",branches:Object.freeze({__proto__:null,mouse:pE,touch:vE,mouseOrTouch:bE}),name:"dragging",active:{events:function(t,n){return t.dragger.handlers(t,n)}},extra:{snap:function(t){return{sensor:t.sensor,range:t.range,output:t.output,extra:ft.from(t.extra)}}},state:Object.freeze({__proto__:null,init:function(){var i=ft.none(),n=ft.none(),t=tt({});return au({readState:t,reset:function(){i=ft.none(),n=ft.none()},update:function(r,t){return r.getData(t).bind(function(t){return n=r,e=t,o=i.map(function(t){return n.getDelta(t,e)}),i=ft.some(e),o;var n,e,o})},getStartData:function(){return n},setStartData:function(t){n=ft.some(t)}})}}),apis:lE});function xE(t,n,e){var o,r,i,u,a,c,s=de.fromDom(t.getContainer());bt((o=t,r=n,i=e,u=vi(s),a=wi(s),(c={}).height=d_(u+r.top,sh(o),fh(o)),i===JT.Both&&(c.width=d_(a+r.left,ch(o),lh(o))),c),function(t,n){return ni(s,n,f_(t)),0}),t.fire("ResizeEditor")}function wE(t,n,e,o){return xE(t,Su(20*e,20*o),n),ft.some(!0)}function SE(t,n){var e,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v;return{dom:{tag:"div",classes:["tox-statusbar"]},components:(v=[],t.getParam("elementpath",!0,"boolean")&&v.push((g=t,h=n,(p={}).delimiter||(p.delimiter="\xbb"),{dom:{tag:"div",classes:["tox-statusbar__path"],attributes:{role:"navigation"}},behaviours:Za([Bg.config({mode:"flow",selector:"div[role=button]"}),fd.config({disabled:h.isDisabled}),dv(),gy.config({}),Mg.config({}),lm("elementPathEvents",[$o(function(r,t){g.shortcuts.add("alt+F11","focus statusbar elementpath",function(){return Bg.focusIn(r)}),g.on("NodeChange",function(t){var n,o,e=function(t){for(var n=[],e=t.length;0<e--;){var o=t[e];if(1===o.nodeType&&!function(t){if(1===t.nodeType){if("BR"===t.nodeName||t.getAttribute("data-mce-bogus"))return 1;if("bookmark"===t.getAttribute("data-mce-type"))return 1}}(o)){var r=g.fire("ResolveName",{name:o.nodeName.toLowerCase(),target:o});if(r.isDefaultPrevented()||n.push({name:r.name,element:o}),r.isPropagationStopped())break}}return n}(t.parents);0<e.length?Mg.set(r,(n=A(e||[],function(n,t){return cp.sketch({dom:{tag:"div",classes:["tox-statusbar__path-item"],attributes:{role:"button","data-index":t,"tab-index":-1,"aria-level":t+1},innerHtml:n.name},action:function(t){g.focus(),g.selection.select(n.element),g.nodeChanged()},buttonBehaviours:Za([qv(h.isDisabled),dv()])})}),o={dom:{tag:"div",classes:["tox-statusbar__path-divider"],attributes:{"aria-hidden":!0},innerHtml:" "+p.delimiter+" "}},R(n.slice(1),function(t,n){var e=t;return e.push(o),e.push(n),e},[n[0]]))):Mg.set(r,[])})})])]),components:[]})),t.hasPlugin("wordcount")&&v.push((f=t,d=n,cp.sketch({dom:{tag:"button",classes:["tox-statusbar__wordcount"]},components:[],buttonBehaviours:Za([qv(d.isDisabled),dv(),gy.config({}),Mg.config({}),_f.config({store:{mode:"memory",initialValue:{mode:"words",count:{words:0,characters:0}}}}),lm("wordcount-events",[tr(function(t){var n=_f.getValue(t),e="words"===n.mode?"characters":"words";_f.setValue(t,{mode:e,count:n.count}),b(t,n.count,e)}),$o(function(e){f.on("wordCountUpdate",function(t){var n=_f.getValue(e).mode;_f.setValue(e,{mode:n,count:t.wordCount}),b(e,t.wordCount,n)})})])]),eventOrder:((m={})[Eo()]=["disabling","alloy.base.behaviour","wordcount-events"],m)}))),t.getParam("branding",!0,"boolean")&&v.push({dom:{tag:"span",classes:["tox-statusbar__branding"],innerHtml:'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce&amp;utm_content=v5" rel="noopener" target="_blank" tabindex="-1" aria-label="'+(l=sp.translate(["Powered by {0}","Tiny"]))+'">'+l+"</a>"}}),e=0<v.length?[{dom:{tag:"div",classes:["tox-statusbar__text-container"]},components:v}]:[],i=n,a=!(u=r=t).hasPlugin("autoresize"),o=(s=!1===(c=u.getParam("resize",a))?JT.None:"both"===c?JT.Both:JT.Vertical)===JT.None?ft.none():ft.some(Wm("resize-handle",{tag:"div",classes:["tox-statusbar__resize-handle"],attributes:{title:i.translate("Resize")},behaviours:[yE.config({mode:"mouse",repositionTarget:!1,onDrag:function(t,n,e){return xE(r,e,s)},blockerClass:"tox-blocker"}),Bg.config({mode:"special",onLeft:function(){return wE(r,s,-1,0)},onRight:function(){return wE(r,s,1,0)},onUp:function(){return wE(r,s,0,-1)},onDown:function(){return wE(r,s,0,1)}}),gy.config({}),Rg.config({})]},i.icons)),e.concat(o.toArray()))};function b(t,n,e){return Mg.set(t,[pi(d.translate(["{0} "+e,n[e]]))])}}function kE(d){function m(){return i.bind(GO.getHeader)}function g(){return mt.value(y)}function p(){return i.bind(function(t){return GO.getThrobber(t)}).getOrDie("Could not find throbber element")}var t,n,e,o,r=d.inline,h=r?K_:q_,v=sv(d)?uO:J1,i=ft.none(),u=Be(),a=u.browser.isIE()?["tox-platform-ie"]:[],c=u.deviceType.isTouch()?["tox-platform-touch"]:[],s=rv(d),l=av(d),f=sp.isRtl()?{attributes:{dir:"rtl"}}:{},b={attributes:((t={})[Zc]=s?Sc.BottomToTop:Sc.TopToBottom,t)},y=bu((n=Bn(mu(),l)&&"grid"===ri(l,"display"),e={dom:st({tag:"div",classes:["tox","tox-silver-sink","tox-tinymce-aux"].concat(a).concat(c)},f),behaviours:Za([cf.config({useFixed:function(){return v.isDocked(m)}})])},o={dom:{styles:{width:document.body.clientWidth+"px"}},events:Jo([Xe(Ho(),function(){ni(K.element,"width",document.body.clientWidth+"px")})])},Jn(e,n?o:{}))),x=Vm({dom:{tag:"div",classes:["tox-anchorbar"]}}),w=Qk(y,d,function(){return i.bind(function(t){return x.getOpt(t)}).getOrDie("Could not find a anchor bar element")}),S=GO.parts.menubar({dom:{tag:"div",classes:["tox-menubar"]},backstage:w,onEscape:function(){d.focus()}}),k=ev(d),C=GO.parts.toolbar(st({dom:{tag:"div",classes:["tox-toolbar"]},getSink:g,providers:w.shared.providers,onEscape:function(){d.focus()},type:k,lazyToolbar:function(){return i.bind(function(t){return GO.getToolbar(t)}).getOrDie("Could not find more toolbar element")},lazyHeader:function(){return m().getOrDie("Could not find header element")}},b)),O=GO.parts["multiple-toolbar"]({dom:{tag:"div",classes:["tox-toolbar-overlord"]},providers:w.shared.providers,onEscape:function(){d.focus()},type:k}),_=GO.parts.socket({dom:{tag:"div",classes:["tox-edit-area"]}}),T=GO.parts.sidebar({dom:{tag:"div",classes:["tox-sidebar"]}}),E=GO.parts.throbber({dom:{tag:"div",classes:["tox-throbber"]},backstage:w}),D=d.getParam("statusbar",!0,"boolean")&&!r?ft.some(SE(d,w.shared.providers)):ft.none(),B={dom:{tag:"div",classes:["tox-sidebar-wrap"]},components:[_,T]},A=nv(d),M=mh(d),F=dh(d),I=GO.parts.header({dom:st({tag:"div",classes:["tox-editor-header"]},b),components:lt([F?[S]:[],A?[O]:M?[C]:[],uv(d)?[]:[x.asSpec()]]),sticky:sv(d),editor:d,sharedBackstage:w.shared}),R=lt([s?[]:[I],r?[]:[B],s?[I]:[]]),V=lt([[{dom:{tag:"div",classes:["tox-editor-container"]},components:R}],r?[]:D.toArray(),[E]]),P=cv(d),H=st(st({role:"application"},sp.isRtl()?{dir:"rtl"}:{}),P?{"aria-hidden":"true"}:{}),z=bu(GO.sketch({dom:{tag:"div",classes:["tox","tox-tinymce"].concat(r?["tox-tinymce-inline"]:[]).concat(s?["tox-tinymce--toolbar-bottom"]:[]).concat(c).concat(a),styles:st({visibility:"hidden"},P?{opacity:"0",border:"0"}:{}),attributes:H},components:V,behaviours:Za([dv(),fd.config({disableClass:"tox-tinymce--disabled"}),Bg.config({mode:"cyclic",selector:".tox-menubar, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow--open, .tox-sidebar__overflow--open, .tox-statusbar__path, .tox-statusbar__wordcount, .tox-statusbar__branding a, .tox-statusbar__resize-handle"})])})),i=ft.some(z);d.shortcuts.add("alt+F9","focus menubar",function(){GO.focusMenubar(z)}),d.shortcuts.add("alt+F10","focus toolbar",function(){GO.focusToolbar(z)}),d.addCommand("ToggleToolbarDrawer",function(){GO.toggleToolbarDrawer(z)}),d.addQueryStateHandler("ToggleToolbarDrawer",function(){return GO.isToolbarDrawerToggled(z)});var N,L,j,W,U,G,X,Y,q=Jb(z),K=Jb(y);function J(){var t,n,e,o,r,i,u=f_((o=uh(e=n=d),r=sh(e),i=fh(e),l_(o).map(function(t){return d_(t,r,i)}).getOr(uh(n)))),a=f_(m_(t=d).getOr(ah(t)));return d.inline||(ui("div","width",a)&&ni(z.element,"width",a),ui("div","height",u)?ni(z.element,"height",u):ni(z.element,"height","200px")),u}return N=d,L=q,j=K,W=dc(de.fromDom(document),"touchstart",Z),U=dc(de.fromDom(document),"touchmove",function(t){return $(Ro(),t)}),G=dc(de.fromDom(document),"touchend",function(t){return $(Vo(),t)}),X=dc(de.fromDom(document),"mousedown",Z),Y=dc(de.fromDom(document),"mouseup",function(t){0===t.raw.button&&Q(bf(),{target:t.target})}),N.on("PostRender",function(){N.on("click",tt),N.on("tap",tt),N.on("mouseup",nt),N.on("mousedown",et),N.on("ScrollWindow",ot),N.on("ResizeWindow",rt),N.on("ResizeEditor",it),N.on("AfterProgressState",ut),N.on("DismissPopups",at)}),N.on("remove",function(){N.off("click",tt),N.off("tap",tt),N.off("mouseup",nt),N.off("mousedown",et),N.off("ScrollWindow",ot),N.off("ResizeWindow",rt),N.off("ResizeEditor",it),N.off("AfterProgressState",ut),N.off("DismissPopups",at),X.unbind(),W.unbind(),U.unbind(),G.unbind(),Y.unbind()}),N.on("detach",function(){Hs(L),Hs(j),L.destroy(),j.destroy()}),{mothership:q,uiMothership:K,backstage:w,renderUI:function(){var o,r;v.setup(d,w.shared,m),mT(d,w),OT(d,g,w),r=(o=d).ui.registry.getAll().sidebars,dt(Xn(r),function(n){function e(){return Kr(ft.from(o.queryCommandValue("ToggleSidebar")),n)}var t=r[n];o.ui.registry.addToggleButton(n,{icon:t.icon,tooltip:t.tooltip,onAction:function(t){o.execCommand("ToggleSidebar",!1,n),t.setActive(e())},onSetup:function(t){function n(){return t.setActive(e())}return o.on("ToggleSidebar",n),function(){o.off("ToggleSidebar",n)}}})}),IC(d,p,w.shared),yt(d.getParam("toolbar_groups",{},"object"),function(t,n){d.ui.registry.addGroupToolbarButton(n,t)});var t,n=d.ui.registry.getAll(),e=n.buttons,i=n.menuItems,u=n.contextToolbars,a=n.sidebars,c=gh(d),s={menuItems:i,menus:(t=d.getParam("menu"))?yt(t,function(t){return st(st({},t),{items:t.items})}):{},menubar:d.getParam("menubar"),toolbar:c.getOrThunk(function(){return d.getParam("toolbar",!0)}),allowToolbarGroups:k===ph.floating,buttons:e,sidebar:a};O_(d,u,y,{backstage:w}),KT(d,y);var l=d.getElement(),f=J();return h.render(d,{mothership:q,uiMothership:K,outerContainer:z},s,w,{targetNode:l,height:f})},getUi:function(){return{channels:{broadcastAll:K.broadcast,broadcastOn:K.broadcastOn,register:ct}}}};function $(n,e){dt([L,j],function(t){t.broadcastEvent(n,e)})}function Q(n,e){dt([L,j],function(t){t.broadcastOn([n],e)})}function Z(t){return Q(hf(),{target:t.target})}function tt(t){return Q(hf(),{target:de.fromDom(t.target)})}function nt(t){0===t.button&&Q(bf(),{target:de.fromDom(t.target)})}function et(){dt(N.editorManager.get(),function(t){N!==t&&t.fire("DismissPopups",{relatedTarget:N})})}function ot(t){return $(Po(),Dc(t))}function rt(t){Q(vf(),{}),$(Ho(),Dc(t))}function it(){return Q(vf(),{})}function ut(t){t.state&&Q(hf(),{target:de.fromDom(N.getContainer())})}function at(t){Q(hf(),{target:de.fromDom(t.relatedTarget.getContainer())})}}function CE(n){return le("items","items",Tt(),zt(Wt(function(t){return Gt("Checking item of "+n,mB,t).fold(function(t){return mt.error(se(t))},function(t){return mt.value(t)})})))}function OE(t){return y(t.type)&&y(t.name)}function _E(t){return{internalDialog:Xt(Gt("dialog",wB,t)),dataValidator:(n=z(F(CB(t),OE),function(n){return ft.from(OB[n.type]).fold(function(){return[]},function(t){return[$t(n.name,t)]})}),te(n)),initialData:t.initialData};var n}function TE(t){var e=[],o={};return bt(t,function(t,n){t.fold(function(){e.push(n)},function(t){o[n]=t})}),0<e.length?mt.error(e):mt.value(o)}function EE(t,n){ni(t,"height",n+"px"),Be().browser.isIE()?ai(t,"flex-basis"):ni(t,"flex-basis",n+"px")}function DE(t,d,n){Mu(t,'[role="dialog"]').each(function(f){Fu(f,'[role="tablist"]').each(function(l){n.get().map(function(t){return ni(d,"height","0"),ni(d,"flex-basis","0"),Math.min(t,(e=d,o=l,r=ir(n=f).dom,i="fixed"===ri(Mu(n,".tox-dialog-wrap").getOr(n),"position")?Math.max(r.clientHeight,window.innerHeight):Math.max(r.offsetHeight,r.scrollHeight),u=vi(e),a=e.dom.offsetLeft>=o.dom.offsetLeft+wi(o)?Math.max(vi(o),u):u,c=parseInt(ri(n,"margin-top"),10)||0,s=parseInt(ri(n,"margin-bottom"),10)||0,i-(vi(n)+c+s-a)));var n,e,o,r,i,u,a,c,s}).each(function(t){EE(d,t)})})})}function BE(t){return Fu(t,'[role="tabpanel"]')}function AE(t,e){function o(t){var n=TE(_f.getValue(t)).getOr({}),e=i.get(),o=Jn(e,n);i.set(o)}function r(t){var n=i.get();_f.setValue(t,n)}var u,a,i=wn({}),c=wn(null),n=A(t.tabs,function(t){return{value:t.name,dom:{tag:"div",classes:["tox-dialog__body-nav-item"],innerHtml:e.shared.providers.translate(t.title)},view:function(){return[hw.sketch(function(n){return{dom:{tag:"div",classes:["tox-form"]},components:A(t.items,function(t){return Ek(n,t,e)}),formBehaviours:Za([Bg.config({mode:"acyclic",useTabstopAt:k(g0)}),lm("TabView.form.events",[$o(r),Qo(o)]),oc.config({channels:Me([{key:RB,value:{onReceive:o}},{key:VB,value:{onReceive:r}}])})])}})]}}}),s=(u=n,a=fc(),{extraEvents:[$o(function(t){var o=t.element;BE(o).each(function(e){var n;ni(e,"visibility","hidden"),t.getSystem().getByDom(e).toOptional().each(function(t){var o,r,i,n=(r=e,i=t,A(o=u,function(t,n){Mg.set(i,o[n].view());var e=r.dom.getBoundingClientRect();return Mg.set(i,[]),e.height}));ot(G(n,function(t,n){return n<t?-1:t<n?1:0})).fold(a.clear,a.set)}),DE(o,e,a),ai(e,"visibility"),n=t,ot(u).each(function(t){return IB.showTab(n,t.value)}),ap.requestAnimationFrame(function(){DE(o,e,a)})})}),Xe(Ho(),function(t){var n=t.element;BE(n).each(function(t){DE(n,t,a)})}),Xe(_y,function(t,n){var r=t.element;BE(r).each(function(n){var t=Ca(ji(n));ni(n,"visibility","hidden");var e=ii(n,"height").map(function(t){return parseInt(t,10)});ai(n,"height"),ai(n,"flex-basis");var o=n.dom.getBoundingClientRect().height;e.forall(function(t){return t<o})?(a.set(o),DE(r,n,a)):e.each(function(t){EE(n,t)}),ai(n,"visibility"),t.each(Sa)})})],selectFirst:!1});return IB.sketch({dom:{tag:"div",classes:["tox-dialog__body"]},onChangeTab:function(t,n,e){var o=_f.getValue(n);Ne(t,Oy,{name:o,oldName:c.get()}),c.set(o)},tabs:n,components:[IB.parts.tabbar({dom:{tag:"div",classes:["tox-dialog__body-nav"]},components:[BB.parts.tabs({})],markers:{tabClass:"tox-tab",selectedClass:"tox-dialog__body-nav-item--active"},tabbarBehaviours:Za([gy.config({})])}),IB.parts.tabview({dom:{tag:"div",classes:["tox-dialog__body-content"]}})],selectFirst:s.selectFirst,tabSectionBehaviours:Za([lm("tabpanel",s.extraEvents),Bg.config({mode:"acyclic"}),id.config({find:function(t){return ot(IB.getViewItems(t))}}),_f.config({store:{mode:"manual",getValue:function(t){return t.getSystem().broadcastOn([RB],{}),i.get()},setValue:function(t,n){i.set(n),t.getSystem().broadcastOn([VB],{})}}})])})}function ME(t,n,r,e){return{dom:{tag:"div",classes:["tox-dialog__content-js"],attributes:st(st({},n.map(function(t){return{id:t}}).getOr({})),e?{"aria-live":"polite"}:{})},components:[],behaviours:Za([Sw(0),R_.config({channel:zB,updateState:function(t,n){return ft.some({isTabPanel:function(){return"tabpanel"===n.body.type}})},renderComponents:function(t){return"tabpanel"!==t.body.type?[(e=t.body,o=r,{dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[(n=Vm(hw.sketch(function(n){return{dom:{tag:"div",classes:["tox-form"].concat(e.classes)},components:A(e.items,function(t){return Ek(n,t,o)})}}))).asSpec()]}],behaviours:Za([Bg.config({mode:"acyclic",useTabstopAt:k(g0)}),ww(n),Tw(n,{postprocess:function(t){return TE(t).fold(function(t){return console.error(t),{}},h)}})])})]:[AE(t.body,r)];var e,o,n},initialData:t})])}}function FE(t,n){return{dom:{tag:"div",styles:{display:"none"},classes:["tox-dialog__header"]},components:[t,n]}}function IE(t,n){return cD.parts.close(cp.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":n.translate("Close")}},action:t,buttonBehaviours:Za([gy.config({})])}))}function RE(){return cD.parts.title({dom:{tag:"div",classes:["tox-dialog__title"],innerHtml:"",styles:{display:"none"}}})}function VE(t,n){return cD.parts.body({dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[{dom:MC("<p>"+n.translate(t)+"</p>")}]}]})}function PE(t){return cD.parts.footer({dom:{tag:"div",classes:["tox-dialog__footer"]},components:t})}function HE(t,n){return[sy.sketch({dom:{tag:"div",classes:["tox-dialog__footer-start"]},components:t}),sy.sketch({dom:{tag:"div",classes:["tox-dialog__footer-end"]},components:n})]}function zE(n){var t,e="tox-dialog",o=e+"-wrap",r=o+"__backdrop",i=e+"__disable-scroll";return cD.sketch({lazySink:n.lazySink,onEscape:function(t){return n.onEscape(t),ft.some(!0)},useTabstopAt:function(t){return!g0(t)},dom:{tag:"div",classes:[e].concat(n.extraClasses),styles:st({position:"relative"},n.extraStyles)},components:H([n.header,n.body],n.footer.toArray()),parts:{blocker:{dom:MC('<div class="'+o+'"></div>'),components:[{dom:{tag:"div",classes:jB?[r,r+"--opaque"]:[r]}}]}},dragBlockClass:o,modalBehaviours:Za(H([Rg.config({}),lm("dialog-events",n.dialogEvents.concat([Qe(fo(),function(t,n){Bg.focusIn(t)})])),lm("scroll-lock",[$o(function(){Ur(mu(),i)}),Qo(function(){Gr(mu(),i)})])],n.extraBehaviours)),eventOrder:st(((t={})[Eo()]=["dialog-events"],t[zo()]=["scroll-lock","dialog-events","alloy.base.behaviour"],t[No()]=["alloy.base.behaviour","dialog-events","scroll-lock"],t),n.eventOrder)})}function NE(t){return cp.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":t.translate("Close"),title:t.translate("Close")}},components:[Wm("close",{tag:"div",classes:["tox-icon"]},t.icons)],action:function(t){ze(t,xy)}})}function LE(t,n,e){function o(t){return[pi(e.translate(t.title))]}return{dom:{tag:"div",classes:["tox-dialog__title"],attributes:st({},n.map(function(t){return{id:t}}).getOr({}))},components:o(t),behaviours:Za([R_.config({channel:HB,renderComponents:o})])}}function jE(){return{dom:MC('<div class="tox-dialog__draghandle"></div>')}}function WE(t,n){return e={title:n.shared.providers.translate(t),draggable:n.dialog.isDraggableModal()},o=n.shared.providers,r=cD.parts.title(LE(e,ft.none(),o)),i=cD.parts.draghandle(jE()),u=cD.parts.close(NE(o)),a=[r].concat(e.draggable?[i]:[]).concat([u]),sy.sketch({dom:MC('<div class="tox-dialog__header"></div>'),components:a});var e,o,r,i,u,a}function UE(t,n,e){return{dom:{tag:"div",classes:["tox-dialog__busy-spinner"],attributes:{"aria-label":e.translate(t)},styles:{left:"0px",right:"0px",bottom:"0px",top:"0px",position:"absolute"}},behaviours:n,components:[{dom:MC('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}}function GE(t,o,n){return{onClose:function(){return n.closeWindow()},onBlock:function(e){cD.setBusy(t(),function(t,n){return UE(e.message,n,o)})},onUnblock:function(){cD.setIdle(t())}}}function XE(t,n,e,o){var r;return bu(zE(st(st({},t),{lazySink:o.shared.getSink,extraBehaviours:H([R_.config({channel:PB,updateState:function(t,n){return ft.some(n)},initialData:n}),Dw({})],t.extraBehaviours),onEscape:function(t){ze(t,xy)},dialogEvents:e,eventOrder:((r={})[To()]=[R_.name(),oc.name()],r[zo()]=["scroll-lock",R_.name(),"messages","dialog-events","alloy.base.behaviour"],r[No()]=["alloy.base.behaviour","dialog-events","messages",R_.name(),"scroll-lock"],r)})))}function YE(t){return A(t,function(t){return"menu"===t.type?(e=A((n=t).items,function(t){var n=wn(!1);return st(st({},t),{storage:n})}),st(st({},n),{items:e})):t;var n,e})}function qE(t){return R(t,function(t,n){return"menu"!==n.type?t:R(n.items,function(t,n){return t[n.name]=n.storage,t},t)},{})}function KE(t,e){return[Je(fo(),m0),t(yy,function(t,n){e.onClose(),n.onClose()}),t(xy,function(t,n,e,o){n.onCancel(t),ze(o,yy)}),Xe(Cy,function(t,n){return e.onUnblock()}),Xe(ky,function(t,n){return e.onBlock(n.event)})]}function JE(t,n){function e(t,n){return sy.sketch({dom:{tag:"div",classes:["tox-dialog__footer-"+t]},components:A(n,function(t){return t.memento.asSpec()})})}var o=M(n.map(function(t){return t.footerButtons}).getOr([]),function(t){return"start"===t.align});return[e("start",o.pass),e("end",o.fail)]}function $E(t,e){return{dom:MC('<div class="tox-dialog__footer"></div>'),components:[],behaviours:Za([R_.config({channel:NB,initialData:t,updateState:function(t,n){var r=A(n.buttons,function(t){var n=Vm(xS(t,t.type,e));return{name:t.name,align:t.align,memento:n}});return ft.some({lookupByName:function(t,n){return e=t,o=n,V(r,function(t){return t.name===o}).bind(function(t){return t.memento.getOpt(e)});var e,o},footerButtons:r})},renderComponents:JE})])}}function QE(t,n){return cD.parts.footer($E(t,n))}function ZE(n,e){if(n.getRoot().getSystem().isConnected()){var o=id.getCurrent(n.getFormWrapper()).getOr(n.getFormWrapper());return hw.getField(o,e).fold(function(){var t=n.getFooter();return R_.getState(t).get().bind(function(t){return t.lookupByName(o,e)})},function(t){return ft.some(t)})}return ft.none()}function tD(c,o,s){function t(t){var n=c.getRoot();n.getSystem().isConnected()&&t(n)}var l={getData:function(){var t=c.getRoot(),n=t.getSystem().isConnected()?c.getFormWrapper():t,e=_f.getValue(n),o=yt(s,function(t){return t.get()});return st(st({},e),o)},setData:function(a){t(function(t){var n,e,o=l.getData(),r=st(st({},o),a),i=(n=r,e=c.getRoot(),R_.getState(e).get().map(function(t){return Xt(Gt("data",t.dataValidator,n))}).getOr(n)),u=c.getFormWrapper();_f.setValue(u,i),bt(s,function(t,n){Kn(r,n)&&t.set(r[n])})})},disable:function(t){ZE(c,t).each(fd.disable)},enable:function(t){ZE(c,t).each(fd.enable)},focus:function(t){ZE(c,t).each(Rg.focus)},block:function(n){if(!y(n))throw new Error("The dialogInstanceAPI.block function should be passed a blocking message of type string as an argument");t(function(t){Ne(t,ky,{message:n})})},unblock:function(){t(function(t){ze(t,Cy)})},showTab:function(e){t(function(t){var n=c.getBody();R_.getState(n).get().exists(function(t){return t.isTabPanel()})&&id.getCurrent(n).each(function(t){IB.showTab(t,e)})})},redial:function(e){t(function(t){var n=o(e);t.getSystem().broadcastOn([PB],n),t.getSystem().broadcastOn([HB],n.internalDialog),t.getSystem().broadcastOn([zB],n.internalDialog),t.getSystem().broadcastOn([NB],n.internalDialog),l.setData(n.initialData)})},close:function(){t(function(t){ze(t,yy)})}};return l}function nD(t){return x(t)&&-1!==YB.indexOf(t.mceAction)}function eD(o,t,r,n){var e,i,u,a=WE(o.title,n),c=(i={dom:{tag:"div",classes:["tox-dialog__content-js"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-iframe"]},components:[f0({dom:{tag:"iframe",attributes:{src:o.url}},behaviours:Za([gy.config({}),Rg.config({})])})]}],behaviours:Za([Bg.config({mode:"acyclic",useTabstopAt:k(g0)})])},cD.parts.body(i)),s=o.buttons.bind(function(t){return 0===t.length?ft.none():ft.some(QE({buttons:t},n))}),l=WB(function(){return v},GE(function(){return h},n.shared.providers,t)),f=st(st({},o.height.fold(function(){return{}},function(t){return{height:t+"px","max-height":t+"px"}})),o.width.fold(function(){return{}},function(t){return{width:t+"px","max-width":t+"px"}})),d=o.width.isNone()&&o.height.isNone()?["tox-dialog--width-lg"]:[],m=new XB(o.url,{base_uri:new XB(window.location.href)}),g=m.protocol+"://"+m.host+(m.port?":"+m.port:""),p=lc(),h=XE({header:a,body:c,footer:s,extraClasses:d,extraBehaviours:[lm("messages",[$o(function(){var t=dc(de.fromDom(window),"message",function(t){var n,e;m.isSameOrigin(new XB(t.raw.origin))&&(nD(n=t.raw.data)?function(t,n,e){switch(e.mceAction){case"insertContent":t.insertContent(e.content);break;case"setContent":t.setContent(e.content);break;case"execCommand":var o=!!w(e.ui)&&e.ui;t.execCommand(e.cmd,o,e.value);break;case"close":n.close();break;case"block":n.block(e.message);break;case"unblock":n.unblock()}}(r,v,n):!nD(e=n)&&x(e)&&Kn(e,"mceAction")&&o.onMessage(v,n))});p.set(t)}),Qo(p.clear)]),oc.config({channels:((e={})[LB]={onReceive:function(t,n){Fu(t.element,"iframe").each(function(t){t.dom.contentWindow.postMessage(n,g)})}},e)})],extraStyles:f},o,l,n),v={block:function(n){if(!y(n))throw new Error("The urlDialogInstanceAPI.block function should be passed a blocking message of type string as an argument");b(function(t){Ne(t,ky,{message:n})})},unblock:function(){b(function(t){ze(t,Cy)})},close:function(){b(function(t){ze(t,yy)})},sendMessage:function(n){b(function(t){t.getSystem().broadcastOn([LB],n)})}};function b(t){u.getSystem().isConnected()&&t(u)}return{dialog:u=h,instanceApi:v}}function oD(t){function o(t,y){return _B.open(function(t,n,e){var o,r,i,u,a,c,s,l,f,d,m,g,p,h,v=n,b=(r={redial:_B.redial,closeWindow:function(){cD.hide(b.dialog),y(b.instanceApi)}},i=R,c=WE((o={dataValidator:e,initialData:v,internalDialog:t}).internalDialog.title,i),u=i,a=ME({body:o.internalDialog.body},ft.none(),u,!1),s=cD.parts.body(a),l=YE(o.internalDialog.buttons),f=qE(l),d=QE({buttons:l},i),m=UB(function(){return h},GE(function(){return p},i.shared.providers,r),i.shared.getSink),g=function(){switch(o.internalDialog.size){case"large":return["tox-dialog--width-lg"];case"medium":return["tox-dialog--width-md"];default:return[]}}(),p=XE({header:c,body:s,footer:ft.some(d),extraClasses:g,extraBehaviours:[],extraStyles:{}},o,m,i),h=tD({getRoot:tt(p),getBody:function(){return cD.getBody(p)},getFooter:function(){return cD.getFooter(p)},getFormWrapper:function(){var t=cD.getBody(p);return id.getCurrent(t).getOr(t)}},r.redial,f),{dialog:p,instanceApi:h});return cD.show(b.dialog),b.instanceApi.setData(v),b.instanceApi},t)}function r(t,M,F,I){return _B.open(function(t,n,e){function o(){return E.on(function(t){op.reposition(t),nO.refresh(t)})}var r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_,T=Xt(Gt("data",e,n)),E=fc(),D=R.shared.header.isPositionedAtTop(),B=(i={dataValidator:e,initialData:T,internalDialog:t},u={redial:_B.redial,closeWindow:function(){E.on(op.hide),V.off("ResizeEditor",o),E.clear(),F(B.instanceApi)}},a=R,c=I,v=Ar("dialog-label"),b=Ar("dialog-content"),y=Vm((f={title:i.internalDialog.title,draggable:!0},d=v,m=a.shared.providers,sy.sketch({dom:MC('<div class="tox-dialog__header"></div>'),components:[LE(f,ft.some(d),m),jE(),NE(m)],containerBehaviours:Za([yE.config({mode:"mouse",blockerClass:"blocker",getTarget:function(t){return Iu(t,'[role="dialog"]').getOrDie()},snaps:{getSnapPoints:function(){return[]},leftAttr:"data-drag-left",topAttr:"data-drag-top"}})])}))),x=Vm((g={body:i.internalDialog.body},p=a,h=c,ME(g,ft.some(b),p,h))),w=YE(i.internalDialog.buttons),S=qE(w),k=Vm(GB({buttons:w},a)),C=UB(function(){return _},{onBlock:function(e){kO.block(O,function(t,n){return UE(e.message,n,a.shared.providers)})},onUnblock:function(){kO.unblock(O)},onClose:function(){return u.closeWindow()}},a.shared.getSink),O=bu({dom:{tag:"div",classes:["tox-dialog","tox-dialog-inline"],attributes:((s={role:"dialog"})["aria-labelledby"]=v,s["aria-describedby"]=b,s)},eventOrder:((l={})[To()]=[R_.name(),oc.name()],l[Eo()]=["execute-on-form"],l[zo()]=["reflecting","execute-on-form"],l),behaviours:Za([Bg.config({mode:"cyclic",onEscape:function(t){return ze(t,yy),ft.some(!0)},useTabstopAt:function(t){return!g0(t)&&("button"!==nr(t)||"disabled"!==_r(t,"disabled"))}}),R_.config({channel:PB,updateState:function(t,n){return ft.some(n)},initialData:i}),Rg.config({}),lm("execute-on-form",C.concat([Qe(fo(),function(t,n){Bg.focusIn(t)})])),kO.config({getRoot:function(){return ft.some(O)}}),Mg.config({}),Dw({})]),components:[y.asSpec(),x.asSpec(),k.asSpec()]}),_=tD({getRoot:tt(O),getFooter:function(){return k.get(O)},getBody:function(){return x.get(O)},getFormWrapper:function(){var t=x.get(O);return id.getCurrent(t).getOr(t)}},u.redial,S),{dialog:O,instanceApi:_}),A=bu(op.sketch(st(st({lazySink:R.shared.getSink,dom:{tag:"div",classes:[]},fireDismissalEventInstead:{}},D?{}:{fireRepositionEventInstead:{}}),{inlineBehaviours:Za(H([lm("window-manager-inline-events",[Xe(Lo(),function(t,n){ze(B.dialog,xy)})])],(r=V,P&&D?[]:[nO.config({contextual:{lazyContext:function(){return ft.some(Ai(de.fromDom(r.getContentAreaContainer())))},fadeInClass:"tox-dialog-dock-fadein",fadeOutClass:"tox-dialog-dock-fadeout",transitionClass:"tox-dialog-dock-transition"},modes:["top"]})]))),isExtraPart:function(t,n){return jb(e=n,".tox-alert-dialog")||jb(e,".tox-confirm-dialog");var e}})));return E.set(A),op.showWithin(A,yu(B.dialog),{anchor:M},ft.some(mu())),P&&D||(nO.refresh(A),V.on("ResizeEditor",o)),B.instanceApi.setData(T),Bg.focusIn(B.dialog),B.instanceApi},t)}var c,s,l,f,R=t.backstage,V=t.editor,P=sv(V),e=(s=(c=t).backstage.shared,{open:function(t,n){function e(){cD.hide(u),n()}var o=Vm(xS({name:"close-alert",text:"OK",primary:!0,align:"end",disabled:!1,icon:ft.none()},"cancel",c.backstage)),r=RE(),i=IE(e,s.providers),u=bu(zE({lazySink:function(){return s.getSink()},header:FE(r,i),body:VE(t,s.providers),footer:ft.some(PE(HE([],[o.asSpec()]))),onEscape:e,extraClasses:["tox-alert-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[Xe(xy,e)],eventOrder:{}}));cD.show(u);var a=o.get(u);Rg.focus(a)}}),i=(f=(l=t).backstage.shared,{open:function(t,n){function e(t){cD.hide(a),n(t)}var o=Vm(xS({name:"yes",text:"Yes",primary:!0,align:"end",disabled:!1,icon:ft.none()},"submit",l.backstage)),r=xS({name:"no",text:"No",primary:!1,align:"end",disabled:!1,icon:ft.none()},"cancel",l.backstage),i=RE(),u=IE(function(){return e(!1)},f.providers),a=bu(zE({lazySink:function(){return f.getSink()},header:FE(i,u),body:VE(t,f.providers),footer:ft.some(PE(HE([],[r,o.asSpec()]))),onEscape:function(){return e(!1)},extraClasses:["tox-confirm-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[Xe(xy,function(){return e(!1)}),Xe(Sy,function(){return e(!0)})],eventOrder:{}}));cD.show(a);var c=o.get(a);Rg.focus(c)}});return{open:function(t,n,e){return void 0!==n&&"toolbar"===n.inline?r(t,R.shared.anchors.inlineDialog(),e,n.ariaAttrs):void 0!==n&&"cursor"===n.inline?r(t,R.shared.anchors.cursor(),e,n.ariaAttrs):o(t,e)},openUrl:function(t,n){return e=n,_B.openUrl(function(t){var n=eD(t,{closeWindow:function(){cD.hide(n.dialog),e(n.instanceApi)}},V,R);return cD.show(n.dialog),n.instanceApi},t);var e},alert:function(t,n){e.open(t,function(){n()})},close:function(t){t.close()},confirm:function(t,n){i.open(t,function(t){n(t)})}}}($T=JT=JT||{})[$T.None=0]="None",$T[$T.Both=1]="Both",$T[$T.Vertical=2]="Vertical";var rD,iD=tt([Jt("lazySink"),rn("dragBlockClass"),bn("getBounds",Fi),dn("useTabstopAt",_),dn("eventOrder",{}),Js("modalBehaviours",[Bg]),Ju("onExecute"),Qu("onEscape")]),uD={sketch:h},aD=tt([Kf({name:"draghandle",overrides:function(t,n){return{behaviours:Za([yE.config({mode:"mouse",getTarget:function(t){return Mu(t,'[role="dialog"]').getOr(t)},blockerClass:t.dragBlockClass.getOrDie(new Error("The drag blocker class was not specified for a dialog with a drag handle: \n"+JSON.stringify(n,null,2)).message),getBounds:t.getDragBounds})])}}}),Yf({schema:[Jt("dom")],name:"title"}),Yf({factory:uD,schema:[Jt("dom")],name:"close"}),Yf({factory:uD,schema:[Jt("dom")],name:"body"}),Kf({factory:uD,schema:[Jt("dom")],name:"footer"}),qf({factory:{sketch:function(t,n){return st(st({},t),{dom:n.dom,components:n.components})}},schema:[dn("dom",{tag:"div",styles:{position:"fixed",left:"0px",top:"0px",right:"0px",bottom:"0px"}}),dn("components",[])],name:"blocker"})]),cD=wl({name:"ModalDialog",configFields:iD(),partFields:aD(),factory:function(a,t,n,r){var e,i=fc(),o=Ar("modal-events"),u=st(st({},a.eventOrder),((e={})[zo()]=[o].concat(a.eventOrder["alloy.system.attached"]||[]),e));return{uid:a.uid,dom:a.dom,components:t,apis:{show:function(t){i.set(t);var n=a.lazySink(t).getOrDie(),e=r.blocker(),o=n.getSystem().build(st(st({},e),{components:e.components.concat([yu(t)]),behaviours:Za([Rg.config({}),lm("dialog-blocker-events",[Qe(fo(),function(){Bg.focusIn(t)})])])}));Fs(n,o),Bg.focusIn(t)},hide:function(n){i.clear(),ar(n.element).each(function(t){n.getSystem().getByDom(t).each(function(t){Rs(t)})})},getBody:function(t){return fl(t,a,"body")},getFooter:function(t){return fl(t,a,"footer")},setIdle:function(t){kO.unblock(t)},setBusy:function(t,n){kO.block(t,n)}},eventOrder:u,domModification:{attributes:{role:"dialog","aria-modal":"true"}},behaviours:Qs(a.modalBehaviours,[Mg.config({}),Bg.config({mode:"cyclic",onEnter:a.onExecute,onEscape:a.onEscape,useTabstopAt:a.useTabstopAt}),kO.config({getRoot:i.get}),lm(o,[$o(function(t){var n,e,o,r=t.element,i=fl(t,a,"title").element,u=Tr(r,"id").fold(function(){var t=Ar("dialog-label");return Or(i,"id",t),t},h);Or(r,"aria-labelledby",u),n=t.element,e=fl(t,a,"body").element,o=ft.from(_r(n,"id")).fold(function(){var t=Ar("dialog-describe");return Or(e,"id",t),t},h),Or(n,"aria-describedby",o)})])])}},apis:{show:function(t,n){t.show(n)},hide:function(t,n){t.hide(n)},getBody:function(t,n){return t.getBody(n)},getFooter:function(t,n){return t.getFooter(n)},setBusy:function(t,n,e){t.setBusy(n,e)},setIdle:function(t,n){t.setIdle(n)}}}),sD=te([Qt("type"),Qt("name")].concat(Hh)),lD=ie,fD=[le("name","name",Et(function(){return Ar("button-name")}),re),cn("icon"),hn("align","end",["start","end"]),vn("primary",!1),vn("disabled",!1)],dD=H(H([],fD),[Qt("text")]),mD=H([Zt("type",["submit","cancel","custom"])],dD),gD=qt("type",{submit:mD,cancel:mD,custom:mD,menu:H([Zt("type",["menu"]),cn("text"),cn("tooltip"),cn("icon"),on("items",sD)],fD)}),pD=[Qt("type"),Qt("text"),Zt("level",["info","warn","error","success"]),Qt("icon"),dn("url","")],hD=te(pD),vD=[Qt("type"),Qt("text"),vn("disabled",!1),vn("primary",!1),le("name","name",Et(function(){return Ar("button-name")}),re),cn("icon"),vn("borderless",!1)],bD=te(vD),yD=[Qt("type"),Qt("name"),Qt("label"),vn("disabled",!1)],xD=te(yD),wD=ie,SD=[Qt("type"),Qt("name")],kD=SD.concat([cn("label")]),CD=kD.concat([dn("columns","auto")]),OD=te(CD),_D=ne([Qt("value"),Qt("text"),Qt("icon")]),TD=te(kD),ED=re,DD=te(kD),BD=re,AD=SD.concat([pn("tag","textarea"),Qt("scriptId"),Qt("scriptUrl"),mn("settings",void 0,ce)]),MD=SD.concat([pn("tag","textarea"),tn("init")]),FD=Wt(function(t){return Gt("customeditor.old",Ht(MD),t).orThunk(function(){return Gt("customeditor.new",Ht(AD),t)})}),ID=re,RD=te(kD),VD=zt(Zn),PD=[Qt("type"),Qt("html"),hn("presets","presentation",["presentation","document"])],HD=te(PD),zD=kD.concat([vn("sandboxed",!0)]),ND=te(zD),LD=re,jD=kD.concat([$t("currentState",te([Jt("blob"),Qt("url")]))]),WD=te(jD),UD=kD.concat([cn("inputMode"),cn("placeholder"),vn("maximized",!1),vn("disabled",!1)]),GD=te(UD),XD=re,YD=[Qt("text"),Qt("value")],qD=[Qt("text"),on("items",(rD=_t(function(){return KD}),{extract:function(t,n){return rD().extract(t,n)},toString:function(){return rD().toString()}}))],KD=Nt([te(YD),te(qD)]),JD=kD.concat([on("items",KD),vn("disabled",!1)]),$D=te(JD),QD=re,ZD=kD.concat([en("items",[Qt("text"),Qt("value")]),gn("size",1),vn("disabled",!1)]),tB=te(ZD),nB=re,eB=kD.concat([vn("constrain",!0),vn("disabled",!1)]),oB=te(eB),rB=te([Qt("width"),Qt("height")]),iB=[Qt("type"),on("header",re),on("cells",zt(re))],uB=te(iB),aB=kD.concat([cn("placeholder"),vn("maximized",!1),vn("disabled",!1)]),cB=te(aB),sB=re,lB=kD.concat([hn("filetype","file",["image","media","file"]),dn("disabled",!1)]),fB=te(lB),dB=te([Qt("value"),dn("meta",{})]),mB=Pt(function(){return jt("type",{alertbanner:hD,bar:te((e=CE("bar"),[Qt("type"),e])),button:bD,checkbox:xD,colorinput:TD,colorpicker:DD,dropzone:RD,grid:te((t=CE("grid"),[Qt("type"),$t("columns",oe),t])),iframe:ND,input:GD,listbox:$D,selectbox:tB,sizeinput:oB,textarea:cB,urlinput:fB,customeditor:FD,htmlpanel:HD,imagetools:WD,collection:OD,label:te((n=CE("label"),[Qt("type"),Qt("label"),n])),table:uB,panel:pB});var t,n,e}),gB=[Qt("type"),dn("classes",[]),on("items",mB)],pB=te(gB),hB=[le("name","name",Et(function(){return Ar("tab-name")}),re),Qt("title"),on("items",mB)],vB=[Qt("type"),en("tabs",hB)],bB=te(vB),yB=dD,xB=gD,wB=te([Qt("title"),$t("body",jt("type",{panel:pB,tabpanel:bB})),pn("size","normal"),on("buttons",xB),dn("initialData",{}),bn("onAction",ct),bn("onChange",ct),bn("onSubmit",ct),bn("onClose",ct),bn("onCancel",ct),dn("onTabChange",ct)]),SB=te(H([Zt("type",["cancel","custom"])],yB)),kB=te([Qt("title"),Qt("url"),an("height"),an("width"),ln("buttons",SB),bn("onAction",ct),bn("onCancel",ct),bn("onClose",ct),bn("onMessage",ct)]),CB=function(t){return x(t)?[t].concat(z(St(t),CB)):c(t)?z(t,CB):[]},OB={checkbox:wD,colorinput:ED,colorpicker:BD,dropzone:VD,input:XD,iframe:LD,sizeinput:rB,selectbox:nB,listbox:QD,size:rB,textarea:sB,urlinput:dB,customeditor:ID,collection:_D,togglemenuitem:lD},_B={open:function(t,n){var e=_E(n);return t(e.internalDialog,e.initialData,e.dataValidator)},openUrl:function(t,n){return t(Xt(Gt("dialog",kB,n)))},redial:_E},TB=xl({name:"TabButton",configFields:[dn("uid",void 0),Jt("value"),le("dom","dom",At(function(){return{attributes:{role:"tab",id:Ar("aria"),"aria-selected":"false"}}}),ee()),rn("action"),dn("domModification",{}),Js("tabButtonBehaviours",[Rg,Bg,_f]),Jt("view")],factory:function(t,n){return{uid:t.uid,dom:t.dom,components:t.components,events:ym(t.action),behaviours:Qs(t.tabButtonBehaviours,[Rg.config({}),Bg.config({mode:"execution",useSpace:!0,useEnter:!0}),_f.config({store:{mode:"memory",initialValue:t.value}})]),domModification:t.domModification}}}),EB=tt([Jt("tabs"),Jt("dom"),dn("clickToDismiss",!1),Js("tabbarBehaviours",[md,Bg]),Yu(["tabClass","selectedClass"])]),DB=tt([Jf({factory:TB,name:"tabs",unit:"tab",overrides:function(o){return{action:function(t){var n=t.getSystem().getByUid(o.uid).getOrDie(),e=md.isHighlighted(n,t);(e&&o.clickToDismiss?function(t,n){md.dehighlight(t,n),Ne(t,Xo(),{tabbar:t,button:n})}:e?ct:function(t,n){md.highlight(t,n),Ne(t,Go(),{tabbar:t,button:n})})(n,t)},domModification:{classes:[o.markers.tabClass]}}}})]),BB=wl({name:"Tabbar",configFields:EB(),partFields:DB(),factory:function(t,n,e,o){return{uid:t.uid,dom:t.dom,components:n,"debug.sketcher":"Tabbar",domModification:{attributes:{role:"tablist"}},behaviours:Qs(t.tabbarBehaviours,[md.config({highlightClass:t.markers.selectedClass,itemClass:t.markers.tabClass,onHighlight:function(t,n){Or(n.element,"aria-selected","true")},onDehighlight:function(t,n){Or(n.element,"aria-selected","false")}}),Bg.config({mode:"flow",getInitial:function(t){return md.getHighlighted(t).map(function(t){return t.element})},selector:"."+t.markers.tabClass,executeOnMove:!0})])}}}),AB=xl({name:"Tabview",configFields:[Js("tabviewBehaviours",[Mg])],factory:function(t,n){return{uid:t.uid,dom:t.dom,behaviours:Qs(t.tabviewBehaviours,[Mg.config({})]),domModification:{attributes:{role:"tabpanel"}}}}}),MB=tt([dn("selectFirst",!0),Ku("onChangeTab"),Ku("onDismissTab"),dn("tabs",[]),Js("tabSectionBehaviours",[])]),FB=tt([Yf({factory:BB,schema:[Jt("dom"),nn("markers",[Jt("tabClass"),Jt("selectedClass")])],name:"tabbar",defaults:function(t){return{tabs:t.tabs}}}),Yf({factory:AB,name:"tabview"})]),IB=wl({name:"TabSection",configFields:MB(),partFields:FB(),factory:function(i,t,n,e){function o(t,n){ll(t,i,"tabbar").each(function(t){n(t).each(Le)})}return{uid:i.uid,dom:i.dom,components:t,behaviours:$s(i.tabSectionBehaviours),events:Jo(lt([i.selectFirst?[$o(function(t,n){o(t,md.getFirst)})]:[],[Xe(Go(),function(t,n){var o=n.event.button,r=_f.getValue(o);ll(o,i,"tabview").each(function(e){V(i.tabs,function(t){return t.value===r}).each(function(t){var n=t.view();Tr(o.element,"id").each(function(t){Or(e.element,"aria-labelledby",t)}),Mg.set(e,n),i.onChangeTab(e,o,n)})})}),Xe(Xo(),function(t,n){var e=n.event.button;i.onDismissTab(t,e)})]])),apis:{getViewItems:function(t){return ll(t,i,"tabview").map(function(t){return Mg.contents(t)}).getOr([])},showTab:function(t,e){o(t,function(n){return V(md.getCandidates(n),function(t){return _f.getValue(t)===e}).filter(function(t){return!md.isHighlighted(n,t)})})}}}},apis:{getViewItems:function(t,n){return t.getViewItems(n)},showTab:function(t,n,e){t.showTab(n,e)}}}),RB="send-data-to-section",VB="send-data-to-view",PB=Ar("update-dialog"),HB=Ar("update-title"),zB=Ar("update-body"),NB=Ar("update-footer"),LB=Ar("body-send-message"),jB=Qv.deviceType.isTouch(),WB=function(u,t){function n(t,i){return Xe(t,function(e,o){var n,r;n=e,r=function(t,n){i(u(),t,o.event,e)},R_.getState(n).get().each(function(t){r(t,n)})})}return H(H([],KE(n,t)),[n(wy,function(t,n,e){n.onAction(t,{name:e.name})})])},UB=function(u,t,c){function n(t,i){return Xe(t,function(e,o){var n,r;n=e,r=function(t,n){i(u(),t,o.event,e)},R_.getState(n).get().each(function(t){r(t.internalDialog,n)})})}return H(H([],KE(n,t)),[n(Sy,function(t,n){return n.onSubmit(t)}),n(by,function(t,n,e){n.onChange(t,{name:e.name})}),n(wy,function(t,n,e,o){function r(){return Bg.focusIn(o)}function i(t){return Er(t,"disabled")||Tr(t,"aria-disabled").exists(function(t){return"true"===t})}var u=ji(o.element),a=Ca(u);n.onAction(t,{name:e.name,value:e.value}),Ca(u).fold(r,function(n){i(n)||a.exists(function(t){return An(n,t)&&i(t)})?r():c().toOptional().filter(function(t){return!An(t.element,n)}).each(r)})}),n(Oy,function(t,n,e){n.onTabChange(t,{newTabName:e.name,oldTabName:e.oldName})}),Qo(function(t){var n=u();_f.setValue(t,n.getData())})])},GB=$E,XB=tinymce.util.Tools.resolve("tinymce.util.URI"),YB=["insertContent","setContent","execCommand","close","block","unblock"];o.add("silver",function(t){var n=kE(t),e=n.uiMothership,o=n.backstage,r=n.renderUI,i=n.getUi;return ny(t,o.shared),{renderUI:r,getWindowManagerImpl:tt(oD({editor:t,backstage:o})),getNotificationManagerImpl:function(){return u=e,a={backstage:o}.backstage.shared,{open:function(t,n){function e(){n(),op.hide(i)}var o=!t.closeButton&&t.timeout&&(0<t.timeout||t.timeout<0),r=bu(mp.sketch({text:t.text,level:et(["success","error","warning","warn","info"],t.type)?t.type:void 0,progress:!0===t.progressBar,icon:ft.from(t.icon),closeButton:!o,onAction:e,iconProvider:a.providers.icons,translationProvider:a.providers.translate})),i=bu(op.sketch(st({dom:{tag:"div",classes:["tox-notifications-container"]},lazySink:a.getSink,fireDismissalEventInstead:{}},a.header.isPositionedAtTop()?{}:{fireRepositionEventInstead:{}})));return u.add(i),0<t.timeout&&ap.setTimeout(function(){e()},t.timeout),{close:e,moveTo:function(t,n){op.showAt(i,yu(r),{anchor:{type:"makeshift",x:t,y:n}})},moveRel:function(t,n){var e,o;"banner"!==n?(e=function(){switch(n){case"bc-bc":return up;case"tc-tc":return ip;case"tc-bc":return qa;default:return Ka}}(),o={type:"node",root:mu(),node:ft.some(de.fromDom(t)),layouts:{onRtl:function(){return[e]},onLtr:function(){return[e]}}},op.showAt(i,yu(r),{anchor:o})):op.showAt(i,yu(r),{anchor:a.anchors.banner()})},text:function(t){mp.updateText(r,t)},settings:t,getEl:function(){return r.element.dom},progressBar:{value:function(t){mp.updateProgress(r,t)}}}},close:function(t){t.close()},reposition:function(t){var e;dt(t,function(t){return t.moveTo(0,0)}),0<(e=t).length&&(ot(e).each(function(t){return t.moveRel(null,"banner")}),dt(e,function(t,n){0<n&&t.moveRel(e[n-1].getEl(),"bc-tc")}))},getArgs:function(t){return t.settings}};var u,a},ui:i()}})}();
\ No newline at end of file
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/tinymce.d.ts b/projects/editor/src/assets/tinymce/js/tinymce/tinymce.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a6f64bb2368eddd31573f0b31ce1160cf2ada3c4
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/tinymce.d.ts
@@ -0,0 +1,3028 @@
+interface StringPathBookmark {
+    start: string;
+    end?: string;
+}
+interface RangeBookmark {
+    rng: Range;
+}
+interface IdBookmark {
+    id: string;
+    keep?: boolean;
+}
+interface IndexBookmark {
+    name: string;
+    index: number;
+}
+interface PathBookmark {
+    start: number[];
+    end?: number[];
+    isFakeCaret?: boolean;
+}
+declare type Bookmark = StringPathBookmark | RangeBookmark | IdBookmark | IndexBookmark | PathBookmark;
+declare type NormalizedEvent<E, T = any> = E & {
+    readonly type: string;
+    readonly target: T;
+    readonly isDefaultPrevented: () => boolean;
+    readonly preventDefault: () => void;
+    readonly isPropagationStopped: () => boolean;
+    readonly stopPropagation: () => void;
+    readonly isImmediatePropagationStopped: () => boolean;
+    readonly stopImmediatePropagation: () => void;
+};
+declare type MappedEvent<T, K extends string> = K extends keyof T ? T[K] : any;
+interface NativeEventMap {
+    'beforepaste': Event;
+    'blur': FocusEvent;
+    'beforeinput': InputEvent;
+    'click': MouseEvent;
+    'compositionend': Event;
+    'compositionstart': Event;
+    'compositionupdate': Event;
+    'contextmenu': PointerEvent;
+    'copy': ClipboardEvent;
+    'cut': ClipboardEvent;
+    'dblclick': MouseEvent;
+    'drag': DragEvent;
+    'dragdrop': DragEvent;
+    'dragend': DragEvent;
+    'draggesture': DragEvent;
+    'dragover': DragEvent;
+    'dragstart': DragEvent;
+    'drop': DragEvent;
+    'focus': FocusEvent;
+    'focusin': FocusEvent;
+    'focusout': FocusEvent;
+    'input': InputEvent;
+    'keydown': KeyboardEvent;
+    'keypress': KeyboardEvent;
+    'keyup': KeyboardEvent;
+    'mousedown': MouseEvent;
+    'mouseenter': MouseEvent;
+    'mouseleave': MouseEvent;
+    'mousemove': MouseEvent;
+    'mouseout': MouseEvent;
+    'mouseover': MouseEvent;
+    'mouseup': MouseEvent;
+    'paste': ClipboardEvent;
+    'selectionchange': Event;
+    'submit': Event;
+    'touchend': TouchEvent;
+    'touchmove': TouchEvent;
+    'touchstart': TouchEvent;
+    'touchcancel': TouchEvent;
+    'wheel': WheelEvent;
+}
+declare type EditorEvent<T> = NormalizedEvent<T>;
+interface EventDispatcherSettings {
+    scope?: any;
+    toggleEvent?: (name: string, state: boolean) => void | boolean;
+    beforeFire?: <T>(args: EditorEvent<T>) => void;
+}
+interface EventDispatcherConstructor<T extends NativeEventMap> {
+    readonly prototype: EventDispatcher<T>;
+    new (settings?: EventDispatcherSettings): EventDispatcher<T>;
+    isNative: (name: string) => boolean;
+}
+declare class EventDispatcher<T> {
+    static isNative(name: string): boolean;
+    private readonly settings;
+    private readonly scope;
+    private readonly toggleEvent;
+    private bindings;
+    constructor(settings?: Record<string, any>);
+    fire<K extends string, U extends MappedEvent<T, K>>(name: K, args?: U): EditorEvent<U>;
+    on<K extends string>(name: K, callback: false | ((event: EditorEvent<MappedEvent<T, K>>) => void), prepend?: boolean, extra?: {}): this;
+    off<K extends string>(name?: K, callback?: (event: EditorEvent<MappedEvent<T, K>>) => void): this;
+    once<K extends string>(name: K, callback: (event: EditorEvent<MappedEvent<T, K>>) => void, prepend?: boolean): this;
+    has(name: string): boolean;
+}
+declare const enum UndoLevelType {
+    Fragmented = "fragmented",
+    Complete = "complete"
+}
+interface UndoLevel {
+    type: UndoLevelType;
+    fragments: string[];
+    content: string;
+    bookmark: Bookmark;
+    beforeBookmark: Bookmark;
+}
+interface UndoManager {
+    data: UndoLevel[];
+    typing: boolean;
+    add: (level?: UndoLevel, event?: EditorEvent<any>) => UndoLevel;
+    beforeChange: () => void;
+    undo: () => UndoLevel;
+    redo: () => UndoLevel;
+    clear: () => void;
+    reset: () => void;
+    hasUndo: () => boolean;
+    hasRedo: () => boolean;
+    transact: (callback: () => void) => UndoLevel;
+    ignore: (callback: () => void) => void;
+    extra: (callback1: () => void, callback2: () => void) => void;
+}
+declare type ArrayCallback$1<T, R> = (x: T, i: number, xs: ReadonlyArray<T>) => R;
+declare type ObjCallback$1<T, R> = (value: T, key: string, obj: Record<string, T>) => R;
+declare type ArrayCallback<T, R> = ArrayCallback$1<T, R>;
+declare type ObjCallback<T, R> = ObjCallback$1<T, R>;
+interface Tools {
+    is: (obj: any, type: string) => boolean;
+    isArray: <T>(arr: any) => arr is Array<T>;
+    inArray: <T>(arr: ArrayLike<T>, value: T) => number;
+    grep: {
+        <T>(arr: ArrayLike<T> | null | undefined, pred?: ArrayCallback<T, boolean>): T[];
+        <T>(arr: Record<string, T> | null | undefined, pred?: ObjCallback<T, boolean>): T[];
+    };
+    trim: (str: string) => string;
+    toArray: <T>(obj: ArrayLike<T>) => T[];
+    hasOwn: (obj: any, name: string) => boolean;
+    makeMap: <T>(items: ArrayLike<T> | string, delim?: string | RegExp, map?: Record<string, T | string>) => Record<string, T | string>;
+    each: {
+        <T>(arr: ArrayLike<T> | null | undefined, cb: ArrayCallback<T, void | boolean>, scope?: any): boolean;
+        <T>(obj: Record<string, T> | null | undefined, cb: ObjCallback<T, void | boolean>, scope?: any): boolean;
+    };
+    map: {
+        <T, R>(arr: ArrayLike<T> | null | undefined, cb: ArrayCallback<T, R>): R[];
+        <T, R>(obj: Record<string, T> | null | undefined, cb: ObjCallback<T, R>): R[];
+    };
+    extend: (obj: Object, ext: Object, ...objs: Object[]) => any;
+    create: (name: string, p: Object, root?: Object) => void;
+    walk: <T = any>(obj: T, f: Function, n?: keyof T, scope?: any) => void;
+    createNS: (name: string, o?: Object) => any;
+    resolve: (path: string, o?: Object) => any;
+    explode: (s: string, d?: string | RegExp) => string[];
+    _addCacheSuffix: (url: string) => string;
+}
+declare type EventUtilsCallback<T> = (event: EventUtilsEvent<T>) => void;
+declare type EventUtilsEvent<T> = NormalizedEvent<T> & {
+    metaKey: boolean;
+};
+interface EventUtilsConstructor {
+    readonly prototype: EventUtils;
+    new (): EventUtils;
+    Event: EventUtils;
+}
+declare class EventUtils {
+    static Event: EventUtils;
+    domLoaded: boolean;
+    events: Record<string, any>;
+    private readonly expando;
+    private hasFocusIn;
+    private hasMouseEnterLeave;
+    private mouseEnterLeave;
+    private count;
+    constructor();
+    bind<K extends keyof HTMLElementEventMap>(target: any, name: K, callback: EventUtilsCallback<HTMLElementEventMap[K]>, scope?: any): EventUtilsCallback<HTMLElementEventMap[K]>;
+    bind<T = any>(target: any, names: string, callback: EventUtilsCallback<T>, scope?: any): EventUtilsCallback<T>;
+    unbind<K extends keyof HTMLElementEventMap>(target: any, name: K, callback?: EventUtilsCallback<HTMLElementEventMap[K]>): this;
+    unbind<T = any>(target: any, names: string, callback?: EventUtilsCallback<T>): this;
+    unbind(target: any): this;
+    fire(target: any, name: string, args?: {}): this;
+    clean(target: any): this;
+    destroy(): void;
+    cancel<T = any>(e: EventUtilsEvent<T>): boolean;
+    private executeHandlers;
+}
+declare type DomQuerySelector<T extends Node> = string | T | T[] | DomQuery<T>;
+declare type DomQueryInitSelector<T extends Node> = DomQuerySelector<T> | Window;
+interface Hook {
+    get: <T extends Node>(elm: T) => string;
+    set: <T extends Node>($elm: DomQuery<T>, value: string | null) => void;
+}
+interface DomQueryConstructor {
+    readonly prototype: DomQuery;
+    attrHooks: Record<string, Hook>;
+    cssHooks: Record<string, Hook>;
+    fn: DomQuery;
+    find: any;
+    expr: {
+        cacheLength: number;
+        createPseudo: Function;
+        match: Record<string, RegExp>;
+        attrHandle: {};
+        find: Record<string, Function>;
+        relative: Record<string, {
+            dir: string;
+            first?: boolean;
+        }>;
+        preFilter: Record<string, Function>;
+        filter: Record<string, Function>;
+        pseudos: Record<string, Function>;
+    };
+    extend: Tools['extend'];
+    isArray: Tools['isArray'];
+    new <T extends Node = Node>(selector?: DomQueryInitSelector<T>, context?: Node): DomQuery<T>;
+    <T extends Node = Node>(selector?: DomQueryInitSelector<T>, context?: Node): DomQuery<T>;
+    overrideDefaults(callback: () => {
+        context: Node;
+        element: Element;
+    }): DomQueryConstructor;
+    makeArray<T>(object: T): T[];
+    inArray<T>(item: {}, array: T[]): number;
+    each<T>(obj: T[], callback: (i: number, value: T) => void): void;
+    each<T>(obj: T, callback: (key: string, obj: T[keyof T]) => void): void;
+    trim(str: string): string;
+    grep<T>(array: T[], callback: (item: any, i: number) => boolean): T[];
+    unique<T>(results: T[]): T[];
+    text(elem: Node): string;
+    contains(context: any, elem: Node): boolean;
+    filter(expr: string, elems: Node[], not?: boolean): any;
+}
+interface DomQuery<T extends Node = Node> extends ArrayLike<T> {
+    init: (selector?: DomQueryInitSelector<T>, context?: Node) => void;
+    context: T;
+    length: number;
+    selector: string;
+    add(items: Array<string | T> | DomQuery<T>, sort?: boolean): this;
+    addClass(className: string): this;
+    after(content: DomQuerySelector<T>): this;
+    append(content: DomQuerySelector<T>): this;
+    appendTo(val: DomQuerySelector<T>): this;
+    attr(name: string, value: string | boolean | number | null): this;
+    attr(attrs: Record<string, string | boolean | number | null>): this;
+    attr(name: string): string;
+    before(content: DomQuerySelector<T>): this;
+    children(selector?: string): DomQuery<Node & ChildNode>;
+    clone(): this;
+    closest(selector: DomQuerySelector<T>): this;
+    contents(selector?: string): DomQuery<Node & ChildNode>;
+    css(name: string, value: string | number | null): this;
+    css(styles: Record<string, string | number | null>): this;
+    css(name: string): string;
+    each(callback: (i: number, value: T) => void): this;
+    empty(): this;
+    eq(index: number): this;
+    filter(selector: string | ((i: number, item: any) => boolean)): this;
+    find<K extends keyof HTMLElementTagNameMap>(selector: K): DomQuery<HTMLElementTagNameMap[K]>;
+    find<T extends Node>(selector: string): DomQuery<T>;
+    first(): this;
+    hasClass(className: string): boolean;
+    hide(): this;
+    html(value: string): this;
+    html(): string;
+    is(selector: string | ((i: number, item: any) => boolean)): boolean;
+    last(): this;
+    next(selector?: string): DomQuery<Node & ChildNode>;
+    nextUntil(selector: DomQuerySelector<T>, until?: string): DomQuery<Node & ChildNode>;
+    off<K extends keyof HTMLElementEventMap>(name: K, callback?: EventUtilsCallback<HTMLElementEventMap[K]>): this;
+    off<U>(name?: string, callback?: EventUtilsCallback<U>): this;
+    offset(offset?: {}): {} | this;
+    on<K extends keyof HTMLElementEventMap>(name: K, callback: EventUtilsCallback<HTMLElementEventMap[K]>): this;
+    on<U>(name: string, callback: EventUtilsCallback<U>): this;
+    parent(selector?: string): DomQuery<Node>;
+    parents(selector?: string): DomQuery<Node>;
+    parentsUntil(selector: DomQuerySelector<T>, filter?: string): DomQuery<Node>;
+    prepend(content: DomQuerySelector<T>): this;
+    prependTo(val: DomQuerySelector<T>): this;
+    prev(selector?: string): DomQuery<Node & ChildNode>;
+    prevUntil(selector: DomQuerySelector<T>, filter?: string): DomQuery<Node & ChildNode>;
+    prop(name: string, value: string): this;
+    prop(props: Record<string, string | number>): this;
+    prop(name: string): string;
+    push(...items: T[]): number;
+    remove(): this;
+    removeAttr(name: string): this;
+    removeClass(className: string): this;
+    replaceWith(content: DomQuerySelector<T>): this;
+    show(): this;
+    slice(start: number, end?: number): this;
+    splice(start: number, deleteCount?: number): T[];
+    sort(compareFn?: (a: T, b: T) => number): T[];
+    text(value: string): DomQuery;
+    text(): string;
+    toArray(): T[];
+    toggleClass(className: string, state?: boolean): this;
+    trigger(name: string | {
+        type: string;
+    }): this;
+    unwrap(): this;
+    wrap(content: DomQuerySelector<T>): this;
+    wrapAll(content: DomQuerySelector<T>): this;
+    wrapInner(content: string): this;
+}
+declare type SchemaType = 'html4' | 'html5' | 'html5-strict';
+interface SchemaSettings {
+    block_elements?: string;
+    boolean_attributes?: string;
+    custom_elements?: string;
+    extended_valid_elements?: string;
+    invalid_elements?: string;
+    invalid_styles?: string | Record<string, string>;
+    move_caret_before_on_enter_elements?: string;
+    non_empty_elements?: string;
+    schema?: SchemaType;
+    self_closing_elements?: string;
+    short_ended_elements?: string;
+    special?: string;
+    text_block_elements?: string;
+    text_inline_elements?: string;
+    valid_children?: string;
+    valid_classes?: string | Record<string, string>;
+    valid_elements?: string;
+    valid_styles?: string | Record<string, string>;
+    verify_html?: boolean;
+    whitespace_elements?: string;
+}
+interface Attribute {
+    required?: boolean;
+    defaultValue?: string;
+    forcedValue?: string;
+    validValues?: any;
+}
+interface DefaultAttribute {
+    name: string;
+    value: string;
+}
+interface AttributePattern {
+    defaultValue?: string;
+    forcedValue?: string;
+    pattern: RegExp;
+    required?: boolean;
+    validValues?: Record<string, string>;
+}
+interface ElementRule {
+    attributes: Record<string, Attribute>;
+    attributesDefault?: DefaultAttribute[];
+    attributesForced?: DefaultAttribute[];
+    attributesOrder: string[];
+    attributePatterns?: AttributePattern[];
+    attributesRequired?: string[];
+    paddEmpty?: boolean;
+    removeEmpty?: boolean;
+    removeEmptyAttrs?: boolean;
+}
+interface SchemaElement extends ElementRule {
+    outputName?: string;
+    parentsRequired?: string[];
+    pattern?: RegExp;
+}
+interface SchemaMap {
+    [name: string]: {};
+}
+interface SchemaRegExpMap {
+    [name: string]: RegExp;
+}
+interface Schema {
+    children: Record<string, SchemaMap>;
+    elements: Record<string, SchemaElement>;
+    getValidStyles: () => Record<string, string[]> | undefined;
+    getValidClasses: () => Record<string, SchemaMap> | undefined;
+    getBlockElements: () => SchemaMap;
+    getInvalidStyles: () => Record<string, SchemaMap> | undefined;
+    getShortEndedElements: () => SchemaMap;
+    getTextBlockElements: () => SchemaMap;
+    getTextInlineElements: () => SchemaMap;
+    getBoolAttrs: () => SchemaMap;
+    getElementRule: (name: string) => SchemaElement | undefined;
+    getSelfClosingElements: () => SchemaMap;
+    getNonEmptyElements: () => SchemaMap;
+    getMoveCaretBeforeOnEnterElements: () => SchemaMap;
+    getWhiteSpaceElements: () => SchemaMap;
+    getSpecialElements: () => SchemaRegExpMap;
+    isValidChild: (name: string, child: string) => boolean;
+    isValid: (name: string, attr?: string) => boolean;
+    getCustomElements: () => SchemaMap;
+    addValidElements: (validElements: string) => void;
+    setValidElements: (validElements: string) => void;
+    addCustomElements: (customElements: string) => void;
+    addValidChildren: (validChildren: any) => void;
+}
+declare type Attributes$1 = Array<{
+    name: string;
+    value: string;
+}> & {
+    map: Record<string, string>;
+};
+interface AstNodeConstructor {
+    readonly prototype: AstNode;
+    new (name: string, type: number): AstNode;
+    create(name: string, attrs?: Record<string, string>): AstNode;
+}
+declare class AstNode {
+    static create(name: string, attrs?: Record<string, string>): AstNode;
+    name: string;
+    type: number;
+    attributes?: Attributes$1;
+    value?: string;
+    shortEnded?: boolean;
+    parent?: AstNode;
+    firstChild?: AstNode;
+    lastChild?: AstNode;
+    next?: AstNode;
+    prev?: AstNode;
+    raw?: boolean;
+    fixed?: boolean;
+    constructor(name: string, type: number);
+    replace(node: AstNode): AstNode;
+    attr(name: string, value: string | null): AstNode | undefined;
+    attr(name: Record<string, string | null>): AstNode | undefined;
+    attr(name: string): string | undefined;
+    clone(): AstNode;
+    wrap(wrapper: AstNode): AstNode;
+    unwrap(): void;
+    remove(): AstNode;
+    append(node: AstNode): AstNode;
+    insert(node: AstNode, refNode: AstNode, before?: boolean): AstNode;
+    getAll(name: string): AstNode[];
+    children(): AstNode[];
+    empty(): AstNode;
+    isEmpty(elements: SchemaMap, whitespace?: SchemaMap, predicate?: (node: AstNode) => boolean): boolean;
+    walk(prev?: boolean): AstNode;
+}
+declare type Content = string | AstNode;
+declare type ContentFormat = 'raw' | 'text' | 'html' | 'tree';
+interface GetContentArgs {
+    format?: ContentFormat;
+    get?: boolean;
+    content?: string;
+    getInner?: boolean;
+    no_events?: boolean;
+    [key: string]: any;
+}
+interface SetContentArgs {
+    format?: string;
+    set?: boolean;
+    content?: string;
+    no_events?: boolean;
+    no_selection?: boolean;
+}
+interface BlobInfoData {
+    id?: string;
+    name?: string;
+    filename?: string;
+    blob: Blob;
+    base64: string;
+    blobUri?: string;
+    uri?: string;
+}
+interface BlobInfo {
+    id: () => string;
+    name: () => string;
+    filename: () => string;
+    blob: () => Blob;
+    base64: () => string;
+    blobUri: () => string;
+    uri: () => string | undefined;
+}
+interface BlobCache {
+    create: (o: string | BlobInfoData, blob?: Blob, base64?: string, name?: string, filename?: string) => BlobInfo;
+    add: (blobInfo: BlobInfo) => void;
+    get: (id: string) => BlobInfo | undefined;
+    getByUri: (blobUri: string) => BlobInfo | undefined;
+    getByData: (base64: string, type: string) => BlobInfo | undefined;
+    findFirst: (predicate: (blobInfo: BlobInfo) => boolean) => BlobInfo | undefined;
+    removeByUri: (blobUri: string) => void;
+    destroy: () => void;
+}
+interface NotificationManagerImpl {
+    open: (spec: NotificationSpec, closeCallback?: () => void) => NotificationApi;
+    close: <T extends NotificationApi>(notification: T) => void;
+    reposition: <T extends NotificationApi>(notifications: T[]) => void;
+    getArgs: <T extends NotificationApi>(notification: T) => NotificationSpec;
+}
+interface NotificationSpec {
+    type?: 'info' | 'warning' | 'error' | 'success';
+    text: string;
+    icon?: string;
+    progressBar?: boolean;
+    timeout?: number;
+    closeButton?: boolean;
+}
+interface NotificationApi {
+    close: () => void;
+    progressBar: {
+        value: (percent: number) => void;
+    };
+    text: (text: string) => void;
+    moveTo: (x: number, y: number) => void;
+    moveRel: (element: Element, rel: 'tc-tc' | 'bc-bc' | 'bc-tc' | 'tc-bc' | 'banner') => void;
+    getEl: () => HTMLElement;
+    settings: NotificationSpec;
+}
+interface NotificationManager {
+    open: (spec: NotificationSpec) => NotificationApi;
+    close: () => void;
+    getNotifications: () => NotificationApi[];
+}
+interface UploadFailureOptions {
+    remove?: boolean;
+}
+declare type UploadHandler = (blobInfo: BlobInfo, success: (url: string) => void, failure: (err: string, options?: UploadFailureOptions) => void, progress?: (percent: number) => void) => void;
+interface UploadResult$2 {
+    url: string;
+    blobInfo: BlobInfo;
+    status: boolean;
+    error?: {
+        options: UploadFailureOptions;
+        message: string;
+    };
+}
+interface RangeLikeObject {
+    startContainer: Node;
+    startOffset: number;
+    endContainer: Node;
+    endOffset: number;
+}
+declare type ApplyFormat = BlockFormat | InlineFormat | SelectorFormat;
+declare type RemoveFormat = RemoveBlockFormat | RemoveInlineFormat | RemoveSelectorFormat;
+declare type Format = ApplyFormat | RemoveFormat;
+declare type Formats = Record<string, Format | Format[]>;
+declare type FormatAttrOrStyleValue = string | ((vars?: FormatVars) => string);
+declare type FormatVars = Record<string, string | null>;
+interface BaseFormat<T> {
+    ceFalseOverride?: boolean;
+    classes?: string | string[];
+    collapsed?: boolean;
+    exact?: boolean;
+    expand?: boolean;
+    links?: boolean;
+    mixed?: boolean;
+    block_expand?: boolean;
+    onmatch?: (node: Node, fmt: T, itemName: string) => boolean;
+    remove?: 'none' | 'empty' | 'all';
+    remove_similar?: boolean;
+    split?: boolean;
+    deep?: boolean;
+    preserve_attributes?: string[];
+}
+interface Block {
+    block: string;
+    list_block?: string;
+    wrapper?: boolean;
+}
+interface Inline {
+    inline: string;
+}
+interface Selector {
+    selector: string;
+    inherit?: boolean;
+}
+interface CommonFormat<T> extends BaseFormat<T> {
+    attributes?: Record<string, FormatAttrOrStyleValue>;
+    styles?: Record<string, FormatAttrOrStyleValue>;
+    toggle?: boolean;
+    preview?: string | false;
+    onformat?: (elm: Node, fmt: T, vars?: FormatVars, node?: Node | RangeLikeObject) => void;
+    clear_child_styles?: boolean;
+    merge_siblings?: boolean;
+    merge_with_parents?: boolean;
+    defaultBlock?: string;
+}
+interface BlockFormat extends Block, CommonFormat<BlockFormat> {
+}
+interface InlineFormat extends Inline, CommonFormat<InlineFormat> {
+}
+interface SelectorFormat extends Selector, CommonFormat<SelectorFormat> {
+}
+interface CommonRemoveFormat<T> extends BaseFormat<T> {
+    attributes?: string[] | Record<string, FormatAttrOrStyleValue>;
+    styles?: string[] | Record<string, FormatAttrOrStyleValue>;
+}
+interface RemoveBlockFormat extends Block, CommonRemoveFormat<RemoveBlockFormat> {
+}
+interface RemoveInlineFormat extends Inline, CommonRemoveFormat<RemoveInlineFormat> {
+}
+interface RemoveSelectorFormat extends Selector, CommonRemoveFormat<RemoveSelectorFormat> {
+}
+type Format_d_Formats = Formats;
+type Format_d_Format = Format;
+type Format_d_ApplyFormat = ApplyFormat;
+type Format_d_BlockFormat = BlockFormat;
+type Format_d_InlineFormat = InlineFormat;
+type Format_d_SelectorFormat = SelectorFormat;
+type Format_d_RemoveFormat = RemoveFormat;
+type Format_d_RemoveBlockFormat = RemoveBlockFormat;
+type Format_d_RemoveInlineFormat = RemoveInlineFormat;
+type Format_d_RemoveSelectorFormat = RemoveSelectorFormat;
+declare namespace Format_d {
+    export { Format_d_Formats as Formats, Format_d_Format as Format, Format_d_ApplyFormat as ApplyFormat, Format_d_BlockFormat as BlockFormat, Format_d_InlineFormat as InlineFormat, Format_d_SelectorFormat as SelectorFormat, Format_d_RemoveFormat as RemoveFormat, Format_d_RemoveBlockFormat as RemoveBlockFormat, Format_d_RemoveInlineFormat as RemoveInlineFormat, Format_d_RemoveSelectorFormat as RemoveSelectorFormat, };
+}
+declare type StyleFormat = BlockStyleFormat | InlineStyleFormat | SelectorStyleFormat;
+declare type AllowedFormat = Separator | FormatReference | StyleFormat | NestedFormatting;
+interface Separator {
+    title: string;
+}
+interface FormatReference {
+    title: string;
+    format: string;
+    icon?: string;
+}
+interface NestedFormatting {
+    title: string;
+    items: Array<FormatReference | StyleFormat>;
+}
+interface CommonStyleFormat {
+    name?: string;
+    title: string;
+    icon?: string;
+}
+interface BlockStyleFormat extends BlockFormat, CommonStyleFormat {
+}
+interface InlineStyleFormat extends InlineFormat, CommonStyleFormat {
+}
+interface SelectorStyleFormat extends SelectorFormat, CommonStyleFormat {
+}
+interface AlertBannerSpec {
+    type: 'alertbanner';
+    level: 'info' | 'warn' | 'error' | 'success';
+    text: string;
+    icon: string;
+    url?: string;
+}
+interface ButtonSpec {
+    type: 'button';
+    text: string;
+    disabled?: boolean;
+    primary?: boolean;
+    name?: string;
+    icon?: string;
+    borderless?: boolean;
+}
+interface CheckboxSpec {
+    name: string;
+    type: 'checkbox';
+    label: string;
+    disabled?: boolean;
+}
+interface FormComponentSpec {
+    type: string;
+    name: string;
+}
+interface FormComponentWithLabelSpec extends FormComponentSpec {
+    label?: string;
+}
+interface CollectionSpec extends FormComponentWithLabelSpec {
+    type: 'collection';
+}
+interface ColorInputSpec extends FormComponentWithLabelSpec {
+    type: 'colorinput';
+}
+interface ColorPickerSpec extends FormComponentWithLabelSpec {
+    type: 'colorpicker';
+}
+interface CustomEditorInit {
+    setValue: (value: string) => void;
+    getValue: () => string;
+    destroy: () => void;
+}
+declare type CustomEditorInitFn = (elm: HTMLElement, settings: any) => Promise<CustomEditorInit>;
+interface CustomEditorOldSpec extends FormComponentSpec {
+    type: 'customeditor';
+    tag?: string;
+    init: (e: HTMLElement) => Promise<CustomEditorInit>;
+}
+interface CustomEditorNewSpec extends FormComponentSpec {
+    type: 'customeditor';
+    tag?: string;
+    scriptId: string;
+    scriptUrl: string;
+    settings?: any;
+}
+declare type CustomEditorSpec = CustomEditorOldSpec | CustomEditorNewSpec;
+interface DropZoneSpec extends FormComponentWithLabelSpec {
+    type: 'dropzone';
+}
+interface GridSpec {
+    type: 'grid';
+    columns: number;
+    items: BodyComponentSpec[];
+}
+interface HtmlPanelSpec {
+    type: 'htmlpanel';
+    html: string;
+    presets?: 'presentation' | 'document';
+}
+interface IframeSpec extends FormComponentWithLabelSpec {
+    type: 'iframe';
+    sandboxed?: boolean;
+}
+interface ImageToolsState {
+    blob: Blob;
+    url: string;
+}
+interface ImageToolsSpec extends FormComponentWithLabelSpec {
+    type: 'imagetools';
+    currentState: ImageToolsState;
+}
+interface InputSpec extends FormComponentWithLabelSpec {
+    type: 'input';
+    inputMode?: string;
+    placeholder?: string;
+    maximized?: boolean;
+    disabled?: boolean;
+}
+interface LabelSpec {
+    type: 'label';
+    label: string;
+    items: BodyComponentSpec[];
+}
+interface ListBoxSingleItemSpec {
+    text: string;
+    value: string;
+}
+interface ListBoxNestedItemSpec {
+    text: string;
+    items: ListBoxItemSpec[];
+}
+declare type ListBoxItemSpec = ListBoxNestedItemSpec | ListBoxSingleItemSpec;
+interface ListBoxSpec extends FormComponentWithLabelSpec {
+    type: 'listbox';
+    items: ListBoxItemSpec[];
+    disabled?: boolean;
+}
+interface PanelSpec {
+    type: 'panel';
+    classes?: string[];
+    items: BodyComponentSpec[];
+}
+interface SelectBoxItemSpec {
+    text: string;
+    value: string;
+}
+interface SelectBoxSpec extends FormComponentWithLabelSpec {
+    type: 'selectbox';
+    items: SelectBoxItemSpec[];
+    size?: number;
+    disabled?: boolean;
+}
+interface SizeInputSpec extends FormComponentWithLabelSpec {
+    type: 'sizeinput';
+    constrain?: boolean;
+    disabled?: boolean;
+}
+interface TableSpec {
+    type: 'table';
+    header: string[];
+    cells: string[][];
+}
+interface TextAreaSpec extends FormComponentWithLabelSpec {
+    type: 'textarea';
+    placeholder?: string;
+    maximized?: boolean;
+    disabled?: boolean;
+}
+interface UrlInputSpec extends FormComponentWithLabelSpec {
+    type: 'urlinput';
+    filetype?: 'image' | 'media' | 'file';
+    disabled?: boolean;
+}
+declare type BodyComponentSpec = BarSpec | ButtonSpec | CheckboxSpec | TextAreaSpec | InputSpec | ListBoxSpec | SelectBoxSpec | SizeInputSpec | IframeSpec | HtmlPanelSpec | UrlInputSpec | DropZoneSpec | ColorInputSpec | GridSpec | ColorPickerSpec | ImageToolsSpec | AlertBannerSpec | CollectionSpec | LabelSpec | TableSpec | PanelSpec | CustomEditorSpec;
+interface BarSpec {
+    type: 'bar';
+    items: BodyComponentSpec[];
+}
+interface CommonMenuItemSpec {
+    disabled?: boolean;
+    text?: string;
+    value?: string;
+    meta?: Record<string, any>;
+    shortcut?: string;
+}
+interface CommonMenuItemInstanceApi {
+    isDisabled: () => boolean;
+    setDisabled: (state: boolean) => void;
+}
+interface DialogToggleMenuItemSpec extends CommonMenuItemSpec {
+    type?: 'togglemenuitem';
+    name: string;
+}
+declare type DialogFooterMenuButtonItemSpec = DialogToggleMenuItemSpec;
+interface BaseDialogFooterButtonSpec {
+    name?: string;
+    align?: 'start' | 'end';
+    primary?: boolean;
+    disabled?: boolean;
+    icon?: string;
+}
+interface DialogFooterNormalButtonSpec extends BaseDialogFooterButtonSpec {
+    type: 'submit' | 'cancel' | 'custom';
+    text: string;
+}
+interface DialogFooterMenuButtonSpec extends BaseDialogFooterButtonSpec {
+    type: 'menu';
+    text?: string;
+    tooltip?: string;
+    icon?: string;
+    items: DialogFooterMenuButtonItemSpec[];
+}
+declare type DialogFooterButtonSpec = DialogFooterNormalButtonSpec | DialogFooterMenuButtonSpec;
+interface TabSpec {
+    name?: string;
+    title: string;
+    items: BodyComponentSpec[];
+}
+interface TabPanelSpec {
+    type: 'tabpanel';
+    tabs: TabSpec[];
+}
+declare type DialogDataItem = any;
+declare type DialogData = Record<string, DialogDataItem>;
+interface DialogInstanceApi<T extends DialogData> {
+    getData: () => T;
+    setData: (data: Partial<T>) => void;
+    disable: (name: string) => void;
+    focus: (name: string) => void;
+    showTab: (name: string) => void;
+    redial: (nu: DialogSpec<T>) => void;
+    enable: (name: string) => void;
+    block: (msg: string) => void;
+    unblock: () => void;
+    close: () => void;
+}
+interface DialogActionDetails {
+    name: string;
+    value?: any;
+}
+interface DialogChangeDetails<T> {
+    name: keyof T;
+}
+interface DialogTabChangeDetails {
+    newTabName: string;
+    oldTabName: string;
+}
+declare type DialogActionHandler<T> = (api: DialogInstanceApi<T>, details: DialogActionDetails) => void;
+declare type DialogChangeHandler<T> = (api: DialogInstanceApi<T>, details: DialogChangeDetails<T>) => void;
+declare type DialogSubmitHandler<T> = (api: DialogInstanceApi<T>) => void;
+declare type DialogCloseHandler = () => void;
+declare type DialogCancelHandler<T> = (api: DialogInstanceApi<T>) => void;
+declare type DialogTabChangeHandler<T> = (api: DialogInstanceApi<T>, details: DialogTabChangeDetails) => void;
+declare type DialogSize = 'normal' | 'medium' | 'large';
+interface DialogSpec<T extends DialogData> {
+    title: string;
+    size?: DialogSize;
+    body: TabPanelSpec | PanelSpec;
+    buttons: DialogFooterButtonSpec[];
+    initialData?: T;
+    onAction?: DialogActionHandler<T>;
+    onChange?: DialogChangeHandler<T>;
+    onSubmit?: DialogSubmitHandler<T>;
+    onClose?: DialogCloseHandler;
+    onCancel?: DialogCancelHandler<T>;
+    onTabChange?: DialogTabChangeHandler<T>;
+}
+interface UrlDialogInstanceApi {
+    block: (msg: string) => void;
+    unblock: () => void;
+    close: () => void;
+    sendMessage: (msg: any) => void;
+}
+interface UrlDialogActionDetails {
+    name: string;
+    value?: any;
+}
+interface UrlDialogMessage {
+    mceAction: string;
+    [key: string]: any;
+}
+declare type UrlDialogActionHandler = (api: UrlDialogInstanceApi, actions: UrlDialogActionDetails) => void;
+declare type UrlDialogCloseHandler = () => void;
+declare type UrlDialogCancelHandler = (api: UrlDialogInstanceApi) => void;
+declare type UrlDialogMessageHandler = (api: UrlDialogInstanceApi, message: UrlDialogMessage) => void;
+interface UrlDialogFooterButtonSpec extends DialogFooterNormalButtonSpec {
+    type: 'cancel' | 'custom';
+}
+interface UrlDialogSpec {
+    title: string;
+    url: string;
+    height?: number;
+    width?: number;
+    buttons?: UrlDialogFooterButtonSpec[];
+    onAction?: UrlDialogActionHandler;
+    onClose?: UrlDialogCloseHandler;
+    onCancel?: UrlDialogCancelHandler;
+    onMessage?: UrlDialogMessageHandler;
+}
+declare type CardContainerDirection = 'vertical' | 'horizontal';
+declare type CardContainerAlign = 'left' | 'right';
+declare type CardContainerValign = 'top' | 'middle' | 'bottom';
+interface CardContainerSpec {
+    type: 'cardcontainer';
+    items: CardItemSpec[];
+    direction?: CardContainerDirection;
+    align?: CardContainerAlign;
+    valign?: CardContainerValign;
+}
+interface CardImageSpec {
+    type: 'cardimage';
+    src: string;
+    alt?: string;
+    classes?: string[];
+}
+interface CardTextSpec {
+    type: 'cardtext';
+    text: string;
+    name?: string;
+    classes?: string[];
+}
+declare type CardItemSpec = CardContainerSpec | CardImageSpec | CardTextSpec;
+interface CardMenuItemInstanceApi extends CommonMenuItemInstanceApi {
+}
+interface CardMenuItemSpec extends Omit<CommonMenuItemSpec, 'text' | 'shortcut'> {
+    type: 'cardmenuitem';
+    label?: string;
+    items: CardItemSpec[];
+    onSetup?: (api: CardMenuItemInstanceApi) => (api: CardMenuItemInstanceApi) => void;
+    onAction?: (api: CardMenuItemInstanceApi) => void;
+}
+interface SeparatorMenuItemSpec {
+    type?: 'separator';
+    text?: string;
+}
+declare type ColumnTypes$1 = number | 'auto';
+declare type SeparatorItemSpec = SeparatorMenuItemSpec;
+interface AutocompleterItemSpec {
+    type?: 'autocompleteitem';
+    value: string;
+    text?: string;
+    icon?: string;
+    meta?: Record<string, any>;
+}
+declare type AutocompleterContents = SeparatorItemSpec | AutocompleterItemSpec | CardMenuItemSpec;
+interface AutocompleterSpec {
+    type?: 'autocompleter';
+    ch: string;
+    minChars?: number;
+    columns?: ColumnTypes$1;
+    matches?: (rng: Range, text: string, pattern: string) => boolean;
+    fetch: (pattern: string, maxResults: number, fetchOptions: Record<string, any>) => Promise<AutocompleterContents[]>;
+    onAction: (autocompleterApi: AutocompleterInstanceApi, rng: Range, value: string, meta: Record<string, any>) => void;
+    maxResults?: number;
+    highlightOn?: string[];
+}
+interface AutocompleterInstanceApi {
+    hide: () => void;
+    reload: (fetchOptions: Record<string, any>) => void;
+}
+declare type ContextPosition = 'node' | 'selection' | 'line';
+declare type ContextScope = 'node' | 'editor';
+interface ContextBarSpec {
+    predicate?: (elem: Element) => boolean;
+    position?: ContextPosition;
+    scope?: ContextScope;
+}
+interface BaseToolbarButtonSpec<I extends BaseToolbarButtonInstanceApi> {
+    disabled?: boolean;
+    tooltip?: string;
+    icon?: string;
+    text?: string;
+    onSetup?: (api: I) => (api: I) => void;
+}
+interface BaseToolbarButtonInstanceApi {
+    isDisabled: () => boolean;
+    setDisabled: (state: boolean) => void;
+}
+interface ToolbarButtonSpec extends BaseToolbarButtonSpec<ToolbarButtonInstanceApi> {
+    type?: 'button';
+    onAction: (api: ToolbarButtonInstanceApi) => void;
+}
+interface ToolbarButtonInstanceApi extends BaseToolbarButtonInstanceApi {
+}
+interface BaseToolbarToggleButtonSpec<I extends BaseToolbarButtonInstanceApi> extends BaseToolbarButtonSpec<I> {
+    active?: boolean;
+}
+interface BaseToolbarToggleButtonInstanceApi extends BaseToolbarButtonInstanceApi {
+    isActive: () => boolean;
+    setActive: (state: boolean) => void;
+}
+interface ToolbarToggleButtonSpec extends BaseToolbarToggleButtonSpec<ToolbarToggleButtonInstanceApi> {
+    type?: 'togglebutton';
+    onAction: (api: ToolbarToggleButtonInstanceApi) => void;
+}
+interface ToolbarToggleButtonInstanceApi extends BaseToolbarToggleButtonInstanceApi {
+}
+interface ContextFormLaunchButtonApi extends BaseToolbarButtonSpec<BaseToolbarButtonInstanceApi> {
+    type: 'contextformbutton';
+}
+interface ContextFormLaunchToggleButtonSpec extends BaseToolbarToggleButtonSpec<BaseToolbarToggleButtonInstanceApi> {
+    type: 'contextformtogglebutton';
+}
+interface ContextFormButtonInstanceApi extends BaseToolbarButtonInstanceApi {
+}
+interface ContextFormToggleButtonInstanceApi extends BaseToolbarToggleButtonInstanceApi {
+}
+interface ContextFormButtonSpec extends BaseToolbarButtonSpec<ContextFormButtonInstanceApi> {
+    type?: 'contextformbutton';
+    primary?: boolean;
+    onAction: (formApi: ContextFormInstanceApi, api: ContextFormButtonInstanceApi) => void;
+}
+interface ContextFormToggleButtonSpec extends BaseToolbarToggleButtonSpec<ContextFormToggleButtonInstanceApi> {
+    type?: 'contextformtogglebutton';
+    onAction: (formApi: ContextFormInstanceApi, buttonApi: ContextFormToggleButtonInstanceApi) => void;
+    primary?: boolean;
+}
+interface ContextFormInstanceApi {
+    hide: () => void;
+    getValue: () => string;
+}
+interface ContextFormSpec extends ContextBarSpec {
+    type?: 'contextform';
+    initValue?: () => string;
+    label?: string;
+    launch?: ContextFormLaunchButtonApi | ContextFormLaunchToggleButtonSpec;
+    commands: Array<ContextFormToggleButtonSpec | ContextFormButtonSpec>;
+}
+interface ContextToolbarSpec extends ContextBarSpec {
+    type?: 'contexttoolbar';
+    items: string;
+}
+interface ChoiceMenuItemSpec extends CommonMenuItemSpec {
+    type?: 'choiceitem';
+    icon?: string;
+}
+interface ChoiceMenuItemInstanceApi extends CommonMenuItemInstanceApi {
+    isActive: () => boolean;
+    setActive: (state: boolean) => void;
+}
+interface ContextMenuItem extends CommonMenuItemSpec {
+    text: string;
+    icon?: string;
+    type?: 'item';
+    onAction: () => void;
+}
+interface ContextSubMenu extends CommonMenuItemSpec {
+    type: 'submenu';
+    text: string;
+    icon?: string;
+    getSubmenuItems: () => string | Array<ContextMenuContents>;
+}
+declare type ContextMenuContents = string | ContextMenuItem | SeparatorMenuItemSpec | ContextSubMenu;
+interface ContextMenuApi {
+    update: (element: Element) => string | Array<ContextMenuContents>;
+}
+interface FancyActionArgsMap {
+    'inserttable': {
+        numRows: number;
+        numColumns: number;
+    };
+    'colorswatch': {
+        value: string;
+    };
+}
+interface BaseFancyMenuItemSpec<T extends keyof FancyActionArgsMap> {
+    type: 'fancymenuitem';
+    fancytype: T;
+    initData?: Record<string, unknown>;
+    onAction?: (data: FancyActionArgsMap[T]) => void;
+}
+interface InsertTableMenuItemSpec extends BaseFancyMenuItemSpec<'inserttable'> {
+    fancytype: 'inserttable';
+    initData?: {};
+}
+interface ColorSwatchMenuItemSpec extends BaseFancyMenuItemSpec<'colorswatch'> {
+    fancytype: 'colorswatch';
+    initData?: {
+        allowCustomColors?: boolean;
+        colors: ChoiceMenuItemSpec[];
+    };
+}
+declare type FancyMenuItemSpec = InsertTableMenuItemSpec | ColorSwatchMenuItemSpec;
+interface MenuItemSpec extends CommonMenuItemSpec {
+    type?: 'menuitem';
+    icon?: string;
+    onSetup?: (api: MenuItemInstanceApi) => (api: MenuItemInstanceApi) => void;
+    onAction?: (api: MenuItemInstanceApi) => void;
+}
+interface MenuItemInstanceApi extends CommonMenuItemInstanceApi {
+}
+declare type NestedMenuItemContents = string | MenuItemSpec | NestedMenuItemSpec | ToggleMenuItemSpec | SeparatorMenuItemSpec | FancyMenuItemSpec;
+interface NestedMenuItemSpec extends CommonMenuItemSpec {
+    type?: 'nestedmenuitem';
+    icon?: string;
+    getSubmenuItems: () => string | Array<NestedMenuItemContents>;
+    onSetup?: (api: NestedMenuItemInstanceApi) => (api: NestedMenuItemInstanceApi) => void;
+}
+interface NestedMenuItemInstanceApi extends CommonMenuItemInstanceApi {
+}
+interface ToggleMenuItemSpec extends CommonMenuItemSpec {
+    type?: 'togglemenuitem';
+    icon?: string;
+    active?: boolean;
+    onSetup?: (api: ToggleMenuItemInstanceApi) => void;
+    onAction: (api: ToggleMenuItemInstanceApi) => void;
+}
+interface ToggleMenuItemInstanceApi extends CommonMenuItemInstanceApi {
+    isActive: () => boolean;
+    setActive: (state: boolean) => void;
+}
+type PublicDialog_d_AlertBannerSpec = AlertBannerSpec;
+type PublicDialog_d_BarSpec = BarSpec;
+type PublicDialog_d_BodyComponentSpec = BodyComponentSpec;
+type PublicDialog_d_ButtonSpec = ButtonSpec;
+type PublicDialog_d_CheckboxSpec = CheckboxSpec;
+type PublicDialog_d_CollectionSpec = CollectionSpec;
+type PublicDialog_d_ColorInputSpec = ColorInputSpec;
+type PublicDialog_d_ColorPickerSpec = ColorPickerSpec;
+type PublicDialog_d_CustomEditorSpec = CustomEditorSpec;
+type PublicDialog_d_CustomEditorInit = CustomEditorInit;
+type PublicDialog_d_CustomEditorInitFn = CustomEditorInitFn;
+type PublicDialog_d_DialogData = DialogData;
+type PublicDialog_d_DialogSize = DialogSize;
+type PublicDialog_d_DialogSpec<_0> = DialogSpec<_0>;
+type PublicDialog_d_DialogInstanceApi<_0> = DialogInstanceApi<_0>;
+type PublicDialog_d_DialogFooterButtonSpec = DialogFooterButtonSpec;
+type PublicDialog_d_DialogActionDetails = DialogActionDetails;
+type PublicDialog_d_DialogChangeDetails<_0> = DialogChangeDetails<_0>;
+type PublicDialog_d_DialogTabChangeDetails = DialogTabChangeDetails;
+type PublicDialog_d_DropZoneSpec = DropZoneSpec;
+type PublicDialog_d_GridSpec = GridSpec;
+type PublicDialog_d_HtmlPanelSpec = HtmlPanelSpec;
+type PublicDialog_d_IframeSpec = IframeSpec;
+type PublicDialog_d_ImageToolsSpec = ImageToolsSpec;
+type PublicDialog_d_InputSpec = InputSpec;
+type PublicDialog_d_LabelSpec = LabelSpec;
+type PublicDialog_d_ListBoxSpec = ListBoxSpec;
+type PublicDialog_d_ListBoxItemSpec = ListBoxItemSpec;
+type PublicDialog_d_ListBoxNestedItemSpec = ListBoxNestedItemSpec;
+type PublicDialog_d_ListBoxSingleItemSpec = ListBoxSingleItemSpec;
+type PublicDialog_d_PanelSpec = PanelSpec;
+type PublicDialog_d_SelectBoxSpec = SelectBoxSpec;
+type PublicDialog_d_SelectBoxItemSpec = SelectBoxItemSpec;
+type PublicDialog_d_SizeInputSpec = SizeInputSpec;
+type PublicDialog_d_TableSpec = TableSpec;
+type PublicDialog_d_TabSpec = TabSpec;
+type PublicDialog_d_TabPanelSpec = TabPanelSpec;
+type PublicDialog_d_TextAreaSpec = TextAreaSpec;
+type PublicDialog_d_UrlInputSpec = UrlInputSpec;
+type PublicDialog_d_UrlDialogSpec = UrlDialogSpec;
+type PublicDialog_d_UrlDialogFooterButtonSpec = UrlDialogFooterButtonSpec;
+type PublicDialog_d_UrlDialogInstanceApi = UrlDialogInstanceApi;
+type PublicDialog_d_UrlDialogActionDetails = UrlDialogActionDetails;
+type PublicDialog_d_UrlDialogMessage = UrlDialogMessage;
+declare namespace PublicDialog_d {
+    export { PublicDialog_d_AlertBannerSpec as AlertBannerSpec, PublicDialog_d_BarSpec as BarSpec, PublicDialog_d_BodyComponentSpec as BodyComponentSpec, PublicDialog_d_ButtonSpec as ButtonSpec, PublicDialog_d_CheckboxSpec as CheckboxSpec, PublicDialog_d_CollectionSpec as CollectionSpec, PublicDialog_d_ColorInputSpec as ColorInputSpec, PublicDialog_d_ColorPickerSpec as ColorPickerSpec, PublicDialog_d_CustomEditorSpec as CustomEditorSpec, PublicDialog_d_CustomEditorInit as CustomEditorInit, PublicDialog_d_CustomEditorInitFn as CustomEditorInitFn, PublicDialog_d_DialogData as DialogData, PublicDialog_d_DialogSize as DialogSize, PublicDialog_d_DialogSpec as DialogSpec, PublicDialog_d_DialogInstanceApi as DialogInstanceApi, PublicDialog_d_DialogFooterButtonSpec as DialogFooterButtonSpec, PublicDialog_d_DialogActionDetails as DialogActionDetails, PublicDialog_d_DialogChangeDetails as DialogChangeDetails, PublicDialog_d_DialogTabChangeDetails as DialogTabChangeDetails, PublicDialog_d_DropZoneSpec as DropZoneSpec, PublicDialog_d_GridSpec as GridSpec, PublicDialog_d_HtmlPanelSpec as HtmlPanelSpec, PublicDialog_d_IframeSpec as IframeSpec, PublicDialog_d_ImageToolsSpec as ImageToolsSpec, PublicDialog_d_InputSpec as InputSpec, PublicDialog_d_LabelSpec as LabelSpec, PublicDialog_d_ListBoxSpec as ListBoxSpec, PublicDialog_d_ListBoxItemSpec as ListBoxItemSpec, PublicDialog_d_ListBoxNestedItemSpec as ListBoxNestedItemSpec, PublicDialog_d_ListBoxSingleItemSpec as ListBoxSingleItemSpec, PublicDialog_d_PanelSpec as PanelSpec, PublicDialog_d_SelectBoxSpec as SelectBoxSpec, PublicDialog_d_SelectBoxItemSpec as SelectBoxItemSpec, PublicDialog_d_SizeInputSpec as SizeInputSpec, PublicDialog_d_TableSpec as TableSpec, PublicDialog_d_TabSpec as TabSpec, PublicDialog_d_TabPanelSpec as TabPanelSpec, PublicDialog_d_TextAreaSpec as TextAreaSpec, PublicDialog_d_UrlInputSpec as UrlInputSpec, PublicDialog_d_UrlDialogSpec as UrlDialogSpec, PublicDialog_d_UrlDialogFooterButtonSpec as UrlDialogFooterButtonSpec, PublicDialog_d_UrlDialogInstanceApi as UrlDialogInstanceApi, PublicDialog_d_UrlDialogActionDetails as UrlDialogActionDetails, PublicDialog_d_UrlDialogMessage as UrlDialogMessage, };
+}
+type PublicInlineContent_d_AutocompleterSpec = AutocompleterSpec;
+type PublicInlineContent_d_AutocompleterItemSpec = AutocompleterItemSpec;
+type PublicInlineContent_d_AutocompleterContents = AutocompleterContents;
+type PublicInlineContent_d_AutocompleterInstanceApi = AutocompleterInstanceApi;
+type PublicInlineContent_d_ContextPosition = ContextPosition;
+type PublicInlineContent_d_ContextScope = ContextScope;
+type PublicInlineContent_d_ContextFormSpec = ContextFormSpec;
+type PublicInlineContent_d_ContextFormInstanceApi = ContextFormInstanceApi;
+type PublicInlineContent_d_ContextFormButtonSpec = ContextFormButtonSpec;
+type PublicInlineContent_d_ContextFormButtonInstanceApi = ContextFormButtonInstanceApi;
+type PublicInlineContent_d_ContextFormToggleButtonSpec = ContextFormToggleButtonSpec;
+type PublicInlineContent_d_ContextFormToggleButtonInstanceApi = ContextFormToggleButtonInstanceApi;
+type PublicInlineContent_d_ContextToolbarSpec = ContextToolbarSpec;
+type PublicInlineContent_d_SeparatorItemSpec = SeparatorItemSpec;
+declare namespace PublicInlineContent_d {
+    export { PublicInlineContent_d_AutocompleterSpec as AutocompleterSpec, PublicInlineContent_d_AutocompleterItemSpec as AutocompleterItemSpec, PublicInlineContent_d_AutocompleterContents as AutocompleterContents, PublicInlineContent_d_AutocompleterInstanceApi as AutocompleterInstanceApi, PublicInlineContent_d_ContextPosition as ContextPosition, PublicInlineContent_d_ContextScope as ContextScope, PublicInlineContent_d_ContextFormSpec as ContextFormSpec, PublicInlineContent_d_ContextFormInstanceApi as ContextFormInstanceApi, PublicInlineContent_d_ContextFormButtonSpec as ContextFormButtonSpec, PublicInlineContent_d_ContextFormButtonInstanceApi as ContextFormButtonInstanceApi, PublicInlineContent_d_ContextFormToggleButtonSpec as ContextFormToggleButtonSpec, PublicInlineContent_d_ContextFormToggleButtonInstanceApi as ContextFormToggleButtonInstanceApi, PublicInlineContent_d_ContextToolbarSpec as ContextToolbarSpec, PublicInlineContent_d_SeparatorItemSpec as SeparatorItemSpec, };
+}
+type PublicMenu_d_MenuItemSpec = MenuItemSpec;
+type PublicMenu_d_MenuItemInstanceApi = MenuItemInstanceApi;
+type PublicMenu_d_NestedMenuItemContents = NestedMenuItemContents;
+type PublicMenu_d_NestedMenuItemSpec = NestedMenuItemSpec;
+type PublicMenu_d_NestedMenuItemInstanceApi = NestedMenuItemInstanceApi;
+type PublicMenu_d_FancyMenuItemSpec = FancyMenuItemSpec;
+type PublicMenu_d_ColorSwatchMenuItemSpec = ColorSwatchMenuItemSpec;
+type PublicMenu_d_InsertTableMenuItemSpec = InsertTableMenuItemSpec;
+type PublicMenu_d_ToggleMenuItemSpec = ToggleMenuItemSpec;
+type PublicMenu_d_ToggleMenuItemInstanceApi = ToggleMenuItemInstanceApi;
+type PublicMenu_d_ChoiceMenuItemSpec = ChoiceMenuItemSpec;
+type PublicMenu_d_ChoiceMenuItemInstanceApi = ChoiceMenuItemInstanceApi;
+type PublicMenu_d_SeparatorMenuItemSpec = SeparatorMenuItemSpec;
+type PublicMenu_d_ContextMenuApi = ContextMenuApi;
+type PublicMenu_d_ContextMenuContents = ContextMenuContents;
+type PublicMenu_d_ContextMenuItem = ContextMenuItem;
+type PublicMenu_d_ContextSubMenu = ContextSubMenu;
+type PublicMenu_d_CardMenuItemSpec = CardMenuItemSpec;
+type PublicMenu_d_CardMenuItemInstanceApi = CardMenuItemInstanceApi;
+type PublicMenu_d_CardItemSpec = CardItemSpec;
+type PublicMenu_d_CardContainerSpec = CardContainerSpec;
+type PublicMenu_d_CardImageSpec = CardImageSpec;
+type PublicMenu_d_CardTextSpec = CardTextSpec;
+declare namespace PublicMenu_d {
+    export { PublicMenu_d_MenuItemSpec as MenuItemSpec, PublicMenu_d_MenuItemInstanceApi as MenuItemInstanceApi, PublicMenu_d_NestedMenuItemContents as NestedMenuItemContents, PublicMenu_d_NestedMenuItemSpec as NestedMenuItemSpec, PublicMenu_d_NestedMenuItemInstanceApi as NestedMenuItemInstanceApi, PublicMenu_d_FancyMenuItemSpec as FancyMenuItemSpec, PublicMenu_d_ColorSwatchMenuItemSpec as ColorSwatchMenuItemSpec, PublicMenu_d_InsertTableMenuItemSpec as InsertTableMenuItemSpec, PublicMenu_d_ToggleMenuItemSpec as ToggleMenuItemSpec, PublicMenu_d_ToggleMenuItemInstanceApi as ToggleMenuItemInstanceApi, PublicMenu_d_ChoiceMenuItemSpec as ChoiceMenuItemSpec, PublicMenu_d_ChoiceMenuItemInstanceApi as ChoiceMenuItemInstanceApi, PublicMenu_d_SeparatorMenuItemSpec as SeparatorMenuItemSpec, PublicMenu_d_ContextMenuApi as ContextMenuApi, PublicMenu_d_ContextMenuContents as ContextMenuContents, PublicMenu_d_ContextMenuItem as ContextMenuItem, PublicMenu_d_ContextSubMenu as ContextSubMenu, PublicMenu_d_CardMenuItemSpec as CardMenuItemSpec, PublicMenu_d_CardMenuItemInstanceApi as CardMenuItemInstanceApi, PublicMenu_d_CardItemSpec as CardItemSpec, PublicMenu_d_CardContainerSpec as CardContainerSpec, PublicMenu_d_CardImageSpec as CardImageSpec, PublicMenu_d_CardTextSpec as CardTextSpec, };
+}
+interface SidebarInstanceApi {
+    element: () => HTMLElement;
+}
+interface SidebarSpec {
+    icon?: string;
+    tooltip?: string;
+    onShow?: (api: SidebarInstanceApi) => void;
+    onSetup?: (api: SidebarInstanceApi) => (api: SidebarInstanceApi) => void;
+    onHide?: (api: SidebarInstanceApi) => void;
+}
+type PublicSidebar_d_SidebarSpec = SidebarSpec;
+type PublicSidebar_d_SidebarInstanceApi = SidebarInstanceApi;
+declare namespace PublicSidebar_d {
+    export { PublicSidebar_d_SidebarSpec as SidebarSpec, PublicSidebar_d_SidebarInstanceApi as SidebarInstanceApi, };
+}
+interface ToolbarGroupSetting {
+    name: string;
+    items: string[];
+}
+declare type ToolbarConfig = string | ToolbarGroupSetting[];
+interface GroupToolbarButtonInstanceApi extends BaseToolbarButtonInstanceApi {
+}
+interface GroupToolbarButtonSpec extends BaseToolbarButtonSpec<GroupToolbarButtonInstanceApi> {
+    type?: 'grouptoolbarbutton';
+    items?: ToolbarConfig;
+}
+declare type MenuButtonItemTypes = NestedMenuItemContents;
+declare type SuccessCallback$1 = (menu: string | MenuButtonItemTypes[]) => void;
+interface BaseMenuButtonSpec {
+    text?: string;
+    tooltip?: string;
+    icon?: string;
+    fetch: (success: SuccessCallback$1) => void;
+    onSetup?: (api: BaseMenuButtonInstanceApi) => (api: BaseMenuButtonInstanceApi) => void;
+}
+interface BaseMenuButtonInstanceApi {
+    isDisabled: () => boolean;
+    setDisabled: (state: boolean) => void;
+    isActive: () => boolean;
+    setActive: (state: boolean) => void;
+}
+interface ToolbarMenuButtonSpec extends BaseMenuButtonSpec {
+    type?: 'menubutton';
+    onSetup?: (api: ToolbarMenuButtonInstanceApi) => (api: ToolbarMenuButtonInstanceApi) => void;
+}
+interface ToolbarMenuButtonInstanceApi extends BaseMenuButtonInstanceApi {
+}
+declare type ToolbarSplitButtonItemTypes = ChoiceMenuItemSpec | SeparatorMenuItemSpec;
+declare type SuccessCallback = (menu: ToolbarSplitButtonItemTypes[]) => void;
+declare type SelectPredicate = (value: string) => boolean;
+declare type PresetTypes = 'color' | 'normal' | 'listpreview';
+declare type ColumnTypes = number | 'auto';
+interface ToolbarSplitButtonSpec {
+    type?: 'splitbutton';
+    tooltip?: string;
+    icon?: string;
+    text?: string;
+    select?: SelectPredicate;
+    presets?: PresetTypes;
+    columns?: ColumnTypes;
+    fetch: (success: SuccessCallback) => void;
+    onSetup?: (api: ToolbarSplitButtonInstanceApi) => (api: ToolbarSplitButtonInstanceApi) => void;
+    onAction: (api: ToolbarSplitButtonInstanceApi) => void;
+    onItemAction: (api: ToolbarSplitButtonInstanceApi, value: string) => void;
+}
+interface ToolbarSplitButtonInstanceApi {
+    isDisabled: () => boolean;
+    setDisabled: (state: boolean) => void;
+    setIconFill: (id: string, value: string) => void;
+    setIconStroke: (id: string, value: string) => void;
+    isActive: () => boolean;
+    setActive: (state: boolean) => void;
+}
+type PublicToolbar_d_ToolbarButtonSpec = ToolbarButtonSpec;
+type PublicToolbar_d_ToolbarButtonInstanceApi = ToolbarButtonInstanceApi;
+type PublicToolbar_d_ToolbarSplitButtonSpec = ToolbarSplitButtonSpec;
+type PublicToolbar_d_ToolbarSplitButtonInstanceApi = ToolbarSplitButtonInstanceApi;
+type PublicToolbar_d_ToolbarMenuButtonSpec = ToolbarMenuButtonSpec;
+type PublicToolbar_d_ToolbarMenuButtonInstanceApi = ToolbarMenuButtonInstanceApi;
+type PublicToolbar_d_ToolbarToggleButtonSpec = ToolbarToggleButtonSpec;
+type PublicToolbar_d_ToolbarToggleButtonInstanceApi = ToolbarToggleButtonInstanceApi;
+type PublicToolbar_d_GroupToolbarButtonSpec = GroupToolbarButtonSpec;
+type PublicToolbar_d_GroupToolbarButtonInstanceApi = GroupToolbarButtonInstanceApi;
+declare namespace PublicToolbar_d {
+    export { PublicToolbar_d_ToolbarButtonSpec as ToolbarButtonSpec, PublicToolbar_d_ToolbarButtonInstanceApi as ToolbarButtonInstanceApi, PublicToolbar_d_ToolbarSplitButtonSpec as ToolbarSplitButtonSpec, PublicToolbar_d_ToolbarSplitButtonInstanceApi as ToolbarSplitButtonInstanceApi, PublicToolbar_d_ToolbarMenuButtonSpec as ToolbarMenuButtonSpec, PublicToolbar_d_ToolbarMenuButtonInstanceApi as ToolbarMenuButtonInstanceApi, PublicToolbar_d_ToolbarToggleButtonSpec as ToolbarToggleButtonSpec, PublicToolbar_d_ToolbarToggleButtonInstanceApi as ToolbarToggleButtonInstanceApi, PublicToolbar_d_GroupToolbarButtonSpec as GroupToolbarButtonSpec, PublicToolbar_d_GroupToolbarButtonInstanceApi as GroupToolbarButtonInstanceApi, };
+}
+interface Registry$1 {
+    addButton: (name: string, spec: ToolbarButtonSpec) => void;
+    addGroupToolbarButton: (name: string, spec: GroupToolbarButtonSpec) => void;
+    addToggleButton: (name: string, spec: ToolbarToggleButtonSpec) => void;
+    addMenuButton: (name: string, spec: ToolbarMenuButtonSpec) => void;
+    addSplitButton: (name: string, spec: ToolbarSplitButtonSpec) => void;
+    addMenuItem: (name: string, spec: MenuItemSpec) => void;
+    addNestedMenuItem: (name: string, spec: NestedMenuItemSpec) => void;
+    addToggleMenuItem: (name: string, spec: ToggleMenuItemSpec) => void;
+    addContextMenu: (name: string, spec: ContextMenuApi) => void;
+    addContextToolbar: (name: string, spec: ContextToolbarSpec) => void;
+    addContextForm: (name: string, spec: ContextFormSpec) => void;
+    addIcon: (name: string, svgData: string) => void;
+    addAutocompleter: (name: string, spec: AutocompleterSpec) => void;
+    addSidebar: (name: string, spec: SidebarSpec) => void;
+    getAll: () => {
+        buttons: Record<string, ToolbarButtonSpec | GroupToolbarButtonSpec | ToolbarMenuButtonSpec | ToolbarSplitButtonSpec | ToolbarToggleButtonSpec>;
+        menuItems: Record<string, MenuItemSpec | NestedMenuItemSpec | ToggleMenuItemSpec>;
+        popups: Record<string, AutocompleterSpec>;
+        contextMenus: Record<string, ContextMenuApi>;
+        contextToolbars: Record<string, ContextToolbarSpec | ContextFormSpec>;
+        icons: Record<string, string>;
+        sidebars: Record<string, SidebarSpec>;
+    };
+}
+interface StyleSheetLoaderSettings {
+    maxLoadTime?: number;
+    contentCssCors?: boolean;
+    referrerPolicy?: ReferrerPolicy;
+}
+interface StyleSheetLoader {
+    load: (url: string, success: () => void, failure?: () => void) => void;
+    loadAll: (urls: string[], success: (urls: string[]) => void, failure: (urls: string[]) => void) => void;
+    unload: (url: string) => void;
+    unloadAll: (urls: string[]) => void;
+    _setReferrerPolicy: (referrerPolicy: ReferrerPolicy) => void;
+}
+declare type Registry = Registry$1;
+interface EditorUiApi {
+    show: () => void;
+    hide: () => void;
+    enable: () => void;
+    disable: () => void;
+    isDisabled: () => boolean;
+}
+interface EditorUi extends EditorUiApi {
+    registry: Registry;
+    styleSheetLoader: StyleSheetLoader;
+}
+type Ui_d_Registry = Registry;
+type Ui_d_EditorUiApi = EditorUiApi;
+type Ui_d_EditorUi = EditorUi;
+declare namespace Ui_d {
+    export { Ui_d_Registry as Registry, PublicDialog_d as Dialog, PublicInlineContent_d as InlineContent, PublicMenu_d as Menu, PublicSidebar_d as Sidebar, PublicToolbar_d as Toolbar, Ui_d_EditorUiApi as EditorUiApi, Ui_d_EditorUi as EditorUi, };
+}
+declare type EntityEncoding = 'named' | 'numeric' | 'raw' | 'named,numeric' | 'named+numeric' | 'numeric,named' | 'numeric+named';
+interface ContentLanguage {
+    readonly title: string;
+    readonly code: string;
+    readonly customCode?: string;
+}
+declare type ThemeInitFunc = (editor: Editor, elm: HTMLElement) => {
+    editorContainer: HTMLElement;
+    iframeContainer: HTMLElement;
+    height?: number;
+    iframeHeight?: number;
+    api?: EditorUiApi;
+};
+declare type SetupCallback = (editor: Editor) => void;
+declare type FilePickerCallback = (callback: Function, value: any, meta: Record<string, any>) => void;
+declare type FilePickerValidationStatus = 'valid' | 'unknown' | 'invalid' | 'none';
+declare type FilePickerValidationCallback = (info: {
+    type: string;
+    url: string;
+}, callback: (validation: {
+    status: FilePickerValidationStatus;
+    message: string;
+}) => void) => void;
+declare type URLConverter = (url: string, name: string, elm?: HTMLElement) => string;
+declare type URLConverterCallback = (url: string, node: Node, on_save: boolean, name: string) => void;
+interface ToolbarGroup {
+    name?: string;
+    items: string[];
+}
+declare type ToolbarMode = 'floating' | 'sliding' | 'scrolling' | 'wrap';
+interface BaseEditorSettings {
+    add_form_submit_trigger?: boolean;
+    add_unload_trigger?: boolean;
+    allow_conditional_comments?: boolean;
+    allow_html_data_urls?: boolean;
+    allow_html_in_named_anchor?: boolean;
+    allow_script_urls?: boolean;
+    allow_svg_data_urls?: boolean;
+    allow_unsafe_link_target?: boolean;
+    anchor_bottom?: false | string;
+    anchor_top?: false | string;
+    auto_focus?: string | true;
+    automatic_uploads?: boolean;
+    base_url?: string;
+    block_formats?: string;
+    block_unsupported_drop?: boolean;
+    body_id?: string;
+    body_class?: string;
+    br_in_pre?: boolean;
+    br_newline_selector?: string;
+    browser_spellcheck?: boolean;
+    branding?: boolean;
+    cache_suffix?: string;
+    color_cols?: number;
+    color_map?: string[];
+    content_css?: boolean | string | string[];
+    content_css_cors?: boolean;
+    content_security_policy?: string;
+    content_style?: string;
+    font_css?: string | string[];
+    content_langs?: ContentLanguage[];
+    contextmenu?: string | false;
+    contextmenu_never_use_native?: boolean;
+    convert_fonts_to_spans?: boolean;
+    convert_urls?: boolean;
+    custom_colors?: boolean;
+    custom_elements?: string;
+    custom_ui_selector?: string;
+    custom_undo_redo_levels?: number;
+    directionality?: 'ltr' | 'rtl';
+    doctype?: string;
+    document_base_url?: string;
+    element_format?: 'xhtml' | 'html';
+    elementpath?: boolean;
+    encoding?: string;
+    end_container_on_empty_block?: boolean;
+    entities?: string;
+    entity_encoding?: EntityEncoding;
+    extended_valid_elements?: string;
+    event_root?: string;
+    file_picker_callback?: FilePickerCallback;
+    file_picker_types?: string;
+    file_picker_validator_handler?: FilePickerValidationCallback;
+    fix_list_elements?: boolean;
+    fixed_toolbar_container?: string;
+    fixed_toolbar_container_target?: HTMLElement;
+    font_formats?: string;
+    font_size_classes?: string;
+    font_size_legacy_values?: string;
+    font_size_style_values?: string;
+    fontsize_formats?: string;
+    force_hex_style_colors?: boolean;
+    forced_root_block?: boolean | string;
+    forced_root_block_attrs?: Record<string, string>;
+    formats?: Formats;
+    gecko_spellcheck?: boolean;
+    height?: number | string;
+    hidden_input?: boolean;
+    icons?: string;
+    icons_url?: string;
+    id?: string;
+    iframe_aria_text?: string;
+    images_dataimg_filter?: (imgElm: HTMLImageElement) => boolean;
+    images_file_types?: string;
+    images_replace_blob_uris?: boolean;
+    images_reuse_filename?: boolean;
+    images_upload_base_path?: string;
+    images_upload_credentials?: boolean;
+    images_upload_handler?: UploadHandler;
+    images_upload_url?: string;
+    indent?: boolean;
+    indent_after?: string;
+    indent_before?: string;
+    indent_use_margin?: boolean;
+    indentation?: string;
+    init_instance_callback?: SetupCallback;
+    inline?: boolean;
+    inline_boundaries?: boolean;
+    inline_boundaries_selector?: string;
+    inline_styles?: boolean;
+    invalid_elements?: string;
+    invalid_styles?: string | Record<string, string>;
+    keep_styles?: boolean;
+    language?: string;
+    language_load?: boolean;
+    language_url?: string;
+    lineheight_formats?: string;
+    max_height?: number;
+    max_width?: number;
+    menu?: Record<string, {
+        title: string;
+        items: string;
+    }>;
+    menubar?: boolean | string;
+    min_height?: number;
+    min_width?: number;
+    no_newline_selector?: string;
+    nowrap?: boolean;
+    object_resizing?: boolean | string;
+    padd_empty_with_br?: boolean;
+    placeholder?: string;
+    preserve_cdata?: boolean;
+    preview_styles?: boolean | string;
+    protect?: RegExp[];
+    readonly?: boolean;
+    referrer_policy?: ReferrerPolicy;
+    relative_urls?: boolean;
+    remove_script_host?: boolean;
+    remove_trailing_brs?: boolean;
+    removed_menuitems?: string;
+    resize?: boolean | 'both';
+    resize_img_proportional?: boolean;
+    root_name?: string;
+    schema?: SchemaType;
+    selector?: string;
+    setup?: SetupCallback;
+    skin?: boolean | string;
+    skin_url?: string;
+    statusbar?: boolean;
+    style_formats?: AllowedFormat[];
+    style_formats_autohide?: boolean;
+    style_formats_merge?: boolean;
+    submit_patch?: boolean;
+    suffix?: string;
+    target?: HTMLElement;
+    theme?: string | ThemeInitFunc;
+    theme_url?: string;
+    toolbar?: boolean | string | string[] | Array<ToolbarGroup>;
+    toolbar1?: string;
+    toolbar2?: string;
+    toolbar3?: string;
+    toolbar4?: string;
+    toolbar5?: string;
+    toolbar6?: string;
+    toolbar7?: string;
+    toolbar8?: string;
+    toolbar9?: string;
+    toolbar_mode?: ToolbarMode;
+    typeahead_urls?: boolean;
+    url_converter?: URLConverter;
+    url_converter_scope?: any;
+    urlconverter_callback?: string | URLConverterCallback;
+    valid_children?: string;
+    valid_classes?: string | Record<string, string>;
+    valid_elements?: string;
+    valid_styles?: string | Record<string, string>;
+    verify_html?: boolean;
+    visual?: boolean;
+    visual_anchor_class?: string;
+    visual_table_class?: string;
+    width?: number | string;
+    toolbar_drawer?: false | 'floating' | 'sliding' | 'scrolling';
+    editor_deselector?: string;
+    editor_selector?: string;
+    elements?: string;
+    filepicker_validator_handler?: FilePickerValidationCallback;
+    mode?: 'exact' | 'textareas' | 'specific_textareas';
+    types?: Record<string, any>[];
+    block_elements?: string;
+    boolean_attributes?: string;
+    move_caret_before_on_enter_elements?: string;
+    non_empty_elements?: string;
+    self_closing_elements?: string;
+    short_ended_elements?: string;
+    text_block_elements?: string;
+    text_inline_elements?: string;
+    whitespace_elements?: string;
+    special?: string;
+    disable_nodechange?: boolean;
+    forced_plugins?: string | string[];
+    plugin_base_urls?: Record<string, string>;
+    service_message?: string;
+    validate?: boolean;
+    [key: string]: any;
+}
+interface RawEditorSettings extends BaseEditorSettings {
+    external_plugins?: Record<string, string>;
+    mobile?: RawEditorSettings;
+    plugins?: string | string[];
+}
+interface EditorSettings extends BaseEditorSettings {
+    external_plugins: Record<string, string>;
+    plugins: string;
+}
+interface ParamTypeMap {
+    'hash': Record<string, string>;
+    'string': string;
+    'number': number;
+    'boolean': boolean;
+    'string[]': string[];
+    'array': any[];
+}
+interface BlobInfoImagePair {
+    image: HTMLImageElement;
+    blobInfo: BlobInfo;
+}
+declare class NodeChange {
+    private readonly editor;
+    private lastPath;
+    constructor(editor: Editor);
+    nodeChanged(args?: any): void;
+    private isSameElementPath;
+}
+interface SelectionOverrides {
+    showCaret: (direction: number, node: Element, before: boolean, scrollIntoView?: boolean) => Range | null;
+    showBlockCaretContainer: (blockCaretContainer: Element) => void;
+    hideFakeCaret: () => void;
+    destroy: () => void;
+}
+interface Quirks {
+    refreshContentEditable(): void;
+    isHidden(): boolean;
+}
+declare type DecoratorData = Record<string, any>;
+declare type Decorator = (uid: string, data: DecoratorData) => {
+    attributes?: {};
+    classes?: string[];
+};
+declare type AnnotationListener = (state: boolean, name: string, data?: {
+    uid: string;
+    nodes: any[];
+}) => void;
+declare type AnnotationListenerApi = AnnotationListener;
+interface AnnotatorSettings {
+    decorate: Decorator;
+    persistent?: boolean;
+}
+interface Annotator {
+    register: (name: string, settings: AnnotatorSettings) => void;
+    annotate: (name: string, data: DecoratorData) => void;
+    annotationChanged: (name: string, f: AnnotationListenerApi) => void;
+    remove: (name: string) => void;
+    getAll: (name: string) => Record<string, Element[]>;
+}
+interface GeomRect {
+    readonly x: number;
+    readonly y: number;
+    readonly w: number;
+    readonly h: number;
+}
+interface Rect {
+    inflate: (rect: GeomRect, w: number, h: number) => GeomRect;
+    relativePosition: (rect: GeomRect, targetRect: GeomRect, rel: string) => GeomRect;
+    findBestRelativePosition: (rect: GeomRect, targetRect: GeomRect, constrainRect: GeomRect, rels: string[]) => string | null;
+    intersect: (rect: GeomRect, cropRect: GeomRect) => GeomRect | null;
+    clamp: (rect: GeomRect, clampRect: GeomRect, fixedSize?: boolean) => GeomRect;
+    create: (x: number, y: number, w: number, h: number) => GeomRect;
+    fromClientRect: (clientRect: DOMRect) => GeomRect;
+}
+interface StyleMap {
+    [s: string]: string | number;
+}
+interface StylesSettings {
+    allow_script_urls?: boolean;
+    allow_svg_data_urls?: boolean;
+    url_converter?: URLConverter;
+    url_converter_scope?: any;
+}
+interface Styles {
+    toHex: (color: string) => string;
+    parse: (css: string) => Record<string, string>;
+    serialize: (styles: StyleMap, elementName?: string) => string;
+}
+interface DOMUtilsSettings {
+    schema: Schema;
+    url_converter: URLConverter;
+    url_converter_scope: any;
+    ownEvents: boolean;
+    keep_values: boolean;
+    hex_colors: boolean;
+    update_styles: boolean;
+    root_element: HTMLElement;
+    collect: Function;
+    onSetAttrib: Function;
+    contentCssCors: boolean;
+    referrerPolicy: ReferrerPolicy;
+}
+declare type Target = Node | Window;
+declare type RunArguments<T extends Node = Node> = string | T | Array<string | T>;
+declare type BoundEvent = [
+    Target,
+    string,
+    EventUtilsCallback<any>,
+    any
+];
+declare type Callback<K extends string> = EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>;
+interface DOMUtils {
+    doc: Document;
+    settings: Partial<DOMUtilsSettings>;
+    win: Window;
+    files: Record<string, boolean>;
+    stdMode: boolean;
+    boxModel: boolean;
+    styleSheetLoader: StyleSheetLoader;
+    boundEvents: BoundEvent[];
+    styles: Styles;
+    schema: Schema;
+    events: EventUtils;
+    root: Node;
+    $: DomQueryConstructor;
+    $$: {
+        <T extends Node>(elm: T | T[] | DomQuery<T>): DomQuery<T>;
+        (elm: string): DomQuery<Node>;
+    };
+    isBlock: (node: string | Node) => boolean;
+    clone: (node: Node, deep: boolean) => Node;
+    getRoot: () => HTMLElement;
+    getViewPort: (argWin?: Window) => GeomRect;
+    getRect: (elm: string | HTMLElement) => GeomRect;
+    getSize: (elm: string | HTMLElement) => {
+        w: number;
+        h: number;
+    };
+    getParent: {
+        <K extends keyof HTMLElementTagNameMap>(node: string | Node, selector: K, root?: Node): HTMLElementTagNameMap[K] | null;
+        <T extends HTMLElement>(node: string | Node, selector: (node: HTMLElement) => node is T, root?: Node): T | null;
+        <T extends Element = Element>(node: string | Node, selector?: string | ((node: HTMLElement) => boolean | void), root?: Node): T | null;
+    };
+    getParents: {
+        <K extends keyof HTMLElementTagNameMap>(elm: string | Node, selector: K, root?: Node, collect?: boolean): Array<HTMLElementTagNameMap[K]>;
+        <T extends HTMLElement>(node: string | Node, selector: (node: HTMLElement) => node is T, root?: Node): T[];
+        <T extends Element = Element>(elm: string | Node, selector?: string | ((node: HTMLElement) => boolean | void), root?: Node, collect?: boolean): T[];
+    };
+    get: (elm: string | Node) => HTMLElement | null;
+    getNext: (node: Node, selector: string | ((node: Node) => boolean)) => Node | null;
+    getPrev: (node: Node, selector: string | ((node: Node) => boolean)) => Node | null;
+    select: {
+        <K extends keyof HTMLElementTagNameMap>(selector: K, scope?: string | Node): Array<HTMLElementTagNameMap[K]>;
+        <T extends HTMLElement = HTMLElement>(selector: string, scope?: string | Node): T[];
+    };
+    is: (elm: Node | Node[], selector: string) => boolean;
+    add: (parentElm: RunArguments, name: string | Node, attrs?: Record<string, string | boolean | number>, html?: string | Node, create?: boolean) => HTMLElement;
+    create: {
+        <K extends keyof HTMLElementTagNameMap>(name: K, attrs?: Record<string, string | boolean | number>, html?: string | Node): HTMLElementTagNameMap[K];
+        (name: string, attrs?: Record<string, string | boolean | number>, html?: string | Node): HTMLElement;
+    };
+    createHTML: (name: string, attrs?: Record<string, string>, html?: string) => string;
+    createFragment: (html?: string) => DocumentFragment;
+    remove: <T extends Node>(node: string | T | T[] | DomQuery<T>, keepChildren?: boolean) => T | T[];
+    setStyle: {
+        (elm: string | Node | Node[], name: string, value: string | number | null): void;
+        (elm: string | Node | Node[], styles: StyleMap): void;
+    };
+    getStyle: (elm: string | Node, name: string, computed?: boolean) => string;
+    setStyles: (elm: string | Node | Node[], stylesArg: StyleMap) => void;
+    removeAllAttribs: (e: RunArguments<Element>) => void;
+    setAttrib: (elm: string | Node | Node[], name: string, value: string | boolean | number | null) => void;
+    setAttribs: (elm: string | Node | Node[], attrs: Record<string, string | boolean | number | null>) => void;
+    getAttrib: (elm: string | Node, name: string, defaultVal?: string) => string;
+    getPos: (elm: string | Node, rootElm?: Node) => {
+        x: number;
+        y: number;
+    };
+    parseStyle: (cssText: string) => Record<string, string>;
+    serializeStyle: (stylesArg: StyleMap, name?: string) => string;
+    addStyle: (cssText: string) => void;
+    loadCSS: (url: string) => void;
+    addClass: (elm: string | Node | Node[], cls: string) => void;
+    removeClass: (elm: string | Node | Node[], cls: string) => void;
+    hasClass: (elm: string | Node, cls: string) => boolean;
+    toggleClass: (elm: string | Node | Node[], cls: string, state?: boolean) => void;
+    show: (elm: string | Node | Node[]) => void;
+    hide: (elm: string | Node | Node[]) => void;
+    isHidden: (elm: string | Node) => boolean;
+    uniqueId: (prefix?: string) => string;
+    setHTML: (elm: string | Node | Node[], html: string) => void;
+    getOuterHTML: (elm: string | Node) => string;
+    setOuterHTML: (elm: string | Node | Node[], html: string) => void;
+    decode: (text: string) => string;
+    encode: (text: string) => string;
+    insertAfter: {
+        <T extends Node>(node: T | T[], reference: string | Node): T;
+        <T extends Node>(node: RunArguments<T>, reference: string | Node): false | T;
+    };
+    replace: {
+        <T extends Node>(newElm: Node, oldElm: T | T[], keepChildren?: boolean): T;
+        <T extends Node>(newElm: Node, oldElm: RunArguments<T>, keepChildren?: boolean): false | T;
+    };
+    rename: {
+        <K extends keyof HTMLElementTagNameMap>(elm: Element, name: K): HTMLElementTagNameMap[K];
+        (elm: Element, name: string): Element;
+    };
+    findCommonAncestor: (a: Node, b: Node) => Node;
+    toHex: (rgbVal: string) => string;
+    run<R, T extends Node>(this: DOMUtils, elm: T | T[], func: (node: T) => R, scope?: any): R;
+    run<R, T extends Node>(this: DOMUtils, elm: RunArguments<T>, func: (node: T) => R, scope?: any): false | R;
+    getAttribs: (elm: string | Node) => NamedNodeMap | Attr[];
+    isEmpty: (node: Node, elements?: Record<string, any>) => boolean;
+    createRng: () => Range;
+    nodeIndex: (node: Node, normalized?: boolean) => number;
+    split: {
+        <T extends Node>(parentElm: Node, splitElm: Node, replacementElm: T): T;
+        <T extends Node>(parentElm: Node, splitElm: T): T;
+    };
+    bind: {
+        <K extends string>(target: Target, name: K, func: Callback<K>, scope?: any): Callback<K>;
+        <K extends string>(target: Target[], name: K, func: Callback<K>, scope?: any): Callback<K>[];
+    };
+    unbind: {
+        <K extends string>(target: Target, name?: K, func?: EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>): EventUtils;
+        <K extends string>(target: Target[], name?: K, func?: EventUtilsCallback<MappedEvent<HTMLElementEventMap, K>>): EventUtils[];
+    };
+    fire: (target: Node | Window, name: string, evt?: {}) => EventUtils;
+    getContentEditable: (node: Node) => string | null;
+    getContentEditableParent: (node: Node) => string | null;
+    destroy: () => void;
+    isChildOf: (node: Node, parent: Node) => boolean;
+    dumpRng: (r: Range) => string;
+}
+interface ClientRect {
+    left: number;
+    top: number;
+    bottom: number;
+    right: number;
+    width: number;
+    height: number;
+}
+interface GetSelectionContentArgs extends GetContentArgs {
+    selection?: boolean;
+    contextual?: boolean;
+}
+interface SelectionSetContentArgs extends SetContentArgs {
+    selection?: boolean;
+}
+interface BookmarkManager {
+    getBookmark: (type: number, normalized?: boolean) => Bookmark;
+    moveToBookmark: (bookmark: Bookmark) => void;
+}
+interface ControlSelection {
+    isResizable: (elm: Element) => boolean;
+    showResizeRect: (elm: Element) => void;
+    hideResizeRect: () => void;
+    updateResizeRect: (evt: EditorEvent<any>) => void;
+    destroy: () => void;
+}
+interface ParserArgs {
+    getInner?: boolean | number;
+    forced_root_block?: boolean | string;
+    context?: string;
+    isRootContent?: boolean;
+    format?: string;
+    invalid?: boolean;
+    no_events?: boolean;
+    [key: string]: any;
+}
+declare type ParserFilterCallback = (nodes: AstNode[], name: string, args: ParserArgs) => void;
+interface ParserFilter {
+    name: string;
+    callbacks: ParserFilterCallback[];
+}
+interface DomParserSettings {
+    allow_html_data_urls?: boolean;
+    allow_svg_data_urls?: boolean;
+    allow_conditional_comments?: boolean;
+    allow_html_in_named_anchor?: boolean;
+    allow_script_urls?: boolean;
+    allow_unsafe_link_target?: boolean;
+    convert_fonts_to_spans?: boolean;
+    fix_list_elements?: boolean;
+    font_size_legacy_values?: string;
+    forced_root_block?: boolean | string;
+    forced_root_block_attrs?: Record<string, string>;
+    padd_empty_with_br?: boolean;
+    preserve_cdata?: boolean;
+    remove_trailing_brs?: boolean;
+    root_name?: string;
+    validate?: boolean;
+    inline_styles?: boolean;
+    blob_cache?: BlobCache;
+    document?: Document;
+    images_dataimg_filter?: (img: HTMLImageElement) => boolean;
+}
+interface DomParser {
+    schema: Schema;
+    addAttributeFilter: (name: string, callback: (nodes: AstNode[], name: string, args: ParserArgs) => void) => void;
+    getAttributeFilters: () => ParserFilter[];
+    addNodeFilter: (name: string, callback: (nodes: AstNode[], name: string, args: ParserArgs) => void) => void;
+    getNodeFilters: () => ParserFilter[];
+    filterNode: (node: AstNode) => AstNode;
+    parse: (html: string, args?: ParserArgs) => AstNode;
+}
+interface WriterSettings {
+    element_format?: 'xhtml' | 'html';
+    entities?: string;
+    entity_encoding?: EntityEncoding;
+    indent?: boolean;
+    indent_after?: string;
+    indent_before?: string;
+}
+declare type Attributes = Array<{
+    name: string;
+    value: string;
+}>;
+interface Writer {
+    cdata: (text: string) => void;
+    comment: (text: string) => void;
+    doctype: (text: string) => void;
+    end: (name: string) => void;
+    getContent: () => string;
+    pi: (name: string, text?: string) => void;
+    reset: () => void;
+    start: (name: string, attrs?: Attributes, empty?: boolean) => void;
+    text: (text: string, raw?: boolean) => void;
+}
+interface HtmlSerializerSettings extends WriterSettings {
+    inner?: boolean;
+    validate?: boolean;
+}
+interface HtmlSerializer {
+    serialize: (node: AstNode) => string;
+}
+interface DomSerializerSettings extends DomParserSettings, WriterSettings, SchemaSettings, HtmlSerializerSettings {
+    url_converter?: URLConverter;
+    url_converter_scope?: {};
+}
+interface DomSerializerImpl {
+    schema: Schema;
+    addNodeFilter: (name: string, callback: (nodes: AstNode[], name: string, args: ParserArgs) => void) => void;
+    addAttributeFilter: (name: string, callback: (nodes: AstNode[], name: string, args: ParserArgs) => void) => void;
+    getNodeFilters: () => ParserFilter[];
+    getAttributeFilters: () => ParserFilter[];
+    serialize: {
+        (node: Element, parserArgs: {
+            format: 'tree';
+        } & ParserArgs): AstNode;
+        (node: Element, parserArgs?: ParserArgs): string;
+    };
+    addRules: (rules: string) => void;
+    setRules: (rules: string) => void;
+    addTempAttr: (name: string) => void;
+    getTempAttrs: () => string[];
+}
+interface DomSerializer extends DomSerializerImpl {
+}
+interface EditorSelection {
+    bookmarkManager: BookmarkManager;
+    controlSelection: ControlSelection;
+    dom: DOMUtils;
+    win: Window;
+    serializer: DomSerializer;
+    editor: Editor;
+    collapse: (toStart?: boolean) => void;
+    setCursorLocation: {
+        (node: Node, offset: number): void;
+        (): void;
+    };
+    getContent: {
+        (args: {
+            format: 'tree';
+        } & GetSelectionContentArgs): AstNode;
+        (args?: GetSelectionContentArgs): string;
+    };
+    setContent: (content: string, args?: SelectionSetContentArgs) => void;
+    getBookmark: (type?: number, normalized?: boolean) => Bookmark;
+    moveToBookmark: (bookmark: Bookmark) => void;
+    select: (node: Node, content?: boolean) => Node;
+    isCollapsed: () => boolean;
+    isForward: () => boolean;
+    setNode: (elm: Element) => Element;
+    getNode: () => Element;
+    getSel: () => Selection | null;
+    setRng: (rng: Range, forward?: boolean) => void;
+    getRng: () => Range;
+    getStart: (real?: boolean) => Element;
+    getEnd: (real?: boolean) => Element;
+    getSelectedBlocks: (startElm?: Element, endElm?: Element) => Element[];
+    normalize: () => Range;
+    selectorChanged: (selector: string, callback: (active: boolean, args: {
+        node: Node;
+        selector: String;
+        parents: Element[];
+    }) => void) => EditorSelection;
+    selectorChangedWithUnbind: (selector: string, callback: (active: boolean, args: {
+        node: Node;
+        selector: String;
+        parents: Element[];
+    }) => void) => {
+        unbind: () => void;
+    };
+    getScrollContainer: () => HTMLElement;
+    scrollIntoView: (elm: Element, alignToTop?: boolean) => void;
+    placeCaretAt: (clientX: number, clientY: number) => void;
+    getBoundingClientRect: () => ClientRect | DOMRect;
+    destroy: () => void;
+}
+declare type EditorCommandCallback = (ui: boolean, value: any, args: any) => void;
+declare type EditorCommandsCallback = (command: string, ui: boolean, value: any, args: any) => void;
+interface Commands {
+    state: Record<string, (command: string) => boolean>;
+    exec: Record<string, EditorCommandsCallback>;
+    value: Record<string, (command: string) => string>;
+}
+interface EditorCommandsConstructor {
+    readonly prototype: EditorCommands;
+    new (editor: Editor): EditorCommands;
+}
+declare class EditorCommands {
+    private readonly editor;
+    private selectionBookmark;
+    private commands;
+    constructor(editor: Editor);
+    execCommand(command: string, ui?: boolean, value?: any, args?: any): boolean;
+    queryCommandState(command: string): boolean;
+    queryCommandValue(command: string): string;
+    addCommands<K extends keyof Commands>(commandList: Commands[K], type: K): void;
+    addCommands(commandList: Record<string, EditorCommandsCallback>): void;
+    addCommand(command: string, callback: EditorCommandCallback, scope?: any): void;
+    queryCommandSupported(command: string): boolean;
+    addQueryStateHandler(command: string, callback: () => boolean, scope?: any): void;
+    addQueryValueHandler(command: string, callback: () => string, scope?: any): void;
+    hasCustomCommand(command: string): boolean;
+    private execNativeCommand;
+    private isFormatMatch;
+    private toggleFormat;
+    private storeSelection;
+    private restoreSelection;
+    private setupCommands;
+}
+interface WindowParams {
+    readonly inline?: 'cursor' | 'toolbar';
+    readonly ariaAttrs?: boolean;
+}
+declare type InstanceApi<T> = UrlDialogInstanceApi | DialogInstanceApi<T>;
+interface WindowManagerImpl {
+    open: <T>(config: DialogSpec<T>, params: WindowParams, closeWindow: (dialog: DialogInstanceApi<T>) => void) => DialogInstanceApi<T>;
+    openUrl: (config: UrlDialogSpec, closeWindow: (dialog: UrlDialogInstanceApi) => void) => UrlDialogInstanceApi;
+    alert: (message: string, callback: () => void) => void;
+    confirm: (message: string, callback: (state: boolean) => void) => void;
+    close: (dialog: InstanceApi<any>) => void;
+}
+interface WindowManager {
+    open: <T>(config: DialogSpec<T>, params?: WindowParams) => DialogInstanceApi<T>;
+    openUrl: (config: UrlDialogSpec) => UrlDialogInstanceApi;
+    alert: (message: string, callback?: () => void, scope?: any) => void;
+    confirm: (message: string, callback?: (state: boolean) => void, scope?: any) => void;
+    close: () => void;
+}
+interface ExecCommandEvent {
+    command: string;
+    ui?: boolean;
+    value?: any;
+}
+declare type GetContentEvent = GetContentArgs & {
+    source_view?: boolean;
+    selection?: boolean;
+    save?: boolean;
+};
+declare type SetContentEvent = SetContentArgs & {
+    source_view?: boolean;
+    paste?: boolean;
+    selection?: boolean;
+};
+interface NewBlockEvent {
+    newBlock: Element;
+}
+interface NodeChangeEvent {
+    element: Element;
+    parents: Node[];
+    selectionChange?: boolean;
+    initial?: boolean;
+}
+interface FormatEvent {
+    format: string;
+    vars?: FormatVars;
+    node?: Node | RangeLikeObject;
+}
+interface ObjectResizeEvent {
+    target: HTMLElement;
+    width: number;
+    height: number;
+    origin: string;
+}
+interface ObjectSelectedEvent {
+    target: Node;
+    targetClone?: Node;
+}
+interface ScrollIntoViewEvent {
+    elm: HTMLElement;
+    alignToTop: boolean;
+}
+interface SetSelectionRangeEvent {
+    range: Range;
+    forward: boolean;
+}
+interface ShowCaretEvent {
+    target: Node;
+    direction: number;
+    before: boolean;
+}
+interface SwitchModeEvent {
+    mode: string;
+}
+interface AddUndoEvent {
+    level: UndoLevel;
+    lastLevel: UndoLevel;
+    originalEvent: Event;
+}
+interface UndoRedoEvent {
+    level: UndoLevel;
+}
+interface WindowEvent<T extends DialogData> {
+    dialog: InstanceApi<T>;
+}
+interface ProgressStateEvent {
+    state: boolean;
+    time?: number;
+}
+interface AfterProgressStateEvent {
+    state: boolean;
+}
+interface PlaceholderToggleEvent {
+    state: boolean;
+}
+interface LoadErrorEvent {
+    message: string;
+}
+interface PreProcessEvent extends ParserArgs {
+    node: Element;
+}
+interface PostProcessEvent extends ParserArgs {
+    content: string;
+}
+interface EditorEventMap extends Omit<NativeEventMap, 'blur' | 'focus'> {
+    'activate': {
+        relatedTarget: Editor;
+    };
+    'deactivate': {
+        relatedTarget: Editor;
+    };
+    'focus': {
+        blurredEditor: Editor;
+    };
+    'blur': {
+        focusedEditor: Editor;
+    };
+    'resize': UIEvent;
+    'scroll': UIEvent;
+    'detach': {};
+    'remove': {};
+    'init': {};
+    'ScrollIntoView': ScrollIntoViewEvent;
+    'AfterScrollIntoView': ScrollIntoViewEvent;
+    'ObjectResized': ObjectResizeEvent;
+    'ObjectResizeStart': ObjectResizeEvent;
+    'SwitchMode': SwitchModeEvent;
+    'ScrollWindow': UIEvent;
+    'ResizeWindow': UIEvent;
+    'SkinLoaded': {};
+    'SkinLoadError': LoadErrorEvent;
+    'PluginLoadError': LoadErrorEvent;
+    'IconsLoadError': LoadErrorEvent;
+    'LanguageLoadError': LoadErrorEvent;
+    'BeforeExecCommand': ExecCommandEvent;
+    'ExecCommand': ExecCommandEvent;
+    'NodeChange': NodeChangeEvent;
+    'FormatApply': FormatEvent;
+    'FormatRemove': FormatEvent;
+    'ShowCaret': ShowCaretEvent;
+    'SelectionChange': {};
+    'ObjectSelected': ObjectSelectedEvent;
+    'BeforeObjectSelected': ObjectSelectedEvent;
+    'GetSelectionRange': {
+        range: Range;
+    };
+    'SetSelectionRange': SetSelectionRangeEvent;
+    'AfterSetSelectionRange': SetSelectionRangeEvent;
+    'BeforeGetContent': GetContentEvent;
+    'GetContent': GetContentEvent;
+    'BeforeSetContent': SetContentEvent;
+    'SetContent': SetContentEvent;
+    'LoadContent': {};
+    'PreviewFormats': {};
+    'AfterPreviewFormats': {};
+    'ScriptsLoaded': {};
+    'PreInit': {};
+    'PostRender': {};
+    'NewBlock': NewBlockEvent;
+    'ClearUndos': {};
+    'TypingUndo': {};
+    'Redo': UndoRedoEvent;
+    'Undo': UndoRedoEvent;
+    'BeforeAddUndo': AddUndoEvent;
+    'AddUndo': AddUndoEvent;
+    'CloseWindow': WindowEvent<any>;
+    'OpenWindow': WindowEvent<any>;
+    'ProgressState': ProgressStateEvent;
+    'AfterProgressState': AfterProgressStateEvent;
+    'PlaceholderToggle': PlaceholderToggleEvent;
+    'tap': TouchEvent;
+    'longpress': TouchEvent;
+    'longpresscancel': {};
+    'PreProcess': PreProcessEvent;
+    'PostProcess': PostProcessEvent;
+}
+interface EditorManagerEventMap {
+    'AddEditor': {
+        editor: Editor;
+    };
+    'RemoveEditor': {
+        editor: Editor;
+    };
+    'BeforeUnload': {
+        returnValue: any;
+    };
+}
+type EventTypes_d_ExecCommandEvent = ExecCommandEvent;
+type EventTypes_d_GetContentEvent = GetContentEvent;
+type EventTypes_d_SetContentEvent = SetContentEvent;
+type EventTypes_d_NewBlockEvent = NewBlockEvent;
+type EventTypes_d_NodeChangeEvent = NodeChangeEvent;
+type EventTypes_d_FormatEvent = FormatEvent;
+type EventTypes_d_ObjectResizeEvent = ObjectResizeEvent;
+type EventTypes_d_ObjectSelectedEvent = ObjectSelectedEvent;
+type EventTypes_d_ScrollIntoViewEvent = ScrollIntoViewEvent;
+type EventTypes_d_SetSelectionRangeEvent = SetSelectionRangeEvent;
+type EventTypes_d_ShowCaretEvent = ShowCaretEvent;
+type EventTypes_d_SwitchModeEvent = SwitchModeEvent;
+type EventTypes_d_AddUndoEvent = AddUndoEvent;
+type EventTypes_d_UndoRedoEvent = UndoRedoEvent;
+type EventTypes_d_WindowEvent<_0> = WindowEvent<_0>;
+type EventTypes_d_ProgressStateEvent = ProgressStateEvent;
+type EventTypes_d_AfterProgressStateEvent = AfterProgressStateEvent;
+type EventTypes_d_PlaceholderToggleEvent = PlaceholderToggleEvent;
+type EventTypes_d_LoadErrorEvent = LoadErrorEvent;
+type EventTypes_d_PreProcessEvent = PreProcessEvent;
+type EventTypes_d_PostProcessEvent = PostProcessEvent;
+type EventTypes_d_EditorEventMap = EditorEventMap;
+type EventTypes_d_EditorManagerEventMap = EditorManagerEventMap;
+declare namespace EventTypes_d {
+    export { EventTypes_d_ExecCommandEvent as ExecCommandEvent, EventTypes_d_GetContentEvent as GetContentEvent, EventTypes_d_SetContentEvent as SetContentEvent, EventTypes_d_NewBlockEvent as NewBlockEvent, EventTypes_d_NodeChangeEvent as NodeChangeEvent, EventTypes_d_FormatEvent as FormatEvent, EventTypes_d_ObjectResizeEvent as ObjectResizeEvent, EventTypes_d_ObjectSelectedEvent as ObjectSelectedEvent, EventTypes_d_ScrollIntoViewEvent as ScrollIntoViewEvent, EventTypes_d_SetSelectionRangeEvent as SetSelectionRangeEvent, EventTypes_d_ShowCaretEvent as ShowCaretEvent, EventTypes_d_SwitchModeEvent as SwitchModeEvent, EventTypes_d_AddUndoEvent as AddUndoEvent, EventTypes_d_UndoRedoEvent as UndoRedoEvent, EventTypes_d_WindowEvent as WindowEvent, EventTypes_d_ProgressStateEvent as ProgressStateEvent, EventTypes_d_AfterProgressStateEvent as AfterProgressStateEvent, EventTypes_d_PlaceholderToggleEvent as PlaceholderToggleEvent, EventTypes_d_LoadErrorEvent as LoadErrorEvent, EventTypes_d_PreProcessEvent as PreProcessEvent, EventTypes_d_PostProcessEvent as PostProcessEvent, EventTypes_d_EditorEventMap as EditorEventMap, EventTypes_d_EditorManagerEventMap as EditorManagerEventMap, };
+}
+interface RawString {
+    raw: string;
+}
+declare type Primitive = string | number | boolean | Record<string | number, any> | Function;
+declare type TokenisedString = [
+    string,
+    ...Primitive[]
+];
+declare type Untranslated = Primitive | TokenisedString | RawString;
+declare type TranslatedString = string;
+interface I18n {
+    getData: () => Record<string, Record<string, string>>;
+    setCode: (newCode: string) => void;
+    getCode: () => string;
+    add: (code: string, items: Record<string, string>) => void;
+    translate: (text: Untranslated) => TranslatedString;
+    isRtl: () => boolean;
+    hasCode: (code: string) => boolean;
+}
+interface Observable<T> {
+    fire<K extends string, U extends MappedEvent<T, K>>(name: K, args?: U, bubble?: boolean): EditorEvent<U>;
+    on<K extends string>(name: K, callback: (event: EditorEvent<MappedEvent<T, K>>) => void, prepend?: boolean): EventDispatcher<T>;
+    off<K extends string>(name?: K, callback?: (event: EditorEvent<MappedEvent<T, K>>) => void): EventDispatcher<T>;
+    once<K extends string>(name: K, callback: (event: EditorEvent<MappedEvent<T, K>>) => void): EventDispatcher<T>;
+    hasEventListeners(name: string): boolean;
+}
+interface URISettings {
+    base_uri?: URI;
+}
+interface URIConstructor {
+    readonly prototype: URI;
+    new (url: string, settings?: URISettings): URI;
+    getDocumentBaseUrl: (loc: {
+        protocol: string;
+        host?: string;
+        href?: string;
+        pathname?: string;
+    }) => string;
+    parseDataUri: (uri: string) => {
+        type: string;
+        data: string;
+    };
+}
+declare class URI {
+    static parseDataUri(uri: string): {
+        type: string;
+        data: string;
+    };
+    static getDocumentBaseUrl(loc: {
+        protocol: string;
+        host?: string;
+        href?: string;
+        pathname?: string;
+    }): string;
+    source: string;
+    protocol: string;
+    authority: string;
+    userInfo: string;
+    user: string;
+    password: string;
+    host: string;
+    port: string;
+    relative: string;
+    path: string;
+    directory: string;
+    file: string;
+    query: string;
+    anchor: string;
+    settings: URISettings;
+    constructor(url: string, settings?: URISettings);
+    setPath(path: string): void;
+    toRelative(uri: string): string;
+    toAbsolute(uri: string, noHost?: boolean): string;
+    isSameOrigin(uri: URI): boolean;
+    toRelPath(base: string, path: string): string;
+    toAbsPath(base: string, path: string): string;
+    getURI(noProtoHost?: boolean): string;
+}
+interface EditorManager extends Observable<EditorManagerEventMap> {
+    $: DomQueryConstructor;
+    defaultSettings: RawEditorSettings;
+    majorVersion: string;
+    minorVersion: string;
+    releaseDate: string;
+    editors: Editor[];
+    activeEditor: Editor;
+    focusedEditor: Editor;
+    settings: RawEditorSettings;
+    baseURI: URI;
+    baseURL: string;
+    documentBaseURL: string;
+    i18n: I18n;
+    suffix: string;
+    add(this: EditorManager, editor: Editor): Editor;
+    addI18n: (code: string, item: Record<string, string>) => void;
+    createEditor(this: EditorManager, id: string, settings: RawEditorSettings): Editor;
+    execCommand(this: EditorManager, cmd: string, ui: boolean, value: any): boolean;
+    get(this: EditorManager): Editor[];
+    get(this: EditorManager, id: number | string): Editor;
+    init(this: EditorManager, settings: RawEditorSettings): Promise<Editor[]>;
+    overrideDefaults(this: EditorManager, defaultSettings: Partial<RawEditorSettings>): void;
+    remove(this: EditorManager): void;
+    remove(this: EditorManager, selector: string | Editor): Editor | void;
+    setActive(this: EditorManager, editor: Editor): void;
+    setup(this: EditorManager): void;
+    translate: (text: Untranslated) => TranslatedString;
+    triggerSave: () => void;
+    _setBaseUrl(this: EditorManager, baseUrl: string): void;
+}
+interface EditorObservable extends Observable<EditorEventMap> {
+    bindPendingEventDelegates(this: Editor): void;
+    toggleNativeEvent(this: Editor, name: string, state: boolean): any;
+    unbindAllNativeEvents(this: Editor): void;
+}
+interface UploadResult$1 {
+    element: HTMLImageElement;
+    status: boolean;
+    blobInfo: BlobInfo;
+    uploadUri: string;
+}
+declare type UploadCallback = (results: UploadResult$1[]) => void;
+interface EditorUpload {
+    blobCache: BlobCache;
+    addFilter: (filter: (img: HTMLImageElement) => boolean) => void;
+    uploadImages: (callback?: UploadCallback) => Promise<UploadResult$1[]>;
+    uploadImagesAuto: (callback?: UploadCallback) => void | Promise<UploadResult$1[]>;
+    scanForImages: () => Promise<BlobInfoImagePair[]>;
+    destroy: () => void;
+}
+declare type FormatChangeCallback = (state: boolean, data: {
+    node: Node;
+    format: string;
+    parents: any;
+}) => void;
+interface FormatRegistry {
+    get: {
+        (name: string): Format[] | undefined;
+        (): Record<string, Format[]>;
+    };
+    has: (name: string) => boolean;
+    register: (name: string | Formats, format?: Format[] | Format) => void;
+    unregister: (name: string) => Formats;
+}
+interface Formatter extends FormatRegistry {
+    apply: (name: string, vars?: FormatVars, node?: Node | RangeLikeObject) => void;
+    remove: (name: string, vars?: FormatVars, node?: Node | Range, similar?: boolean) => void;
+    toggle: (name: string, vars?: FormatVars, node?: Node) => void;
+    match: (name: string, vars?: FormatVars, node?: Node, similar?: boolean) => boolean;
+    closest: (names: string[]) => string | null;
+    matchAll: (names: string[], vars?: FormatVars) => string[];
+    matchNode: (node: Node, name: string, vars?: FormatVars, similar?: boolean) => Format | undefined;
+    canApply: (name: string) => boolean;
+    formatChanged: (names: string, callback: FormatChangeCallback, similar?: boolean, vars?: FormatVars) => {
+        unbind: () => void;
+    };
+    getCssText: (format: string | Format) => string;
+}
+interface EditorMode {
+    isReadOnly: () => boolean;
+    set: (mode: string) => void;
+    get: () => string;
+    register: (mode: string, api: EditorModeApi) => void;
+}
+interface EditorModeApi {
+    activate: () => void;
+    deactivate: () => void;
+    editorReadOnly: boolean;
+}
+interface Plugin {
+    getMetadata?: () => {
+        name: string;
+        url: string;
+    };
+    [key: string]: any;
+}
+declare type PluginManager = AddOnManager<Plugin>;
+interface ShortcutsConstructor {
+    readonly prototype: Shortcuts;
+    new (editor: Editor): Shortcuts;
+}
+declare type CommandFunc = string | [
+    string,
+    boolean,
+    any
+] | (() => void);
+declare class Shortcuts {
+    private readonly editor;
+    private readonly shortcuts;
+    private pendingPatterns;
+    constructor(editor: Editor);
+    add(pattern: string, desc: string, cmdFunc: CommandFunc, scope?: any): boolean;
+    remove(pattern: string): boolean;
+    private normalizeCommandFunc;
+    private createShortcut;
+    private hasModifier;
+    private isFunctionKey;
+    private matchShortcut;
+    private executeShortcutAction;
+}
+interface Theme {
+    ui?: any;
+    inline?: any;
+    execCommand?: (command: string, ui?: boolean, value?: any) => boolean;
+    destroy?: () => void;
+    init?: (editor: Editor, url: string, $: DomQueryConstructor) => void;
+    renderUI?: () => {
+        iframeContainer?: HTMLIFrameElement;
+        editorContainer: HTMLElement;
+        api?: Partial<EditorUiApi>;
+    };
+    getNotificationManagerImpl?: () => NotificationManagerImpl;
+    getWindowManagerImpl?: () => WindowManagerImpl;
+}
+declare type ThemeManager = AddOnManager<Theme>;
+interface EditorConstructor {
+    readonly prototype: Editor;
+    new (id: string, settings: RawEditorSettings, editorManager: EditorManager): Editor;
+}
+declare class Editor implements EditorObservable {
+    documentBaseUrl: string;
+    baseUri: URI;
+    settings: EditorSettings;
+    id: string;
+    plugins: Record<string, Plugin>;
+    documentBaseURI: URI;
+    baseURI: URI;
+    contentCSS: string[];
+    contentStyles: string[];
+    ui: EditorUi;
+    mode: EditorMode;
+    setMode: (mode: string) => void;
+    $: DomQueryConstructor;
+    shortcuts: Shortcuts;
+    loadedCSS: Record<string, any>;
+    editorCommands: EditorCommands;
+    suffix: string;
+    editorManager: EditorManager;
+    inline: boolean;
+    isNotDirty: boolean;
+    callbackLookup: any;
+    _nodeChangeDispatcher: NodeChange;
+    editorUpload: EditorUpload;
+    annotator: Annotator;
+    bodyElement: HTMLElement;
+    bookmark: any;
+    composing: boolean;
+    container: HTMLElement;
+    contentAreaContainer: HTMLElement;
+    contentDocument: Document;
+    contentWindow: Window;
+    delegates: Record<string, (event: any) => void>;
+    destroyed: boolean;
+    dom: DOMUtils;
+    editorContainer: HTMLElement;
+    eventRoot?: Element;
+    formatter: Formatter;
+    formElement: HTMLElement;
+    formEventDelegate: (e: Event) => void;
+    hasHiddenInput: boolean;
+    hasVisual: boolean;
+    hidden: boolean;
+    iframeElement: HTMLIFrameElement | null;
+    iframeHTML: string;
+    initialized: boolean;
+    notificationManager: NotificationManager;
+    orgDisplay: string;
+    orgVisibility: string;
+    parser: DomParser;
+    quirks: Quirks;
+    readonly: boolean;
+    removed: boolean;
+    schema: Schema;
+    selection: EditorSelection;
+    serializer: DomSerializer;
+    startContent: string;
+    targetElm: HTMLElement;
+    theme: Theme;
+    undoManager: UndoManager;
+    validate: boolean;
+    windowManager: WindowManager;
+    _beforeUnload: () => void;
+    _eventDispatcher: EventDispatcher<NativeEventMap>;
+    _mceOldSubmit: any;
+    _pendingNativeEvents: string[];
+    _selectionOverrides: SelectionOverrides;
+    _skinLoaded: boolean;
+    bindPendingEventDelegates: EditorObservable['bindPendingEventDelegates'];
+    toggleNativeEvent: EditorObservable['toggleNativeEvent'];
+    unbindAllNativeEvents: EditorObservable['unbindAllNativeEvents'];
+    fire: EditorObservable['fire'];
+    on: EditorObservable['on'];
+    off: EditorObservable['off'];
+    once: EditorObservable['once'];
+    hasEventListeners: EditorObservable['hasEventListeners'];
+    constructor(id: string, settings: RawEditorSettings, editorManager: EditorManager);
+    render(): void;
+    focus(skipFocus?: boolean): void;
+    hasFocus(): boolean;
+    execCallback(name: string, ...x: any[]): any;
+    translate(text: Untranslated): TranslatedString;
+    getParam<K extends keyof ParamTypeMap>(name: string, defaultVal: ParamTypeMap[K], type: K): ParamTypeMap[K];
+    getParam<K extends keyof EditorSettings>(name: K, defaultVal?: EditorSettings[K], type?: string): EditorSettings[K];
+    getParam<T>(name: string, defaultVal: T, type?: string): T;
+    hasPlugin(name: string, loaded?: boolean): boolean;
+    nodeChanged(args?: any): void;
+    addCommand(name: string, callback: EditorCommandCallback, scope?: object): void;
+    addQueryStateHandler(name: string, callback: () => boolean, scope?: any): void;
+    addQueryValueHandler(name: string, callback: () => string, scope?: any): void;
+    addShortcut(pattern: string, desc: string, cmdFunc: string | [
+        string,
+        boolean,
+        any
+    ] | (() => void), scope?: any): void;
+    execCommand(cmd: string, ui?: boolean, value?: any, args?: any): boolean;
+    queryCommandState(cmd: string): boolean;
+    queryCommandValue(cmd: string): string;
+    queryCommandSupported(cmd: string): boolean;
+    show(): void;
+    hide(): void;
+    isHidden(): boolean;
+    setProgressState(state: boolean, time?: number): void;
+    load(args?: any): string;
+    save(args?: any): string;
+    setContent(content: string, args?: SetContentArgs): string;
+    setContent(content: AstNode, args?: SetContentArgs): AstNode;
+    setContent(content: Content, args?: SetContentArgs): Content;
+    getContent(args: {
+        format: 'tree';
+    } & GetContentArgs): AstNode;
+    getContent(args?: GetContentArgs): string;
+    insertContent(content: string, args?: any): void;
+    resetContent(initialContent?: string): void;
+    isDirty(): boolean;
+    setDirty(state: boolean): void;
+    getContainer(): HTMLElement;
+    getContentAreaContainer(): HTMLElement;
+    getElement(): HTMLElement;
+    getWin(): Window;
+    getDoc(): Document;
+    getBody(): HTMLElement;
+    convertURL(url: string, name: string, elm?: any): string;
+    addVisual(elm?: HTMLElement): void;
+    remove(): void;
+    destroy(automatic?: boolean): void;
+    uploadImages(callback?: UploadCallback): Promise<UploadResult$1[]>;
+    _scanForImages(): Promise<BlobInfoImagePair[]>;
+    addButton(): void;
+    addSidebar(): void;
+    addMenuItem(): void;
+    addContextToolbar(): void;
+}
+interface UrlObject {
+    prefix: string;
+    resource: string;
+    suffix: string;
+}
+declare type WaitState = 'added' | 'loaded';
+declare type AddOnCallback<T> = (editor: Editor, url: string, $?: DomQueryConstructor) => void | T;
+declare type AddOnConstructor<T> = new (editor: Editor, url: string, $?: DomQueryConstructor) => T;
+interface AddOnManager<T> {
+    items: AddOnConstructor<T>[];
+    urls: Record<string, string>;
+    lookup: Record<string, {
+        instance: AddOnConstructor<T>;
+        dependencies?: string[];
+    }>;
+    _listeners: {
+        name: string;
+        state: WaitState;
+        callback: () => void;
+    }[];
+    get: (name: string) => AddOnConstructor<T>;
+    dependencies: (name: string) => string[];
+    requireLangPack: (name: string, languages: string) => void;
+    add: (id: string, addOn: AddOnCallback<T>, dependencies?: string[]) => AddOnConstructor<T>;
+    remove: (name: string) => void;
+    createUrl: (baseUrl: UrlObject, dep: string | UrlObject) => UrlObject;
+    addComponents: (pluginName: string, scripts: string[]) => void;
+    load: (name: string, addOnUrl: string | UrlObject, success?: () => void, scope?: any, failure?: () => void) => void;
+    waitFor: (name: string, callback: () => void, state?: WaitState) => void;
+}
+interface RangeUtils {
+    walk: (rng: Range, callback: (nodes: Node[]) => void) => void;
+    split: (rng: Range) => RangeLikeObject;
+    normalize: (rng: Range) => boolean;
+}
+interface ScriptLoaderSettings {
+    referrerPolicy?: ReferrerPolicy;
+}
+interface ScriptLoaderConstructor {
+    readonly prototype: ScriptLoader;
+    new (): ScriptLoader;
+    ScriptLoader: ScriptLoader;
+}
+declare class ScriptLoader {
+    static ScriptLoader: ScriptLoader;
+    private settings;
+    private states;
+    private queue;
+    private scriptLoadedCallbacks;
+    private queueLoadedCallbacks;
+    private loading;
+    constructor(settings?: ScriptLoaderSettings);
+    _setReferrerPolicy(referrerPolicy: ReferrerPolicy): void;
+    loadScript(url: string, success?: () => void, failure?: () => void): void;
+    isDone(url: string): boolean;
+    markDone(url: string): void;
+    add(url: string, success?: () => void, scope?: any, failure?: () => void): void;
+    load(url: string, success?: () => void, scope?: any, failure?: () => void): void;
+    remove(url: string): void;
+    loadQueue(success?: () => void, scope?: any, failure?: (urls: string[]) => void): void;
+    loadScripts(scripts: string[], success?: () => void, scope?: any, failure?: (urls: string[]) => void): void;
+}
+declare type TextProcessCallback = (node: Text, offset: number, text: string) => number;
+interface Spot {
+    container: Text;
+    offset: number;
+}
+interface TextSeeker {
+    backwards: (node: Node, offset: number, process: TextProcessCallback, root?: Node) => Spot | null;
+    forwards: (node: Node, offset: number, process: TextProcessCallback, root?: Node) => Spot | null;
+}
+interface DomTreeWalkerConstructor {
+    readonly prototype: DomTreeWalker;
+    new (startNode: Node, rootNode: Node): DomTreeWalker;
+}
+declare class DomTreeWalker {
+    private readonly rootNode;
+    private node;
+    constructor(startNode: Node, rootNode: Node);
+    current(): Node;
+    next(shallow?: boolean): Node;
+    prev(shallow?: boolean): Node;
+    prev2(shallow?: boolean): Node;
+    private findSibling;
+    private findPreviousNode;
+}
+interface Version {
+    major: number;
+    minor: number;
+}
+interface Env {
+    opera: boolean;
+    webkit: boolean;
+    ie: false | number;
+    gecko: boolean;
+    mac: boolean;
+    iOS: boolean;
+    android: boolean;
+    contentEditable: boolean;
+    transparentSrc: string;
+    caretAfter: boolean;
+    range: boolean;
+    documentMode: number;
+    fileApi: boolean;
+    ceFalse: boolean;
+    cacheSuffix: any;
+    container: any;
+    experimentalShadowDom: boolean;
+    canHaveCSP: boolean;
+    desktop: boolean;
+    windowsPhone: boolean;
+    browser: {
+        current: string | undefined;
+        version: Version;
+        isEdge: () => boolean;
+        isChrome: () => boolean;
+        isIE: () => boolean;
+        isOpera: () => boolean;
+        isFirefox: () => boolean;
+        isSafari: () => boolean;
+    };
+    os: {
+        current: string | undefined;
+        version: Version;
+        isWindows: () => boolean;
+        isiOS: () => boolean;
+        isAndroid: () => boolean;
+        isOSX: () => boolean;
+        isLinux: () => boolean;
+        isSolaris: () => boolean;
+        isFreeBSD: () => boolean;
+        isChromeOS: () => boolean;
+    };
+    deviceType: {
+        isiPad: () => boolean;
+        isiPhone: () => boolean;
+        isTablet: () => boolean;
+        isPhone: () => boolean;
+        isTouch: () => boolean;
+        isWebView: () => boolean;
+        isDesktop: () => boolean;
+    };
+}
+interface FocusManager {
+    isEditorUIElement: (elm: Element) => boolean;
+}
+interface EntitiesMap {
+    [name: string]: string;
+}
+interface Entities {
+    encodeRaw: (text: string, attr?: boolean) => string;
+    encodeAllRaw: (text: string) => string;
+    encodeNumeric: (text: string, attr?: boolean) => string;
+    encodeNamed: (text: string, attr?: boolean, entities?: EntitiesMap) => string;
+    getEncodeFunc: (name: string, entities?: EntitiesMap | string) => (text: string, attr?: boolean) => string;
+    decode: (text: string) => string;
+}
+declare type AttrList = Array<{
+    name: string;
+    value: string;
+}> & {
+    map: Record<string, string>;
+};
+interface SaxParserSettings {
+    allow_conditional_comments?: boolean;
+    allow_html_data_urls?: boolean;
+    allow_script_urls?: boolean;
+    allow_svg_data_urls?: boolean;
+    fix_self_closing?: boolean;
+    preserve_cdata?: boolean;
+    remove_internals?: boolean;
+    self_closing_elements?: Record<string, {}>;
+    validate?: boolean;
+    document?: Document;
+    cdata?: (text: string) => void;
+    comment?: (text: string) => void;
+    doctype?: (text: string) => void;
+    end?: (name: string) => void;
+    pi?: (name: string, text: string) => void;
+    start?: (name: string, attrs: AttrList, empty: boolean) => void;
+    text?: (text: string, raw?: boolean) => void;
+}
+declare type ParserFormat = 'html' | 'xhtml' | 'xml';
+interface SaxParser {
+    parse: (html: string, format?: ParserFormat) => void;
+}
+interface IconPack {
+    icons: Record<string, string>;
+}
+interface IconManager {
+    add: (id: string, iconPack: IconPack) => void;
+    get: (id: string) => IconPack;
+    has: (id: string) => boolean;
+}
+interface Resource {
+    load: <T = any>(id: string, url: string) => Promise<T>;
+    add: (id: string, data: any) => void;
+}
+declare type WithSubItems<T, K extends keyof T> = T[K] extends Array<any> ? (T & T[K][number]) : T;
+interface Props<A extends any[] = any[]> {
+    Mixins?: Array<Record<string, any>>;
+    Methods?: string;
+    Properties?: string;
+    Statics?: Record<string, any>;
+    Defaults?: Record<string, any>;
+    init?: (...args: A) => void;
+}
+declare type ExtendedClass<T extends Props<A>, A extends any[]> = WithSubItems<T, 'Mixins'>;
+interface ExtendedClassConstructor<T extends Props<A>, A extends any[] = any[]> extends Class {
+    readonly prototype: ExtendedClass<T, A>;
+    new (...args: A): ExtendedClass<T, A>;
+    [key: string]: T['Statics'];
+}
+interface Class {
+    extend<T extends Props<A>, A extends any[] = any[]>(props: T): ExtendedClassConstructor<T, A>;
+}
+interface RGB {
+    r: number;
+    g: number;
+    b: number;
+}
+interface HSV {
+    h: number;
+    s: number;
+    v: number;
+}
+declare type ColorConstructor = new (value?: string | RGB | HSV) => Color;
+interface Color {
+    toRgb: () => RGB;
+    toHsv: () => HSV;
+    toHex: () => string;
+    parse: (value: string | RGB | HSV) => Color;
+}
+interface DebounceFunc<T extends (...args: any[]) => void> {
+    (...args: Parameters<T>): void;
+    stop: () => void;
+}
+interface Delay {
+    requestAnimationFrame: (callback: () => void, element?: HTMLElement) => void;
+    setEditorInterval: (editor: Editor, callback: () => void, time?: number) => number;
+    setEditorTimeout: (editor: Editor, callback: () => void, time?: number) => number;
+    setInterval: (callback: () => void, time?: number) => number;
+    setTimeout: (callback: () => void, time?: number) => number;
+    clearInterval: (id?: number) => void;
+    clearTimeout: (id?: number) => void;
+    debounce: <T extends (...args: any[]) => any>(callback: T, time?: number) => DebounceFunc<T>;
+    throttle: <T extends (...args: any[]) => any>(callback: T, time?: number) => DebounceFunc<T>;
+}
+declare type UploadResult = UploadResult$2;
+interface ImageUploader {
+    upload: (blobInfos: BlobInfo[], showNotification?: boolean) => Promise<UploadResult[]>;
+}
+interface JSONUtils {
+    serialize: (obj: any) => string;
+    parse: (text: string) => any;
+}
+interface JSONPSettings {
+    count?: number;
+    url: string;
+    callback: (json: string) => void;
+}
+interface JSONP {
+    callbacks: {};
+    count: number;
+    send(this: JSONP, settings: JSONPSettings): void;
+}
+interface JSONRequestSettings {
+    crossDomain?: boolean;
+    requestheaders?: Record<string, {
+        key: string;
+        value: string;
+    }>;
+    type?: string;
+    url?: string;
+    error_scope?: any;
+    success_scope?: any;
+    success?: (data: any) => void;
+    error?: (error: any, xhr: XMLHttpRequest) => void;
+}
+interface JSONRequestArgs extends JSONRequestSettings {
+    id?: string;
+    method?: string;
+    params?: string;
+}
+interface JSONRequestConstructor {
+    readonly prototype: JSONRequest;
+    new (settings?: JSONRequestSettings): JSONRequest;
+    sendRPC: (o: JSONRequestArgs) => void;
+}
+declare class JSONRequest {
+    static sendRPC(o: JSONRequestArgs): void;
+    settings: JSONRequestSettings;
+    count: number;
+    constructor(settings?: JSONRequestSettings);
+    send(args: JSONRequestArgs): void;
+}
+interface KeyboardLikeEvent {
+    shiftKey: boolean;
+    ctrlKey: boolean;
+    altKey: boolean;
+    metaKey: boolean;
+}
+interface VK {
+    BACKSPACE: number;
+    DELETE: number;
+    DOWN: number;
+    ENTER: number;
+    LEFT: number;
+    RIGHT: number;
+    SPACEBAR: number;
+    TAB: number;
+    UP: number;
+    PAGE_UP: number;
+    PAGE_DOWN: number;
+    END: number;
+    HOME: number;
+    modifierPressed: (e: KeyboardLikeEvent) => boolean;
+    metaKeyPressed: (e: KeyboardLikeEvent) => boolean;
+}
+interface XHRSettings {
+    async?: boolean;
+    content_type?: string;
+    crossDomain?: boolean;
+    data?: Document | BodyInit;
+    requestheaders?: Record<string, {
+        key: string;
+        value: string;
+    }>;
+    scope?: any;
+    type?: string;
+    url: string;
+    error_scope?: any;
+    success_scope?: any;
+    error?: (message: 'TIMED_OUT' | 'GENERAL', xhr: XMLHttpRequest, settings: XHRSettings) => void;
+    success?: (text: string, xhr: XMLHttpRequest, settings: XHRSettings) => void;
+}
+interface XHREventMap {
+    beforeInitialize: {
+        settings: XHRSettings;
+    };
+    beforeSend: {
+        xhr: XMLHttpRequest;
+        settings: XHRSettings;
+    };
+}
+interface XHR extends Observable<XHREventMap> {
+    send(this: XHR, settings: XHRSettings): void;
+}
+interface DOMUtilsNamespace {
+    new (doc: Document, settings: Partial<DOMUtilsSettings>): DOMUtils;
+    DOM: DOMUtils;
+    nodeIndex: (node: Node, normalized?: boolean) => number;
+}
+interface RangeUtilsNamespace {
+    new (dom: DOMUtils): RangeUtils;
+    compareRanges: (rng1: RangeLikeObject, rng2: RangeLikeObject) => boolean;
+    getCaretRangeFromPoint: (clientX: number, clientY: number, doc: Document) => Range;
+    getSelectedNode: (range: Range) => Node;
+    getNode: (container: Node, offset: number) => Node;
+}
+interface AddOnManagerNamespace {
+    new <T>(): AddOnManager<T>;
+    language: string | undefined;
+    languageLoad: boolean;
+    baseURL: string;
+    PluginManager: PluginManager;
+    ThemeManager: ThemeManager;
+}
+interface BookmarkManagerNamespace {
+    (selection: EditorSelection): BookmarkManager;
+    isBookmarkNode: (node: Node) => boolean;
+}
+interface SaxParserNamespace {
+    new (settings?: SaxParserSettings, schema?: Schema): SaxParser;
+    findEndTag: (schema: Schema, html: string, startIndex: number) => number;
+}
+interface TinyMCE extends EditorManager {
+    geom: {
+        Rect: Rect;
+    };
+    util: {
+        Promise: PromiseConstructor;
+        Delay: Delay;
+        Tools: Tools;
+        VK: VK;
+        URI: URIConstructor;
+        Class: Class;
+        EventDispatcher: EventDispatcherConstructor<any>;
+        Observable: Observable<any>;
+        I18n: I18n;
+        XHR: XHR;
+        JSON: JSONUtils;
+        JSONRequest: JSONRequestConstructor;
+        JSONP: JSONP;
+        LocalStorage: Storage;
+        Color: ColorConstructor;
+        ImageUploader: ImageUploader;
+    };
+    dom: {
+        EventUtils: EventUtilsConstructor;
+        Sizzle: any;
+        DomQuery: DomQueryConstructor;
+        TreeWalker: DomTreeWalkerConstructor;
+        TextSeeker: new (dom: DOMUtils, isBlockBoundary?: (node: Node) => boolean) => TextSeeker;
+        DOMUtils: DOMUtilsNamespace;
+        ScriptLoader: ScriptLoaderConstructor;
+        RangeUtils: RangeUtilsNamespace;
+        Serializer: new (settings: DomSerializerSettings, editor?: Editor) => DomSerializer;
+        ControlSelection: (selection: EditorSelection, editor: Editor) => ControlSelection;
+        BookmarkManager: BookmarkManagerNamespace;
+        Selection: new (dom: DOMUtils, win: Window, serializer: DomSerializer, editor: Editor) => EditorSelection;
+        StyleSheetLoader: new (documentOrShadowRoot: Document | ShadowRoot, settings: StyleSheetLoaderSettings) => StyleSheetLoader;
+        Event: EventUtils;
+    };
+    html: {
+        Styles: new (settings?: StylesSettings, schema?: Schema) => Styles;
+        Entities: Entities;
+        Node: AstNodeConstructor;
+        Schema: new (settings?: SchemaSettings) => Schema;
+        SaxParser: SaxParserNamespace;
+        DomParser: new (settings?: DomParserSettings, schema?: Schema) => DomParser;
+        Writer: new (settings?: WriterSettings) => Writer;
+        Serializer: new (settings?: HtmlSerializerSettings, schema?: Schema) => HtmlSerializer;
+    };
+    AddOnManager: AddOnManagerNamespace;
+    Annotator: new (editor: Editor) => Annotator;
+    Editor: EditorConstructor;
+    EditorCommands: EditorCommandsConstructor;
+    EditorManager: EditorManager;
+    EditorObservable: EditorObservable;
+    Env: Env;
+    FocusManager: FocusManager;
+    Formatter: new (editor: Editor) => Formatter;
+    NotificationManager: new (editor: Editor) => NotificationManager;
+    Shortcuts: ShortcutsConstructor;
+    UndoManager: new (editor: Editor) => UndoManager;
+    WindowManager: new (editor: Editor) => WindowManager;
+    DOM: DOMUtils;
+    ScriptLoader: ScriptLoader;
+    PluginManager: PluginManager;
+    ThemeManager: ThemeManager;
+    IconManager: IconManager;
+    Resource: Resource;
+    trim: Tools['trim'];
+    isArray: Tools['isArray'];
+    is: Tools['is'];
+    toArray: Tools['toArray'];
+    makeMap: Tools['makeMap'];
+    each: Tools['each'];
+    map: Tools['map'];
+    grep: Tools['grep'];
+    inArray: Tools['inArray'];
+    extend: Tools['extend'];
+    create: Tools['create'];
+    walk: Tools['walk'];
+    createNS: Tools['createNS'];
+    resolve: Tools['resolve'];
+    explode: Tools['explode'];
+    _addCacheSuffix: Tools['_addCacheSuffix'];
+    isOpera: boolean;
+    isWebKit: boolean;
+    isIE: false | number;
+    isGecko: boolean;
+    isMac: boolean;
+}
+declare const tinymce: TinyMCE;
+export default tinymce;
+export { AddOnManager, Annotator, AstNode, Bookmark, BookmarkManager, Class, Color, ControlSelection, DOMUtils, Delay, DomParser, DomParserSettings, DomQuery, DomSerializer, DomSerializerSettings, DomTreeWalker, Editor, EditorCommands, EditorEvent, EditorManager, EditorModeApi, EditorObservable, EditorSelection, EditorSettings, Entities, Env, EventDispatcher, EventUtils, EventTypes_d as Events, FocusManager, Format_d as Formats, Formatter, GeomRect, HtmlSerializer, HtmlSerializerSettings, I18n, IconManager, JSONUtils as JSON, JSONP, JSONRequest, JSONRequestArgs, JSONRequestSettings, NotificationApi, NotificationManager, NotificationSpec, Observable, Plugin, PluginManager, RangeUtils, RawEditorSettings, Rect, Resource, SaxParser, SaxParserSettings, Schema, SchemaSettings, ScriptLoader, Shortcuts, StyleSheetLoader, Styles, TextSeeker, Theme, ThemeManager, TinyMCE, Tools, URI, Ui_d as Ui, UndoManager, VK, WindowManager, Writer, WriterSettings, XHR, XHRSettings };
diff --git a/projects/editor/src/assets/tinymce/js/tinymce/tinymce.min.js b/projects/editor/src/assets/tinymce/js/tinymce/tinymce.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..7d375fa028f4b1c1c97c7b4a677f914092da1d4d
--- /dev/null
+++ b/projects/editor/src/assets/tinymce/js/tinymce/tinymce.min.js
@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.9.1 (2021-08-27)
+ */
+!function(){"use strict";function r(e){if(null===e)return"null";if(void 0===e)return"undefined";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}function f(o){return m(function(e,t){if(e.length!==t.length)return!1;for(var n=e.length,r=0;r<n;r++)if(!o.eq(e[r],t[r]))return!1;return!0})}function d(l){return m(function(e,t){var n,r,o,i=Object.keys(e),a=Object.keys(t);if(r=f(g),o=function(e){return t=n,Array.prototype.slice.call(e).sort(t);var t},!m(function(e,t){return r.eq(o(e),o(t))}).eq(i,a))return!1;for(var u=i.length,s=0;s<u;s++){var c=i[s];if(!l.eq(e[c],t[c]))return!1}return!0})}function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function n(t){return function(e){return t===e}}function re(e){return null==e}function V(e){return!re(e)}function oe(){}function i(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}}function a(t,n){return function(e){return t(n(e))}}function J(e){return function(){return e}}function u(e){return e}function o(e,t){return e===t}var m=function(e){return{eq:e}},g=m(function(e,t){return e===t}),p=m(function(e,t){if(e===t)return!0;var n=r(e);return n===r(t)&&(-1!==["undefined","boolean","number","string","function","xml","null"].indexOf(n)?e===t:"array"===n?f(p).eq(e,t):"object"===n&&d(p).eq(e,t))}),K=e("string"),h=e("object"),S=e("array"),l=n(null),v=t("boolean"),b=n(void 0),y=t("function"),E=t("number");function A(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}function s(t){return function(e){return!t(e)}}function C(e){return e()}function w(e){e()}function c(){return N}var T=J(!1),x=J(!0),N={fold:function(e,t){return e()},isSome:T,isNone:x,getOr:u,getOrThunk:k,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:J(null),getOrUndefined:J(void 0),or:u,orThunk:k,map:c,each:oe,bind:c,exists:T,forall:x,filter:function(){return N},toArray:function(){return[]},toString:J("none()")};function k(e){return e()}function _(e,t){return be.call(e,t)}function ie(e,t){return-1<_(e,t)}function F(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1}function R(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r}function X(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function D(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}function O(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}}function U(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function B(e,n,r){return D(e,function(e,t){r=n(r,e,t)}),r}function P(e,n,r){return X(e,function(e,t){r=n(r,e,t)}),r}function L(e,t,n){for(var r=0,o=e.length;r<o;r++){var i=e[r];if(t(i,r))return he.some(i);if(n(i,r))break}return he.none()}function I(e,t){return L(e,t,T)}function M(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return he.some(n);return he.none()}function z(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!S(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);ye.apply(t,e[n])}return t}(R(e,t))}function j(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0}function H(e){var t=ve.call(e,0);return t.reverse(),t}function q(e,t){return U(e,function(e){return!ie(t,e)})}function $(e,t){return 0<=t&&t<e.length?he.some(e[t]):he.none()}function W(e){return $(e,0)}function Y(e){return $(e,e.length-1)}function G(e,t){for(var n=0;n<e.length;n++){var r=t(e[n],n);if(r.isSome())return r}return he.none()}function Q(e,t){for(var n=we(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function Z(e,n){return Se(e,function(e,t){return{k:t,v:n(e,t)}})}function ee(n){return function(e,t){n[t]=e}}function te(e,n,r,o){return Q(e,function(e,t){(n(e,t)?r:o)(e,t)}),1}function ne(e,t){var n={};return te(e,t,ee(n),oe),n}function ae(e,t){return Ee(e,t)?he.from(e[t]):he.none()}function ue(e,t){return Ee(e,t)&&void 0!==e[t]&&null!==e[t]}function se(e,t,n){var r,o;if(!e)return!1;if(n=n||e,void 0!==e.length){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return!1}else for(r in e)if(Ee(e,r)&&!1===t.call(n,e[r],r,e))return!1;return!0}function ce(n,r){var o=[];return se(n,function(e,t){o.push(r(e,t,n))}),o}function le(n,r){var o=[];return se(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o}function fe(e,t){if(e)for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function de(e,t,n,r){for(var o=b(n)?e[0]:n,i=0;i<e.length;i++)o=t.call(r,o,e[i],i);return o}function me(e,t,n){for(var r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1}function ge(e){return e[e.length-1]}var pe=function(n){function e(){return o}function t(e){return e(n)}var r=J(n),o={fold:function(e,t){return t(n)},isSome:x,isNone:T,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return pe(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:N},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},he={some:pe,none:c,from:function(e){return null==e?N:pe(e)}},ve=Array.prototype.slice,be=Array.prototype.indexOf,ye=Array.prototype.push,Ce=y(Array.from)?Array.from:function(e){return ve.call(e)},we=Object.keys,xe=Object.hasOwnProperty,Se=function(e,r){var o={};return Q(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},Ee=function(e,t){return xe.call(e,t)},Ne=Array.isArray,ke=function(){return(ke=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function _e(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||((r=r||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}function Ae(n){var r,o=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o||(o=!0,r=n.apply(null,e)),r}}function Te(e,t){var n=String(t).toLowerCase();return I(e,function(e){return e.search(n)})}function Re(e,t){return-1!==e.indexOf(t)}function De(t){return function(e){return e.replace(t,"")}}function Oe(e){return 0<e.length}function Be(e){return!Oe(e)}function Pe(t){return function(e){return Re(e,t)}}function Le(e){return window.matchMedia(e).matches}function Ie(e){return null==e?"":(""+e).replace(wt,"")}function Me(e,t){return t?!("array"!==t||!Ne(e))||typeof e===t:void 0!==e}function Fe(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n}function Ue(e,t){var n=e.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(t);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(t);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(t);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function ze(e){return 1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount}function je(e,t){return e.dom===t.dom}function He(e,t){return ft().browser.isIE()?(n=e.dom,r=t.dom,o=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(n.compareDocumentPosition(r)&o)):(i=e.dom)!==(a=t.dom)&&i.contains(a);var n,r,o,i,a}function Ve(){return Ke(0,0)}function qe(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isEdge:t("Edge"),isChrome:t("Chrome"),isIE:t("IE"),isOpera:t("Opera"),isFirefox:t(tt),isSafari:t("Safari")}}function $e(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isWindows:t(ot),isiOS:t("iOS"),isAndroid:t(it),isOSX:t("OSX"),isLinux:t("Linux"),isSolaris:t(at),isFreeBSD:t(ut),isChromeOS:t(st)}}function We(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var Ke=function(e,t){return{major:e,minor:t}},Xe={nu:Ke,detect:function(e,t){var n,r,o=String(t).toLowerCase();return 0===e.length?Ve():(r=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}}(e,n=o))?Ke(i(1),i(2)):{major:0,minor:0};function i(e){return Number(n.replace(r,"$"+e))}},unknown:Ve},Ye=function(e,t){return""===(n=t)||e.length>=n.length&&e.substr(0,0+n.length)===n;var n},Ge=De(/^\s+|\s+$/g),Je=De(/^\s+/g),Qe=De(/\s+$/g),Ze=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,et={browsers:J([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Re(e,"edge/")&&Re(e,"chrome")&&Re(e,"safari")&&Re(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ze],search:function(e){return Re(e,"chrome")&&!Re(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Re(e,"msie")||Re(e,"trident")}},{name:"Opera",versionRegexes:[Ze,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Pe("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Pe("firefox")},{name:"Safari",versionRegexes:[Ze,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Re(e,"safari")||Re(e,"mobile/"))&&Re(e,"applewebkit")}}]),oses:J([{name:"Windows",search:Pe("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Re(e,"iphone")||Re(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Pe("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Pe("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Pe("linux"),versionRegexes:[]},{name:"Solaris",search:Pe("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Pe("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:Pe("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},tt="Firefox",nt=function(){return qe({current:void 0,version:Xe.unknown()})},rt=qe,ot=(J("Edge"),J("Chrome"),J("IE"),J("Opera"),J(tt),J("Safari"),"Windows"),it="Android",at="Solaris",ut="FreeBSD",st="ChromeOS",ct=function(){return $e({current:void 0,version:Xe.unknown()})},lt=$e,ft=(J(ot),J("iOS"),J(it),J("Linux"),J("OSX"),J(at),J(ut),J(st),Ae(function(){return e=navigator.userAgent,t=he.from(navigator.userAgentData),n=Le,p=et.browsers(),h=et.oses(),v=t.bind(function(e){return r=p,G(e.brands,function(t){var n=t.brand.toLowerCase();return I(r,function(e){var t;return n===(null===(t=e.brand)||void 0===t?void 0:t.toLowerCase())}).map(function(e){return{current:e.name,version:Xe.nu(parseInt(t.version,10),0)}})});var r}).orThunk(function(){return Te(p,n=e).map(function(e){var t=Xe.detect(e.versionRegexes,n);return{current:e.name,version:t}});var n}).fold(nt,rt),b=Te(h,r=e).map(function(e){var t=Xe.detect(e.versionRegexes,r);return{current:e.name,version:t}}).fold(ct,lt),{browser:v,os:b,deviceType:(i=v,a=e,u=n,s=(o=b).isiOS()&&!0===/ipad/i.test(a),c=o.isiOS()&&!s,f=(l=o.isiOS()||o.isAndroid())||u("(pointer:coarse)"),d=s||!c&&l&&u("(min-device-width:768px)"),m=c||l&&!d,g=i.isSafari()&&o.isiOS()&&!1===/safari/i.test(a),{isiPad:J(s),isiPhone:J(c),isTablet:J(d),isPhone:J(m),isTouch:J(f),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:J(g),isDesktop:J(!m&&!d&&!g)})};var e,t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b})),dt=navigator.userAgent,mt=ft(),gt=mt.browser,pt=mt.os,ht=mt.deviceType,vt=/WebKit/.test(dt)&&!gt.isEdge(),bt="FormData"in window&&"FileReader"in window&&"URL"in window&&!!URL.createObjectURL,yt=-1!==dt.indexOf("Windows Phone"),Ct={opera:gt.isOpera(),webkit:vt,ie:!(!gt.isIE()&&!gt.isEdge())&&gt.version.major,gecko:gt.isFirefox(),mac:pt.isOSX()||pt.isiOS(),iOS:ht.isiPad()||ht.isiPhone(),android:pt.isAndroid(),contentEditable:!0,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:!0,range:window.getSelection&&"Range"in window,documentMode:gt.isIE()?document.documentMode||7:10,fileApi:bt,ceFalse:!0,cacheSuffix:null,container:null,experimentalShadowDom:!1,canHaveCSP:!gt.isIE(),desktop:ht.isDesktop(),windowsPhone:yt,browser:{current:gt.current,version:gt.version,isChrome:gt.isChrome,isEdge:gt.isEdge,isFirefox:gt.isFirefox,isIE:gt.isIE,isOpera:gt.isOpera,isSafari:gt.isSafari},os:{current:pt.current,version:pt.version,isAndroid:pt.isAndroid,isChromeOS:pt.isChromeOS,isFreeBSD:pt.isFreeBSD,isiOS:pt.isiOS,isLinux:pt.isLinux,isOSX:pt.isOSX,isSolaris:pt.isSolaris,isWindows:pt.isWindows},deviceType:{isDesktop:ht.isDesktop,isiPad:ht.isiPad,isiPhone:ht.isiPhone,isPhone:ht.isPhone,isTablet:ht.isTablet,isTouch:ht.isTouch,isWebView:ht.isWebView}},wt=/^\s*|\s*$/g,xt=function(e,n,r,o){o=o||this,e&&se(e=r?e[r]:e,function(e,t){return!1!==n.call(o,e,t,r)&&void xt(e,n,r,o)})},St={trim:Ie,isArray:Ne,is:Me,toArray:function(e){if(Ne(e))return e;for(var t=[],n=0,r=e.length;n<r;n++)t[n]=e[n];return t},makeMap:function(e,t,n){var r;for(t=t||",",n=n||{},r=(e="string"==typeof(e=e||[])?e.split(t):e).length;r--;)n[e[r]]={};return n},each:se,map:ce,grep:le,inArray:fe,hasOwn:Ee,extend:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0;r<t.length;r++){var o,i,a=t[r];for(o in a)!Ee(a,o)||void 0!==(i=a[o])&&(e[o]=i)}return e},create:function(e,t,n){var r,o,i,a=this,u=0,s=(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e))[3].match(/(^|\.)(\w+)$/i)[2],c=a.createNS(e[3].replace(/\.\w+$/,""),n);if(!c[s]){if("static"===e[2])return c[s]=t,void(this.onCreate&&this.onCreate(e[2],e[3],c[s]));t[s]||(t[s]=function(){},u=1),c[s]=t[s],a.extend(c[s].prototype,t),e[5]&&(r=a.resolve(e[5]).prototype,o=e[5].match(/\.(\w+)$/i)[1],i=c[s],c[s]=u?function(){return r[o].apply(this,arguments)}:function(){return this.parent=r[o],i.apply(this,arguments)},c[s].prototype[s]=c[s],a.each(r,function(e,t){c[s].prototype[t]=r[t]}),a.each(t,function(e,t){r[t]?c[s].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==s&&(c[s].prototype[t]=e)})),a.each(t.static,function(e,t){c[s][t]=e})}},walk:xt,createNS:function(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Me(e,"array")?e:ce(e.split(t||","),Ie)},_addCacheSuffix:function(e){var t=Ct.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Et={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return We(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return We(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return We(n)},fromDom:We,fromPoint:function(e,t,n){return he.from(e.dom.elementFromPoint(t,n)).map(We)}};function Nt(e){return e.dom.nodeName.toLowerCase()}function kt(e){return e.dom.nodeType}function _t(t){return function(e){return kt(e)===t}}function At(e){return Et.fromDom(e.dom.ownerDocument)}function Tt(e){return Rn(e)?e:At(e)}function Rt(e){return Et.fromDom(Tt(e).dom.defaultView)}function Dt(e){return he.from(e.dom.parentNode).map(Et.fromDom)}function Ot(e){return he.from(e.dom.previousSibling).map(Et.fromDom)}function Bt(e){return he.from(e.dom.nextSibling).map(Et.fromDom)}function Pt(e){return H(Fe(e,Ot))}function Lt(e){return Fe(e,Bt)}function It(e,t){var n=e.dom.childNodes;return he.from(n[t]).map(Et.fromDom)}function Mt(e){return It(e,0)}function Ft(e){return It(e,e.dom.childNodes.length-1)}function Ut(e){return e.dom.childNodes.length}function zt(e){return Dn(e)&&V(e.dom.host)}function jt(t){return zt(t)?t:function(){var e=Tt(t).dom.head;if(null==e)throw new Error("Head is not available yet");return Et.fromDom(e)}()}function Ht(e){return Et.fromDom(e.dom.host)}function Vt(t,n){Dt(t).each(function(e){e.dom.insertBefore(n.dom,t.dom)})}function qt(e,t){Bt(e).fold(function(){Dt(e).each(function(e){In(e,t)})},function(e){Vt(e,t)})}function $t(t,n){Mt(t).fold(function(){In(t,n)},function(e){t.dom.insertBefore(n.dom,e.dom)})}function Wt(t,e){X(e,function(e){In(t,e)})}function Kt(e){e.dom.textContent="",X(On(e),function(e){Mn(e)})}function Xt(e){var t,n=On(e);0<n.length&&(t=e,X(n,function(e){Vt(t,e)})),Mn(e)}function Yt(e,t){return void 0!==e?e:void 0!==t?t:0}function Gt(e){var t=void 0!==e?e.dom:document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop;return zn(n,r)}function Jt(e,t,n){var r=(void 0!==n?n.dom:document).defaultView;r&&r.scrollTo(e,t)}function Qt(e,t){ft().browser.isSafari()&&y(e.dom.scrollIntoViewIfNeeded)?e.dom.scrollIntoViewIfNeeded(!1):e.dom.scrollIntoView(t)}function Zt(e,t,n,r){return{x:e,y:t,width:n,height:r,right:e+n,bottom:t+r}}function en(e){var r=void 0===e?window:e,t=r.document,o=Gt(Et.fromDom(t)),n=void 0===r?window:r;return he.from(n.visualViewport).fold(function(){var e=r.document.documentElement,t=e.clientWidth,n=e.clientHeight;return Zt(o.left,o.top,t,n)},function(e){return Zt(Math.max(e.pageLeft,o.left),Math.max(e.pageTop,o.top),e.width,e.height)})}function tn(t){return function(e){return!!e&&e.nodeType===t}}function nn(e){return e&&!Object.getPrototypeOf(e)}function rn(e){var n=e.map(function(e){return e.toLowerCase()});return function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();return ie(n,t)}return!1}}function on(r,e){var o=e.toLowerCase().split(" ");return function(e){if(Hn(e))for(var t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}}function an(t){return function(e){return Hn(e)&&e.hasAttribute(t)}}function un(e){return Hn(e)&&e.hasAttribute("data-mce-bogus")}function sn(e){return Hn(e)&&"TABLE"===e.tagName}function cn(t){return function(e){if(Hn(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function ln(e,t,n){return void 0===n&&(n=o),e.exists(function(e){return n(e,t)})}function fn(e,t,n){return e.isSome()&&t.isSome()?he.some(n(e.getOrDie(),t.getOrDie())):he.none()}function dn(e){return void 0!==e.style&&y(e.style.getPropertyValue)}function mn(e,t,n){if(!(K(n)||v(n)||E(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}function gn(e,t,n){mn(e.dom,t,n)}function pn(e,t){var n=e.dom;Q(t,function(e,t){mn(n,t,e)})}function hn(e,t){var n=e.dom.getAttribute(t);return null===n?void 0:n}function vn(e,t){return he.from(hn(e,t))}function bn(e,t){e.dom.removeAttribute(t)}function yn(e,t){var n=e.dom;Q(t,function(e,t){!function(e,t,n){if(!K(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);dn(e)&&e.style.setProperty(t,n)}(n,t,e)})}function Cn(e,t){var n=e.dom,r=window.getComputedStyle(n).getPropertyValue(t);return""!==r||Fn(e)?r:er(n,t)}function wn(e,t){var n=e.dom,r=er(n,t);return he.from(r).filter(function(e){return 0<e.length})}function xn(e){var t={},n=e.dom;if(dn(n))for(var r=0;r<n.style.length;r++){var o=n.style.item(r);t[o]=n.style[o]}return t}function Sn(e){return I(e,An)}function En(e,t){return e.children&&ie(e.children,t)}"undefined"!=typeof window||Function("return this;")();var Nn,kn,_n,An=_t(1),Tn=_t(3),Rn=_t(9),Dn=_t(11),On=function(e){return R(e.dom.childNodes,Et.fromDom)},Bn=y(Element.prototype.attachShadow)&&y(Node.prototype.getRootNode),Pn=J(Bn),Ln=Bn?function(e){return Et.fromDom(e.dom.getRootNode())}:Tt,In=function(e,t){e.dom.appendChild(t.dom)},Mn=function(e){var t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)},Fn=function(e){var t=Tn(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;var n=t.ownerDocument,r=Et.fromDom(t),o=Ln(r);return(zt(o)?he.some(o):he.none()).fold(function(){return n.body.contains(t)},a(Fn,Ht))},Un=function(n,r){return{left:n,top:r,translate:function(e,t){return Un(n+e,r+t)}}},zn=Un,jn=function(e){var t,n=e.dom,r=n.ownerDocument.body;return r===n?zn(r.offsetLeft,r.offsetTop):Fn(e)?(t=n.getBoundingClientRect(),zn(t.left,t.top)):zn(0,0)},Hn=tn(1),Vn=rn(["textarea","input"]),qn=tn(3),$n=tn(8),Wn=tn(9),Kn=tn(11),Xn=rn(["br"]),Yn=rn(["img"]),Gn=cn("true"),Jn=cn("false"),Qn=rn(["td","th"]),Zn=rn(["video","audio","object","embed"]),er=function(e,t){return dn(e)?e.style.getPropertyValue(t):""},tr=ft().browser,nr={},rr={exports:nr};function or(e){setTimeout(function(){throw e},0)}Nn=nr,kn=rr,_n=void 0,function(e){"object"==typeof Nn&&void 0!==kn?kn.exports=e():("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function i(a,u,s){function c(t,e){if(!u[t]){if(!a[t]){var n="function"==typeof _n;if(!e&&n)return n(t,!0);if(l)return l(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[t]={exports:{}};a[t][0].call(o.exports,function(e){return c(a[t][1][e]||e)},o,o.exports,i,a,u,s)}return u[t].exports}for(var l="function"==typeof _n,e=0;e<s.length;e++)c(s[e]);return c}({1:[function(e,t,n){var r,o,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(e){o=u}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&g())}function g(){if(!f){var e=s(m);f=!0;for(var t=l.length;t;){for(c=l,l=[];++d<t;)c&&c[d].run();d=-1,t=l.length}c=null,f=!1,function(t){if(o===clearTimeout)return clearTimeout(t);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function h(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new p(e,t)),1!==l.length||f||s(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(e,f,t){!function(t){function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(e,this)}function o(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var e,t=1===n._state?r.onFulfilled:r.onRejected;if(null!==t){try{e=t(n._value)}catch(e){return void u(r.promise,e)}a(r.promise,e)}else(1===n._state?a:u)(r.promise,n._value)})):n._deferreds.push(r)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l((r=n,o=e,function(){r.apply(o,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(e){u(t,e)}var r,o}function u(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(e){if(n)return;n=!0,u(t,e)}}var n=setTimeout;i.prototype.catch=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return o(this,new c(e,t,n)),n},i.all=function(e){var u=Array.prototype.slice.call(e);return new i(function(o,i){if(0===u.length)return o([]);for(var a=u.length,e=0;e<u.length;e++)!function t(n,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var r=e.then;if("function"==typeof r)return r.call(e,function(e){t(n,e)},i),0}u[n]=e,0==--a&&o(u)}catch(e){i(e)}}(e,u[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof t?function(e){t(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==f&&f.exports?f.exports=i:this.Promise||(this.Promise=i)}.call(this,e("timers").setImmediate)},{timers:3}],3:[function(s,e,c){!function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}.call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(e,t,n){var r=e("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function ir(e){return lr(function(){return new ur(e)})}function ar(a){if(!S(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return X(a,function(e,r){var t=we(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(void 0!==n[o])throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!S(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=n.length;if(t!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+t);return{fold:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(e.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+e.length);return e[r].apply(null,n)},match:function(e){var t=we(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!j(u,function(e){return ie(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){console.log(e,{constructors:u,constructor:o,params:n})}}}}),n}var ur=rr.exports.boltExport,sr=function(e){function r(e){o()?i(e):t.push(e)}var n=he.none(),t=[],o=function(){return n.isSome()},i=function(t){n.each(function(e){setTimeout(function(){t(e)},0)})};return e(function(e){o()||(n=he.some(e),X(t,i),t=[])}),{get:r,map:function(n){return sr(function(t){r(function(e){t(n(e))})})},isReady:o}},cr={nu:sr,pure:function(t){return sr(function(e){e(t)})}},lr=function(n){function e(e){n().then(e,or)}return{map:function(e){return lr(function(){return n().then(e)})},bind:function(t){return lr(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return lr(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return cr.nu(e)},toCached:function(){var e=null;return lr(function(){return e=null===e?n():e})},toPromise:n,get:e}},fr=function(n){return{isValue:x,isError:T,getOr:J(n),getOrThunk:J(n),getOrDie:J(n),or:function(e){return fr(n)},orThunk:function(e){return fr(n)},fold:function(e,t){return t(n)},map:function(e){return fr(e(n))},mapError:function(e){return fr(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOptional:function(){return he.some(n)}}},dr=function(n){return{isValue:T,isError:x,getOr:u,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:u,orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return dr(n)},mapError:function(e){return dr(e(n))},each:oe,bind:function(e){return dr(n)},exists:T,forall:x,toOptional:he.none}},mr={value:fr,error:dr,fromOption:function(e,t){return e.fold(function(){return dr(t)},fr)}};function gr(e){return e.fold(u,u)}function pr(e,t,n,r,o){return e(n,r)?he.some(n):y(o)&&o(n)?he.none():t(n,r,o)}function hr(e,t,n){for(var r=e.dom,o=y(n)?n:T;r.parentNode;){var r=r.parentNode,i=Et.fromDom(r);if(t(i))return he.some(i);if(o(i))break}return he.none()}function vr(e,t,n){return pr(function(e,t){return t(e)},hr,e,t,n)}function br(e,t,n){return hr(e,function(e){return Ue(e,t)},n)}function yr(e,t){return n=t,ze(r=void 0===e?document:e.dom)?he.none():he.from(r.querySelector(n)).map(Et.fromDom);var n,r}function Cr(e,t,n){return pr(Ue,br,e,t,n)}ar([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var wr,xr,Sr,Er,Nr,kr=function(e,t){return I(e.dom.childNodes,function(e){return t(Et.fromDom(e))}).map(Et.fromDom)},_r=window.Promise||(wr=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];n.apply(r,e)}},xr=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},Sr=Ar.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){return setTimeout(e,1)},Er=function(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(e){if(r)return;r=!0,n(e)}},Ar.prototype.catch=function(e){return this.then(null,e)},Ar.prototype.then=function(n,r){var o=this;return new Ar(function(e,t){Tr.call(o,new Br(n,r,e,t))})},Ar.all=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var u=Array.prototype.slice.call(1===e.length&&xr(e[0])?e[0]:e);return new Ar(function(r,o){if(0===u.length)return r([]);for(var i=u.length,a=function(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){a(t,e)},o)}u[t]=e,0==--i&&r(u)}catch(e){o(e)}},e=0;e<u.length;e++)a(e,u[e])})},Ar.resolve=function(t){return t&&"object"==typeof t&&t.constructor===Ar?t:new Ar(function(e){e(t)})},Ar.reject=function(n){return new Ar(function(e,t){t(n)})},Ar.race=function(o){return new Ar(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},Ar);function Ar(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],Er(e,wr(Rr,this),wr(Dr,this))}function Tr(n){var r=this;null!==this._state?Sr(function(){var e,t=r._state?n.onFulfilled:n.onRejected;if(null!==t){try{e=t(r._value)}catch(e){return void n.reject(e)}n.resolve(e)}else(r._state?n.resolve:n.reject)(r._value)}):this._deferreds.push(n)}function Rr(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void Er(wr(t,e),wr(Rr,this),wr(Dr,this))}this._state=!0,this._value=e,Or.call(this)}catch(e){Dr.call(this,e)}}function Dr(e){this._state=!1,this._value=e,Or.call(this)}function Or(){for(var e=0,t=this._deferreds.length;e<t;e++)Tr.call(this,this._deferreds[e]);this._deferreds=null}function Br(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function Pr(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)}function Lr(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)}function Ir(n,r){function e(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];clearTimeout(o),o=Pr(function(){n.apply(this,e)},r)}var o;return e.stop=function(){clearTimeout(o)},e}function Mr(m,g){function n(e,t,n){var r,o=St._addCacheSuffix(e),i=ae(h,o).getOrThunk(function(){return{id:"mce-u"+p++,passed:[],failed:[],count:0}});function a(e,t){for(var n=e.length;n--;)e[n]();i.status=t,i.passed=[],i.failed=[],r&&(r.onload=null,r.onerror=null,r=null)}function u(){return a(i.passed,2),0}function s(){return a(i.failed,3)}(h[o]=i).count++;var c,l,f,d=function(){var e=d;!function(){for(var e=m.styleSheets,t=e.length;t--;){var n=e[t].ownerNode;if(n&&n.id===r.id)return u(),1}}()&&(Date.now()-l<y?Ur.setTimeout(e):s())};t&&i.passed.push(t),n&&i.failed.push(n),1!==i.status&&(2!==i.status?3!==i.status?(i.status=1,pn(c=Et.fromTag("link",b.dom),{rel:"stylesheet",type:"text/css",id:i.id}),l=Date.now(),g.contentCssCors&&gn(c,"crossOrigin","anonymous"),g.referrerPolicy&&gn(c,"referrerpolicy",g.referrerPolicy),(r=c.dom).onload=d,r.onerror=s,f=c,In(jt(v),f),gn(c,"href",o)):s():u())}function o(t){return ir(function(e){n(t,i(e,J(mr.value(t))),i(e,J(mr.error(t))))})}function t(e){var n=St._addCacheSuffix(e);ae(h,n).each(function(e){var t;0==--e.count&&(delete h[n],t=e.id,yr(jt(v),"#"+t).each(Mn))})}void 0===g&&(g={});var p=0,h={},v=Et.fromDom(m),b=Tt(v),y=g.maxLoadTime||5e3;return{load:n,loadAll:function(e,n,r){var a,t=R(e,o);a=t,ir(function(r){var o=[],i=0;0===a.length?r([]):X(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})}).get(function(e){var t=O(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(gr)):n(t.pass.map(gr))})},unload:t,unloadAll:function(e){X(e,function(e){t(e)})},_setReferrerPolicy:function(e){g.referrerPolicy=e}}}var Fr,Ur={requestAnimationFrame:function(e,t){Nr?Nr.then(e):Nr=new _r(function(e){(function(e,t){for(var n=window.requestAnimationFrame,r=["ms","moz","webkit"],o=0;o<r.length&&!n;o++)n=window[r[o]+"RequestAnimationFrame"];(n=n||function(e){window.setTimeout(e,0)})(e,t)})(e,t=t||document.body)}).then(e)},setTimeout:Pr,setInterval:Lr,setEditorTimeout:function(e,t,n){return Pr(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r=Lr(function(){e.removed?clearInterval(r):t()},n);return r},debounce:Ir,throttle:Ir,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},zr=(Fr=new WeakMap,{forElement:function(e,t){var n=Ln(e).dom;return he.from(Fr.get(n)).getOrThunk(function(){var e=Mr(n,t);return Fr.set(n,e),e})}}),jr=(Hr.prototype.current=function(){return this.node},Hr.prototype.next=function(e){return this.node=this.findSibling(this.node,"firstChild","nextSibling",e),this.node},Hr.prototype.prev=function(e){return this.node=this.findSibling(this.node,"lastChild","previousSibling",e),this.node},Hr.prototype.prev2=function(e){return this.node=this.findPreviousNode(this.node,"lastChild","previousSibling",e),this.node},Hr.prototype.findSibling=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==this.rootNode){if(o=e[n])return o;for(i=e.parentNode;i&&i!==this.rootNode;i=i.parentNode)if(o=i[n])return o}}},Hr.prototype.findPreviousNode=function(e,t,n,r){var o,i,a;if(e&&(o=e[n],!this.rootNode||o!==this.rootNode)){if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}return(i=e.parentNode)&&i!==this.rootNode?i:void 0}},Hr);function Hr(e,t){this.node=e,this.rootNode=t,this.current=this.current.bind(this),this.next=this.next.bind(this),this.prev=this.prev.bind(this),this.prev2=this.prev2.bind(this)}function Vr(t){var n;return function(e){return n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,x),Ee(n,Nt(e))}}function qr(e){return An(e)&&!So(e)}function $r(e){return An(e)&&"br"===Nt(e)}function Wr(e){return Io(e)&&(e=e.parentNode),Lo(e)&&e.hasAttribute("data-mce-caret")}function Kr(e){return Io(e)&&Bo(e.data)}function Xr(e){return Wr(e)||Kr(e)}function Yr(e){return e.firstChild!==e.lastChild||!Xn(e.firstChild)}function Gr(e){var t=e.container();return!!qn(t)&&(t.data.charAt(e.offset())===Oo||e.isAtStart()&&Kr(t.previousSibling))}function Jr(e){var t=e.container();return!!qn(t)&&(t.data.charAt(e.offset()-1)===Oo||e.isAtEnd()&&Kr(t.nextSibling))}function Qr(e){return e&&e.hasAttribute("data-mce-caret")?(un(n=(t=e.getElementsByTagName("br"))[t.length-1])&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n}function Zr(e){return Wr(e.startContainer)}function eo(e){return!Wo(e)&&(Ho(e)?!Vo(e.parentNode):qo(e)||jo(e)||$o(e)||Ko(e))}function to(e,t){return eo(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Ko(e))return!1;if(Uo(e))return!0}return!0}(e,t)}function no(e){return Xo.test(e)}function ro(e,t){return eo(e)&&!1===(a=t,qn(i=e)&&no(i.data)&&!1===(n=i,r=Et.fromDom(a),br(Et.fromDom(n),"pre,code",A(je,r)).isSome()))||Hn(o=e)&&"A"===o.nodeName&&!o.hasAttribute("href")&&(o.hasAttribute("name")||o.hasAttribute("id"))||Yo(e);var n,r,o,i,a}function oo(e,t){return function(e,t){var n=0;if(ro(e,e))return!1;var r=e.firstChild;if(!r)return!0;var o=new jr(r,e);do{if(t){if(Jo(r)){r=o.next(!0);continue}if(Go(r)){r=o.next();continue}}if(Xn(r))n++,r=o.next();else{if(ro(r,e))return!1;r=o.next()}}while(r);return n<=1}(e.dom,t=void 0===t||t)}function io(e,t){return V(e)&&(ro(e,t)||qr(Et.fromDom(e)))}function ao(e){return"span"===e.nodeName.toLowerCase()&&"bookmark"===e.getAttribute("data-mce-type")}function uo(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),ii[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}}function so(e,t){return e.replace(t?ei:ti,function(e){return ii[e]||e})}function co(e,t){return e.replace(t?ei:ti,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":ii[e]||"&#"+e.charCodeAt(0)+";"})}function lo(e,t,n){return n=n||ui,e.replace(t?ei:ti,function(e){return ii[e]||n[e]||e})}function fo(e,t){return(e=St.trim(e))?e.split(t||" "):[]}function mo(e,n){var r;return e&&(r={},di(e="string"==typeof e?{"*":e}:e,function(e,t){r[t]=r[t.toUpperCase()]=("map"===n?fi:gi)(e,/[, ]/)})),r}function go(i){function e(e,t,n){var r=i[e];return r?r=fi(r,/[, ]/,fi(r.toUpperCase(),/[, ]/)):(r=ci[e])||(r=fi(t," ",fi(t.toUpperCase()," ")),r=mi(r,n),ci[e]=r),r}var t,s,n,r,o,a,u,c,S={},l={},E=[],f={},d={},m=(t=(i=i||{}).schema,c={},ci[t]||(s="id accesskey class dir lang style tabindex title role",n="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",r="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==t&&(s+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",n+=" article aside details dialog figure main header footer hgroup section nav",r+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==t&&(s+=" xml:lang",r=[r,u="acronym applet basefont big font strike tt"].join(" "),di(fo(u),function(e){g(e,"",r)}),n=[n,a="center dir isindex noframes"].join(" "),o=[n,r].join(" "),di(fo(a),function(e){g(e,"",o)})),o=o||[n,r].join(" "),g("html","manifest","head body"),g("head","","base command link meta noscript script style title"),g("title hr noscript br"),g("base","href target"),g("link","href rel media hreflang type sizes hreflang"),g("meta","name http-equiv content charset"),g("style","media type scoped"),g("script","src async defer type charset"),g("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",o),g("address dt dd div caption","",o),g("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",r),g("blockquote","cite",o),g("ol","reversed start type","li"),g("ul","","li"),g("li","value",o),g("dl","","dt dd"),g("a","href target rel media hreflang type",r),g("q","cite",r),g("ins del","cite datetime",o),g("img","src sizes srcset alt usemap ismap width height"),g("iframe","src name width height",o),g("embed","src type width height"),g("object","data type typemustmatch name usemap form width height",[o,"param"].join(" ")),g("param","name value"),g("map","name",[o,"area"].join(" ")),g("area","alt coords shape href target rel media hreflang type"),g("table","border","caption colgroup thead tfoot tbody tr"+("html4"===t?" col":"")),g("colgroup","span","col"),g("col","span"),g("tbody thead tfoot","","tr"),g("tr","","td th"),g("td","colspan rowspan headers",o),g("th","colspan rowspan headers scope abbr",o),g("form","accept-charset action autocomplete enctype method name novalidate target",o),g("fieldset","disabled form name",[o,"legend"].join(" ")),g("label","form for",r),g("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),g("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===t?o:r),g("select","disabled form multiple name required size","option optgroup"),g("optgroup","disabled label","option"),g("option","disabled label selected value"),g("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),g("menu","type label",[o,"li"].join(" ")),g("noscript","",o),"html4"!==t&&(g("wbr"),g("ruby","",[r,"rt rp"].join(" ")),g("figcaption","",o),g("mark rt rp summary bdi","",r),g("canvas","width height",o),g("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[o,"track source"].join(" ")),g("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[o,"track source"].join(" ")),g("picture","","img source"),g("source","src srcset type media sizes"),g("track","kind src srclang label default"),g("datalist","",[r,"option"].join(" ")),g("article section nav aside main header footer","",o),g("hgroup","","h1 h2 h3 h4 h5 h6"),g("figure","",[o,"figcaption"].join(" ")),g("time","datetime",r),g("dialog","open",o),g("command","type label icon disabled checked radiogroup command"),g("output","for form name",r),g("progress","value max",r),g("meter","value min max low high optimum",r),g("details","open",[o,"summary"].join(" ")),g("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==t&&(p("script","language xml:space"),p("style","xml:space"),p("object","declare classid code codebase codetype archive standby align border hspace vspace"),p("embed","align name hspace vspace"),p("param","valuetype type"),p("a","charset name rev shape coords"),p("br","clear"),p("applet","codebase archive code object alt name width height align hspace vspace"),p("img","name longdesc align border hspace vspace"),p("iframe","longdesc frameborder marginwidth marginheight scrolling align"),p("font basefont","size color face"),p("input","usemap align"),p("select"),p("textarea"),p("h1 h2 h3 h4 h5 h6 div p legend caption","align"),p("ul","type compact"),p("li","type"),p("ol dl menu dir","compact"),p("pre","width xml:space"),p("hr","align noshade size width"),p("isindex","prompt"),p("table","summary width frame rules cellspacing cellpadding align bgcolor"),p("col","width align char charoff valign"),p("colgroup","width align char charoff valign"),p("thead","align char charoff valign"),p("tr","align char charoff valign bgcolor"),p("th","axis align char charoff valign nowrap bgcolor width height"),p("form","accept"),p("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),p("tfoot","align char charoff valign"),p("tbody","align char charoff valign"),p("area","nohref"),p("body","background bgcolor text link vlink alink")),"html4"!==t&&(p("input button select textarea","autofocus"),p("input textarea","placeholder"),p("a","download"),p("link script img","crossorigin"),p("img","loading"),p("iframe","sandbox seamless allowfullscreen loading")),di(fo("a form meter progress dfn"),function(e){c[e]&&delete c[e].children[e]}),delete c.caption.children.table,delete c.script,ci[t]=c));function g(e,t,n){function r(e,t){for(var n={},r=0,o=e.length;r<o;r++)n[e[r]]=t||{};return n}var o,i;t=t||"","string"==typeof(n=n||[])&&(n=fo(n));for(var a=fo(e),u=a.length;u--;)i={attributes:r(o=fo([s,t].join(" "))),attributesOrder:o,children:r(n,li)},c[a[u]]=i}function p(e,t){for(var n,r,o,i=fo(e),a=i.length,u=fo(t);a--;)for(n=c[i[a]],r=0,o=u.length;r<o;r++)n.attributes[u[r]]={},n.attributesOrder.push(u[r])}!1===i.verify_html&&(i.valid_elements="*[*]");var h=mo(i.valid_styles),v=mo(i.invalid_styles,"map"),b=mo(i.valid_classes,"map"),y=e("whitespace_elements","pre script noscript style textarea video audio iframe object code"),C=e("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),w=e("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),x=e("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),N="td th iframe video audio object script code",k=e("non_empty_elements",N+" pre",w),_=e("move_caret_before_on_enter_elements",N+" table",w),A=e("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),T=e("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",A),R=e("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp");function D(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function O(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/,C=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,w=/[*?+]/;if(e){var x=fo(e,",");for(S["@"]&&(h=S["@"].attributes,v=S["@"].attributesOrder),t=0,n=x.length;t<n;t++)if(i=y.exec(x[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h&&(Q(h,function(e,t){d[t]=e}),m.push.apply(m,v)),s)for(r=0,o=(s=fo(s,"|")).length;r<o;r++)(i=C.exec(s[r]))&&(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"!==f?(g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===g&&(u.validValues=fi(b,"?"))),w.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=D(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)):(delete d[l],m.splice(pi(m,l),1)));h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,S[p]=a),w.test(c)?(a.pattern=D(c),E.push(a)):S[c]=a}}}function B(e){S={},E=[],O(e),di(m,function(e,t){l[t]=e.children})}function P(e){var a=/^(~)?(.+)$/;e&&(ci.text_block_elements=ci.block_elements=null,di(fo(e,","),function(e){var t,n=a.exec(e),r="~"===n[1],o=r?"span":"div",i=n[2];l[i]=l[o],f[i]=o,r||(T[i.toUpperCase()]={},T[i]={}),S[i]||(t=S[o],delete(t=mi({},t)).removeEmptyAttrs,delete t.removeEmpty,S[i]=t),di(l,function(e,t){e[o]&&(l[t]=e=mi({},l[t]),e[i]=e[o])})}))}function L(e){var o=/^([+\-]?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)\[([^\]]+)]$/;ci[i.schema]=null,e&&di(fo(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?l[r[2]]:l[r[2]]={"#comment":{}},t=l[r[2]],di(fo(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})}function I(e){var t,n=S[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n}di((i.special||"script noscript iframe noframes noembed title style textarea xmp").split(" "),function(e){d[e]=new RegExp("</"+e+"[^>]*>","gi")}),i.valid_elements?B(i.valid_elements):(di(m,function(e,t){S[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},l[t]=e.children}),"html5"!==i.schema&&di(fo("strong/b em/i"),function(e){var t=fo(e,"/");S[t[1]].outputName=t[0]}),di(fo("ol ul sub sup blockquote span font a table tbody strong em b i"),function(e){S[e]&&(S[e].removeEmpty=!0)}),di(fo("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){S[e].paddEmpty=!0}),di(fo("span"),function(e){S[e].removeEmptyAttrs=!0})),P(i.custom_elements),L(i.valid_children),O(i.extended_valid_elements),L("+ol[ul|ol],+ul[ul|ol]"),di({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){S[t]&&(S[t].parentsRequired=fo(e))}),i.invalid_elements&&di(gi(i.invalid_elements),function(e){S[e]&&delete S[e]}),I("span")||O("span[!data-mce-type|*]");var M=J(h),F=J(v),U=J(b),z=J(x),j=J(T),H=J(A),V=J(R),q=J(w),$=J(C),W=J(k),K=J(_),X=J(y),Y=J(d),G=J(f);return{children:l,elements:S,getValidStyles:M,getValidClasses:U,getBlockElements:j,getInvalidStyles:F,getShortEndedElements:q,getTextBlockElements:H,getTextInlineElements:V,getBoolAttrs:z,getElementRule:I,getSelfClosingElements:$,getNonEmptyElements:W,getMoveCaretBeforeOnEnterElements:K,getWhiteSpaceElements:X,getSpecialElements:Y,isValidChild:function(e,t){var n=l[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=I(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:G,addValidElements:O,setValidElements:B,addCustomElements:P,addValidChildren:L}}function po(e,t,n,r){function o(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+o(t)+o(n)+o(r)}function ho(b,e){var u,o,y=this,C=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,w=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,x=/\s*([^:]+):\s*([^;]+);?/g,S=/\s+$/,E={},N=Ro;b=b||{},e&&(u=e.getValidStyles(),o=e.getInvalidStyles());for(var t=("\\\" \\' \\; \\: ; : "+N).split(" "),k=0;k<t.length;k++)E[t[k]]=N+k,E[N+k]=t[k];return{toHex:function(e){return e.replace(C,po)},parse:function(e){function t(e,t,n){var r=p[e+"-top"+t];if(r){var o=p[e+"-right"+t];if(o){var i=p[e+"-bottom"+t];if(i){var a=p[e+"-left"+t];if(a){var u=[r,o,i,a];for(k=u.length-1;k--&&u[k]===u[k+1];);-1<k&&n||(p[e+t]=-1===k?u[0]:u.join(" "),delete p[e+"-top"+t],delete p[e+"-right"+t],delete p[e+"-bottom"+t],delete p[e+"-left"+t])}}}}}function n(e){var t,n=p[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return;return p[e]=n[0],1}}function r(e){return f=!0,E[e]}function u(e,t){return f&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return E[e]})),t?e:e.replace(/\\([\'\";:])/g,"$1")}function o(e){return String.fromCharCode(parseInt(e.slice(1),16))}function i(e){return e.replace(/\\[0-9a-f]+/gi,o)}function a(e,t,n,r,o,i){if(o=o||i)return"'"+(o=u(o)).replace(/\'/g,"\\'")+"'";if(t=u(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return"url('"+(t=h?h.call(v,t,"style"):t).replace(/\'/g,"\\'")+"')"}var s,c,l,f,d,m,g,p={},h=b.url_converter,v=b.url_converter_scope||y;if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,r).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,r)});s=x.exec(e);)x.lastIndex=s.index+s[0].length,c=s[1].replace(S,"").toLowerCase(),l=s[2].replace(S,""),c&&l&&(c=i(c),l=i(l),-1===c.indexOf(N)&&-1===c.indexOf('"')&&(b.allow_script_urls||"behavior"!==c&&!/expression\s*\(|\/\*|\*\//.test(l))&&("font-weight"===c&&"700"===l?l="bold":"color"!==c&&"background-color"!==c||(l=l.toLowerCase()),l=(l=l.replace(C,po)).replace(w,a),p[c]=f?u(l,!0):l));t("border","",!0),t("border","-width"),t("border","-color"),t("border","-style"),t("padding",""),t("margin",""),m="border-style",g="border-color",n(d="border-width")&&n(m)&&n(g)&&(p.border=p[d]+" "+p[m]+" "+p[g],delete p[d],delete p[m],delete p[g]),"medium none"===p.border&&delete p.border,"none"===p["border-image"]&&delete p["border-image"]}return p},serialize:function(i,r){function e(e){var t,n=u[e];if(n)for(var r=0,o=n.length;r<o;r++)e=n[r],(t=i[e])&&(a+=(0<a.length?" ":"")+e+": "+t+";")}var a="";return r&&u?(e("*"),e(r)):Q(i,function(e,t){var n;!e||o&&((n=o["*"])&&n[t]||(n=o[r])&&n[t])||(a+=(0<a.length?" ":"")+t+": "+e+";")}),a}}}function vo(e){return e instanceof Event||y(e.initEvent)}function bo(e,t,n,r){var o,i,a=function(e){var t,n=null!=r?r:{};for(t in e)Ee(hi,t)||(n[t]=e[t]);return V(n.composedPath)&&(n.composedPath=function(){return e.composedPath()}),n}(t);return a.type=e,re(a.target)&&(a.target=null!==(o=a.srcElement)&&void 0!==o?o:n),(re((i=t).preventDefault)||vo(i))&&(a.preventDefault=function(){a.defaultPrevented=!0,a.isDefaultPrevented=x,y(t.preventDefault)?t.preventDefault():vo(t)&&(t.returnValue=!1)},a.stopPropagation=function(){a.cancelBubble=!0,a.isPropagationStopped=x,y(t.stopPropagation)?t.stopPropagation():vo(t)&&(t.cancelBubble=!0)},a.stopImmediatePropagation=function(){a.isImmediatePropagationStopped=x,a.stopPropagation()},a.isDefaultPrevented!==x&&a.isDefaultPrevented!==T&&(a.isDefaultPrevented=!0===a.defaultPrevented?x:T,a.isPropagationStopped=!0===a.cancelBubble?x:T,a.isImmediatePropagationStopped=T)),a}function yo(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function Co(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function wo(e,t){var n,r,o,i,a=bo(e.type,e,document,t);return V(i=e)&&vi.test(i.type)&&b(e.pageX)&&!b(e.clientX)&&(r=(n=a.target.ownerDocument||document).documentElement,o=n.body,a.pageX=e.clientX+(r&&r.scrollLeft||o&&o.scrollLeft||0)-(r&&r.clientLeft||o&&o.clientLeft||0),a.pageY=e.clientY+(r&&r.scrollTop||o&&o.scrollTop||0)-(r&&r.clientTop||o&&o.clientTop||0)),b(a.metaKey)&&(a.metaKey=!1),a}var xo=Vr(["h1","h2","h3","h4","h5","h6"]),So=Vr(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),Eo=Vr(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),No=Vr(["ul","ol","dl"]),ko=Vr(["li","dd","dt"]),_o=Vr(["thead","tbody","tfoot"]),Ao=Vr(["td","th"]),To=Vr(["pre","script","textarea","style"]),Ro="\ufeff",Do="\xa0",Oo=Ro,Bo=function(e){return e===Ro},Po=function(e){return e.replace(/\uFEFF/g,"")},Lo=Hn,Io=qn,Mo=function(e){return Io(e)&&e.data[0]===Oo},Fo=function(e){return Io(e)&&e.data[e.data.length-1]===Oo},Uo=Gn,zo=Jn,jo=Xn,Ho=qn,Vo=rn(["script","style","textarea"]),qo=rn(["img","input","textarea","hr","iframe","video","audio","object","embed"]),$o=rn(["table"]),Wo=Xr,Ko=function(e){return!1===(Hn(t=e)&&"true"===t.getAttribute("unselectable"))&&zo(e);var t},Xo=/^[ \t\r\n]*$/,Yo=an("data-mce-bookmark"),Go=an("data-mce-bogus"),Jo=function(e){return Hn(e)&&"all"===e.getAttribute("data-mce-bogus")},Qo=function(e,t,n){var r=n||t;if(Hn(t)&&ao(t))return t;for(var o,i,a,u,s,c,l,f,d,m,g,p=t.childNodes,h=p.length-1;0<=h;h--)Qo(e,p[h],r);return!Hn(t)||1===(o=t.childNodes).length&&ao(o[0])&&t.parentNode.insertBefore(o[0],t),Kn(a=t)||Wn(a)||ro(t,r)||Hn(i=t)&&0<i.childNodes.length||(s=r,qn(u=t)&&0<u.data.length&&(f=new jr(c=u,l=s).prev(!1),d=new jr(c,l).next(!1),m=b(f)||io(f,l),g=b(d)||io(d,l),m&&g))||e.remove(t),t},Zo=St.makeMap,ei=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,ti=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,ni=/[<>&\"\']/g,ri=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,oi={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"},ii={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},ai={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},ui=uo("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32),si={encodeRaw:so,encodeAllRaw:function(e){return(""+e).replace(ni,function(e){return ii[e]||e})},encodeNumeric:co,encodeNamed:lo,getEncodeFunc:function(e,t){var n=uo(t)||ui,r=Zo(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?ei:ti,function(e){return void 0!==ii[e]?ii[e]:void 0!==n[e]?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return lo(e,t,n)}:lo:r.numeric?co:so},decode:function(e){return e.replace(ri,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):oi[t]||String.fromCharCode(t):ai[e]||ui[e]||(n=e,(r=Et.fromTag("div").dom).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},ci={},li={},fi=St.makeMap,di=St.each,mi=St.extend,gi=St.explode,pi=St.inArray,hi={keyLocation:!0,layerX:!0,layerY:!0,returnValue:!0,webkitMovementX:!0,webkitMovementY:!0,keyIdentifier:!0,mozPressure:!0},vi=/^(?:mouse|contextmenu)|click/,bi=(yi.prototype.bind=function(e,t,n,r){function o(e){f.executeHandlers(wo(e||d.event),i)}var i,a,u,s,c,l,f=this,d=window;if(e&&3!==e.nodeType&&8!==e.nodeType){e[f.expando]?i=e[f.expando]:(i=f.count++,e[f.expando]=i,f.events[i]={}),r=r||e;for(var m=t.split(" "),g=m.length;g--;)c=o,s=l=!1,"DOMContentLoaded"===(u=m[g])&&(u="ready"),f.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,wo({type:u})):(f.hasMouseEnterLeave||(s=f.mouseEnterLeave[u])&&(c=function(e){var t=e.currentTarget,n=e.relatedTarget;if(n&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=wo(e||d.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,f.executeHandlers(e,i))}),f.hasFocusIn||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=wo(e||d.event)).type="focus"===e.type?"focusin":"focusout",f.executeHandlers(e,i)}),(a=f.events[i][u])?"ready"===u&&f.domLoaded?n(wo({type:u})):a.push({func:n,scope:r}):(f.events[i][u]=a=[{func:n,scope:r}],a.fakeName=s,a.capture=l,a.nativeHandler=c,"ready"===u?function(e,t,n){var r,o=e.document,i={type:"ready"};n.domLoaded?t(i):(r=function(){Co(e,"DOMContentLoaded",r),Co(e,"load",r),n.domLoaded||(n.domLoaded=!0,t(i)),e=null},"complete"===o.readyState||"interactive"===o.readyState&&o.body?r():yo(e,"DOMContentLoaded",r),n.domLoaded||yo(e,"load",r))}(e,c,f):yo(e,s||u,c,l)));return e=a=null,n}},yi.prototype.unbind=function(n,e,t){var r,o,i;if(!n||3===n.nodeType||8===n.nodeType)return this;var a=n[this.expando];if(a){if(i=this.events[a],e){for(var u,s,c,l,f=e.split(" "),d=f.length;d--;)if(l=i[o=f[d]]){if(t)for(r=l.length;r--;)l[r].func===t&&(u=l.nativeHandler,s=l.fakeName,c=l.capture,(l=l.slice(0,r).concat(l.slice(r+1))).nativeHandler=u,l.fakeName=s,l.capture=c,i[o]=l);t&&0!==l.length||(delete i[o],Co(n,l.fakeName||o,l.nativeHandler,l.capture))}}else Q(i,function(e,t){Co(n,e.fakeName||t,e.nativeHandler,e.capture)}),i={};for(o in i)if(Ee(i,o))return this;delete this.events[a];try{delete n[this.expando]}catch(e){n[this.expando]=null}}return this},yi.prototype.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return this;for(var o=wo({type:t,target:e},n);(r=e[this.expando])&&this.executeHandlers(o,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!o.isPropagationStopped(););return this},yi.prototype.clean=function(e){var t,n;if(!e||3===e.nodeType||8===e.nodeType)return this;if(e[this.expando]&&this.unbind(e),(e=e.getElementsByTagName?e:e.document)&&e.getElementsByTagName)for(this.unbind(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[this.expando]&&this.unbind(e);return this},yi.prototype.destroy=function(){this.events={}},yi.prototype.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1},yi.prototype.executeHandlers=function(e,t){var n=this.events[t],r=n&&n[e.type];if(r)for(var o=0,i=r.length;o<i;o++){var a=r[o];if(a&&!1===a.func.call(a.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return}},yi.Event=new yi,yi);function yi(){this.domLoaded=!1,this.events={},this.count=1,this.expando="mce-data-"+(+new Date).toString(32),this.hasMouseEnterLeave="onmouseenter"in document.documentElement,this.hasFocusIn="onfocusin"in document.documentElement,this.count=1}function Ci(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}var wi,xi,Si,Ei,Ni,ki,_i,Ai,Ti,Ri,Di,Oi,Bi,Pi,Li,Ii,Mi,Fi="sizzle"+-new Date,Ui=window.document,zi=0,ji=0,Hi=ya(),Vi=ya(),qi=ya(),$i=function(e,t){return e===t&&(Ri=!0),0},Wi="undefined",Ki={}.hasOwnProperty,Xi=[],Yi=Xi.pop,Gi=Xi.push,Ji=Xi.push,Qi=Xi.slice,Zi=Xi.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},ea="[\\x20\\t\\r\\n\\f]",ta="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",na="\\["+ea+"*("+ta+")(?:"+ea+"*([*^$|!~]?=)"+ea+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ta+"))|)"+ea+"*\\]",ra=":("+ta+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+na+")*)|.*)\\)|)",oa=new RegExp("^"+ea+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ea+"+$","g"),ia=new RegExp("^"+ea+"*,"+ea+"*"),aa=new RegExp("^"+ea+"*([>+~]|"+ea+")"+ea+"*"),ua=new RegExp("="+ea+"*([^\\]'\"]*?)"+ea+"*\\]","g"),sa=new RegExp(ra),ca=new RegExp("^"+ta+"$"),la={ID:new RegExp("^#("+ta+")"),CLASS:new RegExp("^\\.("+ta+")"),TAG:new RegExp("^("+ta+"|[*])"),ATTR:new RegExp("^"+na),PSEUDO:new RegExp("^"+ra),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ea+"*(even|odd|(([+-]|)(\\d*)n|)"+ea+"*(?:([+-]|)"+ea+"*(\\d+)|))"+ea+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+ea+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ea+"*((?:-\\d)?\\d*)"+ea+"*\\)|)(?=[^-]|$)","i")},fa=/^(?:input|select|textarea|button)$/i,da=/^h\d$/i,ma=/^[^{]+\{\s*\[native \w/,ga=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,pa=/[+~]/,ha=/'|\\/g,va=new RegExp("\\\\([\\da-f]{1,6}"+ea+"?|("+ea+")|.)","ig");try{Ji.apply(Xi=Qi.call(Ui.childNodes),Ui.childNodes),Xi[Ui.childNodes.length].nodeType}catch(e){Ji={apply:Xi.length?function(e,t){Gi.apply(e,Qi.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var ba=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:Ui)!==Oi&&Di(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Oi).nodeType)&&9!==u)return[];if(Pi&&!r){if(o=ga.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&Mi(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return Ji.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&wi.getElementsByClassName)return Ji.apply(n,t.getElementsByClassName(a)),n}if(wi.qsa&&(!Li||!Li.test(e))){if(f=l=Fi,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Ni(e),(l=t.getAttribute("id"))?f=l.replace(ha,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Na(c[s]);d=pa.test(e)&&Sa(t.parentNode)||t,m=c.join(",")}if(m)try{return Ji.apply(n,d.querySelectorAll(m)),n}catch(e){}finally{l||t.removeAttribute("id")}}}return _i(e.replace(oa,"$1"),t,n,r)};function ya(){var n=[];function r(e,t){return n.push(e+" ")>xi.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function Ca(e){return e[Fi]=!0,e}function wa(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function xa(a){return Ca(function(i){return i=+i,Ca(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Sa(e){return e&&typeof e.getElementsByTagName!=Wi&&e}function Ea(){}function Na(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function ka(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=ji++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[zi,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[Fi]||(e[Fi]={}))[u])&&r[0]===zi&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function _a(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Aa(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Ta(e){return void 0!==e}function Ra(e){return"string"==typeof e}function Da(e,t){var n,r=(t=t||Fa).createElement("div"),o=t.createDocumentFragment();for(r.innerHTML=e;n=r.firstChild;)o.appendChild(n);return o}function Oa(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function Ba(e,t,n){var r,o;return t=ou(t)[0],e.each(function(){n&&r===this.parentNode||(r=this.parentNode,o=t.cloneNode(!1),this.parentNode.insertBefore(o,this)),o.appendChild(this)}),e}function Pa(e,t){return new ou.fn.init(e,t)}function La(e){return null==e?"":(""+e).replace(Ja,"")}function Ia(e,t){var n,r,o,i;if(e)if(void 0===(n=e.length)){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e}function Ma(e,n){var r=[];return Ia(e,function(e,t){n(t,e)&&r.push(t)}),r}wi=ba.support={},Ei=ba.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Di=ba.setDocument=function(e){var t,s=e?e.ownerDocument||e:Ui,n=s.defaultView;return s!==Oi&&9===s.nodeType&&s.documentElement?(Bi=(Oi=s).documentElement,Pi=!Ei(s),n&&n!==function(e){try{return e.top}catch(e){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Di()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Di()})),wi.attributes=!0,wi.getElementsByTagName=!0,wi.getElementsByClassName=ma.test(s.getElementsByClassName),wi.getById=!0,xi.find.ID=function(e,t){if(typeof t.getElementById!=Wi&&Pi){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},xi.filter.ID=function(e){var t=e.replace(va,Ci);return function(e){return e.getAttribute("id")===t}},xi.find.TAG=wi.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!=Wi)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},xi.find.CLASS=wi.getElementsByClassName&&function(e,t){if(Pi)return t.getElementsByClassName(e)},Ii=[],Li=[],wi.disconnectedMatch=!0,Li=Li.length&&new RegExp(Li.join("|")),Ii=Ii.length&&new RegExp(Ii.join("|")),t=ma.test(Bi.compareDocumentPosition),Mi=t||ma.test(Bi.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$i=t?function(e,t){return e===t?(Ri=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!wi.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Ui&&Mi(Ui,e)?-1:t===s||t.ownerDocument===Ui&&Mi(Ui,t)?1:Ti?Zi.call(Ti,e)-Zi.call(Ti,t):0:4&n?-1:1);var n}:function(e,t){if(e===t)return Ri=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Ti?Zi.call(Ti,e)-Zi.call(Ti,t):0;if(o===i)return wa(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?wa(a[r],u[r]):a[r]===Ui?-1:u[r]===Ui?1:0},s):Oi},ba.matches=function(e,t){return ba(e,null,null,t)},ba.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Oi&&Di(e),t=t.replace(ua,"='$1']"),wi.matchesSelector&&Pi&&(!Ii||!Ii.test(t))&&(!Li||!Li.test(t)))try{var n=(void 0).call(e,t);if(n||wi.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ba(t,Oi,null,[e]).length},ba.contains=function(e,t){return(e.ownerDocument||e)!==Oi&&Di(e),Mi(e,t)},ba.attr=function(e,t){(e.ownerDocument||e)!==Oi&&Di(e);var n=xi.attrHandle[t.toLowerCase()],r=n&&Ki.call(xi.attrHandle,t.toLowerCase())?n(e,t,!Pi):void 0;return void 0!==r?r:wi.attributes||!Pi?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},ba.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ba.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Ri=!wi.detectDuplicates,Ti=!wi.sortStable&&e.slice(0),e.sort($i),Ri){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Ti=null,e},Si=ba.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=Si(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=Si(t);return n},(xi=ba.selectors={cacheLength:50,createPseudo:Ca,match:la,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(va,Ci),e[3]=(e[3]||e[4]||e[5]||"").replace(va,Ci),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ba.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ba.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return la.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&sa.test(n)&&(t=Ni(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(va,Ci).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Hi[e+" "];return t||(t=new RegExp("(^|"+ea+")"+e+"("+ea+"|$)"))&&Hi(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!=Wi&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=ba.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),b="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!=v?"nextSibling":"previousSibling",l=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b;if(l){if(h){for(;c;){for(i=e;i=i[c];)if(b?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[Fi]||(l[Fi]={}))[m]||[])[0]===zi&&r[1],a=r[0]===zi&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[zi,u,a];break}}else if(d&&(r=(e[Fi]||(e[Fi]={}))[m])&&r[0]===zi)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((b?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[Fi]||(i[Fi]={}))[m]=[zi,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=xi.pseudos[e]||xi.setFilters[e.toLowerCase()]||ba.error("unsupported pseudo: "+e);return a[Fi]?a(i):1<a.length?(t=[e,e,"",i],xi.setFilters.hasOwnProperty(e.toLowerCase())?Ca(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=Zi.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:Ca(function(e){var r=[],o=[],u=ki(e.replace(oa,"$1"));return u[Fi]?Ca(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),r[0]=null,!o.pop()}}),has:Ca(function(t){return function(e){return 0<ba(t,e).length}}),contains:Ca(function(t){return t=t.replace(va,Ci),function(e){return-1<(e.textContent||e.innerText||Si(e)).indexOf(t)}}),lang:Ca(function(n){return ca.test(n||"")||ba.error("unsupported lang: "+n),n=n.replace(va,Ci).toLowerCase(),function(e){var t;do{if(t=Pi?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===Bi},focus:function(e){return e===Oi.activeElement&&(!Oi.hasFocus||Oi.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!xi.pseudos.empty(e)},header:function(e){return da.test(e.nodeName)},input:function(e){return fa.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:xa(function(){return[0]}),last:xa(function(e,t){return[t-1]}),eq:xa(function(e,t,n){return[n<0?n+t:n]}),even:xa(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:xa(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:xa(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:xa(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=xi.pseudos.eq,X(["radio","checkbox","file","password","image"],function(e){var t;xi.pseudos[e]=(t=e,function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t})}),X(["submit","reset"],function(e){var n;xi.pseudos[e]=(n=e,function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n})}),Ea.prototype=xi.filters=xi.pseudos,xi.setFilters=new Ea,Ni=ba.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Vi[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=xi.preFilter;a;){for(i in n&&!(r=ia.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=aa.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(oa," ")}),a=a.slice(n.length)),xi.filter)xi.filter.hasOwnProperty(i)&&(!(r=la[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length)));if(!n)break}return t?a.length:a?ba.error(e):Vi(e,u).slice(0)},ki=ba.compile=function(e,t){var n,h,v,b,y,r=[],o=[],i=qi[e+" "];if(!i){for(n=(t=t||Ni(e)).length;n--;)((i=function e(t){for(var o,n,r,i=t.length,a=xi.relative[t[0].type],u=a||xi.relative[" "],s=a?1:0,c=ka(function(e){return e===o},u,!0),l=ka(function(e){return-1<Zi.call(o,e)},u,!0),f=[function(e,t,n){var r=!a&&(n||t!==Ai)||((o=t).nodeType?c:l)(e,t,n);return o=null,r}];s<i;s++)if(n=xi.relative[t[s].type])f=[ka(_a(f),n)];else{if((n=xi.filter[t[s].type].apply(null,t[s].matches))[Fi]){for(r=++s;r<i&&!xi.relative[t[r].type];r++);return function e(m,g,p,h,v,t){return h&&!h[Fi]&&(h=e(h)),v&&!v[Fi]&&(v=e(v,t)),Ca(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)ba(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Aa(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=Aa(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=v?Zi.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Aa(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):Ji.apply(t,d)})}(1<s&&_a(f),1<s&&Na(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(oa,"$1"),n,s<r&&e(t.slice(s,r)),r<i&&e(t=t.slice(r)),r<i&&Na(t))}f.push(n)}return _a(f)}(t[n]))[Fi]?r:o).push(i);(i=qi(e,(h=o,b=0<(v=r).length,y=0<h.length,b?Ca(a):a))).selector=e}function a(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Ai,m=e||y&&xi.find.TAG("*",o),g=zi+=null==d?1:Math.random()||.1,p=m.length;for(o&&(Ai=t!==Oi&&t);c!==p&&null!=(i=m[c]);c++){if(y&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&&(zi=g)}b&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,b&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=Yi.call(r));f=Aa(f)}Ji.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&ba.uniqueSort(r)}return o&&(zi=g,Ai=d),l}return i},_i=ba.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Ni(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&wi.getById&&9===t.nodeType&&Pi&&xi.relative[i[1].type]){if(!(t=(xi.find.ID(a.matches[0].replace(va,Ci),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=la.needsContext.test(e)?0:i.length;o--&&(a=i[o],!xi.relative[u=a.type]);)if((s=xi.find[u])&&(r=s(a.matches[0].replace(va,Ci),pa.test(i[0].type)&&Sa(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Na(i)))return Ji.apply(n,r),n;break}}return(c||ki(e,l))(r,t,!Pi,n,pa.test(e)&&Sa(t.parentNode)||t),n},wi.sortStable=Fi.split("").sort($i).join("")===Fi,wi.detectDuplicates=!!Ri,Di(),wi.sortDetached=!0;var Fa=document,Ua=Array.prototype.push,za=Array.prototype.slice,ja=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,Ha=bi.Event,Va=St.makeMap("children,contents,next,prev"),qa=function(e,t,n,r){var o;if(Ra(t))t=Da(t,Qa(e[0]));else if(t.length&&!t.nodeType){if(t=ou.makeArray(t),r)for(o=t.length-1;0<=o;o--)qa(e,t[o],n,r);else for(o=0;o<t.length;o++)qa(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},$a=St.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),Wa=St.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),Ka={for:"htmlFor",class:"className",readonly:"readOnly"},Xa={float:"cssFloat"},Ya={},Ga={},Ja=/^\s*|\s*$/g,Qa=function(e){return e?9===e.nodeType?e:e.ownerDocument:Fa};function Za(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof ou&&(n=n[0]);o&&9!==o.nodeType;){if(void 0!==n){if(o===n)break;if("string"==typeof n&&ou(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r}function eu(e,t,n,r){var o=[];for(r instanceof ou&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(void 0!==r){if(e===r)break;if("string"==typeof r&&ou(e).is(r))break}o.push(e)}return o}function tu(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null}function nu(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName)||null;t.attr("data-mce-style",r)}function ru(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o}Pa.fn=Pa.prototype={constructor:Pa,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return ou(e).attr(t);o.context=t=document}if(Ra(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:ja.exec(e)))return ou(t).find(e);if(n[1])for(r=Da(e,Qa(t)).firstChild;r;)Ua.call(o,r),r=r.nextSibling;else{if(!(r=Qa(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return St.toArray(this)},add:function(e,t){var n,r;if(Ra(e))return this.add(ou(e));if(!1!==t)for(n=ou.unique(this.toArray().concat(ou.makeArray(e))),this.length=n.length,r=0;r<n.length;r++)this[r]=n[r];else Ua.apply(this,ou.makeArray(e));return this},attr:function(t,n){var e,r=this;if("object"==typeof t)Ia(t,function(e,t){r.attr(e,t)});else{if(!Ta(n)){if(r[0]&&1===r[0].nodeType){if((e=Ya[t])&&e.get)return e.get(r[0],t);if(Wa[t])return r.prop(t)?t:void 0;null===(n=r[0].getAttribute(t,2))&&(n=void 0)}return n}this.each(function(){var e;1===this.nodeType&&((e=Ya[t])&&e.set?e.set(this,n):null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2))})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=Ka[e]||e))Ia(e,function(e,t){n.prop(e,t)});else{if(!Ta(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(t,n){function e(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var o,i,a=this;if("object"==typeof t)Ia(t,function(e,t){a.css(e,t)});else if(Ta(n))t=e(t),"number"!=typeof n||$a[t]||(n=n.toString()+"px"),a.each(function(){var e=this.style;if((i=Ga[t])&&i.set)i.set(this,n);else{try{this.style[Xa[t]||t]=n}catch(e){}null!==n&&""!==n||(e.removeProperty?e.removeProperty(r(t)):e.removeAttribute(t))}});else{if(o=a[0],(i=Ga[t])&&i.get)return i.get(o);if(!o.ownerDocument.defaultView)return o.currentStyle?o.currentStyle[e(t)]:"";try{return o.ownerDocument.defaultView.getComputedStyle(o,null).getPropertyValue(r(t))}catch(e){return}}return a},remove:function(){for(var e,t=this.length;t--;)e=this[t],Ha.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(t){var n;if(Ta(t)){n=this.length;try{for(;n--;)this[n].innerHTML=t}catch(e){ou(this[n]).empty().append(t)}return this}return this[0]?this[0].innerHTML:""},text:function(e){var t;if(Ta(e)){for(t=this.length;t--;)"innerText"in this[t]?this[t].innerText=e:this[0].textContent=e;return this}return this[0]?this[0].innerText||this[0].textContent:""},append:function(){return qa(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return qa(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?qa(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?qa(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return ou(e).append(this),this},prependTo:function(e){return ou(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return Ba(this,e)},wrapAll:function(e){return Ba(this,e,!0)},wrapInner:function(e){return this.each(function(){ou(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){ou(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),ou(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?Ia(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r=Oa(t,o);r!==i&&(n=t.className,r?t.className=La((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return Oa(this[0],e)},each:function(e){return Ia(this,e)},on:function(e,t){return this.each(function(){Ha.bind(this,e,t)})},off:function(e,t){return this.each(function(){Ha.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?Ha.fire(this,e.type,e):Ha.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return ou(za.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){for(var t=[],n=0,r=this.length;n<r;n++)ou.find(e,this[n],t);return ou(t)},filter:function(n){return ou("function"==typeof n?Ma(this.toArray(),function(e,t){return n(t,e)}):ou.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof ou&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&ou(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),ou(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Ua,sort:Array.prototype.sort,splice:Array.prototype.splice},St.extend(Pa,{extend:St.extend,makeArray:function(e){return e&&e===e.window||e.nodeType?[e]:St.toArray(e)},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:St.isArray,each:Ia,trim:La,grep:Ma,find:ba,expr:ba.selectors,unique:ba.uniqueSort,text:ba.getText,contains:ba.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return 1===t.length?ou.find.matchesSelector(t[0],e)?[t[0]]:[]:ou.find.matches(e,t)}}),Ia({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Za(e,"parentNode")},next:function(e){return tu(e,"nextSibling",1)},prev:function(e){return tu(e,"previousSibling",1)},children:function(e){return eu(e.firstChild,"nextSibling",1)},contents:function(e){return St.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(r,o){Pa.fn[r]=function(t){var n=[];this.each(function(){var e=o.call(n,this,t,n);e&&(ou.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(Va[r]||(n=ou.unique(n)),0===r.indexOf("parents")&&(n=n.reverse()));var e=ou(n);return t?e.filter(t):e}}),Ia({parentsUntil:function(e,t){return Za(e,"parentNode",t)},nextUntil:function(e,t){return eu(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return eu(e,"previousSibling",1,t).slice(1)}},function(o,i){Pa.fn[o]=function(t,e){var n=[];this.each(function(){var e=i.call(n,this,t,n);e&&(ou.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=ou.unique(n),0!==o.indexOf("parents")&&"prevUntil"!==o||(n=n.reverse()));var r=ou(n);return e?r.filter(e):r}}),Pa.fn.is=function(e){return!!e&&0<this.filter(e).length},Pa.fn.init.prototype=Pa.fn,Pa.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t=t||r.context,new o.fn.init(e,t)};return ou.extend(o,this),o},Pa.attrHooks=Ya,Pa.cssHooks=Ga;var ou=Pa,iu=St.each,au=St.grep,uu=Ct.ie,su=/^([a-z0-9],?)+$/i,cu=function(a,u){function s(e){return e&&a&&K(e)?a.getElementById(e):e}function c(e){return j("string"==typeof e?s(e):e)}function r(e,t,n){var r,o,i=c(e);return void 0===(o=i.length?(r=W[t])&&r.get?r.get(i,t):i.attr(t):o)?n||"":o}function o(e){var t=s(e);return t?t.attributes:[]}function i(e,t,n){""===n&&(n=null);var r,o=c(e),i=o.attr(t);o.length&&((r=W[t])&&r.set?r.set(o,n,t):o.attr(t,n),i!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:o,attrName:t,attrValue:n}))}function l(){return u.root_element||a.body}function f(e,t){return function(e,t,n){var r,o=0,i=0,a=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===Cn(Et.fromDom(e),"position")){var u=t.getBoundingClientRect();return{x:o=u.left+(a.documentElement.scrollLeft||e.scrollLeft)-a.documentElement.clientLeft,y:i=u.top+(a.documentElement.scrollTop||e.scrollTop)-a.documentElement.clientTop}}for(var s=t;s&&s!==n&&s.nodeType&&!En(s,n);){var c=s;o+=c.offsetLeft||0,i+=c.offsetTop||0,s=c.offsetParent}for(s=t.parentNode;s&&s!==n&&s.nodeType&&!En(s,n);)o-=s.scrollLeft||0,i-=s.scrollTop||0,s=s.parentNode;i+=(r=Et.fromDom(t),tr.isFirefox()&&"table"===Nt(r)?Sn(On(r)).filter(function(e){return"caption"===Nt(e)}).bind(function(o){return Sn(Lt(o)).map(function(e){var t=e.dom.offsetTop,n=o.dom.offsetTop,r=o.dom.offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:o,y:i}}(a.body,s(e),t)}function d(e,t,n){var r=c(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=Ct.browser.isIE()?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:void 0)}function m(e){var t=d(e=s(e),"width"),n=d(e,"height");return-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}}function g(e,t){if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(su.test(t)){for(var n=t.toLowerCase().split(/,/),r=e.nodeName.toLowerCase(),o=n.length-1;0<=o;o--)if(n[o]===r)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<ba(t,i[0].ownerDocument||i[0],null,i).length}function p(e,t,n,r){var o,i=[],a=s(e);for(r=void 0===r,n=n||("BODY"!==l().nodeName?l().parentNode:null),St.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return g(e,o)});a&&!(a===n||re(a.nodeType)||Wn(a)||Kn(a));){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null}function n(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return g(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null}function h(e,n,r){var o,t="string"==typeof e?s(e):e;return!!t&&(St.isArray(t)&&(t.length||0===t.length)?(o=[],iu(t,function(e,t){e&&o.push(n.call(r,"string"==typeof e?s(e):e,t))}),o):n.call(r||this,t))}function v(e,t){c(e).each(function(e,n){iu(t,function(e,t){i(n,t,e)})})}function b(e,n){var t=c(e);uu?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+n,t.removeChild(t.firstChild)}catch(e){ou("<div></div>").html("<br>"+n).contents().slice(1).appendTo(t)}return n}}):t.html(n)}function y(e,n,r,o,i){return h(e,function(e){var t="string"==typeof n?a.createElement(n):n;return v(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&b(t,o)),i?t:e.appendChild(t)})}function C(e,t,n){return y(a.createElement(e),e,t,n,!0)}function w(e,t){var n=c(e);return(t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}):n).remove(),1<n.length?n.toArray():n[0]}function x(e,t,n){c(e).toggleClass(t,n).each(function(){""===this.className&&ou(this).attr("class",null)})}function S(t,e,n){return h(e,function(e){return St.is(e,"array")&&(t=t.cloneNode(!0)),n&&iu(au(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})}function E(e){if(Hn(e)){var t="a"===e.nodeName.toLowerCase()&&!r(e,"href")&&r(e,"id");return r(e,"name")||r(e,"data-mce-bookmark")||t?1:void 0}}function N(){return a.createRange()}function k(e){if(e&&Hn(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null}void 0===u&&(u={});var _,A,T,R,e,t,D={},O=window,B={},P=0,L=zr.forElement(Et.fromDom(a),{contentCssCors:u.contentCssCors,referrerPolicy:u.referrerPolicy}),I=[],M=u.schema||go({}),F=ho({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),U=u.ownEvents?new bi:bi.Event,z=M.getBlockElements(),j=ou.overrideDefaults(function(){return{context:a,element:$.getRoot()}}),H=si.encodeAllRaw,V=function(e,t,n,r){if(St.isArray(e)){for(var o=e.length,i=[];o--;)i[o]=V(e[o],t,n,r);return i}return!u.collect||e!==a&&e!==O||I.push([e,t,n,r]),U.bind(e,t,n,r||$)},q=function(e,t,n){if(St.isArray(e)){for(var r=e.length,o=[];r--;)o[r]=q(e[r],t,n);return o}if(0<I.length&&(e===a||e===O))for(r=I.length;r--;){var i=I[r];e!==i[0]||t&&t!==i[1]||n&&n!==i[2]||U.unbind(i[0],i[1],i[2])}return U.unbind(e,t,n)},$={doc:a,settings:u,win:O,files:B,stdMode:!0,boxModel:!0,styleSheetLoader:L,boundEvents:I,styles:F,schema:M,events:U,isBlock:function(e){if("string"==typeof e)return!!z[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!z[e.nodeName])}return!1},$:j,$$:c,root:null,clone:function(t,e){if(!uu||1!==t.nodeType||e)return t.cloneNode(e);var n=a.createElement(t.nodeName);return iu(o(t),function(e){i(n,e.nodeName,r(t,e.nodeName))}),n},getRoot:l,getViewPort:function(e){var t=en(e);return{x:t.x,y:t.y,w:t.width,h:t.height}},getRect:function(e){var t=f(e=s(e)),n=m(e);return{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:m,getParent:function(e,t,n){var r=p(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:p,get:s,getNext:function(e,t){return n(e,t,"nextSibling")},getPrev:function(e,t){return n(e,t,"previousSibling")},select:function(e,t){return ba(e,s(t)||u.root_element||a,[])},is:g,add:y,create:C,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)ue(t,r)&&(o+=" "+r+'="'+H(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(r.appendChild(n),e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r.removeChild(n),r},remove:w,setStyle:function(e,t,n){var r=K(t)?c(e).css(t,n):c(e).css(t);u.update_styles&&nu(F,r)},getStyle:d,setStyles:function(e,t){var n=c(e).css(t);u.update_styles&&nu(F,n)},removeAllAttribs:function(e){return h(e,function(e){for(var t=e.attributes,n=t.length-1;0<=n;n--)e.removeAttributeNode(t.item(n))})},setAttrib:i,setAttribs:v,getAttrib:r,getPos:f,parseStyle:function(e){return F.parse(e)},serializeStyle:function(e,t){return F.serialize(e,t)},addStyle:function(e){var t,n;if($!==cu.DOM&&a===document){if(D[e])return;D[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){X((e=e||"").split(","),function(e){B[e]=!0,L.load(e,oe)})},addClass:function(e,t){c(e).addClass(t)},removeClass:function(e,t){x(e,t,!1)},hasClass:function(e,t){return c(e).hasClass(t)},toggleClass:x,show:function(e){c(e).show()},hide:function(e){c(e).hide()},isHidden:function(e){return"none"===c(e).css("display")},uniqueId:function(e){return(e||"mce_")+P++},setHTML:b,getOuterHTML:function(e){var t="string"==typeof e?s(e):e;return Hn(t)?t.outerHTML:ou("<div></div>").append(ou(t).clone()).html()},setOuterHTML:function(e,t){c(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}w(ou(this).html(t),!0)})},decode:si.decode,encode:H,insertAfter:function(e,t){var r=s(t);return h(e,function(e){var t=r.parentNode,n=r.nextSibling;return n?t.insertBefore(e,n):t.appendChild(e),e})},replace:S,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=C(e),iu(o(t),function(e){i(n,e.nodeName,r(t,e.nodeName))}),S(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return F.toHex(St.trim(e))},run:h,getAttribs:o,isEmpty:function(e,t){var n,r,o=0;if(E(e))return!1;if(e=e.firstChild){var i=new jr(e,e.parentNode),a=M?M.getWhiteSpaceElements():{};t=t||(M?M.getNonEmptyElements():null);do{if(n=e.nodeType,Hn(e)){var u=e.getAttribute("data-mce-bogus");if(u){e=i.next("all"===u);continue}if(r=e.nodeName.toLowerCase(),t&&t[r]){if("br"!==r)return!1;o++,e=i.next();continue}if(E(e))return!1}if(8===n)return!1;if(3===n&&!no(e.nodeValue))return!1;if(3===n&&e.parentNode&&a[e.parentNode.nodeName]&&no(e.nodeValue))return!1;e=i.next()}while(e)}return o<=1},createRng:N,nodeIndex:ru,split:function(e,t,n){var r,o,i,a=N();if(e&&t)return a.setStart(e.parentNode,ru(e)),a.setEnd(t.parentNode,ru(t)),r=a.extractContents(),(a=N()).setStart(t.parentNode,ru(t)+1),a.setEnd(e.parentNode,ru(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Qo($,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Qo($,o),e),w(e),n||t},bind:V,unbind:q,fire:function(e,t,n){return U.fire(e,t,n)},getContentEditable:k,getContentEditableParent:function(e){for(var t=l(),n=null;e&&e!==t&&null===(n=k(e));e=e.parentNode);return n},destroy:function(){if(0<I.length)for(var e=I.length;e--;){var t=I[e];U.unbind(t[0],t[1],t[2])}Q(B,function(e,t){L.unload(t),delete B[t]}),ba.setDocument&&ba.setDocument()},isChildOf:function(e,t){if(uu){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}return e===t||t.contains(e)},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}},W=(_=F,T=J($),e={set:function(e,t,n){A.url_converter&&(t=A.url_converter.call(A.url_converter_scope||T(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},t={style:{set:function(e,t){null===t||"object"!=typeof t?(R&&e.attr("data-mce-style",t),null!==t&&"string"==typeof t?(e.removeAttr("style"),e.css(_.parse(t))):e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return _.serialize(_.parse(t),e[0].nodeName)}}},(R=(A=u).keep_values)&&(t.href=t.src=e),t);return $};cu.DOM=cu(document),cu.nodeIndex=ru;var lu=cu.DOM,fu=St.each,du=St.grep,mu=(gu.prototype._setReferrerPolicy=function(e){this.settings.referrerPolicy=e},gu.prototype.loadScript=function(e,t,n){function r(){o.remove(i),a&&(a.onerror=a.onload=a=null)}var o=lu,i=o.uniqueId(),a=document.createElement("script");a.id=i,a.type="text/javascript",a.src=St._addCacheSuffix(e),this.settings.referrerPolicy&&o.setAttrib(a,"referrerpolicy",this.settings.referrerPolicy),a.onload=function(){r(),t()},a.onerror=function(){r(),y(n)?n():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+e)},(document.getElementsByTagName("head")[0]||document.body).appendChild(a)},gu.prototype.isDone=function(e){return 2===this.states[e]},gu.prototype.markDone=function(e){this.states[e]=2},gu.prototype.add=function(e,t,n,r){var o=this.states[e];this.queue.push(e),void 0===o&&(this.states[e]=0),t&&(this.scriptLoadedCallbacks[e]||(this.scriptLoadedCallbacks[e]=[]),this.scriptLoadedCallbacks[e].push({success:t,failure:r,scope:n||this}))},gu.prototype.load=function(e,t,n,r){return this.add(e,t,n,r)},gu.prototype.remove=function(e){delete this.states[e],delete this.scriptLoadedCallbacks[e]},gu.prototype.loadQueue=function(e,t,n){this.loadScripts(this.queue,e,t,n)},gu.prototype.loadScripts=function(n,e,t,r){function o(t,e){fu(i.scriptLoadedCallbacks[e],function(e){y(e[t])&&e[t].call(e.scope)}),i.scriptLoadedCallbacks[e]=void 0}var i=this,a=[];i.queueLoadedCallbacks.push({success:e,failure:r,scope:t||this});var u=function(){var e,t=du(n);n.length=0,fu(t,function(e){2!==i.states[e]?3!==i.states[e]?1!==i.states[e]&&(i.states[e]=1,i.loading++,i.loadScript(e,function(){i.states[e]=2,i.loading--,o("success",e),u()},function(){i.states[e]=3,i.loading--,a.push(e),o("failure",e),u()})):o("failure",e):o("success",e)}),i.loading||(e=i.queueLoadedCallbacks.slice(0),i.queueLoadedCallbacks.length=0,fu(e,function(e){0===a.length?y(e.success)&&e.success.call(e.scope):y(e.failure)&&e.failure.call(e.scope,a)}))};u()},gu.ScriptLoader=new gu,gu);function gu(e){void 0===e&&(e={}),this.states={},this.queue=[],this.scriptLoadedCallbacks={},this.queueLoadedCallbacks=[],this.loading=0,this.settings=e}function pu(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function hu(){return ae(vu,bu.get())}var vu={},bu=pu("en"),yu={getData:function(){return Z(vu,function(e){return ke({},e)})},setCode:function(e){e&&bu.set(e)},getCode:function(){return bu.get()},add:function(e,t){var n=vu[e];n||(vu[e]=n={}),Q(t,function(e,t){n[t.toLowerCase()]=e})},translate:function(e){function n(e){return y(e)?Object.prototype.toString.call(e):u(e)?"":""+e}function t(e){var t=n(e);return ae(a,t.toLowerCase()).map(n).getOr(t)}function r(e){return e.replace(/{context:\w+}$/,"")}var o,i,a=hu().getOr({}),u=function(e){return""===e||null==e};if(u(e))return"";if(h(o=e)&&Ee(o,"raw"))return n(e.raw);if(S(i=e)&&1<i.length){var s=e.slice(1);return r(t(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Ee(s,t)?n(s[t]):e}))}return r(t(e))},isRtl:function(){return hu().bind(function(e){return ae(e,"_dir")}).exists(function(e){return"rtl"===e})},hasCode:function(e){return Ee(vu,e)}},Cu=function(){function u(t,n){X(U(r,function(e){return e.name===t&&e.state===n}),function(e){return e.callback()})}function s(e){var t;return(f[e]?f[e].dependencies:t)||[]}function c(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}}function e(e,t,n){void 0===n&&(n="added"),Ee(f,e)&&"added"===n||Ee(l,e)&&"loaded"===n?t():r.push({name:e,state:n,callback:t})}var o=[],l={},f={},r=[],d=function(r,o,i,a,e){var t,n;l[r]||(0!==(t="string"==typeof o?o:o.prefix+o.resource+o.suffix).indexOf("/")&&-1===t.indexOf("://")&&(t=Cu.baseURL+"/"+t),l[r]=t.substring(0,t.lastIndexOf("/")),n=function(){var n,e,t;u(r,"loaded"),n=o,e=i,t=a,X(s(r),function(e){var t=c(n,e);d(t.resource,t,void 0,void 0)}),e&&(t?e.call(t):e.call(mu))},f[r]?n():mu.ScriptLoader.add(t,n,a,e))};return{items:o,urls:l,lookup:f,_listeners:r,get:function(e){if(f[e])return f[e].instance},dependencies:s,requireLangPack:function(t,n){!1!==Cu.languageLoad&&e(t,function(){var e=yu.getCode();!e||n&&-1===(","+(n||"")+",").indexOf(","+e+",")||mu.ScriptLoader.add(l[t]+"/langs/"+e+".js")},"loaded")},add:function(e,t,n){var r=t;return o.push(r),f[e]={instance:r,dependencies:n},u(e,"added"),r},remove:function(e){delete l[e],delete f[e]},createUrl:c,addComponents:function(e,t){var n=l[e];X(t,function(e){mu.ScriptLoader.add(n+"/"+e)})},load:d,waitFor:e}};function wu(){var e,t,n=(e=oe,t=pu(he.none()),{clear:function(){r(),t.set(he.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){r(),t.set(he.some(e))}});function r(){return t.get().each(e)}return ke(ke({},n),{on:function(e){return n.get().each(e)}})}function xu(n,r){var o=null;return{cancel:function(){l(o)||(clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];l(o)&&(o=setTimeout(function(){o=null,n.apply(null,e)},r))}}}function Su(n,r){function o(){l(i)||(clearTimeout(i),i=null)}var i=null;return{cancel:o,throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o(),i=setTimeout(function(){i=null,n.apply(null,e)},r)}}}function Eu(e,t){var n=hn(e,t);return void 0===n||""===n?[]:n.split(" ")}function Nu(e){return void 0!==e.dom.classList}function ku(e,t){var n,r,o;Nu(e)?e.dom.classList.add(t):(r=t,o=Eu(n=e,"class").concat([r]),gn(n,"class",o.join(" ")))}function _u(e,t){return Nu(e)&&e.dom.classList.contains(t)}function Au(e,t){return ze(n=void 0===e?document:e.dom)?[]:R(n.querySelectorAll(t),Et.fromDom);var n}function Tu(r,e){function t(e,t){return(n=e.dom)&&n.hasAttribute&&n.hasAttribute(t)?he.some(hn(e,t)):he.none();var n}var n=r.selection.getRng(),o=Et.fromDom(n.startContainer),i=Et.fromDom(r.getBody()),a=e.fold(function(){return"."+es()},function(e){return"["+ts()+'="'+e+'"]'});return Cr(It(o,n.startOffset).getOr(o),a,function(e){return je(e,i)}).bind(function(e){return t(e,""+ns()).bind(function(n){return t(e,""+ts()).map(function(e){var t=rs(r,n);return{uid:n,name:e,elements:t}})})})}function Ru(r){function o(){return{listeners:[],previous:wu()}}function c(e,t){i(e,function(e){return t(e),e})}function i(e,t){var n=a.get(),r=t(ae(n,e).getOrThunk(o));n[e]=r,a.set(n)}var a=pu({}),e=Su(function(){var e,t,n=a.get();X((e=we(n),(t=ve.call(e,0)).sort(void 0),t),function(e){i(e,function(u){var s=u.previous.get();return Tu(r,he.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){X(e.listeners,function(e){return e(!1,t)})}),u.previous.clear())},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;ln(s,o)||(n=o,r=a,c(t=i,function(e){X(e.listeners,function(e){return e(!0,t,{uid:n,nodes:R(r,function(e){return e.dom})})})}),u.previous.set(o))}),{previous:u.previous,listeners:u.listeners}})})},30);return r.on("remove",function(){e.cancel()}),r.on("NodeChange",function(){e.throttle()}),{addListener:function(e,t){i(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}}function Du(e){var t=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++os+String(t)}function Ou(e,t){var n,r,o=At(e).dom,i=Et.fromDom(o.createDocumentFragment());Wt(i,(n=t,(r=(o||document).createElement("div")).innerHTML=n,On(Et.fromDom(r)))),Kt(e),In(e,i)}function Bu(e,t){return Et.fromDom(e.dom.cloneNode(t))}function Pu(e){return Bu(e,!1)}function Lu(e){return Bu(e,!0)}function Iu(e,t,n){function r(e){for(var t;(t=o[e]())&&!qn(t)&&!n(t););return he.from(t).filter(qn)}void 0===n&&(n=T);var o=new jr(e,t);return{current:function(){return he.from(o.current()).filter(qn)},next:function(){return r("next")},prev:function(){return r("prev")},prev2:function(){return r("prev2")}}}function Mu(t,e){var i=e||function(e){return t.isBlock(e)||Xn(e)||Jn(e)},a=function(e,t,n,r){if(qn(e)){var o=r(e,t,e.data);if(-1!==o)return he.some({container:e,offset:o})}return n().bind(function(e){return a(e.container,e.offset,n,r)})};return{backwards:function(e,t,n,r){var o=Iu(e,r,i);return a(e,t,function(){return o.prev().map(function(e){return{container:e,offset:e.length}})},n).getOrNull()},forwards:function(e,t,n,r){var o=Iu(e,r,i);return a(e,t,function(){return o.next().map(function(e){return{container:e,offset:0}})},n).getOrNull()}}}function Fu(e){return e?{left:is(e.left),top:is(e.top),bottom:is(e.bottom),right:is(e.right),width:is(e.width),height:is(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function Uu(e,t){return e=Fu(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e}function zu(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2}function ju(e,t){var n=Math.min(t.height/2,e.height/2);return e.bottom-n<t.top||!(e.top>t.bottom)&&zu(t.top-e.bottom,e,t)}function Hu(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&zu(t.bottom-e.top,e,t)}function Vu(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}function qu(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null}function $u(e,t){if(Hn(e)&&e.hasChildNodes()){var n=e.childNodes;return n[r=n.length-1,Math.min(Math.max(t,0),r)]}return e;var r}function Wu(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&as.test(e)}function Ku(e){return"createRange"in e?e.createRange():cu.DOM.createRng()}function Xu(e){return e&&/[\r\n\t ]/.test(e)}function Yu(e){return e.setStart&&e.setEnd}function Gu(e){var t=e.startContainer,n=e.startOffset;if(Xu(e.toString())&&ds(t.parentNode)&&qn(t)){var r=t.data;return Xu(r[n-1])||Xu(r[n+1])?1:void 0}}function Ju(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom}function Qu(e,t){var n=Uu(e,t);return n.width=1,n.right=n.left+1,n}Cu.languageLoad=!0,Cu.baseURL="",Cu.PluginManager=Cu(),Cu.ThemeManager=Cu();var Zu=function(e,t){var n=[];return X(On(e),function(e){n=(n=t(e)?n.concat([e]):n).concat(Zu(e,t))}),n},es=J("mce-annotation"),ts=J("data-mce-annotation"),ns=J("data-mce-annotation-uid"),rs=function(e,t){return Au(Et.fromDom(e.getBody()),"["+ns()+'="'+t+'"]')},os=0,is=Math.round,as=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),us=Hn,ss=eo,cs=on("display","block table"),ls=on("float","left right"),fs=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}}(us,ss,s(ls)),ds=s(on("white-space","pre pre-line pre-wrap")),ms=qn,gs=Xn,ps=cu.nodeIndex,hs=function(e,t){if(!(t<0&&Hn(e)&&e.hasChildNodes()))return $u(e,t)},vs=function(e){var t=e.getClientRects(),n=0<t.length?Fu(t[0]):Fu(e.getBoundingClientRect());return!Yu(e)&&gs(e)&&Ju(n)?function(e){var t=e.ownerDocument,n=Ku(t),r=t.createTextNode(Do),o=e.parentNode;o.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1);var i=Fu(n.getBoundingClientRect());return o.removeChild(r),i}(e):Ju(n)&&Yu(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&qn(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),vs(i)}return null}(e):n},bs=function(t,n,e){function r(){return e=e||function(e){function r(e){var t;0!==e.height&&(0<o.length&&(t=o[o.length-1],e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right)||o.push(e))}function t(e,t){var n=Ku(e.ownerDocument);if(t<e.data.length){if(Wu(e.data[t]))return o;if(Wu(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!Gu(n)))return r(Qu(vs(n),!1)),o}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),Gu(n)||r(Qu(vs(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),Gu(n)||r(Qu(vs(n),!0)))}var o=[],n=e.container(),i=e.offset();if(ms(n))return t(n,i),o;if(us(n))if(e.isAtEnd()){var a=hs(n,i);ms(a)&&t(a,a.data.length),fs(a)&&!gs(a)&&r(Qu(vs(a),!1))}else{if(a=hs(n,i),ms(a)&&t(a,0),fs(a)&&e.isAtEnd())return r(Qu(vs(a),!1)),o;var u=hs(e.container(),e.offset()-1);fs(u)&&!gs(u)&&(!cs(u)&&!cs(a)&&fs(a)||r(Qu(vs(u),!1))),fs(a)&&r(Qu(vs(a),!0))}return o}(bs(t,n))}return{container:J(t),offset:J(n),toRange:function(){var e=Ku(t.ownerDocument);return e.setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return ms(t),0===n},isAtEnd:function(){return ms(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return hs(t,e?n-1:n)}}};function ys(e,t){qn(t)&&0===t.data.length&&e.remove(t)}function Cs(e,t,n){var r,o,i,a,u,s,c;Kn(n)?(i=e,a=t,s=he.from((u=n).firstChild),c=he.from(u.lastChild),a.insertNode(u),s.each(function(e){return ys(i,e.previousSibling)}),c.each(function(e){return ys(i,e.nextSibling)})):(r=e,t.insertNode(o=n),ys(r,o.previousSibling),ys(r,o.nextSibling))}function ws(t){return function(e){return t===e}}function xs(e){var t,r,n,o;return(yc(e)?"text()":e.nodeName.toLowerCase())+"["+(r=Sc(xc(t=e)),n=me(r,ws(t),t),o=de(r=r.slice(0,n+1),function(e,t,n){return yc(t)&&yc(r[n-1])&&e++,e},0),me(r=le(r,rn([t.nodeName])),ws(t),t)-o)+"]"}function Ss(e,t){var n,r,o,i=[],a=t.container(),u=t.offset();return yc(a)?n=function(e,t){for(;(e=e.previousSibling)&&yc(e);)t+=e.data.length;return t}(a,u):(u>=(r=a.childNodes).length?(n="after",u=r.length-1):n="before",a=r[u]),i.push(xs(a)),o=le(function(e,t){var n=[];for(t=t.parentNode;t!==e;t=t.parentNode)n.push(t);return n}(e,a),s(un)),(i=i.concat(ce(o,xs))).reverse().join("/")+","+n}function Es(e,t){if(!t)return null;var n=t.split(","),r=n[0].split("/"),o=1<n.length?n[1]:"before",i=de(r,function(e,t){var n,r,o,i,a=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t);return a?("text()"===a[1]&&(a[1]="#text"),n=e,r=a[1],o=parseInt(a[2],10),i=le(i=Sc(n),function(e,t){return!yc(e)||!yc(i[t-1])}),(i=le(i,rn([r])))[o]):null},e);return i?yc(i)?function(e,t){for(var n,r=e,o=0;yc(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!yc(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return yc(e)&&t>e.data.length&&(t=e.data.length),bs(e,t)}(i,parseInt(o,10)):(o="after"===o?wc(i)+1:wc(i),bs(i.parentNode,o)):null}function Ns(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(qn(a)?s.push(n?function(e,t,n){for(var r=e(t.data.slice(0,n)).length,o=t.previousSibling;o&&qn(o);o=o.previousSibling)r+=e(o.data).length;return r}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s}function ks(e,t,n){var r=0;return St.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r}function _s(e,t){var n,r=t?"start":"end",o=e[r+"Container"],i=e[r+"Offset"];Hn(o)&&"TR"===o.nodeName&&(o=(n=o.childNodes)[Math.min(t?i:i-1,n.length-1)])&&(i=t?0:o.childNodes.length,e["set"+(t?"Start":"End")](o,i))}function As(e){return _s(e,!0),_s(e,!1),e}function Ts(e,t){var n;return Hn(e)&&(e=$u(e,t),Ec(e))?e:Xr(e)?(n=(e=qn(e)&&Wr(e)?e.parentNode:e).previousSibling,Ec(n)?n:(n=e.nextSibling,Ec(n)?n:void 0)):void 0}function Rs(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Ec(r)||"IMG"===o)return{name:o,index:ks(n.dom,o,r)};var a,u,s,c,l,f,d,m=Ts((a=i).startContainer,a.startOffset)||Ts(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:ks(n.dom,o,m)}:(f=(s=n).dom,(d={}).start=Ns(f,u=e,c=t,l=i,!0),s.isCollapsed()||(d.end=Ns(f,u,c,l,!1)),Zr(l)&&(d.isFakeCaret=!0),d)}function Ds(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)}function Os(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:ks(n,u,a)};var s=As(r.cloneRange());return i||(s.collapse(!1),Cs(n,s,Ds(n,o+"_end",t))),(r=As(r)).collapse(!0),Cs(n,r,Ds(n,o+"_start",t)),e.moveToBookmark({id:o,keep:!0}),{id:o}}function Bs(e,t,n){var r=e.getParam(t,n);return-1===r.indexOf("=")?r:ae(e.getParam(t,"","hash"),e.id).getOr(n)}function Ps(e){return e.getParam("content_security_policy","")}function Ls(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":!0===t?"p":t}function Is(e){return e.getParam("forced_root_block_attrs",{})}function Ms(e){return e.getParam("automatic_uploads",!0,"boolean")}function Fs(e){return e.getParam("icons","","string")}function Us(e){return e.getParam("referrer_policy","","string")}function zs(e){return e.getParam("language","en","string")}function js(e){return e.getParam("indent_use_margin",!1)}function Hs(e){var t=e.getParam("font_css",[]);return S(t)?t:R(t.split(","),Ge)}function Vs(e){var t=e.getParam("object_resizing");return!1!==t&&!Ct.iOS&&(K(t)?t:"table,img,figure.image,div,video,iframe")}function qs(e){return e.getParam("event_root")}function $s(e){return e.getParam("theme")}function Ws(e){return!1!==e.getParam("inline_boundaries")}function Ks(e){return e.getParam("plugins","","string")}function Xs(e){var t=e.parentNode;t&&t.removeChild(e)}function Ys(e){var t=Po(e);return{count:e.length-t.length,text:t}}function Gs(e){for(var t;-1!==(t=e.data.lastIndexOf(Oo));)e.deleteData(t,1)}function Js(e,t){return Tc(e),t}function Qs(e,t){var n,r=t.container(),o=(-1===(n=_(Ce(r.childNodes),e))?he.none():he.some(n)).map(function(e){return e<t.offset()?bs(r,t.offset()-1):t}).getOr(t);return Tc(e),o}function Zs(e,t){return bs.isTextPosition(t)?(r=t,Ac(n=e)&&r.container()===n?(a=Ys((o=n).data.substr(0,(i=r).offset())),u=Ys(o.data.substr(i.offset())),0<(a.text+u.text).length?(Gs(o),bs(o,i.offset()-a.count)):i):Js(n,r)):(s=e,((c=t).container()===s.parentNode?Qs:Js)(s,c));var n,r,o,i,a,u,s,c}function ec(e,t,n){var r,o,i,a=Uu(t.getBoundingClientRect(),n),u="BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,e.scrollTop||r.scrollTop):(i=e.getBoundingClientRect(),o=e.scrollLeft-i.left,e.scrollTop-i.top);a.left+=o,a.right+=o,a.top+=u,a.bottom+=u,a.width=1;var s=t.offsetWidth-t.clientWidth;return 0<s&&(n&&(s*=-1),a.left+=s,a.right+=s),a}function tc(e,i,a,u){function s(){!function(){for(var e=Au(Et.fromDom(i),"*[contentEditable=false],video,audio,embed,object"),t=0;t<e.length;t++){var n,r=e[t].dom,o=r.previousSibling;Fo(o)&&(1===(n=o.data).length?o.parentNode.removeChild(o):o.deleteData(n.length-1,1)),o=r.nextSibling,Mo(o)&&(1===(n=o.data).length?o.parentNode.removeChild(o):o.deleteData(0,1))}}(),l&&(Tc(l),l=null),f.on(function(e){ou(e.caret).remove(),f.clear()}),c&&(Ur.clearInterval(c),c=void 0)}var c,l,f=wu(),t=Ls(e),d=0<t.length?t:"p";return{show:function(e,t){var n;if(s(),Bc(t))return null;if(!a(t))return l=function(e,t){var n=e.ownerDocument.createTextNode(Oo),r=e.parentNode;if(t){if(o=e.previousSibling,Io(o)){if(Xr(o))return o;if(Fo(o))return o.splitText(o.data.length-1)}r.insertBefore(n,e)}else{var o=e.nextSibling;if(Io(o)){if(Xr(o))return o;if(Mo(o))return o.splitText(1),o}e.nextSibling?r.insertBefore(n,e.nextSibling):r.appendChild(n)}return n}(t,e),n=t.ownerDocument.createRange(),Pc(l.nextSibling)?(n.setStart(l,0),n.setEnd(l,0)):(n.setStart(l,1),n.setEnd(l,1)),n;l=function(e,t,n){var r,o=t.ownerDocument.createElement(e);o.setAttribute("data-mce-caret",n?"before":"after"),o.setAttribute("data-mce-bogus","all"),o.appendChild(((r=document.createElement("br")).setAttribute("data-mce-bogus","1"),r));var i=t.parentNode;return n?i.insertBefore(o,t):t.nextSibling?i.insertBefore(o,t.nextSibling):i.appendChild(o),o}(d,t,e);var r=ec(i,t,e);ou(l).css("top",r.top);var o=ou('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(ke({},r)).appendTo(i)[0];return f.set({caret:o,element:t,before:e}),e&&ou(o).addClass("mce-visual-caret-before"),c=Ur.setInterval(function(){u()?ou("div.mce-visual-caret",i).toggleClass("mce-visual-caret-hidden"):ou("div.mce-visual-caret",i).addClass("mce-visual-caret-hidden")},500),(n=t.ownerDocument.createRange()).setStart(l,0),n.setEnd(l,0),n},hide:s,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){f.on(function(e){var t=ec(i,e.element,e.before);ou(e.caret).css(ke({},t))})},destroy:function(){return Ur.clearInterval(c)}}}function nc(){return Rc.isIE()||Rc.isEdge()||Rc.isFirefox()}function rc(e){return Pc(e)||sn(e)&&nc()}function oc(e,t){for(var n;n=e(t);)if(!Uc(n))return n;return null}function ic(e,t,n,r,o){var i=new jr(e,r),a=Lc(e)||Uc(e);if(t<0){if(a&&n(e=oc(i.prev.bind(i),!0)))return e;for(;e=oc(i.prev.bind(i),o);)if(n(e))return e}if(0<t){if(a&&n(e=oc(i.next.bind(i),!0)))return e;for(;e=oc(i.next.bind(i),o);)if(n(e))return e}return null}function ac(e,t){for(;e&&e!==t;){if(Mc(e))return e;e=e.parentNode}return null}function uc(e,t,n){return ac(e.container(),n)===ac(t.container(),n)}function sc(e,t){if(!t)return null;var n=t.container(),r=t.offset();return zc(n)?n.childNodes[r+e]:null}function cc(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function lc(e,t,n){for(var r,o,i=e?"previousSibling":"nextSibling";n&&n!==t;){var a=n[i];if(Fc(a)&&(a=a[i]),Lc(a)||Ic(a)){if(o=n,ac(a,r=t)===ac(o,r))return a;break}if(jc(a))break;n=n.parentNode}return null}function fc(e,t,n){var r,o=A(lc,!0,t),i=A(lc,!1,t),a=n.startContainer,u=n.startOffset;if(Wr(a)){var s=(a=zc(a)?a:a.parentNode).getAttribute("data-mce-caret");if("before"===s&&rc(r=a.nextSibling))return Hc(r);if("after"===s&&rc(r=a.previousSibling))return Vc(r)}if(!n.collapsed)return n;if(qn(a)){if(Fc(a)){if(1===e){if(r=i(a))return Hc(r);if(r=o(a))return Vc(r)}if(-1===e){if(r=o(a))return Vc(r);if(r=i(a))return Hc(r)}return n}if(Fo(a)&&u>=a.data.length-1)return 1===e&&(r=i(a))?Hc(r):n;if(Mo(a)&&u<=1)return-1===e&&(r=o(a))?Vc(r):n;if(u===a.data.length)return(r=i(a))?Hc(r):n;if(0===u)return(r=o(a))?Vc(r):n}return n}function dc(e,t){return he.from(sc(e?0:-1,t)).filter(Lc)}function mc(e,t,n){var r=fc(e,t,n);return-1===e?bs.fromRangeStart(r):bs.fromRangeEnd(r)}function gc(e){return he.from(e.getNode()).map(Et.fromDom)}function pc(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function hc(e,t){var n=uc(e,t);return!(n||!Xn(e.getNode()))||n}bs.fromRangeStart=function(e){return bs(e.startContainer,e.startOffset)},bs.fromRangeEnd=function(e){return bs(e.endContainer,e.endOffset)},bs.after=function(e){return bs(e.parentNode,ps(e)+1)},bs.before=function(e){return bs(e.parentNode,ps(e))},bs.isAbove=function(e,t){return fn(W(t.getClientRects()),Y(e.getClientRects()),ju).getOr(!1)},bs.isBelow=function(e,t){return fn(Y(t.getClientRects()),W(e.getClientRects()),Hu).getOr(!1)},bs.isAtStart=function(e){return!!e&&e.isAtStart()},bs.isAtEnd=function(e){return!!e&&e.isAtEnd()},bs.isTextPosition=function(e){return!!e&&qn(e.container())},bs.isElementPosition=function(e){return!1===bs.isTextPosition(e)};var vc,bc,yc=qn,Cc=un,wc=cu.nodeIndex,xc=function(e){var t=e.parentNode;return Cc(t)?xc(t):t},Sc=function(e){return e?de(e.childNodes,function(e,t){return Cc(t)&&"BR"!==t.nodeName?e=e.concat(Sc(t)):e.push(t),e},[]):[]},Ec=Jn,Nc=A(Rs,u,!0),kc=cu.DOM,_c=Hn,Ac=qn,Tc=function(e){_c(e)&&Xr(e)&&(Yr(e)?e.removeAttribute("data-mce-caret"):Xs(e)),Ac(e)&&(Gs(e),0===e.data.length&&Xs(e))},Rc=ft().browser,Dc=Jn,Oc=Zn,Bc=Qn,Pc=function(e){return Dc(e)||Oc(e)},Lc=Jn,Ic=Zn,Mc=on("display","block table table-cell table-caption list-item"),Fc=Xr,Uc=Wr,zc=Hn,jc=eo,Hc=A(cc,!0),Vc=A(cc,!1);function qc(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function $c(e,t){if(0<e){if(af(t.previousSibling)&&!nf(t.previousSibling))return bs.before(t);if(nf(t))return bs(t,0)}if(e<0){if(af(t.nextSibling)&&!nf(t.nextSibling))return bs.after(t);if(nf(t))return bs(t,t.data.length)}return e<0&&!of(t)?bs.after(t):bs.before(t)}function Wc(t){return{next:function(e){return sf(vc.Forwards,e,t)},prev:function(e){return sf(vc.Backwards,e,t)}}}function Kc(e){return bs.isTextPosition(e)?0===e.offset():eo(e.getNode())}function Xc(e){if(bs.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return eo(e.getNode(!0))}function Yc(e,t){return!bs.isTextPosition(e)&&!bs.isTextPosition(t)&&e.getNode()===t.getNode(!0)}function Gc(o,i,a){return cf(o,i,a).bind(function(e){return uc(a,e,i)&&(t=a,n=e,o?!Yc(t,n)&&(bs.isTextPosition(r=t)||!Xn(r.getNode()))&&Xc(t)&&Kc(n):!Yc(n,t)&&Kc(t)&&Xc(n))?cf(o,i,e):he.some(e);var t,n,r})}function Jc(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return qn(u)?he.some(bs(u,e?0:u.data.length)):u?eo(u)?he.some(e?bs.before(u):Xn(a=u)?bs.before(a):bs.after(a)):(r=t,o=u,i=(n=e)?bs.before(o):bs.after(o),cf(n,r,i)):he.none()}function Qc(e){return Hn(e)&&e.id===pf}function Zc(e,t){for(;t&&t!==e;){if(t.id===pf)return t;t=t.parentNode}return null}function el(e){return St.isArray(e.start)}function tl(e,t){return Hn(t)&&e.isBlock(t)&&!t.innerHTML&&!Ct.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t}function nl(e,t,n){return!1===t.hasChildNodes()&&Zc(e,t)&&(o=n,i=(r=t).ownerDocument.createTextNode(Oo),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),1);var r,o,i}function rl(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,nl(c,i,r))return 1;if(s[o]>u.length-1)return nl(c,i,r)||function(t){return gf(i).fold(T,function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})}(r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return 1}function ol(e){return qn(e)&&0<e.data.length}function il(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,o="start"===t?l?c.hasChildNodes()?(r=c.firstChild,1):ol(c.nextSibling)?(r=c.nextSibling,0):ol(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)+1):e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,1):ol(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)):e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,i=c.nextSibling,St.each(St.grep(c.childNodes),function(e){qn(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&qn(a)&&!Ct.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return he.some(bs(u,s))}return he.none()}function al(t,e){!function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g=e.dom;if(t){if(el(t))return d=t,m=(f=g).createRng(),rl(f,!0,d,m)&&rl(f,!1,d,m)?he.some(m):he.none();if(K(t.start))return he.some((s=t,c=(u=g).createRng(),l=Es(u.getRoot(),s.start),c.setStart(l.container(),l.offset()),l=Es(u.getRoot(),s.end),c.setEnd(l.container(),l.offset()),c));if(Ee(t,"id"))return fn(a=il(o=g,"start",i=t),il(o,"end",i).or(a),function(e,t){var n=o.createRng();return n.setStart(tl(o,e.container()),e.offset()),n.setEnd(tl(o,t.container()),t.offset()),n});if(Ee(t,"name"))return n=g,he.from(n.select((r=t).name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(Ee(t,"rng"))return he.some(t.rng)}return he.none()}(t,e).each(function(e){t.setRng(e)})}function ul(e){return Hn(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")}function sl(e){return""!==e&&-1!==" \f\n\r\t\v".indexOf(e)}function cl(e){return!sl(e)&&!vf(e)}function ll(e){return e.nodeType}function fl(e,t,n){var r,o=n.startOffset,i=n.startContainer;if((i!==n.endContainer||!(r=i.childNodes[o])||!/^(IMG)$/.test(r.nodeName))&&Hn(i)){var a=i.childNodes,u=void 0;o<a.length?(i=a[o],u=new jr(i,e.getParent(i,e.isBlock))):(i=a[a.length-1],(u=new jr(i,e.getParent(i,e.isBlock))).next(!0));for(var s=u.current();s;s=u.next())if(qn(s)&&!bf(s))return n.setStart(s,0),t.setRng(n),0}}function dl(e,t,n){if(e){var r=t?"nextSibling":"previousSibling";for(e=n?e:e[r];e;e=e[r])if(Hn(e)||!bf(e))return e}}function ml(e,t){return ll(t)&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]}function gl(e,t,n){return e.schema.isValidChild(t,n)}function pl(e,n){return y(e)?e=e(n):V(n)&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e}function hl(e,t){return e=""+((e=e||"").nodeName||e),t=""+((t=t||"").nodeName||t),e.toLowerCase()===t.toLowerCase()}function vl(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),""+("fontFamily"===n?t.replace(/[\'\"]/g,"").replace(/,\s+/g,","):t)}function bl(e,t,n){return vl(e,e.getStyle(t,n),n)}function yl(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n}function Cl(e,t,n){return e.getParents(t,n,e.getRoot())}function wl(e,t){return F(e.formatter.get(t),function(t){function o(e){return 1<e.length&&"%"===e.charAt(0)}return F(["styles","attributes"],function(e){return ae(t,e).exists(function(e){var n,r;return F(S(e)?e:(n=u,r=[],Q(e,function(e,t){r.push(n(e,t))}),r),o)})})})}function xl(e){return ue(e,"block")}function Sl(e){return ue(e,"selector")}function El(e){return ue(e,"inline")}function Nl(e){return Sl(e)&&!1!==e.expand&&!El(e)}function kl(e,t){for(var n=t;n;){if(Hn(n)&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t}function _l(e,t,n,r){for(var o=t.data,i=n;e?0<=i:i<o.length;e?i--:i++)if(r(o.charAt(i)))return e?i+1:i;return-1}function Al(e,t,n){return _l(e,t,n,function(e){return vf(e)||sl(e)})}function Tl(e,t,n){return _l(e,t,n,cl)}function Rl(i,e,t,n,a,r){function o(e,t,n){var r=Mu(i),o=a?r.backwards:r.forwards;return he.from(o(e,t,function(e,t){return yf(e.parentNode)?-1:n(a,u=e,t)},s))}var u,s=i.getParent(t,i.isBlock)||e;return o(t,n,Al).bind(function(e){return r?o(e.container,e.offset+(a?-1:0),Tl):he.some(e)}).orThunk(function(){return u?he.some({container:u,offset:a?0:u.length}):he.none()})}function Dl(e,t,n,r,o){qn(r)&&Be(r.data)&&r[o]&&(r=r[o]);for(var i=Cf(e,r),a=0;a<i.length;a++)for(var u=0;u<t.length;u++){var s=t[u];if((!V(s.collapsed)||s.collapsed===n.collapsed)&&Sl(s)&&e.is(i[a],s.selector))return i[a]}return r}function Ol(t,e,n,r){var o,i=n,a=t.dom,u=a.getRoot(),s=e[0];if((i=xl(s)&&!s.wrapper?a.getParent(n,s.block,u):i)||(o=a.getParent(n,"LI,TD,TH"),i=a.getParent(qn(n)?n.parentNode:n,function(e){return e!==u&&xf(t,e)},o)),!(i=i&&xl(s)&&s.wrapper&&Cf(a,i,"ul,ol").reverse()[0]||i))for(i=n;i[r]&&!a.isBlock(i[r])&&!hl(i=i[r],"br"););return i||n}function Bl(e,t,n,r,o){var i,a=n,u=o?"previousSibling":"nextSibling",s=e.getRoot();if(qn(n)&&!wf(n)&&(o?0<r:r<n.data.length))return n;for(;;){if(!t[0].block_expand&&e.isBlock(a))return a;for(var c=a[u];c;c=c[u]){var l=qn(c)&&!Sf(e,s,c,u);if(!yf(c)&&(!Xn(i=c)||!i.getAttribute("data-mce-bogus")||i.nextSibling)&&!wf(c,l))return a}if(a===s||a.parentNode===s){n=a;break}a=a.parentNode}return n}function Pl(e){return yf(e.parentNode)||yf(e)}function Ll(e,t,n,r){void 0===r&&(r=!1);var o=t.startContainer,i=t.startOffset,a=t.endContainer,u=t.endOffset,s=e.dom,c=n[0];return Hn(o)&&o.hasChildNodes()&&(o=$u(o,i),qn(o)&&(i=0)),Hn(a)&&a.hasChildNodes()&&(a=$u(a,t.collapsed?u:u-1),qn(a)&&(u=a.nodeValue.length)),o=kl(s,o),a=kl(s,a),Pl(o)&&(o=yf(o)?o:o.parentNode,o=t.collapsed?o.previousSibling||o:o.nextSibling||o,qn(o)&&(i=t.collapsed?o.length:0)),Pl(a)&&(a=yf(a)?a:a.parentNode,a=t.collapsed?a.nextSibling||a:a.previousSibling||a,qn(a)&&(u=t.collapsed?0:a.length)),t.collapsed&&(Rl(s,e.getBody(),o,i,!0,r).each(function(e){var t=e.container,n=e.offset;o=t,i=n}),Rl(s,e.getBody(),a,u,!1,r).each(function(e){var t=e.container,n=e.offset;a=t,u=n})),(El(c)||c.block_expand)&&(El(c)&&qn(o)&&0!==i||(o=Bl(s,n,o,i,!0)),El(c)&&qn(a)&&u!==a.nodeValue.length||(a=Bl(s,n,a,u,!1))),Nl(c)&&(o=Dl(s,n,t,o,"previousSibling"),a=Dl(s,n,t,a,"nextSibling")),(xl(c)||Sl(c))&&(o=Ol(e,n,o,"previousSibling"),a=Ol(e,n,a,"nextSibling"),xl(c)&&(s.isBlock(o)||(o=Bl(s,n,o,i,!0)),s.isBlock(a)||(a=Bl(s,n,a,u,!1)))),Hn(o)&&(i=s.nodeIndex(o),o=o.parentNode),Hn(a)&&(u=s.nodeIndex(a)+1,a=a.parentNode),{startContainer:o,startOffset:i,endContainer:a,endOffset:u}}function Il(n,e,u){function s(e){var t=e[0];qn(t)&&t===i&&o>=t.data.length&&e.splice(0,1);var n=e[e.length-1];return 0===a&&0<e.length&&n===l&&qn(n)&&e.splice(e.length-1,1),e}function c(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r}function t(e,t){return n.getParent(e,function(e){return e.parentNode===t},t)}function r(e,t,n){var r=n?"nextSibling":"previousSibling",o=e;for(o.parentNode;o&&o!==t;o=i){var i=o.parentNode,a=c(o===e?o:o[r],r);a.length&&(n||a.reverse(),u(s(a)))}}var o=e.startOffset,i=$u(e.startContainer,o),a=e.endOffset,l=$u(e.endContainer,a-1);if(i===l)return u(s([i]));var f=n.findCommonAncestor(i,l);if(n.isChildOf(i,l))return r(i,f,!0);if(n.isChildOf(l,i))return r(l,f);var d=t(i,f)||i,m=t(l,f)||l;r(i,d,!0);var g=c(d===i?d:d.nextSibling,"nextSibling",m===l?m.nextSibling:m);g.length&&u(s(g)),r(l,m)}function Ml(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t}function Fl(e,t){var n=Au(t,"td[data-mce-selected],th[data-mce-selected]");return 0<n.length?n:U(z(e,function(e){var t=qu(e);return t?[Et.fromDom(t)]:[]}),Ao)}function Ul(e){return Fl(Ml(e.selection.getSel()),Et.fromDom(e.getBody()))}function zl(e,t){return br(e,"table",t)}function jl(o,e){return fn((r=e.startContainer,i=e.startOffset,qn(r)?0===i?he.some(Et.fromDom(r)):he.none():he.from(r.childNodes[i]).map(Et.fromDom)),(t=e.endContainer,n=e.endOffset,qn(t)?n===t.data.length?he.some(Et.fromDom(t)):he.none():he.from(t.childNodes[n-1]).map(Et.fromDom)),function(e,t){var n=I(Ef(o),A(je,e)),r=I(Nf(o),A(je,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i}function Hl(e,t,n,r){var o=n,i=new jr(n,o),a=ne(e.schema.getMoveCaretBeforeOnEnterElements(),function(e,t){return!ie(["td","th","table"],t.toLowerCase())});do{if(qn(n)&&0!==St.trim(n.nodeValue).length)return r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length),0;if(a[n.nodeName])return r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n),0}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))}function Vl(e){var t=e.selection.getSel();return t&&0<t.rangeCount}function ql(r,o){var e=Ul(r);0<e.length?X(e,function(e){var t=e.dom,n=r.dom.createRng();n.setStartBefore(t),n.setEndAfter(t),o(n,!0)}):o(r.selection.getRng(),!1)}function $l(e,t,n){var r=Os(e,t);n(r),e.moveToBookmark(r)}function Wl(e){return kf.get(e)}function Kl(e,t,n,r){var o=t.uid,i=void 0===o?Du("mce-annotation"):o,a=function(e,t){var n={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n}(t,["uid"]),u=Et.fromTag("span",e);ku(u,es()),gn(u,""+ns(),i),gn(u,""+ts(),n);var s,c=r(i,a),l=c.attributes,f=c.classes,d=void 0===f?[]:f;return pn(u,void 0===l?{}:l),s=u,X(d,function(e){ku(s,e)}),u}function Xl(u,e,t,n,r){function s(){d.clear()}function c(e){X(e,o)}var l=[],f=Kl(u.getDoc(),r,t,n),d=wu(),o=function(e){var t,n,r,o,i,a;switch(r=u,i="span",a=Nt(o=e),Dt(o).fold(function(){return"skipping"},function(e){return"br"===a||Tn(n=o)&&Wl(n)===Oo?"valid":An(t=o)&&_u(t,es())?"existing":Qc(o.dom)?"caret":gl(r,i,a)&&gl(r,Nt(e),i)?"valid":"invalid-child";var t,n})){case"invalid-child":s(),c(On(e)),s();break;case"valid":Vt(t=e,n=d.get().getOrThunk(function(){var e=Pu(f);return l.push(e),d.set(e),e})),In(n,t)}};return Il(u.dom,e,function(e){s(),c(R(e,Et.fromDom))}),l}function Yl(o){var n,e,r,i=(n={},{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return ae(n,e).map(function(e){return e.settings})}});r=i,(e=o).on("init",function(){e.serializer.addNodeFilter("span",function(e){X(e,function(t){he.from(t.attr(ts())).bind(r.lookup).each(function(e){!1===e.persistent&&t.unwrap()})})})});var a=Ru(o);return{register:function(e,t){i.register(e,t)},annotate:function(t,n){i.lookup(t).each(function(e){var u,s,c,l;s=t,c=e,l=n,(u=o).undoManager.transact(function(){var e,t,n,r,o=u.selection,i=o.getRng(),a=0<Ul(u).length;i.collapsed&&!a&&(n=Ll(e=u,t=i,[{inline:"span"}]),t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset),e.selection.setRng(t)),o.getRng().collapsed&&!a?(Ou(r=Kl(u.getDoc(),l,s,c.decorate),Do),o.getRng().insertNode(r.dom),o.select(r.dom)):$l(o,!1,function(){ql(u,function(e){Xl(u,e,s,c.decorate,l)})})})})},annotationChanged:function(e,t){a.addListener(e,t)},remove:function(e){Tu(o,he.some(e)).each(function(e){X(e.elements,Xt)})},getAll:function(e){var t,n,r;return Z((t=e,n=Au(Et.fromDom(o.getBody()),"["+ts()+'="'+t+'"]'),r={},X(n,function(e){var t=hn(e,ns()),n=ae(r,t).getOr([]);r[t]=n.concat([e])}),r),function(e){return R(e,function(e){return e.dom})})}}}function Gl(e){return{getBookmark:A(hf,e),moveToBookmark:A(al,e)}}(bc=vc=vc||{})[bc.Backwards=-1]="Backwards",bc[bc.Forwards=1]="Forwards";function Jl(e){return qo(e)||!!Ko(t=e)&&!0!==P(Ce(t.getElementsByTagName("*")),function(e,t){return e||Uo(t)},!1);var t}var Ql,Zl,ef,tf=Jn,nf=qn,rf=Hn,of=Xn,af=eo,uf=to,sf=function(e,t,n){var r,o,i;if(!rf(n)||!t)return null;if(t.isEqual(bs.after(n))&&n.lastChild){if(i=bs.after(n.lastChild),e<0&&af(n.lastChild)&&rf(n.lastChild))return of(n.lastChild)?bs.before(n.lastChild):i}else i=t;var a,u,s,c=i.container(),l=i.offset();if(nf(c)){if(e<0&&0<l)return bs(c,--l);if(0<e&&l<c.length)return bs(c,++l);r=c}else{if(e<0&&0<l&&(f=qc(c,l-1),af(f)))return!Jl(f)&&(o=ic(f,e,uf,f))?nf(o)?bs(o,o.data.length):bs.after(o):nf(f)?bs(f,f.data.length):bs.before(f);if(0<e&&l<c.childNodes.length&&(f=qc(c,l),af(f)))return of(f)?(a=n,(s=(u=f).nextSibling)&&af(s)?nf(s)?bs(s,0):bs.before(s):sf(vc.Forwards,bs.after(u),a)):!Jl(f)&&(o=ic(f,e,uf,f))?nf(o)?bs(o,0):bs.before(o):nf(f)?bs(f,0):bs.after(f);r=f||i.getNode()}if((0<e&&i.isAtEnd()||e<0&&i.isAtStart())&&(r=ic(r,e,x,n,!0),uf(r,n)))return $c(e,r);var f=ic(r,e,uf,n),d=ge(U(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(c,n),tf));return!d||f&&d.contains(f)?f?$c(e,f):null:0<e?bs.after(d):bs.before(d)},cf=function(e,t,n){var r=Wc(t);return he.from(e?r.next(n):r.prev(n))},lf=function(t,n,e,r){return Gc(t,n,e).bind(function(e){return r(e)?lf(t,n,e,r):he.some(e)})},ff=A(cf,!0),df=A(cf,!1),mf=A(Jc,!0),gf=A(Jc,!1),pf="_mce_caret",hf=function(e,t,n){return 2===t?Rs(Po,n,e):3===t?(o=(r=e).getRng(),{start:Ss(r.dom.getRoot(),bs.fromRangeStart(o)),end:Ss(r.dom.getRoot(),bs.fromRangeEnd(o))}):t?{rng:e.getRng()}:Os(e,!1);var r,o},vf=(Ql=Do,function(e){return Ql===e}),bf=function(e,t){return void 0===t&&(t=!1),!(!V(e)||!qn(e))&&no(t?e.data.replace(/ /g,"\xa0"):e.data)},yf=ul,Cf=Cl,wf=bf,xf=ml,Sf=function(e,t,n,r){var o=n.parentNode;return!V(n[r])&&(!(o!==t&&!re(o)&&!e.isBlock(o))||Sf(e,t,o,r))},Ef=function(t){return Mt(t).fold(J([t]),function(e){return[t].concat(Ef(e))})},Nf=function(t){return Ft(t).fold(J([t]),function(e){return"br"===Nt(e)?Ot(e).map(function(e){return[t].concat(Nf(e))}).getOr([]):[t].concat(Nf(e))})},kf=(Zl=Tn,{get:function(e){if(!Zl(e))throw new Error("Can only get text value of a text node");return ef(e).getOr("")},getOption:ef=function(e){return Zl(e)?he.from(e.dom.nodeValue):he.none()},set:function(e,t){if(!Zl(e))throw new Error("Can only set raw text value of a text node");e.dom.nodeValue=t}});function _f(e,t){for(;t&&t!==e;){if(Gn(t)||Jn(t))return t;t=t.parentNode}return null}function Af(t,n,e){if(!e.collapsed){if(Ct.browser.isIE()&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(Hn(r))return F(r.getClientRects(),function(e){return Vu(e,t,n)})}return F(e.getClientRects(),function(e){return Vu(e,t,n)})}}function Tf(e,t,n){return e.fire(t,n)}function Rf(e,t,n,r){return e.fire("FormatApply",{format:t,node:n,vars:r})}function Df(e,t,n,r){return e.fire("FormatRemove",{format:t,node:n,vars:r})}function Of(r,l){function c(e){return e&&("IMG"===e.nodeName||l.dom.is(e,"figure.image"))}function f(e){return Zn(e)||D.hasClass(e,"mce-preview-object")}function n(e){var t=e.target;!function(e,t){if("longpress"!==e.type&&0!==e.type.indexOf("touch"))return c(e.target)&&!Af(e.clientX,e.clientY,t);var n=e.touches[0];return c(e.target)&&!Af(n.clientX,n.clientY,t)}(e,l.selection.getRng())||e.isDefaultPrevented()||l.selection.select(t)}function d(e){return D.is(e,"figure.image")?[e.querySelector("img")]:D.hasClass(e,"mce-preview-object")&&V(e.firstElementChild)?[e,e.firstElementChild]:[e]}function i(e){var t=Vs(l);return!!t&&"false"!==e.getAttribute("data-mce-resize")&&e!==l.getBody()&&(D.hasClass(e,"mce-preview-object")?Ue(Et.fromDom(e.firstElementChild),t):Ue(Et.fromDom(e),t))}function a(e,t,n){V(n)&&X(d(e),function(e){e.style[t]||!l.schema.isValid(e.nodeName.toLowerCase(),t)?D.setStyle(e,t,n):D.setAttrib(e,t,""+n)})}function m(e,t,n){a(e,"width",t),a(e,"height",n)}function g(e){var t,n,r,o,i,a,u=e.screenX-C,s=e.screenY-w;k=u*b[2]+x,_=s*b[3]+S,k=k<5?5:k,_=_<5?5:_,((c(p)||f(p))&&!1!==l.getParam("resize_img_proportional",!0,"boolean")?!$f.modifierPressed(e):$f.modifierPressed(e))&&(L(u)>L(s)?(_=I(k*E),k=I(_/E)):(k=I(_/E),_=I(k*E))),m(h,k,_),t=b.startPos.x+u,n=b.startPos.y+s,D.setStyles(v,{left:t=0<t?t:0,top:n=0<n?n:0,display:"block"}),v.innerHTML=k+" &times; "+_,b[2]<0&&h.clientWidth<=k&&D.setStyle(h,"left",void 0+(x-k)),b[3]<0&&h.clientHeight<=_&&D.setStyle(h,"top",void 0+(S-_)),(u=M.scrollWidth-A)+(s=M.scrollHeight-T)!=0&&D.setStyles(v,{left:t-u,top:n-s}),N||(r=p,o=x,i=S,a="corner-"+b.name,l.fire("ObjectResizeStart",{target:r,width:o,height:i,origin:a}),N=!0)}function o(e){function t(e,t){if(e)do{if(e===t)return 1}while(e=e.parentNode)}var n;N||l.removed||(O(D.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute(R)}),n="mousedown"===e.type?e.target:r.getNode(),t(n=D.$(n).closest("table,img,figure.image,hr,video,span.mce-preview-object")[0],M)&&(s(),t(r.getStart(!0),n)&&t(r.getEnd(!0),n))?z(n):j())}function u(e){return Wf(_f(l.getBody(),e))}function s(){try{l.getDoc().execCommand("enableObjectResizing",!1,"false")}catch(e){}}var p,h,v,b,y,C,w,x,S,E,N,k,_,A,T,R="data-mce-selected",D=l.dom,O=St.each,B=l.getDoc(),P=document,L=Math.abs,I=Math.round,M=l.getBody(),F={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]},U=function(){var e,t,n,r,o=N;N=!1,o&&(a(p,"width",k),a(p,"height",_)),D.unbind(B,"mousemove",g),D.unbind(B,"mouseup",U),P!==B&&(D.unbind(P,"mousemove",g),D.unbind(P,"mouseup",U)),D.remove(h),D.remove(v),D.remove(y),z(p),o&&(e=p,t=k,n=_,r="corner-"+b.name,l.fire("ObjectResized",{target:e,width:t,height:n,origin:r}),D.setAttrib(p,"style",D.getAttrib(p,"style"))),l.nodeChanged()},z=function(e){H();var t=D.getPos(e,M),a=t.x,u=t.y,n=e.getBoundingClientRect(),s=n.width||n.right-n.left,c=n.height||n.bottom-n.top;p!==e&&(j(),p=e,k=_=0);var r=l.fire("ObjectSelected",{target:e}),o=D.getAttrib(p,R,"1");i(e)&&!r.isDefaultPrevented()?O(F,function(o,i){var e=D.get("mceResizeHandle"+i);e&&D.remove(e),e=D.add(M,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all",class:"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),11===Ct.ie&&(e.contentEditable=!1),D.bind(e,"mousedown",function(e){var t,n,r;e.stopImmediatePropagation(),e.preventDefault(),t=e,r=d(p)[0],C=t.screenX,w=t.screenY,x=r.clientWidth,S=r.clientHeight,E=S/x,(b=o).name=i,b.startPos={x:s*o[0]+a,y:c*o[1]+u},A=M.scrollWidth,T=M.scrollHeight,y=D.add(M,"div",{class:"mce-resize-backdrop"}),D.setStyles(y,{position:"fixed",left:"0",top:"0",width:"100%",height:"100%"}),h=f(n=p)?D.create("img",{src:Ct.transparentSrc}):n.cloneNode(!0),D.addClass(h,"mce-clonedresizable"),D.setAttrib(h,"data-mce-bogus","all"),h.contentEditable="false",D.setStyles(h,{left:a,top:u,margin:0}),m(h,s,c),h.removeAttribute(R),M.appendChild(h),D.bind(B,"mousemove",g),D.bind(B,"mouseup",U),P!==B&&(D.bind(P,"mousemove",g),D.bind(P,"mouseup",U)),v=D.add(M,"div",{class:"mce-resize-helper","data-mce-bogus":"all"},x+" &times; "+S)}),o.elm=e,D.setStyles(e,{left:s*o[0]+a-e.offsetWidth/2,top:c*o[1]+u-e.offsetHeight/2})}):j(),D.getAttrib(p,R)||p.setAttribute(R,o)},j=function(){H(),p&&p.removeAttribute(R),Q(F,function(e,t){var n=D.get("mceResizeHandle"+t);n&&(D.unbind(n),D.remove(n))})},H=function(){Q(F,function(e){e.elm&&(D.unbind(e.elm),delete e.elm)})};return l.on("init",function(){var e;s(),(Ct.browser.isIE()||Ct.browser.isEdge())&&(l.on("mousedown click",function(e){var t=e.target,n=t.nodeName;N||!/^(TABLE|IMG|HR)$/.test(n)||u(t)||(2!==e.button&&l.selection.select(t,"TABLE"===n),"mousedown"===e.type&&l.nodeChanged())}),D.bind(M,"mscontrolselect",e=function(e){function t(e){Ur.setEditorTimeout(l,function(){return l.selection.select(e)})}if(u(e.target)||Zn(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}),l.on("remove",function(){return D.unbind(M,"mscontrolselect",e)}));var t=Ur.throttle(function(e){l.composing||o(e)});l.on("nodechange ResizeEditor ResizeWindow ResizeContent drop FullscreenStateChanged",t),l.on("keyup compositionend",function(e){p&&"TABLE"===p.nodeName&&t(e)}),l.on("hide blur",j),l.on("contextmenu longpress",n,!0)}),l.on("remove",H),{isResizable:i,showResizeRect:z,hideResizeRect:j,updateResizeRect:o,destroy:function(){p=h=y=null}}}function Bf(e){return Gn(e)||Jn(e)}function Pf(t,n,r){var o,e,i,a,u,s=r;if(s.caretPositionFromPoint)(e=s.caretPositionFromPoint(t,n))&&((o=r.createRange()).setStart(e.offsetNode,e.offset),o.collapse(!0));else if(s.caretRangeFromPoint)o=s.caretRangeFromPoint(t,n);else if(s.body.createTextRange){o=s.body.createTextRange();try{o.moveToPoint(t,n),o.collapse(!0)}catch(e){o=function(e,n,t){var r,o=t.elementFromPoint(e,n),i=t.body.createTextRange();if(o&&"HTML"!==o.tagName||(o=t.body),i.moveToElementText(o),0<(r=(r=St.toArray(i.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-Math.abs(Math.max(t.top-n,t.bottom-n))})).length){n=(r[0].bottom+r[0].top)/2;try{return i.moveToPoint(e,n),i.collapse(!0),i}catch(e){}}return null}(t,n,r)}return i=o,a=r.body,u=i&&i.parentElement?i.parentElement():null,Jn(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,Bf))?null:i}return o}function Lf(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset}function If(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)}function Mf(e){return e&&"TABLE"===e.nodeName}function Ff(e,t,n){for(var r=new jr(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Xn(t))return 1}function Uf(e,t,n,r,o){var i,a,u=e.getRoot(),s=e.schema.getNonEmptyElements(),c=e.getParent(o.parentNode,e.isBlock)||u;if(r&&Xn(o)&&t&&e.isEmpty(c))return he.some(bs(o.parentNode,e.nodeIndex(o)));for(var l,f,d=new jr(o,c);a=d[r?"prev":"next"]();){if("false"===e.getContentEditableParent(a)||(f=u,Xr(l=a)&&!1===If(l,f,Qc)))return he.none();if(qn(a)&&0<a.nodeValue.length)return!1===If(a,u,function(e){return"A"===e.nodeName})?he.some(bs(a,r?a.nodeValue.length:0)):he.none();if(e.isBlock(a)||s[a.nodeName.toLowerCase()])return he.none();i=a}return n&&i?he.some(bs(i,0)):he.none()}function zf(e,t,n,r){var o,i=e.getRoot(),a=!1,u=r[(n?"start":"end")+"Container"],s=r[(n?"start":"end")+"Offset"],c=Hn(u)&&s===u.childNodes.length,l=e.schema.getNonEmptyElements(),f=n;if(Xr(u))return he.none();if(Hn(u)&&s>u.childNodes.length-1&&(f=!1),Wn(u)&&(u=i,s=0),u===i){if(f&&(d=u.childNodes[0<s?s-1:0])){if(Xr(d))return he.none();if(l[d.nodeName]||Mf(d))return he.none()}if(u.hasChildNodes()){if(s=Math.min(!f&&0<s?s-1:s,u.childNodes.length-1),u=u.childNodes[s],s=qn(u)&&c?u.data.length:0,!t&&u===i.lastChild&&Mf(u))return he.none();if(function(e,t){for(;t&&t!==e;){if(Jn(t))return 1;t=t.parentNode}}(i,u)||Xr(u))return he.none();if(u.hasChildNodes()&&!1===Mf(u)){var d=u,m=new jr(u,i);do{if(Jn(d)||Xr(d)){a=!1;break}if(qn(d)&&0<d.nodeValue.length){s=f?0:d.nodeValue.length,u=d,a=!0;break}if(l[d.nodeName.toLowerCase()]&&(!(o=d)||!/^(TD|TH|CAPTION)$/.test(o.nodeName))){s=e.nodeIndex(d),u=d.parentNode,f||s++,a=!0;break}}while(d=f?m.next():m.prev())}}}return t&&(qn(u)&&0===s&&Uf(e,c,t,!0,u).each(function(e){u=e.container(),s=e.offset(),a=!0}),Hn(u)&&(!(d=(d=u.childNodes[s])||u.childNodes[s-1])||!Xn(d)||d.previousSibling&&"A"===d.previousSibling.nodeName||Ff(e,d,!1)||Ff(e,d,!0)||Uf(e,c,t,!0,d).each(function(e){u=e.container(),s=e.offset(),a=!0}))),f&&!t&&qn(u)&&s===u.nodeValue.length&&Uf(e,c,t,!1,u).each(function(e){u=e.container(),s=e.offset(),a=!0}),a?he.some(bs(u,s)):he.none()}function jf(e,t){var n=t.collapsed,r=t.cloneRange(),o=bs.fromRangeStart(t);return zf(e,n,!0,r).each(function(e){n&&bs.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||zf(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),Lf(t,r)?he.none():he.some(r)}function Hf(e,t){return e.splitText(t)}function Vf(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&qn(t)?0<n&&n<t.nodeValue.length&&(t=(r=Hf(t,n)).previousSibling,n<o?(t=r=Hf(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(qn(t)&&0<n&&n<t.nodeValue.length&&(t=Hf(t,n),n=0),qn(r)&&0<o&&o<r.nodeValue.length&&(o=(r=Hf(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}}function qf(n){return{walk:function(e,t){return Il(n,e,t)},split:Vf,normalize:function(t){return jf(n,t).fold(T,function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}Gl.isBookmarkNode=ul;var $f={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||$f.metaKeyPressed(e)},metaKeyPressed:function(e){return Ct.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Wf=Jn;qf.compareRanges=Lf,qf.getCaretRangeFromPoint=Pf,qf.getSelectedNode=qu,qf.getNode=$u;var Kf,Xf,Yf=(Kf="height",Xf=function(e){var t=e.dom;return Fn(e)?t.getBoundingClientRect().height:t.offsetHeight},{set:function(e,t){if(!E(t)&&!t.match(/^[0-9]+$/))throw new Error(Kf+".set accepts only positive integer values. Value was "+t);var n=e.dom;dn(n)&&(n.style[Kf]=t+"px")},get:Gf,getOuter:Gf,aggregate:Jf,max:function(e,t,n){var r=Jf(e,n);return r<t?t-r:0}});function Gf(e){var t=Xf(e);if(t<=0||null===t){var n=Cn(e,Kf);return parseFloat(n)||0}return t}function Jf(o,e){return P(e,function(e,t){var n=Cn(o,t),r=void 0===n?0:parseInt(n,10);return isNaN(r)?e:e+r},0)}function Qf(e){return"textarea"===Nt(e)}function Zf(e,t){var n=function(e){var t=e.dom.ownerDocument,n=t.body,r=t.defaultView,o=t.documentElement;if(n===e.dom)return zn(n.offsetLeft,n.offsetTop);var i=Yt(null==r?void 0:r.pageYOffset,o.scrollTop),a=Yt(null==r?void 0:r.pageXOffset,o.scrollLeft),u=Yt(o.clientTop,n.clientTop),s=Yt(o.clientLeft,n.clientLeft);return jn(e).translate(a-s,i-u)}(e),r=Yf.get(e);return{element:e,bottom:n.top+r,height:r,pos:n,cleanup:t}}function ed(n,r,o,i){jd(n,function(e,t){return zd(n,r,o,i)},o)}function td(e,t,n,r,o){var i={elm:r.element.dom,alignToTop:o};e.fire("ScrollIntoView",i).isDefaultPrevented()||(n(t,Gt(t).top,r,o),e.fire("AfterScrollIntoView",i))}function nd(e,t,n,r){var o=Et.fromDom(e.getDoc());td(e,o,n,Zf(Et.fromDom(t),oe),r)}function rd(e,t,n,r){var o,i=e.pos;n?Jt(i.left,i.top,r):(o=i.top-t+e.height,Jt(i.left,o,r))}function od(e,t,n,r,o){var i=n+t,a=r.pos.top,u=r.bottom,s=n<=u-a;a<t?rd(r,n,!1!==o,e):i<a?rd(r,n,s?!1!==o:!0===o,e):i<u&&!s&&rd(r,n,!0===o,e)}function id(e,t,n,r){od(e,t,e.dom.defaultView.innerHeight,n,r)}function ad(e,t,n,r){od(e,t,e.dom.defaultView.innerHeight,n,r);var o,i,a,u,s,c,l,f=(o=n.element,u=Gt(Et.fromDom(document)),a=(i=Ud).owner(o),s=Fd(i,a),c=jn(o),l=B(s,function(e,t){var n=jn(t);return{left:e.left+n.left,top:e.top+n.top}},{left:0,top:0}),zn(l.left+c.left+u.left,l.top+c.top+u.top)),d=en(window);f.top<d.y?Qt(n.element,!1!==r):f.top>d.bottom&&Qt(n.element,!0===r)}function ud(e,t,n){return ed(e,id,t,n)}function sd(e,t,n){return nd(e,t,id,n)}function cd(e,t,n){return ed(e,ad,t,n)}function ld(e,t,n){return nd(e,t,ad,n)}function fd(e,t,n){(e.inline?ud:cd)(e,t,n)}function dd(e){var t=Ln(e).dom;return e.dom===t.activeElement}function md(e){return void 0===e&&(e=Et.fromDom(document)),he.from(e.dom.activeElement).map(Et.fromDom)}function gd(e,t){var n=Tn(t)?Wl(t).length:On(t).length+1;return n<e?n:e<0?0:e}function pd(e){return $d.range(e.start,gd(e.soffset,e.start),e.finish,gd(e.foffset,e.finish))}function hd(e,t){return!nn(t.dom)&&(He(e,t)||je(e,t))}function vd(t){return function(e){return hd(t,e.start)&&hd(t,e.finish)}}function bd(e){return!0===e.inline||Wd.isIE()}function yd(e){return $d.range(Et.fromDom(e.startContainer),e.startOffset,Et.fromDom(e.endContainer),e.endOffset)}function Cd(e){var t=document.createRange();try{return t.setStart(e.start.dom,e.soffset),t.setEnd(e.finish.dom,e.foffset),he.some(t)}catch(e){return he.none()}}function wd(e){var t,n,r=bd(e)?(t=Et.fromDom(e.getBody()),((n=Rt(t).dom.getSelection())&&0!==n.rangeCount?he.from(n.getRangeAt(0)):he.none()).map(yd).filter(vd(t))):he.none();e.bookmark=r.isSome()?r:e.bookmark}function xd(n){return(n.bookmark||he.none()).bind(function(e){return t=Et.fromDom(n.getBody()),he.from(e).filter(vd(t)).map(pd);var t}).bind(Cd)}function Sd(u){var s=xu(function(){wd(u)},0);u.on("init",function(){function e(){n.throttle()}var t,n,r,o,i,a;u.inline&&(t=u,n=s,cu.DOM.bind(document,"mouseup",e),t.on("remove",function(){cu.DOM.unbind(document,"mouseup",e)})),r=u,o=s,ft().browser.isIE()?(a=r).on("focusout",function(){wd(a)}):(i=o,r.on("mouseup touchend",function(e){i.throttle()})),r.on("keyup NodeChange",function(e){"nodechange"===e.type&&e.selectionChange||wd(r)})}),u.on("remove",function(){s.cancel()})}function Ed(t,e){var n=t.getParam("custom_ui_selector","","string");return null!==Xd.getParent(e,function(e){return Kd.isEditorUIElement(e)||!!n&&t.dom.is(e,n)})}function Nd(n,e){var t=e.editor;Sd(t),t.on("focusin",function(){var e=n.focusedEditor;e!==t&&(e&&e.fire("blur",{focusedEditor:t}),n.setActive(t),(n.focusedEditor=t).fire("focus",{blurredEditor:e}),t.focus(!0))}),t.on("focusout",function(){Ur.setEditorTimeout(t,function(){var e=n.focusedEditor;Ed(t,function(e){try{return md(Ln(Et.fromDom(e.getElement()))).fold(function(){return document.body},function(e){return e.dom})}catch(e){return document.body}}(t))||e!==t||(t.fire("blur",{focusedEditor:null}),n.focusedEditor=null)})}),Md||(Md=function(e){var t=n.activeEditor;t&&!function(e){if(Pn()&&V(e.target)){var t=Et.fromDom(e.target);if(An(t)&&V(t.dom.shadowRoot)&&e.composed&&e.composedPath){var n=e.composedPath();if(n)return W(n)}}return he.from(e.target)}(e).each(function(e){e.ownerDocument===document&&(e===document.body||Ed(t,e)||n.focusedEditor!==t||(t.fire("blur",{focusedEditor:null}),n.focusedEditor=null))})},Xd.bind(document,"focusin",Md))}function kd(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(Xd.unbind(document,"focusin",Md),Md=null)}function _d(t,e){var n,r;n=Et.fromDom(t.getBody()),((r=e).collapsed?he.from($u(r.startContainer,r.startOffset)).map(Et.fromDom):he.none()).bind(function(e){return _o(e)?he.some(e):!1===He(n,e)?he.some(n):he.none()}).bind(function(e){return mf(e.dom)}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})}function Ad(t){if(t.setActive)try{t.setActive()}catch(e){t.focus()}else t.focus()}function Td(e){return e.inline?(r=e.getBody())&&(dd(t=Et.fromDom(r))||md(Ln(n=t)).filter(function(e){return n.dom.contains(e.dom)}).isSome()):e.iframeElement&&dd(Et.fromDom(e.iframeElement));var t,n,r}function Rd(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return he.from(i).map(Et.fromDom).map(function(e){return r&&t.collapsed?e:It(e,o(e,a)).getOr(e)}).bind(function(e){return An(e)?he.some(e):Dt(e).filter(An)}).map(function(e){return e.dom}).getOr(e)}function Dd(e,t,n){return Rd(e,t,!0,n,function(e,t){return Math.min(Ut(e),t)})}function Od(e,t,n){return Rd(e,t,!1,n,function(e,t){return 0<t?t-1:t})}function Bd(e,t){for(var n=e;e&&qn(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}function Pd(n,e){return R(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})}function Ld(e,t,n){var r=n?"lastChild":"firstChild",o=n?"prev":"next";if(e[r])return e[r];if(e!==t){var i=e[o];if(i)return i;for(var a=e.parent;a&&a!==t;a=a.parent)if(i=a[o])return i}}function Id(e){var t="a"===e.name&&!e.attr("href")&&e.attr("id");return e.attr("name")||e.attr("id")&&!e.firstChild||e.attr("data-mce-bookmark")||t}var Md,Fd=function(r,e){return r.view(e).fold(J([]),function(e){var t=r.owner(e),n=Fd(r,t);return[e].concat(n)})},Ud=Object.freeze({__proto__:null,view:function(e){var t;return(e.dom===document?he.none():he.from(null===(t=e.dom.defaultView)||void 0===t?void 0:t.frameElement)).map(Et.fromDom)},owner:Tt}),zd=function(e,t,n,r){var o=Et.fromDom(e.getBody()),i=Et.fromDom(e.getDoc());o.dom.offsetWidth;var a,u,s,c,l=(a=Et.fromDom(n.startContainer),u=n.startOffset,s=function(e,t){var n=On(e);if(0===n.length||Qf(e))return{element:e,offset:t};if(t<n.length&&!Qf(n[t]))return{element:n[t],offset:0};var r=n[n.length-1];return Qf(r)?{element:e,offset:t}:"img"===Nt(r)?{element:r,offset:1}:Tn(r)?{element:r,offset:Wl(r).length}:{element:r,offset:On(r).length}}(a,u),c=Et.fromHtml('<span data-mce-bogus="all">\ufeff</span>'),Vt(s.element,c),Zf(c,function(){return Mn(c)}));td(e,i,t,l,r),l.cleanup()},jd=function(e,t,n){var r=n.startContainer,o=n.startOffset,i=n.endContainer,a=n.endOffset;t(Et.fromDom(r),Et.fromDom(i));var u=e.dom.createRng();u.setStart(r,o),u.setEnd(i,a),e.selection.setRng(n)},Hd=ar([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Vd=(Hd.before,Hd.on,Hd.after,function(e){return e.fold(u,u,u)}),qd=ar([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),$d={domRange:qd.domRange,relative:qd.relative,exact:qd.exact,exactFromRange:function(e){return qd.exact(e.start,e.soffset,e.finish,e.foffset)},getWin:function(e){return Rt(e.match({domRange:function(e){return Et.fromDom(e.startContainer)},relative:function(e,t){return Vd(e)},exact:function(e,t,n,r){return e}}))},range:function(e,t,n,r){return{start:e,soffset:t,finish:n,foffset:r}}},Wd=ft().browser,Kd={isEditorUIElement:function(e){var t=e.className.toString();return-1!==t.indexOf("tox-")||-1!==t.indexOf("mce-")}},Xd=cu.DOM,Yd=function(e){return e.editorManager.setActive(e)},Gd={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},Jd=(Qd.create=function(e,t){var n=new Qd(e,Gd[e]||1);return t&&Q(t,function(e,t){n.attr(t,e)}),n},Qd.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},Qd.prototype.attr=function(e,t){var n,r=this;if("string"!=typeof e)return null!=e&&Q(e,function(e,t){r.attr(t,e)}),r;if(n=r.attributes){if(void 0===t)return n.map[e];if(null===t){if(e in n.map){delete n.map[e];for(var o=n.length;o--;)if(n[o].name===e)return n.splice(o,1),r}return r}if(e in n.map){for(o=n.length;o--;)if(n[o].name===e){n[o].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,r}},Qd.prototype.clone=function(){var e,t=new Qd(this.name,this.type);if(e=this.attributes){var n=[];n.map={};for(var r=0,o=e.length;r<o;r++){var i=e[r];"id"!==i.name&&(n[n.length]={name:i.name,value:i.value},n.map[i.name]=i.value)}t.attributes=n}return t.value=this.value,t.shortEnded=this.shortEnded,t},Qd.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},Qd.prototype.unwrap=function(){for(var e=this.firstChild;e;){var t=e.next;this.insert(e,this,!0),e=t}this.remove()},Qd.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},Qd.prototype.append=function(e){e.parent&&e.remove();var t=this.lastChild;return t?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},Qd.prototype.insert=function(e,t,n){e.parent&&e.remove();var r=t.parent||this;return n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},Qd.prototype.getAll=function(e){for(var t=[],n=this.firstChild;n;n=Ld(n,this))n.name===e&&t.push(n);return t},Qd.prototype.children=function(){for(var e=[],t=this.firstChild;t;t=t.next)e.push(t);return e},Qd.prototype.empty=function(){if(this.firstChild){for(var e=[],t=this.firstChild;t;t=Ld(t,this))e.push(t);for(var n=e.length;n--;)(t=e[n]).parent=t.firstChild=t.lastChild=t.next=t.prev=null}return this.firstChild=this.lastChild=null,this},Qd.prototype.isEmpty=function(e,t,n){void 0===t&&(t={});var r=this.firstChild;if(Id(this))return!1;if(r)do{if(1===r.type){if(r.attr("data-mce-bogus"))continue;if(e[r.name])return!1;if(Id(r))return!1}if(8===r.type)return!1;if(3===r.type&&!function(e){if(no(e.value)){var t=e.parent;return!t||"span"===t.name&&!t.attr("style")||!/^[ ]+$/.test(e.value)}}(r))return!1;if(3===r.type&&r.parent&&t[r.parent.name]&&no(r.value))return!1;if(n&&n(r))return!1}while(r=Ld(r,this));return!0},Qd.prototype.walk=function(e){return Ld(this,null,e)},Qd);function Qd(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}function Zd(e,t){return e.replace(t.re,function(e){return ae(t.uris,e).getOr(e)})}function em(e,t,n){for(var r=/<([!?\/])?([A-Za-z0-9\-_:.]+)/g,o=/(?:\s(?:[^'">]+(?:"[^"]*"|'[^']*'))*[^"'>]*(?:"[^">]*|'[^'>]*)?|\s*|\/)>/g,i=e.getShortEndedElements(),a=1,u=n;0!==a;)for(r.lastIndex=u;;){var s=r.exec(t);if(null===s)return u;if("!"===s[1]){u=Ye(s[2],"--")?om(t,!1,s.index+"!--".length):om(t,!0,s.index+1);break}o.lastIndex=r.lastIndex;var c=o.exec(t);if(!l(c)&&c.index===r.lastIndex){"/"===s[1]?--a:Ee(i,s[2])||(a+=1),u=r.lastIndex+c[0].length;break}}return u}function tm(W,K){var e;void 0===K&&(K=go());var X=null!==(e=(W=W||{}).document)&&void 0!==e?e:document,Y=X.createElement("form");function n(m,e){void 0===e&&(e="html");for(var t,i,n,g,r,o,a,p,u,s,c,l,f,h,v,d,b,y,C,w=m.html,x=0,S=[],E=0,N=si.decode,k=St.makeMap("src,href,data,background,action,formaction,poster,xlink:href"),_=/((java|vb)script|mhtml):/i,A="html"===e?0:1,T=function(e){for(var t,n=S.length;n--&&S[n].name!==e;);if(0<=n){for(t=S.length-1;n<=t;t--)(e=S[t]).valid&&ee(e.name);S.length=n}},R=function(e,t){return Q(Zd(e,m),t)},D=function(e){""!==e&&(">"===e.charAt(0)&&(e=" "+e),W.allow_conditional_comments||"[if"!==e.substr(0,3).toLowerCase()||(e=" "+e),G(Zd(e,m)))},O=function(e,t){var n=e||"",r=!Ye(n,"--"),o=om(w,r,t);return e=w.substr(t,o-t),D(r?n+e:e),o+1},B=function(e,t,n,r,o){var i,a,u,s,c,l,f;if(n=Zd((t=t.toLowerCase())in F?t:N(n||r||o||""),m),U&&!p&&0==(0===(u=t).indexOf("data-")||0===u.indexOf("aria-"))){if(!(i=h[t])&&v){for(a=v.length;a--&&!(i=v[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if("name"!==t&&"id"!==t||!(e in rm)||!(n in X||n in Y)){if(k[t]&&!W.allow_script_urls){var d=n.replace(/[\s\u0000-\u001F]+/g,"");try{d=decodeURIComponent(d)}catch(e){d=unescape(d)}if(_.test(d))return;if(c=d,l=e,!(s=W).allow_html_data_urls&&(/^data:image\//i.test(c)?!(re(f=s.allow_svg_data_urls)?ie(nm,l):f)&&/^data:image\/svg\+xml/i.test(c):/^data:/i.test(c)))return}p&&(t in k||0===t.indexOf("on"))||(g.map[t]=n,g.push({name:t,value:n}))}},P=new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:![Dd][Oo][Cc][Tt][Yy][Pp][Ee]([\\w\\W]*?)>)|(?:!(--)?)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_:.]*)(\\s(?:[^'\">]+(?:\"[^\"]*\"|'[^']*'))*[^\"'>]*(?:\"[^\">]*|'[^'>]*)?|\\s*|\\/)>))","g"),L=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,I=K.getShortEndedElements(),M=W.self_closing_elements||K.getSelfClosingElements(),F=K.getBoolAttrs(),U=W.validate,z=W.remove_internals,j=W.fix_self_closing,H=K.getSpecialElements(),V=w+">";t=P.exec(V);){var q=t[0];if(x<t.index&&R(N(w.substr(x,t.index-x))),i=t[7])T(i=":"===(i=i.toLowerCase()).charAt(0)?i.substr(1):i);else if(i=t[8]){if(t.index+q.length>w.length){R(N(w.substr(t.index))),x=t.index+q.length;continue}u=(i=":"===(i=i.toLowerCase()).charAt(0)?i.substr(1):i)in I,j&&M[i]&&0<S.length&&S[S.length-1].name===i&&T(i);var $=function(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null}(L,t[9]);if(null!==$){if("all"===$){x=em(K,w,P.lastIndex),P.lastIndex=x;continue}c=!1}if(!U||(s=K.getElementRule(i))){if(c=!0,U&&(h=s.attributes,v=s.attributePatterns),(f=t[9])?((p=-1!==f.indexOf("data-mce-type"))&&z&&(c=!1),(g=[]).map={},f.replace(L,function(e,t,n,r,o){return B(i,t,n,r,o),""})):(g=[]).map={},U&&!p){if(d=s.attributesRequired,b=s.attributesDefault,y=s.attributesForced,s.removeEmptyAttrs&&!g.length&&(c=!1),y)for(r=y.length;r--;)a=(l=y[r]).name,"{$uid}"===(C=l.value)&&(C="mce_"+E++),g.map[a]=C,g.push({name:a,value:C});if(b)for(r=b.length;r--;)(a=(l=b[r]).name)in g.map||("{$uid}"===(C=l.value)&&(C="mce_"+E++),g.map[a]=C,g.push({name:a,value:C}));if(d){for(r=d.length;r--&&!(d[r]in g.map););-1===r&&(c=!1)}if(l=g.map["data-mce-bogus"]){if("all"===l){x=em(K,w,P.lastIndex),P.lastIndex=x;continue}c=!1}}c&&Z(i,g,u)}else c=!1;if(n=H[i]){n.lastIndex=x=t.index+q.length,x=(t=n.exec(w))?(c&&(o=w.substr(x,t.index-x)),t.index+t[0].length):(o=w.substr(x),w.length),c&&(0<o.length&&R(o,!0),ee(i)),P.lastIndex=x;continue}u||(f&&f.indexOf("/")===f.length-1?c&&ee(i):S.push({name:i,valid:c}))}else if(i=t[1])D(i);else if(i=t[2]){if(!(1==A||W.preserve_cdata||0<S.length&&K.isValidChild(S[S.length-1].name,"#cdata"))){x=O("",t.index+2),P.lastIndex=x;continue}J(i)}else if(i=t[3])ne(i);else{if((i=t[4])||"<!"===q){x=O(i,t.index+q.length),P.lastIndex=x;continue}if(i=t[5]){if(1!=A){x=O("?",t.index+2),P.lastIndex=x;continue}te(i,t[6])}}x=t.index+q.length}for(x<w.length&&R(N(w.substr(x))),r=S.length-1;0<=r;r--)(i=S[r]).valid&&ee(i.name)}!1!==W.fix_self_closing&&(W.fix_self_closing=!0);var G=W.comment||oe,J=W.cdata||oe,Q=W.text||oe,Z=W.start||oe,ee=W.end||oe,te=W.pi||oe,ne=W.doctype||oe;return{parse:function(e,t){void 0===t&&(t="html"),n(function(e){for(var t,n=/data:[^;]+;base64,([a-z0-9\+\/=\s]+)/gi,r=[],o={},i=Du("img"),a=0,u=0;t=n.exec(e);){var s=t[0],c=i+"_"+u++;o[c]=s,a<t.index&&r.push(e.substr(a,t.index-a)),r.push(c),a=t.index+s.length}var l=new RegExp(i+"_[0-9]+","g");return 0===a?{prefix:i,uris:o,html:e,re:l}:(a<e.length&&r.push(e.substr(a)),{prefix:i,uris:o,html:r.join(""),re:l})}(e),t)}}}var nm=["img","video"],rm=St.makeMap("button,fieldset,form,iframe,img,image,input,object,output,select,textarea"),om=function(e,t,n){void 0===n&&(n=0);var r=e.toLowerCase();if(-1!==r.indexOf("[if ",n)&&(u=n,/^\s*\[if [\w\W]+\]>.*<!\[endif\](--!?)?>/.test(r.substr(u)))){var o=r.indexOf("[endif]",n);return r.indexOf(">",o)}if(t){var i=r.indexOf(">",n);return-1!==i?i:r.length}var a=/--!?>/g;a.lastIndex=n;var u,s=a.exec(e);return s?s.index+s[0].length:r.length};function im(e,t){for(var n,r,o,i,a=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,u=e.schema,s=(n=e.getTempAttrs(),r=t,o=new RegExp(["\\s?("+n.join("|")+')="[^"]+"'].join("|"),"gi"),r.replace(o,"")),c=u.getShortEndedElements();i=a.exec(s);){var l=a.lastIndex,f=i[0].length,d=c[i[1]]?l:tm.findEndTag(u,s,l),s=s.substring(0,l-f)+s.substring(d);a.lastIndex=l-f}return Po(s)}function am(o){return{compare:function(e,t){return e.nodeName===t.nodeName&&!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||ul(e)||ul(t));function n(n){var r={};return lm(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r}function r(e,t){var n,r;for(r in e)if(Ee(e,r)){if(void 0===(n=t[r]))return;if(e[r]!==n)return;delete t[r]}for(r in t)if(Ee(t,r))return;return 1}}}}function um(e){var u=[],s=(e=e||{}).indent,c=fm(e.indent_before||""),l=fm(e.indent_after||""),f=si.getEncodeFunc(e.entity_encoding||"raw",e.entities),d="html"===e.element_format;return{start:function(e,t,n){var r,o,i,a;if(s&&c[e]&&0<u.length&&0<(a=u[u.length-1]).length&&"\n"!==a&&u.push("\n"),u.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],u.push(" ",i.name,'="',f(i.value,!0),'"');u[u.length]=!n||d?">":" />",n&&s&&l[e]&&0<u.length&&0<(a=u[u.length-1]).length&&"\n"!==a&&u.push("\n")},end:function(e){var t;u.push("</",e,">"),s&&l[e]&&0<u.length&&0<(t=u[u.length-1]).length&&"\n"!==t&&u.push("\n")},text:function(e,t){0<e.length&&(u[u.length]=t?e:f(e))},cdata:function(e){u.push("<![CDATA[",e,"]]>")},comment:function(e){u.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?u.push("<?",e," ",f(t),"?>"):u.push("<?",e,"?>"),s&&u.push("\n")},doctype:function(e){u.push("<!DOCTYPE",e,">",s?"\n":"")},reset:function(){u.length=0},getContent:function(){return u.join("").replace(/\n$/,"")}}}function sm(t,g){void 0===g&&(g=go());var p=um(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f=t.validate,d={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}};p.reset();var m=function(e){var t=d[e.type];if(t)t(e);else{var n=e.name,r=e.shortEnded,o=e.attributes;if(f&&o&&1<o.length){var i=[];i.map={};var a=g.getElementRule(e.name);if(a){for(var u=0,s=a.attributesOrder.length;u<s;u++)(c=a.attributesOrder[u])in o.map&&(l=o.map[c],i.map[c]=l,i.push({name:c,value:l}));for(var c,l,u=0,s=o.length;u<s;u++)(c=o[u].name)in i.map||(l=o.map[c],i.map[c]=l,i.push({name:c,value:l}));o=i}}if(p.start(e.name,o,r),!r){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(n)}}};return 1!==e.type||t.inner?d[11](e):m(e),p.getContent()}}}tm.findEndTag=em;var cm=im,lm=St.each,fm=St.makeMap,dm=new Set;function mm(e,t){return we(e.parseStyle(e.getAttrib(t,"style")))}function gm(n,r,o){return he.from(o.container()).filter(qn).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})}function pm(e){var t=e.container();return qn(t)&&(0===t.data.length||Bo(t.data)&&Gl.isBookmarkNode(t.parentNode))}function hm(t,n){return function(e){return he.from(sc(t?0:-1,e)).filter(n).isSome()}}function vm(e){return Yn(e)&&"block"===Cn(Et.fromDom(e),"display")}function bm(e){return Jn(e)&&!(Hn(t=e)&&"all"===t.getAttribute("data-mce-bogus"));var t}function ym(e){Kt(e),In(e,Et.fromHtml('<br data-mce-bogus="1">'))}function Cm(n){Ft(n).each(function(t){Ot(t).each(function(e){So(n)&&$r(t)&&So(e)&&Mn(t)})})}function wm(e,t){return o=T,He(r=t,n=e)?function(e,t){for(var n=y(t)?t:T,r=e.dom,o=[];null!==r.parentNode&&void 0!==r.parentNode;){var i=r.parentNode,a=Et.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(n,function(e){return o(e)||je(e,r)}).slice(0,-1):[];var n,r,o}function xm(e,t){return[e].concat(wm(e,t))}function Sm(e,t,n){return lf(e,t,n,pm)}function Em(e,t){return I(xm(Et.fromDom(t.container()),e),So)}function Nm(e,n,r){return Sm(e,n.dom,r).forall(function(t){return Em(n,r).fold(function(){return!1===uc(t,r,n.dom)},function(e){return!1===uc(t,r,n.dom)&&He(e,Et.fromDom(t.container()))})})}function km(t,n,r){return Em(n,r).fold(function(){return Sm(t,n.dom,r).forall(function(e){return!1===uc(e,r,n.dom)})},function(e){return Sm(t,e.dom,r).isNone()})}function _m(e){return gc(e).exists($r)}function Am(e,t,n){var r=W(U(xm(Et.fromDom(n.container()),t),So)).getOr(t);return cf(e,r.dom,n).filter(_m)}function Tm(e,t){return gc(t).exists($r)||Am(!0,e,t).isSome()}function Rm(e,t){return he.from(t.getNode(!0)).map(Et.fromDom).exists($r)||Am(!1,e,t).isSome()}function Dm(e){return bs.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()}function Om(e,t){return W(U(xm(Et.fromDom(t.container()),e),So)).getOr(e)}function Bm(e,t){return Dm(t)?Zg(t):Zg(t)||df(Om(e,t).dom,t).exists(Zg)}function Pm(e,t){return Dm(t)?Qg(t):Qg(t)||ff(Om(e,t).dom,t).exists(Qg)}function Lm(e){return gc(e).bind(function(e){return vr(e,An)}).exists(function(e){return ie(["pre","pre-wrap"],Cn(e,"white-space"))})}function Im(e,t){return!Lm(t)&&(sp(e,t)||lp(e,t)||Rm(e,t)||Bm(e,t))}function Mm(e,t){return!Lm(t)&&(cp(e,t)||fp(e,t)||Tm(e,t)||Pm(e,t))}function Fm(e,t){return Im(e,t)||Mm(e,(r=(n=t).container(),o=n.offset(),qn(r)&&o<r.data.length?bs(r,o+1):n));var n,r,o}function Um(e,t){return vf(e.charAt(t))}function zm(e){var t=e.container();return qn(t)&&Re(t.data,Do)}function jm(g,e){return he.some(e).filter(zm).bind(function(e){var t,n,r,o,i,a,u,s,c,l=e.container(),f=g,d=(i=l).data,m=bs(i,0);return(!Um(d,0)||Fm(f,m)?(s=(a=l).data,(c=R(u=s.split(""),function(e,t){return vf(e)&&0<t&&t<u.length-1&&cl(u[t-1])&&cl(u[t+1])?" ":e}).join(""))!==s&&(a.data=c,1)):(i.data=" "+d.slice(1),1))||(t=g,r=(n=l).data,o=bs(n,r.length-1),Um(r,r.length-1)&&!Fm(t,o)&&(n.data=r.slice(0,-1)+" ",1))?he.some(e):he.none()})}function Hm(t){var e=Et.fromDom(t.getBody());t.selection.isCollapsed()&&jm(e,bs.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})}function Vm(e,t,n){var r,o,i,a,u,s,c,l;0!==n&&(o=hr(r=Et.fromDom(e),So).getOr(r),i=e.data.slice(t,t+n),a=t+n>=e.data.length&&Mm(o,bs(e,e.data.length)),u=0===t&&Im(o,bs(e,0)),e.replaceData(t,n,(c=u,l=a,P(s=i,function(e,t){return sl(t)||vf(t)?e.previousCharIsSpace||""===e.str&&c||e.str.length===s.length-1&&l?{previousCharIsSpace:!1,str:e.str+Do}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str)))}function qm(e,t){var n=e.data.slice(t);Vm(e,t,n.length-Je(n).length)}function $m(e,t){var n=e.data.slice(0,t),r=n.length-Qe(n).length;Vm(e,t-r,r)}function Wm(e,t,n,r){void 0===r&&(r=!0);var o=Qe(e.data).length,i=r?e:t,a=r?t:e;return r?i.appendData(a.data):i.insertData(0,a.data),Mn(Et.fromDom(a)),n&&qm(i,o),i}function Km(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===bs.isTextPosition(n)&&o===r.parentNode&&i>bs.before(r).offset()?bs(t.container(),t.offset()-1):t;var n,r,o,i}function Xm(e){return eo(e.previousSibling)?he.some((t=e.previousSibling,qn(t)?bs(t,t.data.length):bs.after(t))):e.previousSibling?gf(e.previousSibling):he.none();var t}function Ym(e){return eo(e.nextSibling)?he.some((t=e.nextSibling,qn(t)?bs(t,0):bs.before(t))):e.nextSibling?mf(e.nextSibling):he.none();var t}function Gm(r,o){return Xm(o).orThunk(function(){return Ym(o)}).orThunk(function(){return e=r,n=bs.before((t=o).previousSibling||t.parentNode),df(e,n).fold(function(){return ff(e,bs.after(t))},he.some);var e,t,n})}function Jm(n,r){return Ym(r).orThunk(function(){return Xm(r)}).orThunk(function(){return ff(e=n,bs.after(t=r)).fold(function(){return df(e,bs.before(t))},he.some);var e,t})}function Qm(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})}function Zm(e,t){return t&&Ee(e.schema.getBlockElements(),Nt(t))}function eg(e){if(oo(e)){var t=Et.fromHtml('<br data-mce-bogus="1">');return Kt(e),In(e,t),he.some(bs.before(t.dom))}return he.none()}function tg(t,n,e,r){void 0===r&&(r=!0);var o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=(p=n,h=t.getBody(),v=e.dom,(p?Jm:Gm)(h,v).map(A(Km,v))),y=hr(e,A(Zm,t),(o=t.getBody(),function(e){return e.dom===o})),C=(u=b,i=a=e,s=Ee(t.schema.getTextInlineElements(),Nt(i)),m=Ot(a).filter(Tn),g=Bt(a).filter(Tn),Mn(a),l=g,f=u,d=function(e,t,n){var r=e.dom,o=t.dom,i=r.data.length;return Wm(r,o,s),n.container()===o?bs(r,i):n},((c=m).isSome()&&l.isSome()&&f.isSome()?he.some(d(c.getOrDie(),l.getOrDie(),f.getOrDie())):he.none()).orThunk(function(){return s&&(m.each(function(e){return $m(e.dom,e.dom.length)}),g.each(function(e){return qm(e.dom,0)})),u}));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):y.bind(eg).fold(function(){r&&Qm(t,n,C)},function(e){r&&Qm(t,n,he.some(e))})}function ng(e){return Au(e,"td,th")}function rg(e,t){return{start:e,end:t}}function og(e,t){return Cr(Et.fromDom(e),"td,th",t)}function ig(e){return!je(e.start,e.end)}function ag(e,n){return zl(e.start,n).bind(function(t){return zl(e.end,n).bind(function(e){return je(t,e)?he.some(t):he.none()})})}function ug(e){return function(t){return ag(t,e).map(function(e){return{rng:t,table:e,cells:ng(e)}})}}function sg(e,t,n,r){if(n.collapsed||!e.forall(ig))return he.none();if(t.isSameTable){var o=e.bind(ug(r));return he.some({start:o,end:o})}var i,a,u=og(n.startContainer,r),s=og(n.endContainer,r),c=u.bind((a=r,function(t){return zl(t,a).bind(function(e){return Y(ng(e)).map(function(e){return rg(t,e)})})})).bind(ug(r)),l=s.bind((i=r,function(t){return zl(t,i).bind(function(e){return W(ng(e)).map(function(e){return rg(e,t)})})})).bind(ug(r));return he.some({start:c,end:l})}function cg(e,t){return M(e,function(e){return je(e,t)})}function lg(n){return fn(cg(n.cells,n.rng.start),cg(n.cells,n.rng.end),function(e,t){return n.cells.slice(e,t+1)})}function fg(e,t){var n=t.startTable,r=t.endTable,o=e.cloneRange();return n.each(function(e){return o.setStartAfter(e.dom)}),r.each(function(e){return o.setEndBefore(e.dom)}),o}function dg(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=(n=e,function(e){return je(n,e)}),y=fn(og((r=t).startContainer,o=b),og(r.endContainer,o),rg),C=(l=b,f=w((c=t).startContainer),d=w(c.endContainer),m=f.isSome(),g=d.isSome(),p=fn(f,d,je).getOr(!1),{startTable:f,endTable:d,isStartInTable:m,isEndInTable:g,isSameTable:p,isMultiTable:!p&&m&&g});function w(e){return zl(Et.fromDom(e),l)}return h=t,v=b,y.exists(function(e){return!ig(t=e)&&ag(t,v).exists(function(e){var t=e.dom.rows;return 1===t.length&&1===t[0].cells.length})&&jl(e.start,h);var t})?y.map(function(e){return gp.singleCellTable(t,e.start)}):C.isMultiTable?sg(y,u=C,s=t,b).bind(function(e){var t=e.start,n=e.end,r=t.bind(lg).getOr([]),o=n.bind(lg).getOr([]);if(0<r.length&&0<o.length){var i=fg(s,u);return he.some(gp.multiTable(r,o,i))}return he.none()}):sg(y,i=C,a=t,b).bind(function(e){var t=e.start,n=e.end;return t.or(n)}).bind(function(e){var t=i.isSameTable,n=lg(e).getOr([]);if(t&&e.cells.length===n.length)return he.some(gp.fullTable(e.table));if(0<n.length){if(t)return he.some(gp.partialTable(n,he.none()));var r=fg(a,i);return he.some(gp.partialTable(n,he.some(ke(ke({},i),{rng:r}))))}return he.none()})}function mg(e){return X(e,function(e){bn(e,"contenteditable"),ym(e)}),0}function gg(e,t){var n=Ul(e);e.selection.setCursorLocation(t.dom,0),1<n.length&&gn(t,"data-mce-selected","1")}function pg(u,e,t){return mg(e),t.map(function(e){var t,n,r,o=e.rng,i=e.isStartInTable,a=(t=i?o.endContainer:o.startContainer,he.from(u.dom.getParent(t,u.dom.isBlock)).map(Et.fromDom));o.deleteContents(),n=u,r=i,a.filter(oo).each(function(e){r?Mn(e):(ym(e),n.selection.setCursorLocation(e.dom,0))})}),t.forall(function(e){return e.isStartInTable})?gg(u,e[0]):u.selection.collapse(!0),!0}function hg(e,t,n,r){return mg(t.concat(n)),r.deleteContents(),gg(e,t[0]),!0}function vg(e,t,n){t.deleteContents();var r,o=pp(n).getOr(n),i=Et.fromDom(e.dom.getParent(o.dom,e.dom.isBlock));return oo(i)&&(ym(i),e.selection.setCursorLocation(i.dom,0)),je(n,i)||X((ln(Dt(i),n)?[]:Dt(r=i).map(On).map(function(e){return U(e,function(e){return!je(r,e)})}).getOr([])).concat(On(n)),function(e){je(e,i)||He(e,i)||Mn(e)}),!0}function bg(e,t){return tg(e,!1,t),!0}function yg(e,t){return I(xm(t,e),Ao)}function Cg(e,t){return(e?op:ip)(t)}function wg(f,d,s){var m=Et.fromDom(f.getBody());return hp(m,s).fold(function(){return o=f,i=d,a=m,e=s,u=bs.fromRangeStart(o.selection.getRng()),yg(a,e).bind(function(e){return oo(e)?vp(o,e):(t=a,n=e,r=u,Gc(i,o.getBody(),r).bind(function(e){return yg(t,Et.fromDom(e.getNode())).map(function(e){return!1===je(e,n)})}));var t,n,r}).getOr(!1)||(n=d,r=bs.fromRangeStart((t=f).selection.getRng()),Cg(n,r)||cf(n,t.getBody(),r).exists(function(e){return Cg(n,e)}));var o,i,a,e,u,t,n,r},function(e){return n=d,r=m,o=e,i=bs.fromRangeStart((t=f).selection.getRng()),(oo(o)?vp(t,o):(u=r,c=o,l=i,Gc(s=n,(a=t).getBody(),l).bind(function(e){return r=s,o=l,i=e,mf((n=c).dom).bind(function(t){return gf(n.dom).map(function(e){return r?o.isEqual(t)&&i.isEqual(e):o.isEqual(e)&&i.isEqual(t)})}).getOr(!0)?vp(a,c):(t=c,hp(u,Et.fromDom(e.getNode())).map(function(e){return!1===je(e,t)}));var t,n,r,o,i}).or(he.some(!0)))).getOr(!1);var a,u,s,c,l,t,n,r,o,i})}function xg(e,t){var n,r,o,i,a,u,s,c,l=Et.fromDom(e.selection.getStart(!0)),f=Ul(e);return e.selection.isCollapsed()&&0===f.length?wg(e,t,l):(r=l,o=f,i=Et.fromDom((n=e).getBody()),a=n.selection.getRng(),0!==o.length?pg(n,o,he.none()):(u=n,c=a,hp(s=i,r).fold(function(){return t=u,dg(s,c).map(function(e){return e.fold(A(vg,t),A(bg,t),A(pg,t),A(hg,t))});var t},function(e){return vp(u,e)}).getOr(!1)))}function Sg(e){return e.collapsed?e:(a=e,u=bs.fromRangeStart(a),s=bs.fromRangeEnd(a),c=a.commonAncestorContainer,cf(!1,c,s).map(function(e){return!uc(u,s,c)&&uc(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a));var a,u,s,c}function Eg(e,t){var n,r,o,i,a,u=t.firstChild,s=t.lastChild;return u&&"meta"===u.name&&(u=u.next),r=s=s&&"mce_marker"===s.attr("id")?s.prev:s,o=(n=e).getNonEmptyElements(),r&&(r.isEmpty(o)||(i=r,n.getBlockElements()[i.name]&&i.firstChild&&i.firstChild===i.lastChild&&("br"===(a=i.firstChild).name||a.value===Do)))&&(s=s.prev),u&&u===s&&("ul"===u.name||"ol"===u.name)}function Ng(e){return 0<e.length&&(!(r=e[e.length-1]).firstChild||(t=r)&&t.firstChild&&t.firstChild===t.lastChild&&((n=t.firstChild).data===Do||Xn(n)))?e.slice(0,-1):e;var t,n,r}function kg(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null}function _g(e,t){var n=bs.after(e),r=Wc(t).prev(n);return r?r.toRange():null}function Ag(e,o,i,t){function n(e){var t=bs.fromRangeStart(i),n=Wc(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||kg(o,r.getNode())!==T}var r,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,w,x,S,E,N,k,_,A=(r=o,c=e.serialize(t),u=(a=r.createFragment(c)).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),T=kg(o,i.startContainer),R=Ng(U(A.firstChild.childNodes,function(e){return"LI"===e.nodeName})),D=o.getRoot();return n(1)?(S=D,_=(x=T).parentNode,St.each(R,function(e){_.insertBefore(e,x)}),E=S,N=bs.before(x),(k=Wc(E).next(N))?k.toRange():null):n(2)?(l=T,d=D,o.insertAfter((f=R).reverse(),l),_g(f[0],d)):(g=R,p=D,h=m=T,b=(v=i).cloneRange(),y=v.cloneRange(),b.setStartBefore(h),y.setEndAfter(h),C=[b.cloneContents(),y.cloneContents()],(w=m.parentNode).insertBefore(C[0],m),St.each(g,function(e){w.insertBefore(e,m)}),w.insertBefore(C[1],m),w.removeChild(m),_g(g[g.length-1],p))}function Tg(e,t,n){var r,o,i,a,u=e.selection,s=e.dom;/^ | $/.test(t)&&(r=s,o=u.getRng(),i=t,i=Im(a=Et.fromDom(r.getRoot()),bs.fromRangeStart(o))?i.replace(/^ /,"&nbsp;"):i.replace(/^&nbsp;/," "),t=i=Mm(a,bs.fromRangeEnd(o))?i.replace(/(&nbsp;| )(<br( \/)>)?$/,"&nbsp;"):i.replace(/&nbsp;(<br( \/)?>)?$/," "));var c=e.parser,l=n.merge,f=sm({validate:e.getParam("validate")},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;</span>',m=e.fire("BeforeSetContent",{content:t,format:"html",selection:!0,paste:n.paste});if(m.isDefaultPrevented())e.fire("SetContent",{content:m.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=m.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var g,p,h=(g=u.getRng()).startContainer||(g.parentElement?g.parentElement():null),v=e.getBody();h===v&&u.isCollapsed()&&s.isBlock(v.firstChild)&&((p=v.firstChild)&&!e.schema.getShortEndedElements()[p.nodeName])&&s.isEmpty(v.firstChild)&&((g=s.createRng()).setStart(v.firstChild,0),g.setEnd(v.firstChild,0),u.setRng(g)),u.isCollapsed()||function(e){var t=e.dom,n=Sg(e.selection.getRng());e.selection.setRng(n);var r,o=t.getParent(n.startContainer,bp),i=n;null!==(r=o)&&r===t.getParent(i.endContainer,bp)&&jl(Et.fromDom(r),i)?vg(e,n,Et.fromDom(o)):e.getDoc().execCommand("Delete",!1,null)}(e);var b,y,C,w,x,S,E,N,k,_,A,T,R,D,O={context:(I=u.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0},B=c.parse(t,O);if(!0===n.paste&&Eg(e.schema,B)&&kg(s,I))return g=Ag(f,s,u.getRng(),B),u.setRng(g),void e.fire("SetContent",m);if(function(){for(var e=B;e=e.walk();)1===e.type&&e.attr("data-mce-fragment","1")}(),"mce_marker"===(L=B.lastChild).attr("id"))for(var P=L,L=L.prev;L;L=L.walk(!0))if(3===L.type||!s.isBlock(L.name)){e.schema.isValidChild(L.parent.name,"span")&&L.parent.insert(P,L,"br"===L.name);break}if(e._selectionOverrides.showBlockCaretContainer(I),O.invalid){e.selection.setContent(d);var I=u.getNode(),M=e.getBody();for(9===I.nodeType?I=L=M:L=I;L!==M;)L=(I=L).parentNode;t=I===M?M.innerHTML:s.getOuterHTML(I),t=f.serialize(c.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return f.serialize(B)}))),I===M?s.setHTML(M,t):s.setOuterHTML(I,t)}else b=e,y=t=f.serialize(B),"all"===(C=I).getAttribute("data-mce-bogus")?C.parentNode.insertBefore(b.dom.createFragment(y),C):(w=C.firstChild,x=C.lastChild,!w||w===x&&"BR"===w.nodeName?b.dom.setHTML(C,y):b.selection.setContent(y));E=l,_=(S=e).schema.getTextInlineElements(),A=S.dom,E&&(N=S.getBody(),k=am(A),St.each(A.select("*[data-mce-fragment]"),function(e){if(V(_[e.nodeName.toLowerCase()])&&j(mm(A,e),function(e){return!dm.has(e)}))for(var t=e.parentNode;V(t)&&t!==N&&!function(r,o,i){function a(e){var t=r.getStyle(o,e),n=r.getStyle(i,e);return Oe(t)&&Oe(n)&&t!==n}var e=mm(r,o),u=mm(r,i);return F(e,function(t){function e(e){return F(e,function(e){return e===t})}if(e(u)||!e(Jg))return a(t);var n=U(u,function(t){return F(Jg,function(e){return Ye(t,e)})});return F(n,a)})}(A,e,t);t=t.parentNode)if(k.compare(t,e)){A.remove(e,!0);break}})),function(n,e){var t,r=n.dom,o=n.selection;if(e){o.scrollIntoView(e);var i=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===r.getContentEditable(e))return e;return null}(e);if(i)return r.remove(e),o.select(i);var a,u=r.createRng(),s=e.previousSibling;qn(s)?(u.setStart(s,s.nodeValue.length),Ct.ie||(a=e.nextSibling,qn(a)&&(s.appendData(a.data),a.parentNode.removeChild(a)))):(u.setStartBefore(e),u.setEndBefore(e));var c=r.getParent(e,r.isBlock);r.remove(e),c&&r.isEmpty(c)&&(n.$(c).empty(),u.setStart(c,0),u.setEnd(c,0),bp(c)||c.getAttribute("data-mce-fragment")||!(t=function(e){var t=bs.fromRangeStart(e);if(t=Wc(n.getBody()).next(t))return t.toRange()}(u))?r.add(c,r.create("br",{"data-mce-bogus":"1"})):(u=t,r.remove(c))),o.setRng(u)}}(e,s.get("mce_marker")),T=e.getBody(),St.each(T.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),R=s,D=u.getStart(),he.from(R.getParent(D,"td,th")).map(Et.fromDom).each(Cm),e.fire("SetContent",m),e.addVisual()}}function Rg(e){return e instanceof Jd}function Dg(e,t,n){var r;e.dom.setHTML(e.getBody(),t),!0!==n&&Td(r=e)&&mf(r.getBody()).each(function(e){var t=e.getNode(),n=sn(t)?mf(t).getOr(e):e;r.selection.setRng(n.toRange())})}function Og(u,s,e){var c=e.no_events?e:u.fire("BeforeSetContent",ke(ke({format:"html"},e),{set:!0,content:Rg(s)?"":s}));return Rg(s)||(s=c.content),he.from(u.getBody()).fold(J(s),function(e){return Rg(s)?function(e,t,n,r){var o,i,u,a;o=e.parser.getNodeFilters(),i=e.parser.getAttributeFilters(),u=n,a=function(e,n){var t,r,o={},i={},a=[];for(t in u.firstChild&&yp(u.firstChild,function(t){X(e,function(e){e.name===t.name&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})}),X(n,function(e){"string"==typeof t.attr(e.name)&&(i[e.name]?i[e.name].nodes.push(t):i[e.name]={filter:e,nodes:[t]})})}),o)Ee(o,t)&&a.push(o[t]);for(r in i)Ee(i,r)&&a.push(i[r]);return a}(o,i),X(a,function(t){X(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})});var s=sm({validate:e.validate},e.schema).serialize(n);return r.content=To(Et.fromDom(t))?s:St.trim(s),Dg(e,r.content,r.no_selection),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(i='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+i+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&(r="<li>"+i+"</li>"),r=(a=Ls(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),a.toLowerCase())?(r=i,t.dom.createHTML(a,Is(t),r)):r||'<br data-mce-bogus="1">',Dg(t,r,o.no_selection),t.fire("SetContent",o)):("raw"!==o.format&&(r=sm({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=To(Et.fromDom(n))?r:St.trim(r),Dg(t,o.content,o.no_selection),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})}function Bg(e){return y(e)?e:T}function Pg(i,e,t){var n=e(i),a=Bg(t);return n.orThunk(function(){return a(i)?he.none():function(e){for(var t=i.dom,n=Bg(a);t.parentNode;){var t=t.parentNode,r=Et.fromDom(t),o=e(r);if(o.isSome())return o;if(n(r))break}return he.none()}(e)})}function Lg(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++){var i=r[o];if(Sl(i)&&!1===i.inherit&&e.dom.is(t,i.selector))return 1}}function Ig(t,e,n,r,o){var i=t.dom.getRoot();return e!==i&&(e=t.dom.getParent(e,function(e){return!!Lg(t,e,n)||e.parentNode===i||!!wp(t,e,n,r,!0)}),!!wp(t,e,n,r,o))}function Mg(e,t,n){return!!Cp(t,n.inline)||!!Cp(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)}function Fg(e,t,n,r,o,i){var a=n[r];if(y(n.onmatch))return n.onmatch(t,n,r);if(a)if(b(a.length)){for(var u in a)if(Ee(a,u)){var s="attributes"===r?e.getAttrib(t,u):bl(e,t,u),c=pl(a[u],i),l=re(s)||Be(s);if(!l||!re(c)){if(o&&l&&!n.exact)return;if((!o||n.exact)&&!Cp(s,vl(e,c,u)))return}}}else for(var f=0;f<a.length;f++)if("attributes"===r?e.getAttrib(t,a[f]):bl(e,t,a[f]))return 1;return 1}function Ug(e,t,n,r,o){if(r)return Ig(e,r,t,n,o);if(r=e.selection.getNode(),Ig(e,r,t,n,o))return!0;var i=e.selection.getStart();return!(i===r||!Ig(e,i,t,n,o))}function zg(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==xp||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length}function jg(e){if(e){var t=new jr(e,e);for(e=t.current();e;e=t.next())if(qn(e))return e}return null}function Hg(e){var t=Et.fromTag("span");return pn(t,{id:Sp,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&In(t,Et.fromText(xp)),t}function Vg(e,t,n){void 0===n&&(n=!0);var r,o,i,a,u,s,c,l,f=e.dom,d=e.selection;zg(t)?tg(e,!1,Et.fromDom(t),n):(r=d.getRng(),o=f.getParent(t,f.isBlock),i=r.startContainer,a=r.startOffset,u=r.endContainer,s=r.endOffset,(l=jg(t))&&l.nodeValue.charAt(0)===xp&&l.deleteData(0,1),c=l,f.remove(t,!0),i===c&&0<a&&r.setStart(c,a-1),u===c&&0<s&&r.setEnd(c,s-1),o&&f.isEmpty(o)&&ym(Et.fromDom(o)),d.setRng(r))}function qg(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Vg(e,t,n);else if(!(t=Zc(e.getBody(),o.getStart())))for(;t=r.get(Sp);)Vg(e,t,!1)}function $g(e,t){return e.appendChild(t),t}function Wg(e,t){var n=B(e,function(e,t){return $g(e,t.cloneNode(!1))},t);return $g(n,n.ownerDocument.createTextNode(xp))}function Kg(o,e,t,i,n,r){var a,u,s=o.formatter,c=o.dom,l=U(we(s.get()),function(e){return e!==i&&!Re(e,"removeformat")});if(0<U((a=o,u=t,P(l,function(e,t){var n=wl(a,t);return a.formatter.matchNode(u,t,{},n)?e.concat([t]):e},[])),function(e){return n=i,r=["inline","block","selector","attributes","styles","classes"],!F((t=o).formatter.get(e),function(e){var i=a(e);return F(t.formatter.get(n),function(e){var t,n=a(e),r=i,o=n;return d(t=void 0===t?p:t).eq(r,o)})});function a(e){return ne(e,function(e,t){return F(r,function(e){return e===t})})}var t,n,r}).length){var f=t.cloneNode(!1);return c.add(e,f),s.remove(i,n,f,r),c.remove(f),he.some(f)}return he.none()}function Xg(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=e.dom,C=e.selection,w=[],x=C.getRng(),S=x.startContainer,E=x.startOffset,N=S;for(3===S.nodeType&&(E!==S.nodeValue.length&&(o=!0),N=N.parentNode);N;){if(wp(e,N,t,n,r)){i=N;break}N.nextSibling&&(o=!0),w.push(N),N=N.parentNode}i&&(o?(a=C.getBookmark(),x.collapse(!0),u=Vf(Ll(e,x,e.formatter.get(t),!0)),e.formatter.remove(t,n,u,r),C.moveToBookmark(a)):(s=Zc(e.getBody(),i),d=c=Hg(!1).dom,(p=(g=e.dom).getParent(m=null!==s?s:i,A(ml,e)))&&g.isEmpty(p)?m.parentNode.replaceChild(d,m):(h=Et.fromDom(m),v=Au(h,"br"),b=U(function(){for(var e=[],t=h.dom;t;)e.push(Et.fromDom(t)),t=t.lastChild;return e}().slice(-1),$r),v.length===b.length&&X(b,Mn),g.isEmpty(m)?m.parentNode.replaceChild(d,m):g.insertAfter(d,m)),l=Kg(e,c,i,t,n,r),f=Wg(w.concat(l.toArray()),c),Vg(e,s,!1),C.setCursorLocation(f,1),y.isEmpty(i)&&y.remove(i)))}function Yg(e,t){var n=e.schema.getTextInlineElements();return Ee(n,Nt(t))&&!Qc(t.dom)&&!un(t.dom)}X(["margin","margin-left","margin-right","margin-top","margin-bottom","padding","padding-left","padding-right","padding-top","padding-bottom","border","border-width","border-style","border-color","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","float","position","left","right","top","bottom","z-index","display","transform","width","max-width","min-width","height","max-height","min-height","overflow","overflow-x","overflow-y","text-overflow","vertical-align","transition","transition-delay","transition-duration","transition-property","transition-timing-function"],function(e){dm.add(e)});var Gg,Jg=["font","text-decoration","text-emphasis"],Qg=A(gm,!0,sl),Zg=A(gm,!1,sl),ep=hm(!0,vm),tp=hm(!1,vm),np=hm(!0,Zn),rp=hm(!1,Zn),op=hm(!0,sn),ip=hm(!1,sn),ap=hm(!0,bm),up=hm(!1,bm),sp=A(km,!1),cp=A(km,!0),lp=A(Nm,!1),fp=A(Nm,!0),dp=A(Am,!1),mp=A(Am,!0),gp=ar([{singleCellTable:["rng","cell"]},{fullTable:["table"]},{partialTable:["cells","outsideDetails"]},{multiTable:["startTableCells","endTableCells","betweenRng"]}]),pp=function(e){var t;return(8===kt(t=e)||"#comment"===Nt(t)?Ot:Ft)(e).bind(pp).orThunk(function(){return he.some(e)})},hp=function(e,t){return I(xm(t,e),function(e){return An(e)&&"caption"===Nt(e)})},vp=function(e,t){return ym(t),e.selection.setCursorLocation(t.dom,0),he.some(!0)},bp=Qn,yp=function(e,t){t(e),e.firstChild&&yp(e.firstChild,t),e.next&&yp(e.next,t)},Cp=hl,wp=function(e,t,n,r,o){var i=e.formatter.get(n),a=e.dom;if(i&&t)for(var u=0;u<i.length;u++){var s=i[u];if(Mg(e.dom,t,s)&&Fg(a,t,s,"attributes",o,r)&&Fg(a,t,s,"styles",o,r)){var c=s.classes;if(c)for(var l=0;l<c.length;l++)if(!e.dom.hasClass(t,pl(c[l],r)))return;return s}}},xp=Oo,Sp="_mce_caret",Ep={},Np=le,kp=se;function _p(e){return Hn(e)&&!ul(e)&&!Qc(e)&&!un(e)}function Ap(e,t){for(var n=e;n;n=n[t]){if(qn(n)&&Oe(n.data))return e;if(Hn(n)&&!ul(n))return n}return e}function Tp(e,t,n){var r=am(e);if(t&&n&&(t=Ap(t,"previousSibling"),n=Ap(n,"nextSibling"),r.compare(t,n))){for(var o=t.nextSibling;o&&o!==n;){var i=o,o=o.nextSibling;t.appendChild(i)}return e.remove(n),St.each(St.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n}function Rp(e,t,n,r){var o;r&&!1!==t.merge_siblings&&(o=Tp(e,dl(r),r),Tp(e,o,dl(o,!0)))}function Dp(t,n){return function(e){return!(!e||!bl(t,e,n))}}function Op(r,o,i){return function(e){var t,n;r.setStyle(e,o,i),""===e.getAttribute("style")&&e.removeAttribute("style"),t=r,"SPAN"===(n=e).nodeName&&0===t.getAttribs(n).length&&t.remove(n,!0)}}function Bp(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)}function Pp(e,t,n){var r,o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"];return Hn(o)&&(r=o.childNodes.length-1,!n&&i&&i--,o=o.childNodes[r<i?r:i]),qn(o)&&n&&i>=o.nodeValue.length&&(o=new jr(o,e.getBody()).next()||o),qn(o)&&!n&&0===i&&new jr(o,e.getBody()).prev()||o}function Lp(e,t){var n=t?"firstChild":"lastChild";if(/^(TR|TH|TD)$/.test(e.nodeName)&&e[n]){var r=e[n];return"TR"===e.nodeName&&r[n]||r}return e}function Ip(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o}function Mp(e,t,n,r,o){var i=Et.fromDom(t),a=Et.fromDom(e.create(r,o));return Wt(a,(n?Lt:Pt)(i)),n?(Vt(i,a),$t(a,i)):(qt(i,a),In(a,i)),a.dom}function Fp(e,t,n,r){var o=dl(t,n,r);return re(o)||"BR"===o.nodeName||e.isBlock(o)}function Up(e,r,o,t,i){var n,a,u=e.dom,s=u,c=t;if(!(El(a=r)&&Dh(c,a.inline)||xl(a)&&Dh(c,a.block)||Sl(a)&&(Hn(c)&&s.is(c,a.selector))||r.links&&"A"===t.nodeName))return Ah.keep();var l,f,d,m,g,p,h,v,b=t;if(El(r)&&"all"===r.remove&&S(r.preserve_attributes)){var y=U(u.getAttribs(b),function(e){return ie(r.preserve_attributes,e.name.toLowerCase())});if(u.removeAllAttribs(b),X(y,function(e){return u.setAttrib(b,e.name,e.value)}),0<y.length)return Ah.rename("span")}if("all"!==r.remove){Rh(r.styles,function(e,t){e=vl(u,pl(e,o),t+""),E(t)&&(t=e,i=null),!r.remove_similar&&i&&!Dh(bl(u,i,t),e)||u.setStyle(b,t,""),n=!0}),n&&""===u.getAttrib(b,"style")&&(b.removeAttribute("style"),b.removeAttribute("data-mce-style")),Rh(r.attributes,function(e,t){var n;if(e=pl(e,o),E(t)&&(t=e,i=null),r.remove_similar||!i||Dh(u.getAttrib(i,t),e))if("class"===t&&(e=u.getAttrib(b,t))&&(n="",X(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))u.setAttrib(b,t,n);else{if(Th.test(t)&&b.removeAttribute("data-mce-"+t),"style"===t&&rn(["li"])(b)&&"none"===u.getStyle(b,"list-style-type"))return b.removeAttribute(t),void u.setStyle(b,"list-style-type","none");"class"===t&&b.removeAttribute("className"),b.removeAttribute(t)}}),Rh(r.classes,function(e){e=pl(e,o),i&&!u.hasClass(i,e)||u.removeClass(b,e)});for(var C=u.getAttribs(b),w=0;w<C.length;w++){var x=C[w].nodeName;if(0!==x.indexOf("_")&&0!==x.indexOf("data-"))return Ah.keep()}}return"none"!==r.remove?(l=e,d=r,p=(f=b).parentNode,h=l.dom,v=Ls(l),xl(d)&&(v?p===h.getRoot()&&(d.list_block&&Dh(f,d.list_block)||X(Ce(f.childNodes),function(e){gl(l,v,e.nodeName.toLowerCase())?m?m.appendChild(e):(m=Ip(h,e,v),h.setAttribs(m,l.settings.forced_root_block_attrs)):m=null})):h.isBlock(f)&&!h.isBlock(p)&&(Fp(h,f,!1)||Fp(h,f.firstChild,!0,!0)||f.insertBefore(h.create("br"),f.firstChild),Fp(h,f,!0)||Fp(h,f.lastChild,!1,!0)||f.appendChild(h.create("br")))),Sl(g=d)&&El(g)&&ln(ae(g,"mixed"),!0)&&!Dh(d.inline,f)||h.remove(f,!0),Ah.removed()):Ah.keep()}function zp(t,e,n,r,o){return Up(t,e,n,r,o).fold(T,function(e){return t.dom.rename(r,e),!0},x)}function jp(u,s,c,e,l){function a(e){var n,r,o,i,a,t=(r=s,o=c,i=l,X(Cl((n=u).dom,e.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=wp(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l=e.dom;if(n){for(var f=n.parentNode,d=r.parentNode;d&&d!==f;d=d.parentNode){for(var m=l.clone(d,!1),g=0;g<t.length&&null!==(m=function(t,e,n){return Up(t,e,u,n,n).fold(J(n),function(e){return t.dom.createFragment().appendChild(n),t.dom.rename(n,e)},J(null))}(e,t[g],m));g++);m&&(s&&m.appendChild(s),c=c||m,s=m)}!i||a.mixed&&l.isBlock(n)||(r=l.split(n,r)),s&&(o.parentNode.insertBefore(s,o),c.appendChild(o),El(a)&&Rp(l,a,0,s))}return r}(u,m,t,e,e,!0,g,c)}function f(t){return F(m,function(e){return zp(u,e,c,t,t)})}function d(e){var t,n=h.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChild"];return ul(t=r)&&Hn(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),qn(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),h.remove(n,!0),r}function t(e){var t=Ll(u,e,m,e.collapsed);if(g.split){if(t=Vf(t),(r=Pp(u,t,!0))!==(o=Pp(u,t))){if(r=Lp(r,!0),o=Lp(o,!1),Bp(h,r,o)){var n=he.from(r.firstChild).getOr(r);return a(Mp(h,n,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void d(!0)}if(Bp(h,o,r))return n=he.from(o.lastChild).getOr(o),a(Mp(h,n,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void d(!1);var r=Ip(h,r,"span",{id:"_start","data-mce-type":"bookmark"}),o=Ip(h,o,"span",{id:"_end","data-mce-type":"bookmark"}),i=h.createRng();i.setStartAfter(r),i.setEndBefore(o),Il(h,i,function(e){X(e,function(e){ul(e)||ul(e.parentNode)||a(e)})}),a(r),a(o),r=d(!0),o=d()}else r=o=a(r);t.startContainer=r.parentNode||r,t.startOffset=h.nodeIndex(r),t.endContainer=o.parentNode||o,t.endOffset=h.nodeIndex(o)+1}Il(h,t,function(e){X(e,v)})}var n,m=u.formatter.get(s),g=m[0],p=!0,h=u.dom,r=u.selection,v=function(t){var e=!0,n=!1;Hn(t)&&h.getContentEditable(t)&&(e=p,p="true"===h.getContentEditable(t),n=!0);var r,o,i=Ce(t.childNodes);if(p&&!n&&(r=f(t),o=t.parentNode,!r&&V(o)&&Nl(g)&&f(o)),g.deep&&i.length){for(var a=0;a<i.length;a++)v(i[a]);n&&(p=e)}X(["underline","line-through","overline"],function(e){Hn(t)&&u.dom.getStyle(t,"text-decoration")===e&&t.parentNode&&yl(h,t.parentNode)===e&&zp(u,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:e}},null,t)})};if(e)return ll(e)?((n=h.createRng()).setStartBefore(e),n.setEndAfter(e),t(n)):t(e),void Df(u,s,e,c);if("false"!==h.getContentEditable(r.getNode()))r.isCollapsed()&&El(g)&&!Ul(u).length?Xg(u,s,c,l):($l(r,!0,function(){ql(u,t)}),El(g)&&Ug(u,s,c,r.getStart())&&fl(h,r,r.getRng()),u.nodeChanged()),Df(u,s,e,c);else{e=r.getNode();for(var o=0;o<m.length&&(!m[o].ceFalseOverride||!zp(u,m[o],c,e,e));o++);Df(u,s,e,c)}}function Hp(e){return Hn(e)&&!ul(e)&&!Qc(e)&&!un(e)}function Vp(e){return Ee(e,"vars")}function qp(n,e,r,o,i){return L(e,function(e){var t=n.formatter.matchNode(e,r,null!=i?i:{},o);return!b(t)},function(e){return Lg(n,e,r)||!o&&V(n.formatter.matchNode(e,r,i,!0))})}function $p(e,t){var n=null!=t?t:Lh(e);return U(Cl(e.dom,n),function(e){return Hn(e)&&!un(e)})}function Wp(e,o,i,a,t,n){var r,u,s,c,l,f,d,m,g;return null===o.get()&&(u=e,(r=o).set({}),u.on("NodeChange",function(e){Ih(u,e.element,r.get())}),u.on("FormatApply FormatRemove",function(e){var t=he.from(e.node).map(function(e){return ll(e)?e:e.startContainer}).bind(function(e){return Hn(e)?he.some(e):he.from(e.parentElement)}).getOrThunk(function(){return Lh(u)});Ih(u,t,r.get())})),s=e,l=i,f=a,d=t,m=n,g=(c=o).get(),X(l.split(","),function(t){function e(){var e=$p(s);return qp(s,e,t,d,m).isSome()}var n,r=ae(g,t).getOrThunk(function(){var e={withSimilar:{state:pu(!1),similar:!0,callbacks:[]},withoutSimilar:{state:pu(!1),similar:!1,callbacks:[]},withVars:[]};return g[t]=e});b(m)?((n=d?r.withSimilar:r.withoutSimilar).callbacks.push(f),1===n.callbacks.length&&n.state.set(e())):r.withVars.push({state:pu(e()),similar:d,vars:m,callback:f})}),c.set(g),{unbind:function(){var e,t=i,n=a,r=(e=o).get();X(t.split(","),function(t){return ae(r,t).each(function(e){r[t]={withSimilar:ke(ke({},e.withSimilar),{callbacks:U(e.withSimilar.callbacks,function(e){return e!==n})}),withoutSimilar:ke(ke({},e.withoutSimilar),{callbacks:U(e.withoutSimilar.callbacks,function(e){return e!==n})}),withVars:U(e.withVars,function(e){return e.callback!==n})}})}),e.set(r)}}}function Kp(e,t){var n=(t||document).createDocumentFragment();return X(e,function(e){n.appendChild(e.dom)}),Et.fromDom(n)}function Xp(e,t,n){return{element:e,width:t,rows:n}}function Yp(e,t){return{element:e,cells:t}}function Gp(e,t){var n=parseInt(hn(e,t),10);return isNaN(n)?1:n}function Jp(e){return P(e,function(e,t){return t.cells.length>e?t.cells.length:e},0)}function Qp(e,t){for(var n=e.rows,r=0;r<n.length;r++)for(var o=n[r].cells,i=0;i<o.length;i++)if(je(o[i],t))return he.some({x:i,y:r});return he.none()}function Zp(e,t,n,r,o){for(var i=[],a=e.rows,u=n;u<=o;u++){var s=a[u].cells,c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Yp(a[u].element,c))}return i}function eh(e){var o=Xp(Pu(e),0,[]);return X(Au(e,"tr"),function(n,r){X(Au(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=Gp(o,"rowspan"),a=Gp(o,"colspan"),u=e.rows,s=n;s<n+i;s++){u[s]||(u[s]=Yp(Lu(r),[]));for(var c=t;c<t+a;c++)u[s].cells[c]=s===n&&c===t?o:Pu(o)}}(o,function(e,t,n){for(;r=t,((o=e.rows)[n]?o[n].cells:[])[r];)t++;var r,o;return t}(o,t,r),r,n,e)})}),Xp(o.element,Jp(o.rows),o.rows)}function th(e,t){var n,r,o,i=Et.fromDom(t.commonAncestorContainer),a=xm(i,e),u=U(a,function(e){return qr(e)||xo(e)}),s=(o=t,I(r=a,function(e){return"li"===Nt(e)&&jl(e,o)}).fold(J([]),function(e){return I(r,function(e){return"ul"===Nt(e)||"ol"===Nt(e)}).map(function(e){var t=Et.fromTag(Nt(e));return yn(t,ne(xn(e),function(e,t){return Ye(t,"list-style")})),[Et.fromTag("li"),t]}).getOr([])}));return R(u.concat(s.length?s:ko(n=i)?Dt(n).filter(No).fold(J([]),function(e){return[n,e]}):No(n)?[n]:[]),Pu)}function nh(){return Kp([])}function rh(e,i){return br(i[0],"table",A(je,e)).bind(function(e){var s,t,n=i[0],r=i[i.length-1],o=eh(e);return t=r,Qp(s=o,n).bind(function(u){return Qp(s,t).map(function(e){return t=s,n=u.x,r=u.y,o=e.x,a=r<(i=e.y)?Zp(t,n,r,o,i):Zp(t,n,i,o,r),Xp(t.element,Jp(a),a);var t,n,r,o,i,a})}).map(function(e){return Kp([(n=R((t=e).rows,function(e){var t=R(e.cells,function(e){var t=Lu(e);return bn(t,"colspan"),bn(t,"rowspan"),t}),n=Pu(e.element);return Wt(n,t),n}),r=Pu(t.element),Wt(o=Et.fromTag("tbody"),n),In(r,o),r)]);var t,n,r,o})}).getOrThunk(nh)}function oh(e,t){var n,r,o,i,a,u,s,c=Fl(t,e);return 0<c.length?rh(e,c):(n=e,0<(r=t).length&&r[0].collapsed?nh():(o=n,i=r[0],a=Et.fromDom(i.cloneContents()),s=P(u=th(o,i),function(e,t){return In(t,e),t},a),0<u.length?Kp([s]):s))}function ih(e,t){return 0<=t&&t<e.length&&sl(e.charAt(t))}function ah(e,t){var n=Po(e.innerText);return t?n.replace(/^[ \f\n\r\t\v]+/,""):n}function uh(e){return Hn(e)?e.outerHTML:qn(e)?si.encodeRaw(e.data,!1):$n(e)?"\x3c!--"+e.data+"--\x3e":""}function sh(e,c){var l=0;X(e,function(e){var t,n,r,o,i,a,u,s;0===e[0]?l++:1===e[0]?(o=c,i=e[1],a=l,s=function(e){var t,n=document.createElement("div"),r=document.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r}(i),o.hasChildNodes()&&a<o.childNodes.length?(u=o.childNodes[a]).parentNode.insertBefore(s,u):o.appendChild(s),l++):2===e[0]&&(n=l,(t=c).hasChildNodes()&&n<t.childNodes.length&&(r=t.childNodes[n]).parentNode.removeChild(r))})}function ch(n){var e,t=z((e=n.getBody(),U(R(Ce(e.childNodes),uh),function(e){return 0<e.length})),function(e){var t=im(n.serializer,e);return 0<t.length?[t]:[]}),r=t.join("");return-1!==r.indexOf("</iframe>")?{type:"fragmented",fragments:t,content:"",bookmark:null,beforeBookmark:null}:{type:"complete",fragments:null,content:r,bookmark:null,beforeBookmark:null}}function lh(e,t,n){var r,o,i,g,p,a,h,v,c,l,u,s=n?t.beforeBookmark:t.bookmark;function b(e,t,n,r){for(var o=e;o-t<r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}}"fragmented"===t.type?(r=t.fragments,o=e.getBody(),i=R(Ce(o.childNodes),uh),sh((p=r,a=(g=i).length+p.length+2,h=new Array(a),v=new Array(a),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0==o||0==i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:1+d)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&v[s-f]<=h[s])return b(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return b(v[s],u+e-n,t,r)}}},u=[],c(0,g.length,0,p.length,u),u),o)):e.setContent(t.content,{format:"raw",no_selection:!V(s)||!el(s)||!s.isFakeCaret}),e.selection.moveToBookmark(s)}function fh(e){return"fragmented"===e.type?e.fragments.join(""):e.content}function dh(e){var t=Et.fromTag("body",Mh());return Ou(t,fh(e)),X(Au(t,"*[data-mce-bogus]"),Xt),t.dom.innerHTML}function mh(e,t){return!(!e||!t)&&(r=t,fh(e)===fh(r)||(n=t,dh(e)===dh(n)));var n,r}function gh(e){return 0===e.get()}function ph(e,t,n){gh(n)&&(e.typing=t)}function hh(e,t){e.typing&&(ph(e,!1,t),e.add())}function vh(c){return{undoManager:{beforeChange:function(e,t){var n=c,r=t;gh(e)&&r.set(Nc(n.selection))},add:function(e,t,n,r,o,i){return function(e,t,n,r,o,i,a){var u=ch(e);if(i=St.extend(i=i||{},u),!1===gh(r)||e.removed)return null;var s=t.data[n.get()];if(e.fire("BeforeAddUndo",{level:i,lastLevel:s,originalEvent:a}).isDefaultPrevented())return null;if(s&&mh(s,i))return null;t.data[n.get()]&&o.get().each(function(e){t.data[n.get()].beforeBookmark=e});var c=e.getParam("custom_undo_redo_levels",0,"number");if(c&&t.data.length>c){for(var l=0;l<t.data.length-1;l++)t.data[l]=t.data[l+1];t.data.length--,n.set(t.data.length)}i.bookmark=Nc(e.selection),n.get()<t.data.length-1&&(t.data.length=n.get()+1),t.data.push(i),n.set(t.data.length-1);var f={level:i,lastLevel:s,originalEvent:a};return 0<n.get()?(e.setDirty(!0),e.fire("AddUndo",f),e.fire("change",f)):e.fire("AddUndo",f),i}(c,e,t,n,r,o,i)},undo:function(e,t,n){return r=c,i=t,a=n,(o=e).typing&&(o.add(),o.typing=!1,ph(o,!1,i)),0<a.get()&&(a.set(a.get()-1),lh(r,u=o.data[a.get()],!0),r.setDirty(!0),r.fire("Undo",{level:u})),u;var r,o,i,a,u},redo:function(e,t){return n=c,o=t,(r=e).get()<o.length-1&&(r.set(r.get()+1),lh(n,i=o[r.get()],!1),n.setDirty(!0),n.fire("Redo",{level:i})),i;var n,r,o,i},clear:function(e,t){var n,r=c,o=t;(n=e).data=[],o.set(0),n.typing=!1,r.fire("ClearUndos")},reset:function(e){var t;(t=e).clear(),t.add()},hasUndo:function(e,t){return n=c,r=e,0<t.get()||r.typing&&r.data[0]&&!mh(ch(n),r.data[0]);var n,r},hasRedo:function(e,t){return n=e,t.get()<n.data.length-1&&!n.typing;var n},transact:function(e,t,n){return o=n,hh(r=e,t),r.beforeChange(),r.ignore(o),r.add();var r,o},ignore:function(e,t){try{e.set(e.get()+1),t()}finally{e.set(e.get()-1)}},extra:function(e,t,n,r){var o,i,a=c,u=t,s=r;(o=e).transact(n)&&(i=o.data[u.get()].bookmark,lh(a,o.data[u.get()-1],!0),o.transact(s)&&(o.data[u.get()-1].beforeBookmark=i))}},formatter:{match:function(e,t,n,r){return Ug(c,e,t,n,r)},matchAll:function(e,t){return o=e,i=t,a=[],u={},n=(r=c).selection.getStart(),r.dom.getParent(n,function(e){for(var t=0;t<o.length;t++){var n=o[t];!u[n]&&wp(r,e,n,i)&&(u[n]=!0,a.push(n))}},r.dom.getRoot()),a;var r,o,i,a,u,n},matchNode:function(e,t,n,r){return wp(c,e,t,n,r)},canApply:function(u){return function(e){var t=e.formatter.get(u),n=e.dom;if(t)for(var r=Cl(n,e.selection.getStart()),o=t.length-1;0<=o;o--){var i=t[o];if(!Sl(i)||V(i.defaultBlock))return!0;for(var a=r.length-1;0<=a;a--)if(n.is(r[a],i.selector))return!0}return!1}(c)},closest:function(e){return r=c,o=e,he.from(r.selection.getStart(!0)).bind(function(e){return Pg(Et.fromDom(e),function(n){return G(o,function(e){return wp(r,n.dom,t=e)?he.some(t):he.none();var t})},t)}).getOrNull();function t(e){return je(e,Et.fromDom(r.getBody()))}var r,o},apply:function(e,t,n){return Ph(c,e,t,n)},remove:function(e,t,n,r){return jp(c,e,t,n,r)},toggle:function(e,t,n){var r,o=e,i=t,a=n,u=(r=c).formatter.get(o);(!Ug(r,o,i,a)||"toggle"in u[0]&&!u[0].toggle?Ph:jp)(r,o,i,a)},formatChanged:function(e,t,n,r,o){return Wp(c,e,t,n,r,o)}},editor:{getContent:function(e,t){return f=c,d=e,m=t,he.from(f.getBody()).fold(J("tree"===d.format?new Jd("body",11):""),function(e){return t=f,r=m,o=e,c=(n=d).no_events?n:t.fire("BeforeGetContent",ke(ke({},n),{format:r,get:!0,getInner:!0})),l="raw"===c.format?St.trim(cm(t.serializer,o.innerHTML)):"text"===c.format?t.dom.isEmpty(o)?"":Po(o.innerText||o.textContent):"tree"===c.format?t.serializer.serialize(o,c):(a=(i=t).serializer.serialize(o,c),u=Ls(i),s=new RegExp("^(<"+u+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+u+">[\r\n]*|<br \\/>[\r\n]*)$"),a.replace(s,"")),ie(["text","tree"],c.format)||To(Et.fromDom(o))?c.content=l:c.content=St.trim(l),(c.no_events?c:t.fire("GetContent",c)).content;var t,n,r,o,i,a,u,s,c,l});var f,d,m},setContent:function(e,t){return Og(c,e,t)},insertContent:function(e,t){return Tg(c,e,t)},addVisual:function(e){var i,t=e,a=(i=c).dom,n=V(t)?t:i.getBody();b(i.hasVisual)&&(i.hasVisual=i.getParam("visual",!0,"boolean")),X(a.select("table,a",n),function(e){switch(e.nodeName){case"TABLE":var t=i.getParam("visual_table_class","mce-item-table","string"),n=a.getAttrib(e,"border");n&&"0"!==n||!i.hasVisual?a.removeClass(e,t):a.addClass(e,t);break;case"A":var r,o;a.getAttrib(e,"href")||(r=a.getAttrib(e,"name")||e.id,o=i.getParam("visual_anchor_class","mce-item-anchor","string"),r&&i.hasVisual?a.addClass(e,o):a.removeClass(e,o))}}),i.fire("VisualAid",{element:t,hasVisual:i.hasVisual})}},selection:{getContent:function(e,t){return function(e,t,n){var r=e.fire("BeforeGetContent",ke(ke({},n=void 0===n?{}:n),{format:t,get:!0,selection:!0}));if(r.isDefaultPrevented())return e.fire("GetContent",r),r.content;if("text"===r.format)return f=e,he.from(f.selection.getRng()).map(function(e){var t=he.from(f.dom.getParent(e.commonAncestorContainer,f.dom.isBlock)),n=f.getBody(),r=t.map(function(e){return e.nodeName}).getOr("div").toLowerCase(),o=Ct.browser.isIE()&&"pre"!==r,i=f.dom.add(n,r,{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),a=ah(i,o),u=Po(i.textContent);if(f.dom.remove(i),ih(u,0)||ih(u,u.length-1)){var s=ah(t.getOr(n),o),c=s.indexOf(a);return-1===c?a:(ih(s,c-1)?" ":"")+a+(ih(s,c+a.length)?" ":"")}return a}).getOr("");r.getInner=!0;var o,i,a,u,s,c,l,f,d=(i=r,a=(o=e).selection.getRng(),u=o.dom.create("body"),s=o.selection.getSel(),c=Pd(o,Ml(s)),(l=i.contextual?oh(Et.fromDom(o.getBody()),c).dom:a.cloneContents())&&u.appendChild(l),o.selection.serializer.serialize(u,i));return"tree"===r.format?d:(r.content=e.selection.isCollapsed()?"":d,e.fire("GetContent",r),r.content)}(c,e,t)}},raw:{getModel:function(){return he.none()}}}}function bh(e){return Ee(e.plugins,"rtc")}function yh(e){var u=e;return ae(e.plugins,"rtc").bind(function(e){return he.from(e.setup)}).fold(function(){return u.rtcInstance=vh(e),he.none()},function(e){var t,n;return u.rtcInstance=(t=J(null),n=J(""),{undoManager:{beforeChange:oe,add:t,undo:t,redo:t,clear:oe,reset:oe,hasUndo:T,hasRedo:T,transact:t,ignore:oe,extra:oe},formatter:{match:T,matchAll:J([]),matchNode:J(void 0),canApply:T,closest:n,apply:oe,remove:oe,toggle:oe,formatChanged:J({unbind:oe})},editor:{getContent:n,setContent:n,insertContent:oe,addVisual:oe},selection:{getContent:n},raw:{getModel:J(he.none())}}),he.some(function(){return e().then(function(e){return u.rtcInstance=(i=e.undoManager,a=e.formatter,n=e.editor,r=e.selection,t=e.raw,{undoManager:{beforeChange:i.beforeChange,add:i.add,undo:i.undo,redo:i.redo,clear:i.clear,reset:i.reset,hasUndo:i.hasUndo,hasRedo:i.hasRedo,transact:function(e,t,n){return i.transact(n)},ignore:function(e,t){return i.ignore(t)},extra:function(e,t,n,r){return i.extra(n,r)}},formatter:{match:function(e,t,n,r){return a.match(e,o(t),r)},matchAll:a.matchAll,matchNode:a.matchNode,canApply:function(e){return a.canApply(e)},closest:function(e){return a.closest(e)},apply:function(e,t,n){return a.apply(e,o(t))},remove:function(e,t,n,r){return a.remove(e,o(t))},toggle:function(e,t,n){return a.toggle(e,o(t))},formatChanged:function(e,t,n,r,o){return a.formatChanged(t,n,r,o)}},editor:{getContent:function(e,t){return n.getContent(e)},setContent:function(e,t){return n.setContent(e,t)},insertContent:function(e,t){return n.insertContent(e)},addVisual:n.addVisual},selection:{getContent:function(e,t){return r.getContent(t)}},raw:{getModel:function(){return he.some(t.getRawModel())}}}),e.rtc.isRemote;function o(e){return h(e)?e:{}}var i,a,n,r,t})})})}function Ch(e){return e.rtcInstance||vh(e)}function wh(e){var t=e.rtcInstance;if(t)return t;throw new Error("Failed to get RTC instance not yet initialized.")}function xh(e){return 0===e.dom.length?(Mn(e),he.none()):he.some(e)}function Sh(e,t,u,s){e.bind(function(a){return(s?$m:qm)(a.dom,s?a.dom.length:0),t.filter(Tn).map(function(e){var t=u,n=s,r=a.dom,o=e.dom,i=(n?r:o).length;n?(Wm(r,o,!1,!n),t.setStart(o,i)):(Wm(o,r,!1,!n),t.setEnd(o,i))})}).orThunk(function(){var e=s;return t.filter(function(e){return Gl.isBookmarkNode(e.dom)}).bind(e?Bt:Ot).or(t).filter(Tn).map(function(e){var n,r=s;Dt(n=e).each(function(e){var t=n.dom;r&&Im(e,bs(t,0))?qm(t,0):!r&&Mm(e,bs(t,t.length))&&$m(t,t.length)})})})}function Eh(e,t,n){var r,o=(r=t,ke(ke({format:"html"},n=void 0===n?{}:n),{set:!0,selection:!0,content:r})),i=o;if(!o.no_events){var a=e.fire("BeforeSetContent",o);if(a.isDefaultPrevented())return void e.fire("SetContent",a);i=a}i.content=function(e,t){if("raw"===t.format)return t.content;var n=e.selection.getRng(),r=e.dom.getParent(n.commonAncestorContainer,e.dom.isBlock),o=r?{context:r.nodeName.toLowerCase()}:{},i=e.parser.parse(t.content,ke(ke({isRootContent:!0,forced_root_block:!1},o),t));return sm({validate:e.validate},e.schema).serialize(i)}(e,i);var u=e.selection.getRng();!function(e,t){var n=he.from(t.firstChild).map(Et.fromDom),r=he.from(t.lastChild).map(Et.fromDom);e.deleteContents(),e.insertNode(t);var o=n.bind(Ot).filter(Tn).bind(xh),i=r.bind(Bt).filter(Tn).bind(xh);Sh(o,n,e,!0),Sh(i,r,e,!1),e.collapse(!1)}(u,u.createContextualFragment(i.content)),e.selection.setRng(u),fd(e,u),i.no_events||e.fire("SetContent",i)}function Nh(e,t,n){var r;e&&Ee(e,t)&&(0===(r=U(e[t],function(e){return e!==n})).length?delete e[t]:e[t]=r)}Gg=function(e){var t,n=e.selection.getRng(),r=rn(["pre"]);n.collapsed||(t=e.selection.getSelectedBlocks(),kp(Np(Np(t,r),function(e){return r(e.previousSibling)&&-1!==fe(t,e.previousSibling)}),function(e){var t,n=e.previousSibling;ou(t=e).remove(),ou(n).append("<br><br>").append(t.childNodes)}))},Ep["pre"]||(Ep.pre=[]),Ep.pre.push(Gg);var kh=St.each,_h=function(e,t,n){kh(e.childNodes,function(e){_p(e)&&(t(e)&&n(e),e.hasChildNodes()&&_h(e,t,n))})},Ah=ar([{keep:[]},{rename:["name"]},{removed:[]}]),Th=/^(src|href|style)$/,Rh=St.each,Dh=hl,Oh=St.each,Bh=St.each,Ph=function(S,E,N,r){function k(n,e){var t;y((e=void 0===e?A:e).onformat)&&e.onformat(n,e,N,r),Bh(e.styles,function(e,t){u.setStyle(n,t,pl(e,N))}),!e.styles||(t=u.getAttrib(n,"style"))&&u.setAttrib(n,"data-mce-style",t),Bh(e.attributes,function(e,t){u.setAttrib(n,t,pl(e,N))}),Bh(e.classes,function(e){e=pl(e,N),u.hasClass(n,e)||u.addClass(n,e)})}function g(e,t){var n=!1;return Bh(e,function(e){return!!Sl(e)&&(V(e.collapsed)&&e.collapsed!==a||!u.is(t,e.selector)||Qc(t)?void 0:(k(t,e),!(n=!0)))}),n}function o(w,e,l){var x=[],f=!0,d=A.inline||A.block,m=function(e){if(K(e)){var t=u.create(e);return k(t),t}return null}(d);Il(w,e,function(e){var s,c=function(e){var t=!1,n=f,r=e.nodeName.toLowerCase(),o=e.parentNode,i=o.nodeName.toLowerCase();if(Hn(e)&&w.getContentEditable(e)&&(n=f,f="true"===w.getContentEditable(e),t=!0),Xn(e)&&!function(e,t,n,r){if(e.getParam("format_empty_lines",!1,"boolean")&&El(t)){var o=ke(ke({},e.schema.getTextBlockElements()),{td:{},th:{},li:{},dt:{},dd:{},figcaption:{},caption:{},details:{},summary:{}}),i=(a=Et.fromDom(n),s=function(e){return Qc(e.dom)},((c=(u=a).dom).parentNode?kr(Et.fromDom(c.parentNode),function(e){return!je(u,e)&&s(e)}):he.none()).isSome());return ue(o,r)&&oo(Et.fromDom(n.parentNode),!1)&&!i}var a,u,s,c}(S,A,e,i))return s=null,void(xl(A)&&w.remove(e));if(xl(A)&&A.wrapper&&wp(S,e,E,N))s=null;else{if(f&&!t&&xl(A)&&!A.wrapper&&ml(S,r)&&gl(S,i,d)){var a=w.rename(e,d);return k(a),x.push(a),void(s=null)}if(Sl(A)){var u=g(_,e);if(!u&&V(o)&&Nl(A)&&(u=g(_,o)),!El(A)||u)return void(s=null)}!f||t||!gl(S,d,r)||!gl(S,i,d)||!l&&qn(e)&&Bo(e.data)||Qc(e)||El(A)&&w.isBlock(e)?(s=null,X(Ce(e.childNodes),c),t&&(f=n),s=null):(s||(s=w.clone(m,!1),e.parentNode.insertBefore(s,e),x.push(s)),s.appendChild(e))}};X(e,c)}),!0===A.links&&X(x,function(e){var t=function(e){"A"===e.nodeName&&k(e,A),X(Ce(e.childNodes),t)};t(e)}),X(x,function(e){var n,t,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=(n=0,X(e.childNodes,function(e){var t;V(t=e)&&qn(t)&&0===t.length||ul(e)||n++}),n);function C(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=yl(m,e.parentNode),m.getStyle(e,"color")&&t?m.setStyle(e,"text-decoration",t):m.getStyle(e,"text-decoration")===t&&m.setStyle(e,"text-decoration",null))}!(1<x.length)&&w.isBlock(e)||0!==y?(El(A)||xl(A)&&A.wrapper)&&(A.exact||1!==y||(e=I((d=e).childNodes,Hp).filter(function(e){return Mg(w,e,A)}).map(function(e){var t=w.clone(e,!1);return k(t),w.replace(t,d,!0),w.remove(e,!0),t}).getOr(d)),h=S,v=N,b=e,Oh(_,function(t){var r,e,n;El(t)&&Oh(h.dom.select(t.inline,b),function(e){_p(e)&&zp(h,t,v,e,t.exact?e:null)}),r=h.dom,(e=t).clear_child_styles&&(n=e.links?"*:not(a)":"*",kh(r.select(n,b),function(n){_p(n)&&kh(e.styles,function(e,t){r.setStyle(n,t,"")})}))}),s=A,wp(u=S,(f=e).parentNode,c=E,l=N)&&zp(u,s,l,f)||s.merge_with_parents&&u.dom.getParent(f.parentNode,function(e){if(wp(u,e,c,l))return zp(u,s,l,f),!0}),a=e,(i=A).styles&&i.styles.backgroundColor&&_h(a,Dp(w,"fontSize"),Op(w,"backgroundColor",pl(i.styles.backgroundColor,N))),m=w,p=e,(g=A).styles&&(g.styles.color||g.styles.textDecoration)&&(St.walk(p,C,"childNodes"),C(p)),t=w,o=e,!El(r=A)||"sub"!==r.inline&&"sup"!==r.inline||(_h(o,Dp(t,"fontSize"),Op(t,"fontSize","")),t.remove(t.select("sup"===r.inline?"sub":"sup",o),!0)),Rp(w,A,0,e)):w.remove(e,!0)})}var e,t,n,i,_=S.formatter.get(E),A=_[0],a=!r&&S.selection.isCollapsed(),u=S.dom,s=S.selection;if("false"!==u.getContentEditable(s.getNode()))A&&(r?ll(r)?g(_,r)||((e=u.createRng()).setStartBefore(r),e.setEndAfter(r),o(u,Ll(S,e,_),!0)):o(u,r,!0):a&&El(A)&&!Ul(S).length?function(e,t,n){var r,o=e.selection,i=o.getRng(),a=i.startOffset,u=i.startContainer.nodeValue,s=Zc(e.getBody(),o.getStart());s&&(r=jg(s));var c,l,f,d,m=/[^\s\u00a0\u00ad\u200b\ufeff]/;u&&0<a&&a<u.length&&m.test(u.charAt(a))&&m.test(u.charAt(a-1))?(c=o.getBookmark(),i.collapse(!0),l=Vf(Ll(e,i,e.formatter.get(t))),e.formatter.apply(t,n,l),o.moveToBookmark(c)):(s&&r.nodeValue===xp||(f=e.getDoc(),d=Hg(!0).dom,r=(s=f.importNode(d,!0)).firstChild,i.insertNode(s),a=1),e.formatter.apply(t,n,s),o.setCursorLocation(r,a))}(S,E,N):(t=s.getNode(),n=_[0],S.settings.forced_root_block||!n.defaultBlock||u.getParent(t,u.isBlock)||Ph(S,n.defaultBlock),s.setRng(Sg(s.getRng())),$l(s,!0,function(){ql(S,function(e,t){var n=t?e:Ll(S,e,_);o(u,n,!1)})}),fl(u,s,s.getRng()),S.nodeChanged()),i=S,kp(Ep[E],function(e){e(i)})),Rf(S,E,r,N);else{r=s.getNode();for(var c=0,l=_.length;c<l;c++){var f=_[c];if(f.ceFalseOverride&&Sl(f)&&u.is(r,f.selector)){k(r,f);break}}Rf(S,E,r,N)}},Lh=function(e){return e.selection.getStart()},Ih=function(i,a,e){var u=$p(i,a);Q(e,function(e,o){function t(e){var t,n=qp(i,u,o,e.similar,Vp(e)?e.vars:void 0),r=n.isSome();e.state.get()!==r&&(e.state.set(r),t=n.getOr(a),Vp(e)?e.callback(r,{node:t,format:o,parents:u}):X(e.callbacks,function(e){return e(r,{node:t,format:o,parents:u})}))}X([e.withSimilar,e.withoutSimilar],t),X(e.withVars,t)})},Mh=Ae(function(){return document.implementation.createHTMLDocument("undo")});function Fh(e){return e.select}function Uh(e){return e&&e.ownerDocument&&He(Et.fromDom(e.ownerDocument),Et.fromDom(e))}function zh(a,u,e,s){function t(e,t){return Eh(s,e,t)}function n(){var e=c(),t=null==e?void 0:e.anchorNode,n=null==e?void 0:e.focusNode;if(!e||!t||!n||nn(t)||nn(n))return!0;var r=a.createRng();r.setStart(t,e.anchorOffset),r.collapse(!0);var o=a.createRng();return o.setStart(n,e.focusOffset),o.collapse(!0),r.compareBoundaryPoints(r.START_TO_START,o)<=0}function r(e,t){return m||(m={},g={},d.on("NodeChange",function(e){var n=e.element,r=i.getParents(n,null,i.getRoot()),o={};St.each(m,function(e,n){St.each(r,function(t){if(i.is(t,n))return g[n]||(St.each(e,function(e){e(!0,{node:t,selector:n,parents:r})}),g[n]=e),o[n]=e,!1})}),St.each(g,function(e,t){o[t]||(delete g[t],St.each(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),m[e]||(m[e]=[]),m[e].push(t),{unbind:function(){Nh(m,e,t),Nh(g,e,t)}}}function o(e){var t=p();t.collapse(!!e),h(t)}function c(){return u.getSelection?u.getSelection():u.document.selection}var l,f,i,d,m,g,p=function(){function e(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(e){return-1}}var t,n,r,o=u.document;if(void 0!==s.bookmark&&!1===Td(s)){var i=xd(s);if(i.isSome())return i.map(function(e){return Pd(s,[e])[0]}).getOr(o.createRange())}try{(t=c())&&!nn(t.anchorNode)&&(n=0<t.rangeCount?t.getRangeAt(0):(t.createRange?t:o).createRange(),n=Pd(s,[n])[0])}catch(e){}return(n=n||(o.createRange?o.createRange():o.body.createTextRange())).setStart&&9===n.startContainer.nodeType&&n.collapsed&&(r=a.getRoot(),n.setStart(r,0),n.setEnd(r,0)),l&&f&&(0===e(n.START_TO_START,n,l)&&0===e(n.END_TO_END,n,l)?n=f:f=l=null),n},h=function(e,t){var n;if((r=e)&&(Fh(r)||Uh(r.startContainer)&&Uh(r.endContainer))){var r,o=Fh(e)?e:null;if(o){f=null;try{o.select()}catch(e){}}else{var i=c();if(e=s.fire("SetSelectionRange",{range:e,forward:t}).range,i){f=e;try{i.removeAllRanges(),i.addRange(e)}catch(e){}!1===t&&i.extend&&(i.collapse(e.endContainer,e.endOffset),i.extend(e.startContainer,e.startOffset)),l=0<i.rangeCount?i.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!i.setBaseAndExtent||Ct.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(n=e.startContainer.childNodes[e.startOffset])&&"IMG"===n.tagName&&(i.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),i.anchorNode===e.startContainer&&i.focusNode===e.endContainer||i.setBaseAndExtent(n,0,n,1)),s.fire("AfterSetSelectionRange",{range:e,forward:t})}}},v={bookmarkManager:null,controlSelection:null,dom:i=a,win:u,serializer:e,editor:d=s,collapse:o,setCursorLocation:function(e,t){var n=a.createRng();V(e)&&V(t)?(n.setStart(e,t),n.setEnd(e,t),h(n),o(!1)):(Hl(a,n,s.getBody(),!0),h(n))},getContent:function(e){return n=(t=void 0===(t=e)?{}:t).format||"html",r=t,wh(s).selection.getContent(n,r);var t,n,r},setContent:t,getBookmark:function(e,t){return b.getBookmark(e,t)},moveToBookmark:function(e){return b.moveToBookmark(e)},select:function(e,t){var r=a,o=t;return he.from(e).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Hl(r,n,e,!0),Hl(r,n,e,!1)),n}).each(h),e},isCollapsed:function(){var e=p(),t=c();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:n,setNode:function(e){return t(a.getOuterHTML(e)),e},getNode:function(){return function(e,t){if(!t)return e;var n=t.startContainer,r=t.endContainer,o=t.startOffset,i=t.endOffset,a=t.commonAncestorContainer;return!t.collapsed&&(n===r&&i-o<2&&n.hasChildNodes()&&(a=n.childNodes[o]),3===n.nodeType&&3===r.nodeType&&(n=n.length===o?Bd(n.nextSibling,!0):n.parentNode,r=0===i?Bd(r.previousSibling,!1):r.parentNode,n&&n===r))?n:a&&3===a.nodeType?a.parentNode:a}(s.getBody(),p())},getSel:c,setRng:h,getRng:p,getStart:function(e){return Dd(s.getBody(),p(),e)},getEnd:function(e){return Od(s.getBody(),p(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o=[],i=e.getRoot();if(n=e.getParent(n||Dd(i,t,t.collapsed),e.isBlock),r=e.getParent(r||Od(i,t,t.collapsed),e.isBlock),n&&n!==i&&o.push(n),n&&r&&n!==r)for(var a,u=new jr(n,i);(a=u.next())&&a!==r;)e.isBlock(a)&&o.push(a);return r&&n!==r&&r!==i&&o.push(r),o}(a,p(),e,t)},normalize:function(){var e=p();if(1<Ml(c()).length||!Vl(s))return e;var t=jf(a,e);return t.each(function(e){h(e,n())}),t.getOr(e)},selectorChanged:function(e,t){return r(e,t),v},selectorChangedWithUnbind:r,getScrollContainer:function(){for(var e,t=a.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){(s.inline?sd:ld)(s,e,t)},placeCaretAt:function(e,t){return h(Pf(e,t,s.getDoc()))},getBoundingClientRect:function(){var e=p();return e.collapsed?bs.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){u=l=f=null,y.destroy()}},b=Gl(v),y=Of(v,s);return v.bookmarkManager=b,v.controlSelection=y,v}function jh(e,t){var n,r,a,u,o=ho();t.convert_fonts_to_spans&&(r=e,a=o,u=St.explode(t.font_size_legacy_values),r.addNodeFilter("font",function(e){X(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,X(["color","face","size"],function(e){t.attr(e,null)})})})),n=o,e.addNodeFilter("strike",function(e){X(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})}function Hh(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return{type:t=r?r[1]:t,data:n[1]}}function Vh(e,t){var n;try{n=atob(t)}catch(e){return he.none()}for(var r=new Uint8Array(n.length),o=0;o<r.length;o++)r[o]=n.charCodeAt(o);return he.some(new Blob([r],{type:e}))}function qh(e){return 0===e.indexOf("blob:")?(o=e,new _r(function(e,t){function n(){t("Cannot convert "+o+" to Blob. Resource might not exist or is inaccessible.")}try{var r=new XMLHttpRequest;r.open("GET",o,!0),r.responseType="blob",r.onload=function(){200===r.status?e(r.response):n()},r.onerror=n,r.send()}catch(e){n()}})):0===e.indexOf("data:")?(n=e,new _r(function(e){var t=Hh(n);Vh(t.type,t.data).fold(function(){return e(new Blob([]))},e)})):null;var o,n}function $h(e){return(e||"blobid")+gv++}function Wh(r,d){var o={};return{findAll:function(e,n){n=n||x;var t=R(U(e?Ce(e.getElementsByTagName("img")):[],function(e){var t=e.src;return Ct.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&&t&&t!==Ct.transparentSrc&&(0===t.indexOf("blob:")?!r.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))}),function(f){if(void 0!==o[f.src])return new _r(function(t){o[f.src].then(function(e){return"string"==typeof e?e:void t({image:f,blobInfo:e.blobInfo})})});var e=new _r(function(e,t){var r,o,i,n,a,u,s,c,l;r=d,i=e,n=t,0!==(o=f).src.indexOf("blob:")?(u=(a=Hh(o.src)).data,s=a.type,c=u,(l=r.getByData(c,s))?i({image:o,blobInfo:l}):qh(o.src).then(function(e){l=r.create($h(),e,c),r.add(l),i({image:o,blobInfo:l})},function(e){n(e)})):(l=r.getByUri(o.src))?i({image:o,blobInfo:l}):qh(o.src).then(function(t){var n=t;new _r(function(e){var t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)}).then(function(e){c=Hh(e).data,l=r.create($h(),t,c),r.add(l),i({image:o,blobInfo:l})})},function(e){n(e)})}).then(function(e){return delete o[e.image.src],e}).catch(function(e){return delete o[f.src],e});return o[f.src]=e});return _r.all(t)}}}function Kh(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new Jd("br",1)).shortEnded=!0:r.empty().append(new Jd("#text",3)).value=Do}function Xh(n,e,t,r){return r.isEmpty(e,t,function(e){return(t=n.getElementRule(e.name))&&t.paddEmpty;var t})}function Yh(e,p){var t,o,i,h=e.schema;function n(t){var e,n,r=t.attr("src");(e=t).attr("src")===Ct.transparentSrc||V(e.attr("data-mce-placeholder"))||V(t.attr("data-mce-bogus"))||((n=/data:([^;]+);base64,([a-z0-9\+\/=\s]+)/i.exec(r))?he.some({type:n[1],data:decodeURIComponent(n[2])}):he.none()).filter(function(){return function(e,t){if(t.images_dataimg_filter){var n=new Image;return n.src=e.attr("src"),Q(e.attributes.map,function(e,t){n.setAttribute(t,e)}),t.images_dataimg_filter(n)}return!0}(t,o)}).bind(function(e){var t=e.type,n=e.data;return he.from(i.getByData(n,t)).orThunk(function(){return Vh(t,n).map(function(e){var t=i.create($h(),e,n);return i.add(t),t})})}).each(function(e){t.attr("src",e.blobUri())})}p.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=St.extend({},h.getBlockElements()),m=h.getNonEmptyElements(),g=h.getWhiteSpaceElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){"br"===s&&(o=null);break}u=u.prev}o&&(o.remove(),Xh(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&Kh(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new Jd("#text",3)).value=Do,o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r=e.length;if(!p.allow_unsafe_link_target)for(;r--;){var o=e[r];"a"===o.name&&"_blank"===o.attr("target")&&o.attr("rel",(n=void 0,n=(t=o.attr("rel"))?St.trim(t):"",/\b(noopener)\b/g.test(n)?n:n.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r,o=e.length;o--;)"ul"!==(r=(n=e[o]).parent).name&&"ol"!==r.name||(n.prev&&"li"===n.prev.name?n.prev.append(n):((t=new Jd("li",1)).attr("style","list-style-type: none"),n.wrap(t)))}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t=h.getValidClasses(),n=e.length;n--;){for(var r=e[n],o=r.attr("class").split(" "),i="",a=0;a<o.length;a++){var u=o[a],s=!1,c=t["*"];c&&c[u]&&(s=!0),c=t[r.name],(s=!(s||!c||!c[u])||s)&&(i&&(i+=" "),i+=u)}i.length||(i=null),r.attr("class",i)}}),t=e,(i=(o=p).blob_cache)&&t.addAttributeFilter("src",function(e){return X(e,n)})}function Gh(_,A){void 0===A&&(A=go());var T={},R=[],D={},O={};(_=_||{}).validate=!("validate"in _)||_.validate,_.root_name=_.root_name||"body";function B(e){var t=e.name;t in T&&((r=D[t])?r.push(e):D[t]=[e]);for(var n=R.length;n--;){var r,o=R[n].name;o in e.attributes.map&&((r=O[o])?r.push(e):O[o]=[e])}return e}var e={schema:A,addAttributeFilter:function(e,n){vv(bv(e),function(e){for(var t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:function(e,n){vv(bv(e),function(e){var t=T[e];t||(T[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e,t=[];for(e in T)Ee(T,e)&&t.push({name:e,callbacks:T[e]});return t},filterNode:B,parse:function(e,u){var t,n,r,o,i,s,a,c,l=[];function f(e){for(var t=A.getBlockElements(),n=e.prev;n&&3===n.type;){var r=n.value.replace(w,"");if(0<r.length)return n.value=r,0;var o=n.next;if(o){if(3===o.type&&o.value.length){n=n.prev;continue}if(!t[o.name]&&"script"!==o.name&&"style"!==o.name){n=n.prev;continue}}var i=n.prev;n.remove(),n=i}}u=u||{},D={},O={};function d(e,t){var n,r=new Jd(e,t);return e in T&&((n=D[e])?n.push(r):D[e]=[r]),r}var m=yv(hv("script,style,head,html,body,title,meta,param"),A.getBlockElements()),g=A.getNonEmptyElements(),p=A.children,h=_.validate,v=("forced_root_block"in u?u:_).forced_root_block,b=!1===v?"":!0===v?"p":v,y=A.getWhiteSpaceElements(),C=/^[ \t\r\n]+/,w=/[ \t\r\n]+$/,x=/[ \t\r\n]+/g,S=/^[ \t\r\n]+$/,E=Ee(y,u.context)||Ee(y,_.root_name),N=tm({validate:h,document:_.document,allow_html_data_urls:_.allow_html_data_urls,allow_svg_data_urls:_.allow_svg_data_urls,allow_script_urls:_.allow_script_urls,allow_conditional_comments:_.allow_conditional_comments,preserve_cdata:_.preserve_cdata,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(A.getSelfClosingElements()),cdata:function(e){c.append(d("#cdata",4)).value=e},text:function(e,t){var n,r;E||(e=e.replace(x," "),(r=c.lastChild)&&(Ee(m,r.name)||"br"===r.name)&&(e=e.replace(C,""))),0!==e.length&&((n=d("#text",3)).raw=!!t,c.append(n).value=e)},comment:function(e){c.append(d("#comment",8)).value=e},pi:function(e,t){c.append(d(e,7)).value=t,f(c)},doctype:function(e){c.append(d("#doctype",10)).value=e,f(c)},start:function(e,t,n){var r=h?A.getElementRule(e):{};if(r){var o=d(r.outputName||e,1);o.attributes=t,o.shortEnded=n,c.append(o);var i=p[c.name];i&&p[o.name]&&!i[o.name]&&l.push(o);for(var a=R.length;a--;){var u=R[a].name;u in t.map&&((s=O[u])?s.push(o):O[u]=[o])}m[e]&&f(o),n||(c=o),!E&&y[e]&&(E=!0)}},end:function(e){var t,n,r,o,i,a=h?A.getElementRule(e):{};if(a){if(m[e]&&!E){if((t=c.firstChild)&&3===t.type)if(0<(n=t.value.replace(C,"")).length)t.value=n,t=t.next;else for(r=t.next,t.remove(),t=r;t&&3===t.type;)n=t.value,r=t.next,0!==n.length&&!S.test(n)||(t.remove(),t=r),t=r;if((t=c.lastChild)&&3===t.type)if(0<(n=t.value.replace(w,"")).length)t.value=n,t=t.prev;else for(r=t.prev,t.remove(),t=r;t&&3===t.type;)n=t.value,r=t.prev,0!==n.length&&!S.test(n)||(t.remove(),t=r),t=r}if(E&&y[e]&&(E=!1),a.removeEmpty&&Xh(A,g,y,c))return o=c.parent,m[c.name]?c.empty().remove():c.unwrap(),void(c=o);a.paddEmpty&&(pv(i=c,"#text")&&i.firstChild.value===Do||Xh(A,g,y,c))&&Kh(_,u,m,c),c=c.parent}}},A),k=c=new Jd(u.context||_.root_name,11);if(N.parse(e,u.format),h&&l.length&&(u.context?u.invalid=!0:function(e){for(var t=hv("tr,td,th,tbody,thead,tfoot,table"),n=A.getNonEmptyElements(),r=A.getWhiteSpaceElements(),o=A.getTextBlockElements(),i=A.getSpecialElements(),a=function(e,t){if(void 0===t&&(t=e.parent),i[e.name])e.empty().remove();else{for(var n=0,r=e.children();n<r.length;n++){var o=r[n];A.isValidChild(t.name,o.name)||a(o,t)}e.unwrap()}},u=0;u<e.length;u++){var s,c=e[u],l=void 0,f=void 0;if(c.parent&&!c.fixed)if(o[c.name]&&"li"===c.parent.name){for(var d=c.next;d&&o[d.name];)d.name="li",d.fixed=!0,c.parent.insert(d,c.parent),d=d.next;c.unwrap()}else{for(var m=[c],l=c.parent;l&&!A.isValidChild(l.name,c.name)&&!t[l.name];l=l.parent)m.push(l);if(l&&1<m.length)if(A.isValidChild(l.name,c.name)){m.reverse();for(var g=s=B(m[0].clone()),p=0;p<m.length-1;p++){A.isValidChild(g.name,m[p].name)?(f=B(m[p].clone()),g.append(f)):f=g;for(var h=m[p].firstChild;h&&h!==m[p+1];){var v=h.next;f.append(h),h=v}g=f}Xh(A,n,r,s)?l.insert(c,m[0],!0):(l.insert(s,m[0],!0),l.insert(c,s)),l=m[0],(Xh(A,n,r,l)||pv(l,"br"))&&l.empty().remove()}else a(c);else c.parent&&("li"!==c.name?A.isValidChild(c.parent.name,"div")&&A.isValidChild("div",c.name)?c.wrap(B(new Jd("div",1))):a(c):!(d=c.prev)||"ul"!==d.name&&"ol"!==d.name?!(d=c.next)||"ul"!==d.name&&"ol"!==d.name?c.wrap(B(new Jd("ul",1))):d.insert(c,d.firstChild,!0):d.append(c))}}}(l)),b&&("body"===k.name||u.isRootContent)&&function(){function e(e){e&&((t=e.firstChild)&&3===t.type&&(t.value=t.value.replace(C,"")),(t=e.lastChild)&&3===t.type&&(t.value=t.value.replace(w,"")))}var t=k.firstChild,n=null;if(A.isValidChild(k.name,b.toLowerCase())){for(;t;){var r=t.next;3===t.type||1===t.type&&"p"!==t.name&&!m[t.name]&&!t.attr("data-mce-type")?(n||((n=d(b,1)).attr(_.forced_root_block_attrs),k.insert(n,t)),n.append(t)):(e(n),n=null),t=r}e(n)}}(),!u.invalid){for(a in D)if(Ee(D,a)){for(s=T[a],o=(t=D[a]).length;o--;)t[o].parent||t.splice(o,1);for(n=0,r=s.length;n<r;n++)s[n](t,a,u)}for(n=0,r=R.length;n<r;n++)if((s=R[n]).name in O){for(o=(t=O[s.name]).length;o--;)t[o].parent||t.splice(o,1);for(o=0,i=s.callbacks.length;o<i;o++)s.callbacks[o](t,s.name,u)}}return k}};return Yh(e,_),_.inline_styles&&jh(e,_),e}function Jh(e,t,n){-1===St.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))}function Qh(L,I){var e=["data-mce-selected"],M=I&&I.dom?I.dom:cu.DOM,F=I&&I.schema?I.schema:go(L);L.entity_encoding=L.entity_encoding||"named",L.remove_trailing_brs=!("remove_trailing_brs"in L)||L.remove_trailing_brs;var t,U=Gh(L,F),s=L,c=M;return(t=U).addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length;n--;){var r=e[n];r.attr("tabindex",r.attr("data-mce-tabindex")),r.attr(t,null)}}),t.addAttributeFilter("src,href,style",function(e,t){for(var n="data-mce-"+t,r=s.url_converter,o=s.url_converter_scope,i=e.length;i--;){var a=e[i],u=a.attr(n);void 0!==u?(a.attr(t,0<u.length?u:null),a.attr(n,null)):(u=a.attr(t),"style"===t?u=c.serializeStyle(c.parseStyle(u),a.name):r&&(u=r.call(o,u,t,a.name)),a.attr(t,0<u.length?u:null))}}),t.addAttributeFilter("class",function(e){for(var t=e.length;t--;){var n,r=e[t];r.attr("class")&&(n=r.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),r.attr("class",0<n.length?n:null))}}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length;r--;){var o=e[r];"bookmark"!==o.attr("data-mce-type")||n.cleanup||(he.from(o.firstChild).exists(function(e){return!Bo(e.value)})?o.unwrap():o.remove())}}),t.addNodeFilter("noscript",function(e){for(var t=e.length;t--;){var n=e[t].firstChild;n&&(n.value=si.decode(n.value))}}),t.addNodeFilter("script,style",function(e,t){for(var n=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")},r=e.length;r--;){var o,i=e[r],a=i.firstChild?i.firstChild.value:"";"script"===t?((o=i.attr("type"))&&i.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<a.length&&(i.firstChild.value="// <![CDATA[\n"+n(a)+"\n// ]]>")):"xhtml"===s.element_format&&0<a.length&&(i.firstChild.value="\x3c!--\n"+n(a)+"\n--\x3e")}}),t.addNodeFilter("#comment",function(e){for(var t=e.length;t--;){var n=e[t];s.preserve_cdata&&0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=c.decode(n.value.replace(/^\[CDATA\[|\]\]$/g,""))):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length;n--;){var r=e[n];7===r.type?r.remove():1===r.type&&("input"!==t||r.attr("type")||r.attr("type","text"))}}),t.addAttributeFilter("data-mce-type",function(e){X(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize,data-mce-placeholder",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:F,addNodeFilter:U.addNodeFilter,addAttributeFilter:U.addAttributeFilter,serialize:function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,w,x,S,E,N,k,_,A,T,R,D=ke({format:"html"},t=void 0===t?{}:t),O=(n=(m=e,E=g=D,(d=I)&&d.hasEventListeners("PreProcess")&&!E.no_events?(h=g,w=(p=d).dom,x=m.cloneNode(!0),(S=document.implementation).createHTMLDocument&&(b=S.createHTMLDocument(""),St.each("BODY"===x.nodeName?x.childNodes:[x],function(e){b.body.appendChild(b.importNode(e,!0))}),x="BODY"!==x.nodeName?b.body.firstChild:b.body,v=w.doc,w.doc=b),y=p,C=ke(ke({},h),{node:x}),y.fire("PreProcess",C),v&&(w.doc=v),x):m),o=Po((r=D).getInner?n.innerHTML:M.getOuterHTML(n)),r.selection||To(Et.fromDom(n))?o:St.trim(o)),B=(i=U,a=O,s=(u=D).selection?ke({forced_root_block:!1},u):u,c=i.parse(a,s),!P(f=c.lastChild)||P(l=f.prev)&&(f.remove(),l.remove()),c);function P(e){return e&&"br"===e.name}return"tree"===D.format?B:(N=I,k=D,_=B,R=sm(L,F).serialize(_),k.no_events||!N?R:(A=N,T=ke(ke({},k),{content:R}),A.fire("PostProcess",T).content))},addRules:F.addValidElements,setRules:F.setValidElements,addTempAttr:A(Jh,U,e),getTempAttrs:J(e),getNodeFilters:U.getNodeFilters,getAttributeFilters:U.getAttributeFilters}}function Zh(e,t){var n=Qh(e,t);return{schema:n.schema,addNodeFilter:n.addNodeFilter,addAttributeFilter:n.addAttributeFilter,serialize:n.serialize,addRules:n.addRules,setRules:n.setRules,addTempAttr:n.addTempAttr,getTempAttrs:n.getTempAttrs,getNodeFilters:n.getNodeFilters,getAttributeFilters:n.getAttributeFilters}}function ev(e,t,n){return r=n=void 0===n?{}:n,Ch(e).editor.setContent(t,r);var r}function tv(e){return he.from(e).each(function(e){return e.destroy()})}function nv(e){var t=S(e)?e.join(" "):e;return U(R(K(t)?t.split(" "):[],Ge),function(e){return 0<e.length})}function rv(e,t){return Ee(e.sections(),t)}function ov(e,t){return ae(e,"toolbar_mode").orThunk(function(){return ae(e,"toolbar_drawer").map(function(e){return!1===e?"wrap":e})}).getOr(t)}function iv(e,t,n,r){var o,i,a,u,s,c,l,f,d=nv(n.forced_plugins),m=nv(r.plugins),g=rv(o=t,"mobile")?o.sections().mobile:{},p=g.plugins?nv(g.plugins):m,h=(i=(u=t,s=m,c=p,(a=e)&&(0,f=(l=u).sections(),rv(l,"mobile")&&"mobile"===f.mobile.theme)?U(c,A(ie,kv)):a&&rv(u,"mobile")?c:s),[].concat(nv(d)).concat(nv(i)));if(Ct.browser.isIE()&&ie(h,"rtc"))throw new Error("RTC plugin is not supported on IE 11.");return St.extend(r,{plugins:h.join(" ")})}function av(e,t,n,r,o){var i,a,u,s,c,l,f,d,m=e?{mobile:(i=t,a={resize:!1,toolbar_mode:ov(o.mobile||{},"scrolling"),toolbar_sticky:!1},ke(ke(ke({},_v),a),i?{menubar:!1}:{}))}:{},g=(c=["mobile"],te(wv(m,o),function(e,t){return ie(c,t)},ee(l={}),ee(f={})),{sections:J((d={t:l,f:f}).t),settings:J(d.f)}),p=St.extend(n,r,g.settings(),e&&rv(g,"mobile")?function(e){void 0===e&&(e={});var t=ae(g.sections(),"mobile").getOr({});return St.extend({},e,t)}():{},{validate:!0,external_plugins:(u=r,s=g.settings().external_plugins||{},u&&u.external_plugins?St.extend({},u.external_plugins,s):s)});return iv(e,g,r,p)}function uv(e,t,n){return he.from(t.settings[n]).filter(e)}function sv(e,t){return t.dom[e]}function cv(e,t){return parseInt(Cn(t,e),10)}function lv(e,t,n){var r,o,i,a,u,s,c=Et.fromDom(e.getBody()),l=e.inline?c:Et.fromDom(Tt(c).dom.documentElement),f=(r=e.inline,i=t,a=n,u=(o=l).dom.getBoundingClientRect(),{x:i-(r?u.left+o.dom.clientLeft+Ov(o):0),y:a-(r?u.top+o.dom.clientTop+Dv(o):0)}),d=f.x,m=f.y,g=Tv(s=l),p=Rv(s);return 0<=d&&0<=m&&d<=g&&m<=p}function fv(o){function i(){var e=o.theme;return e&&e.getNotificationManagerImpl?e.getNotificationManagerImpl():{open:t,close:t,reposition:t,getArgs:t};function t(){throw new Error("Theme did not provide a NotificationManager implementation.")}}function a(){return he.from(c[0])}function u(){0<c.length&&i().reposition(c)}function s(t){M(c,function(e){return e===t}).each(function(e){c.splice(e,1)})}function t(n,e){if(void 0===e&&(e=!0),!o.removed&&(r=(t=o).inline?t.getBody():t.getContentAreaContainer(),he.from(r).map(Et.fromDom).map(Fn).getOr(!1)))return e&&o.fire("BeforeOpenNotification",{notification:n}),I(c,function(e){return!((t=i().getArgs(e)).type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t}).getOrThunk(function(){o.editorManager.setActive(o);var e=i().open(n,function(){s(e),u(),a().fold(function(){return o.focus()},function(e){return Et.fromDom(e.getEl()).dom.focus()})});return c.push(e),u(),o.fire("OpenNotification",{notification:ke({},e)}),e});var t,r}var n,c=[],e=J(c);return(n=o).on("SkinLoaded",function(){var e=n.getParam("service_message");e&&t({text:e,type:"warning",timeout:0},!1)}),n.on("ResizeEditor ResizeWindow NodeChange",function(){Ur.requestAnimationFrame(u)}),n.on("remove",function(){X(c.slice(),function(e){i().close(e)})}),{open:t,close:function(){a().each(function(e){i().close(e),s(e),u()})},getNotifications:e}}var dv,mv,gv=0,pv=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},hv=St.makeMap,vv=St.each,bv=St.explode,yv=St.extend,Cv=cu.DOM,wv=(dv=function(e,t){return h(e)&&h(t)?wv(e,t):t},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o,i=e[r];for(o in i)Ee(i,o)&&(n[o]=dv(n[o],i[o]))}return n}),xv=ft().deviceType,Sv=xv.isTouch(),Ev=xv.isPhone(),Nv=xv.isTablet(),kv=["lists","autolink","autosave"],_v={table_grid:!1,object_resizing:!1,resize:!1},Av=(mv={},{add:function(e,t){mv[e]=t},get:function(e){return mv[e]||{icons:{}}},has:function(e){return Ee(mv,e)}}),Tv=A(sv,"clientWidth"),Rv=A(sv,"clientHeight"),Dv=A(cv,"margin-top"),Ov=A(cv,"margin-left"),Bv=Cu.PluginManager,Pv=Cu.ThemeManager;function Lv(r){function o(){var e=r.theme;return e&&e.getWindowManagerImpl?e.getWindowManagerImpl():{open:t,openUrl:t,alert:t,confirm:t,close:t,getParams:t,setParams:t};function t(){throw new Error("Theme did not provide a WindowManager implementation.")}}function i(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r?r.apply(n,e):void 0}}function n(t){r.fire("CloseWindow",{dialog:t}),0===(u=U(u,function(e){return e!==t})).length&&r.focus()}function a(e){r.editorManager.setActive(r),wd(r);var t,n=e();return t=n,u.push(t),r.fire("OpenWindow",{dialog:t}),n}var u=[];return r.on("remove",function(){X(u,function(e){o().close(e)})}),{open:function(e,t){return a(function(){return o().open(e,t,n)})},openUrl:function(e){return a(function(){return o().openUrl(e,n)})},alert:function(e,t,n){var r=o();r.alert(e,i(n||r,t))},confirm:function(e,t,n){var r=o();r.confirm(e,i(n||r,t))},close:function(){he.from(u[u.length-1]).each(function(e){o().close(e),n(e)})}}}function Iv(e,t){e.notificationManager.open({type:"error",text:t})}function Mv(e,t){e._skinLoaded?Iv(e,t):e.on("SkinLoaded",function(){Iv(e,t)})}function Fv(e,t,n){Tf(e,t,{message:n}),console.error(n)}function Uv(e,t,n){return n?"Failed to load "+e+": "+n+" from url "+t:"Failed to load "+e+" url: "+t}function zv(e,t,n){Fv(e,"PluginLoadError",Uv("plugin",t,n))}function jv(e){var t,n;e.contentCSS=e.contentCSS.concat(ly(e,(n=(t=e).getParam("content_css"),K(n)?R(n.split(","),Ge):S(n)?n:!1===n||t.inline?[]:["default"])),ly(e,Hs(e)))}function Hv(){function n(e,t){return{status:e,resultUri:t}}function t(e){return e in r}var r={};return{hasBlobUri:t,getResultUri:function(e){var t=r[e];return t?t.resultUri:null},isPending:function(e){return!!t(e)&&1===r[e].status},isUploaded:function(e){return!!t(e)&&2===r[e].status},markPending:function(e){r[e]=n(1,null)},markUploaded:function(e,t){r[e]=n(2,t)},removeFailed:function(e){delete r[e]},destroy:function(){r={}}}}function Vv(e){return e+fy+++("s"+(new Date).getTime().toString(36)+t()+t()+t());function t(){return Math.round(4294967295*Math.random()).toString(36)}}function qv(){function e(e){return I(n,e).getOrUndefined()}function i(e){if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");var t=e.id||Vv("blobid"),n=e.name||t,r=e.blob;return{id:J(t),name:J(n),filename:J(e.filename||n+"."+({"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png","image/apng":"apng","image/avif":"avif","image/svg+xml":"svg","image/webp":"webp","image/bmp":"bmp","image/tiff":"tiff"}[r.type.toLowerCase()]||"dat")),blob:J(r),base64:J(e.base64),blobUri:J(e.blobUri||URL.createObjectURL(r)),uri:J(e.uri)}}function t(t){return e(function(e){return e.id()===t})}var n=[];return{create:function(e,t,n,r,o){if(K(e))return i({id:e,name:r,filename:o,blob:t,base64:n});if(h(e))return i(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t,getByUri:function(t){return e(function(e){return e.blobUri()===t})},getByData:function(t,n){return e(function(e){return e.base64()===t&&e.blob().type===n})},findFirst:e,removeByUri:function(t){n=U(n,function(e){return e.blobUri()!==t||void URL.revokeObjectURL(e.blobUri())})},destroy:function(){X(n,function(e){URL.revokeObjectURL(e.blobUri())}),n=[]}}}function $v(u,s){function o(e,r,o,t){var i=new XMLHttpRequest;i.open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"string"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)};var n=new FormData;n.append("file",e.blob(),e.filename()),i.send(n)}function c(e,t){return{url:t,blobInfo:e,status:!0}}function l(e,t,n){return{url:"",blobInfo:e,status:!1,error:{message:t,options:n}}}function f(e,t){St.each(d[e],function(e){e(t)}),delete d[e]}var d={};return!1===y(s.handler)&&(s.handler=o),{upload:function(e,t){return s.url||s.handler!==o?(n=e,r=t,n=St.grep(e,function(e){return!u.isUploaded(e.blobUri())}),_r.all(St.map(n,function(e){return u.isPending(e.blobUri())?(n=e.blobUri(),new _r(function(e){d[n]=d[n]||[],d[n].push(e)})):(i=e,t=s.handler,a=r,u.markPending(i.blobUri()),new _r(function(r){var n;try{var o=function(){n&&n.close()};t(i,function(e){o(),u.markUploaded(i.blobUri(),e),f(i.blobUri(),c(i,e)),r(c(i,e))},function(e,t){var n=t||{};o(),u.removeFailed(i.blobUri()),f(i.blobUri(),l(i,e,n)),r(l(i,e,n))},function(t){t<0||100<t||he.from(n).orThunk(function(){return he.from(a).map(C)}).each(function(e){(n=e).progressBar.value(t)})})}catch(e){r(l(i,e.message,{}))}}));var i,t,a,n}))):new _r(function(e){e([])});var n,r}}}function Wv(e){return function(){return e.notificationManager.open({text:e.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}}function Kv(e,t){return $v(t,{url:e.getParam("images_upload_url","","string"),basePath:e.getParam("images_upload_base_path","","string"),credentials:e.getParam("images_upload_credentials",!1,"boolean"),handler:e.getParam("images_upload_handler",null,"function")})}function Xv(l){function t(t){return function(e){return l.selection?t(e):[]}}function r(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e}function o(e,t,n){return e=r(e,'src="'+t+'"','src="'+n+'"'+(n===Ct.transparentSrc?' data-mce-placeholder="1"':"")),r(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function f(t,n){X(l.undoManager.data,function(e){"fragmented"===e.type?e.fragments=R(e.fragments,function(e){return o(e,t,n)}):e.content=o(e.content,t,n)})}function n(n){return u=u||Kv(l,g),v().then(t(function(c){var e=R(c,function(e){return e.blobInfo});return u.upload(e,Wv(l)).then(t(function(e){var s=[],t=R(e,function(e,t){var n,r,o,i,a=c[t].blobInfo,u=c[t].image;return e.status&&l.getParam("images_replace_blob_uris",!0,"boolean")?(m.removeByUri(u.src),bh(l)||(r=u,o=e.url,i=l.convertURL(o,"src"),f(r.src,o),l.$(r).attr({src:l.getParam("images_reuse_filename",!1,"boolean")?o+(-1===o.indexOf("?")?"?":"&")+(new Date).getTime():o,"data-mce-src":i}))):e.error&&(e.error.options.remove&&(f(u.getAttribute("src"),Ct.transparentSrc),s.push(u)),n=e.error.message,Mv(l,yu.translate(["Failed to upload image: {0}",n]))),{element:u,status:e.status,uploadUri:e.url,blobInfo:a}});return 0<t.length&&h.fireIfChanged(),0<s.length&&(bh(l)?console.error("Removing images on failed uploads is currently unsupported for RTC"):l.undoManager.transact(function(){X(s,function(e){l.dom.remove(e),m.removeByUri(e.src)})})),n&&n(t),t}))}))}function e(e){if(Ms(l))return n(e)}function i(t){return!1!==j(p,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||l.getParam("images_dataimg_filter",x,"function")(t))}function a(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=g.getResultUri(n);if(t)return'src="'+t+'"';var r=(r=m.getByUri(n))||P(l.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null);return r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})}var u,s,c,d,m=qv(),g=Hv(),p=[],h=(d=pu(null),(c=l).on("change AddUndo",function(e){d.set(ke({},e.level))}),{fireIfChanged:function(){var t=c.undoManager.data;Y(t).filter(function(e){return!mh(d.get(),e)}).each(function(e){c.setDirty(!0),c.fire("change",{level:e,lastLevel:$(t,t.length-2).getOrNull()})})}}),v=function(){return(s=s||Wh(g,m)).findAll(l.getBody(),i).then(t(function(e){return e=U(e,function(e){return"string"!=typeof e||void Mv(l,e)}),bh(l)||X(e,function(e){f(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))};return l.on("SetContent",function(){(Ms(l)?e:v)()}),l.on("RawSaveContent",function(e){e.content=a(e.content)}),l.on("GetContent",function(e){e.source_view||"raw"===e.format||"tree"===e.format||(e.content=a(e.content))}),l.on("PostRender",function(){l.parser.addNodeFilter("img",function(e){X(e,function(e){var t,n=e.attr("src");m.getByUri(n)||(t=g.getResultUri(n))&&e.attr("src",t)})})}),{blobCache:m,addFilter:function(e){p.push(e)},uploadImages:n,uploadImagesAuto:e,scanForImages:v,destroy:function(){m.destroy(),g.destroy(),s=u=null}}}function Yv(e,t){function m(e){o="string"==typeof e?{name:e,classes:[],attrs:{}}:e;var t,n=my.create(o.name),r=n;return(t=o).classes.length&&my.addClass(r,t.classes.join(" ")),my.setAttribs(r,t.attrs),n}var n,o,r,g=t&&t.schema||go({}),p=function(n,e,t){var r,o,i,a,u,s,c,l=0<e.length&&e[0],f=l&&l.name,d=(a=f,u="string"!=typeof(i=n)?i.nodeName.toLowerCase():i,!(!(c=(s=g.getElementRule(u))&&s.parentsRequired)||!c.length)&&(a&&-1!==St.inArray(c,a)?a:c[0]));if(d)f===d?(o=e[0],e=e.slice(1)):o=d;else if(l)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=m(o)).appendChild(n),t&&(r||(r=my.create("div")).appendChild(n),St.each(t,function(e){var t=m(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(n=m(o=e[0]),(r=my.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""}function Gv(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=St.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==St.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}var i;return"["!==r||(i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/))&&(a.attrs[i[1]]=i[2]),""})),a.name=t||"div",a}function Jv(n,e){var r,t,o="",i=(t=n.getParam("preview_styles","font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),K(t)?t:"");if(""===i)return"";function a(e){return e.replace(/%(\w+)/g,"")}if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}if("preview"in e){var u=ae(e,"preview");if(ln(u,!1))return"";i=u.getOr(i)}var s,c=e.block||e.inline||"span",l=(s=e.selector)&&"string"==typeof s?(s=(s=s.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),St.map(s.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=St.map(e.split(/(?:~\+|~|\+)/),Gv),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[],f=l.length?(l[0].name||(l[0].name=c),c=e.selector,Yv(l,n)):Yv([c],n),d=my.select(c,f)[0]||f.firstChild;return dy(e.styles,function(e,t){var n=a(e);n&&my.setStyle(d,t,n)}),dy(e.attributes,function(e,t){var n=a(e);n&&my.setAttrib(d,t,n)}),dy(e.classes,function(e){var t=a(e);my.hasClass(d,t)||my.addClass(d,t)}),n.fire("PreviewFormats"),my.setStyles(f,{position:"absolute",left:-65535}),n.getBody().appendChild(f),r=my.getStyle(n.getBody(),"fontSize",!0),r=/px$/.test(r)?parseInt(r,10):0,dy(i.split(" "),function(e){var t=my.getStyle(d,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=my.getStyle(n.getBody(),e,!0),"#ffffff"===my.toHex(t).toLowerCase())||"color"===e&&"#000000"===my.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===r)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*r+"px"}"border"===e&&t&&(o+="padding:0 2px;"),o+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),my.remove(f),o}function Qv(c){var e,r,t,n,o,i,a=(n={},(o=function(e,t){e&&(K(e)?(X(t=!S(t)?[t]:t,function(e){b(e.deep)&&(e.deep=!Sl(e)),b(e.split)&&(e.split=!Sl(e)||El(e)),b(e.remove)&&Sl(e)&&!El(e)&&(e.remove="none"),Sl(e)&&El(e)&&(e.mixed=!0,e.block_expand=!0),K(e.classes)&&(e.classes=e.classes.split(/\s+/))}),n[e]=t):Q(e,function(e,t){o(t,e)}))})((r=(e=c).dom,t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table,audio,video",collapsed:!1,styles:{float:"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img,audio,video",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table,audio,video",collapsed:!1,styles:{float:"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all",preserve_attributes:["class","style"]}],italic:[{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all",preserve_attributes:["class","style"]}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all",preserve_attributes:["class","style"]}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"s",remove:"all",preserve_attributes:["class","style"]}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},lineheight:{selector:"h1,h2,h3,h4,h5,h6,p,li,td,th,div",defaultBlock:"p",styles:{lineHeight:"%value"}},fontsize_class:{inline:"span",attributes:{class:"%value"}},blockquote:{block:"blockquote",wrapper:!0,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(e,t,n){return Hn(e)&&e.hasAttribute("href")},onformat:function(n,e,t){St.each(t,function(e,t){r.setAttrib(n,t,e)})}},lang:{inline:"span",clear_child_styles:!0,remove_similar:!0,attributes:{lang:"%value","data-mce-lang":function(e){var t;return null!==(t=null==e?void 0:e.customValue)&&void 0!==t?t:null}}},removeformat:[{selector:"b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]},St.each("p h1 h2 h3 h4 h5 h6 div address pre dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t)),o(e.getParam("formats")),{get:function(e){return V(e)?n[e]:n},has:function(e){return Ee(n,e)},register:o,unregister:function(e){return e&&n[e]&&delete n[e],n}}),l=pu(null);return function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])}(c),(i=c).on("mouseup keydown",function(e){var t=i,n=e.keyCode,r=t.selection,o=t.getBody();qg(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==xp||qg(t,Zc(o,r.getStart())),37!==n&&39!==n||qg(t,Zc(o,r.getStart()))}),{get:a.get,has:a.has,register:a.register,unregister:a.unregister,apply:function(e,t,n){var r=e,o=t,i=n;wh(c).formatter.apply(r,o,i)},remove:function(e,t,n,r){var o=e,i=t,a=n,u=r;wh(c).formatter.remove(o,i,a,u)},toggle:function(e,t,n){var r=e,o=t,i=n;wh(c).formatter.toggle(r,o,i)},match:function(e,t,n,r){return o=e,i=t,a=n,u=r,wh(c).formatter.match(o,i,a,u);var o,i,a,u},closest:function(e){return t=e,wh(c).formatter.closest(t);var t},matchAll:function(e,t){return n=e,r=t,wh(c).formatter.matchAll(n,r);var n,r},matchNode:function(e,t,n,r){return o=e,i=t,a=n,u=r,wh(c).formatter.matchNode(o,i,a,u);var o,i,a,u},canApply:function(e){return t=e,wh(c).formatter.canApply(t);var t},formatChanged:function(e,t,n,r){return o=l,i=e,a=t,u=n,s=r,wh(c).formatter.formatChanged(o,i,a,u,s);var o,i,a,u,s},getCssText:A(Jv,c)}}function Zv(e){switch(e.toLowerCase()){case"undo":case"redo":case"mcerepaint":case"mcefocus":return 1;default:return}}function eb(s){var e,n,r,o,i,c=wu(),l=pu(0),f=pu(0),d={data:[],typing:!1,beforeChange:function(){var e=l,t=c;wh(s).undoManager.beforeChange(e,t)},add:function(e,t){return n=d,r=f,o=l,i=c,a=e,u=t,wh(s).undoManager.add(n,r,o,i,a,u);var n,r,o,i,a,u},undo:function(){return e=d,t=l,n=f,wh(s).undoManager.undo(e,t,n);var e,t,n},redo:function(){return e=f,t=d.data,wh(s).undoManager.redo(e,t);var e,t},clear:function(){var e=d,t=f;wh(s).undoManager.clear(e,t)},reset:function(){var e=d;wh(s).undoManager.reset(e)},hasUndo:function(){return e=d,t=f,wh(s).undoManager.hasUndo(e,t);var e,t},hasRedo:function(){return e=d,t=f,wh(s).undoManager.hasRedo(e,t);var e,t},transact:function(e){return t=d,n=l,r=e,wh(s).undoManager.transact(t,n,r);var t,n,r},ignore:function(e){var t=l,n=e;wh(s).undoManager.ignore(t,n)},extra:function(e,t){var n=d,r=f,o=e,i=t;wh(s).undoManager.extra(n,r,o,i)}};return bh(s)||(r=d,o=l,i=pu(!1),(n=s).on("init",function(){r.add()}),n.on("BeforeExecCommand",function(e){Zv(e.command)||(hh(r,o),r.beforeChange())}),n.on("ExecCommand",function(e){Zv(e.command)||a(e)}),n.on("ObjectResizeStart cut",function(){r.beforeChange()}),n.on("SaveContent ObjectResized blur",a),n.on("dragend",a),n.on("keyup",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),n.nodeChanged()),46!==t&&8!==t||n.nodeChanged(),i.get()&&r.typing&&!1===mh(ch(n),r.data[0])&&(!1===n.isDirty()&&(n.setDirty(!0),n.fire("change",{level:r.data[0],lastLevel:null})),n.fire("TypingUndo"),i.set(!1),n.nodeChanged()))}),n.on("keydown",function(e){var t,n=e.keyCode;e.isDefaultPrevented()||(33<=n&&n<=36||37<=n&&n<=40||45===n?r.typing&&a(e):(t=e.ctrlKey&&!e.altKey||e.metaKey,!(n<16||20<n)||224===n||91===n||r.typing||t||(r.beforeChange(),ph(r,!0,o),r.add({},e),i.set(!0))))}),n.on("mousedown",function(e){r.typing&&a(e)}),n.on("input",function(e){e.inputType&&("insertReplacementText"===e.inputType||"insertText"===e.inputType&&null===e.data||"insertFromPaste"===e.inputType||"insertFromDrop"===e.inputType)&&a(e)}),n.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||n.nodeChanged()})),(e=s).addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),d;function a(e){ph(r,!1,o),r.add({},e)}}function tb(e){return"keydown"===e.type||"keyup"===e.type}function nb(e){var t=e.keyCode;return t===$f.BACKSPACE||t===$f.DELETE}function rb(e,t){return Ue(Et.fromDom(t),e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string"))}function ob(e,t,n){var r,o,i=(r=e,o=t,U(cu.DOM.getParents(n.container(),"*",o),r));return he.from(i[i.length-1])}function ib(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Kr(n)?qn(n.nextSibling)?bs(n.nextSibling,0):bs.after(n):Gr(t)?bs(n,r+1):t:Kr(n)?qn(n.previousSibling)?bs(n.previousSibling,n.previousSibling.data.length):bs.before(n):Jr(t)?bs(n,r-1):t}function ab(e){return Eo(e)||ko(e)}function ub(e,t){return He(e,t)?vr(t,ab,(n=e,function(e){return je(n,Et.fromDom(e.dom.parentNode))})):he.none();var n}function sb(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),r=(n=(t=e).getBody()).firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))}function cb(e,t){return{from:e,to:t}}function lb(e,t){return ub(Et.fromDom(e),Et.fromDom(t.container())).map(function(e){return{block:e,position:t}})}function fb(e){var t,n=M(t=On(e),So).fold(J(t),function(e){return t.slice(0,e)});return X(n,Mn),n}function db(e,t){return I(xm(t,e).reverse(),function(e){return oo(e)}).each(Mn)}function mb(e,t,n,r){if(oo(n))return ym(n),mf(n.dom);0===U(Pt(r),function(e){return!oo(e)}).length&&oo(t)&&Vt(r,Et.fromTag("br"));var o=df(n.dom,bs.before(r.dom));return X(fb(t),function(e){Vt(r,e)}),db(e,t),o}function gb(e,t,n){if(oo(n))return Mn(n),oo(t)&&ym(t),mf(t.dom);var r=gf(n.dom);return X(fb(t),function(e){In(n,e)}),db(e,t),r}function pb(e,t){Jc(e,t.dom).map(function(e){return e.getNode()}).map(Et.fromDom).filter($r).each(Mn)}function hb(e,t,n){return pb(!0,t),pb(!1,n),(He(o=n,r=t)?(i=xm(r,o),he.from(i[i.length-1])):he.none()).fold(A(gb,e,t,n),A(mb,e,t,n));var r,o,i}function vb(e,t,n,r){return t?hb(e,r,n):hb(e,n,r)}function bb(t,n){var e,r,o,i,a,u,s,c=Et.fromDom(t.getBody()),l=(e=c.dom,r=n,((o=t.selection.getRng()).collapsed?(a=r,u=lb(i=e,bs.fromRangeStart(o)),s=u.bind(function(e){return cf(a,i,e.position).bind(function(e){return lb(i,e).map(function(e){return t=i,n=a,Xn((r=e).position.getNode())&&!1===oo(r.block)?Jc(!1,r.block.dom).bind(function(e){return e.isEqual(r.position)?cf(n,t,e).bind(function(e){return lb(t,e)}):he.some(r)}).getOr(r):r;var t,n,r})})}),fn(u,s,cb).filter(function(e){return!1===je(e.from.block,e.to.block)&&Dt((n=e).from.block).bind(function(t){return Dt(n.to.block).filter(function(e){return je(t,e)})}).isSome()&&!1===Jn((t=e).from.block.dom)&&!1===Jn(t.to.block.dom);var t,n})):he.none()).bind(function(e){return vb(c,n,e.from.block,e.to.block)}));return l.each(function(e){t.selection.setRng(e.toRange())}),l.isSome()}function yb(e,t){var n=Et.fromDom(t),r=A(je,e);return hr(n,Ao,r).isSome()}function Cb(e){var n,r,o,t,i,a,u,s,c,l,f=Et.fromDom(e.getBody()),d=e.selection.getRng();return a=d,c=df((i=f).dom,bs.fromRangeStart(a)).isNone(),l=ff(i.dom,bs.fromRangeEnd(a)).isNone(),!yb(u=i,(s=a).startContainer)&&!yb(u,s.endContainer)&&c&&l?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=f,r=e.selection,o=r.getRng(),fn(ub(n,Et.fromDom(o.startContainer)),ub(n,Et.fromDom(o.endContainer)),function(e,t){return!1===je(e,t)&&(o.deleteContents(),vb(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))}function wb(e,t){return!e.selection.isCollapsed()&&Cb(e)}function xb(e,t,n,r,o){return he.from(t._selectionOverrides.showCaret(e,n,r,o))}function Sb(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?he.none():he.some(((r=(n=t).ownerDocument.createRange()).selectNode(n),r))}function Eb(e,t,n){var r=fc(1,e.getBody(),t),o=bs.fromRangeStart(r),i=o.getNode();if(Pc(i))return xb(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(Pc(a))return xb(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return Cy(e)||yy(e)});return Pc(u)?xb(1,e,u,!1,n):he.none()}function Nb(e,t,n){return t.collapsed?Eb(e,t,n).getOr(t):t}function kb(e){return ap(e)||np(e)}function _b(e){return up(e)||rp(e)}function Ab(n,r,e,t,o,i){var a,u;return xb(t,n,i.getNode(!o),o,!0).each(function(e){var t;r.collapsed?(t=r.cloneRange(),o?t.setEnd(e.startContainer,e.startOffset):t.setStart(e.endContainer,e.endOffset),t.deleteContents()):r.deleteContents(),n.selection.setRng(e)}),a=n.dom,qn(u=e)&&0===u.data.length&&a.remove(u),!0}function Tb(e,t){var n=e.selection.getRng();if(!qn(n.commonAncestorContainer))return!1;var r=t?vc.Forwards:vc.Backwards,o=Wc(e.getBody()),i=A(pc,t?o.next:o.prev),a=t?kb:_b,u=mc(r,e.getBody(),n),s=ib(t,i(u));if(!s||!hc(u,s))return!1;if(a(s))return Ab(e,n,u.getNode(),r,t,s);var c=i(s);return!!(c&&a(c)&&hc(s,c))&&Ab(e,n,u.getNode(),r,t,c)}function Rb(l,f,d){return cf(f,l,d).bind(function(e){return s=e.getNode(),Ao(Et.fromDom(s))||ko(Et.fromDom(s))||(o=l,u=e,dc(!(i=f),a=d).fold(function(){return dc(i,u).fold(T,c)},c))?he.none():f&&Jn(e.getNode())||!1===f&&Jn(e.getNode(!0))?(t=l,n=d,r=e.getNode(!1===f),ub(Et.fromDom(t),Et.fromDom(n.getNode())).map(function(e){return oo(e)?wy.remove(e.dom):wy.moveToElement(r)}).orThunk(function(){return he.some(wy.moveToElement(r))})):f&&up(d)||!1===f&&ap(d)?he.some(wy.moveToPosition(e)):he.none();var t,n,r,o,i,a,u,s;function c(e){return qr(Et.fromDom(e))&&!uc(a,u,o)}})}function Db(e,t){return he.from(_f(e.getBody(),t))}function Ob(m,g){var e=m.selection.getNode();return Db(m,e).filter(Jn).fold(function(){return s=m.getBody(),l=fc((c=g)?1:-1,s,m.selection.getRng()),f=bs.fromRangeStart(l),d=Et.fromDom(s),(!1===c&&up(f)?he.some(wy.remove(f.getNode(!0))):c&&ap(f)?he.some(wy.remove(f.getNode())):!1===c&&ap(f)&&Rm(d,f)?dp(d,f).map(function(e){return wy.remove(e.getNode())}):c&&up(f)&&Tm(d,f)?mp(d,f).map(function(e){return wy.remove(e.getNode())}):(r=s,e=c,a=(o=f).getNode(!1===(i=e)),u=i?"after":"before",Hn(a)&&a.getAttribute("data-mce-caret")===u?(n=o.getNode(!1===(t=e)),(t&&Jn(n.nextSibling)?he.some(wy.moveToElement(n.nextSibling)):!1===t&&Jn(n.previousSibling)?he.some(wy.moveToElement(n.previousSibling)):he.none()).fold(function(){return Rb(r,e,o)},he.some)):Rb(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return he.some(wy.remove(e))},function(e){return he.some(wy.moveToElement(e))},function(e){return uc(n,e,t)?he.none():he.some(wy.moveToPosition(e))});var t,n}))).exists(function(e){return e.fold(function(e){return o._selectionOverrides.hideFakeCaret(),tg(o,i,Et.fromDom(e)),!0},(r=i=g,function(e){var t=r?bs.before(e):bs.after(e);return n.selection.setRng(t.toRange()),!0}),(t=n=o=m,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i});var r,e,o,t,n,i,a,u,s,c,l,f,d},x)}function Bb(e,t){var n=e.selection.getNode();return!(!Jn(n)||Qn(n))&&Db(e,n.parentNode).filter(Jn).fold(function(){return X(Au(Et.fromDom(e.getBody()),".mce-offscreen-selection"),Mn),tg(e,t,Et.fromDom(e.selection.getNode())),sb(e),!0},x)}function Pb(e){var t,n=e.dom,r=e.selection,o=_f(e.getBody(),r.getNode());return Gn(o)&&n.isBlock(o)&&n.isEmpty(o)&&(t=n.create("br",{"data-mce-bogus":"1"}),n.setHTML(o,""),o.appendChild(t),r.setRng(bs.before(t).toRange())),!0}function Lb(e,t){return(e.selection.isCollapsed()?Ob:Bb)(e,t)}function Ib(e,t){return!!e.selection.isCollapsed()&&(n=e,r=t,o=bs.fromRangeStart(n.selection.getRng()),cf(r,n.getBody(),o).filter(function(e){return(r?ep:tp)(e)}).bind(function(e){return he.from(sc(r?0:-1,e))}).exists(function(e){return n.selection.select(e),!0}));var n,r,o}function Mb(e){return xy(e)&&e.data[0]===Oo}function Fb(e){return xy(e)&&e.data[e.data.length-1]===Oo}function Ub(e){return e.ownerDocument.createTextNode(Oo)}function zb(e,t){return(e?function(e){if(xy(e.previousSibling))return Fb(e.previousSibling)||e.previousSibling.appendData(Oo),e.previousSibling;if(xy(e))return Mb(e)||e.insertData(0,Oo),e;var t=Ub(e);return e.parentNode.insertBefore(t,e),t}:function(e){if(xy(e.nextSibling))return Mb(e.nextSibling)||e.nextSibling.insertData(0,Oo),e.nextSibling;if(xy(e))return Fb(e)||e.appendData(Oo),e;var t=Ub(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t})(t)}function jb(e,t){return qn(e.container())?zb(t,e.container()):zb(t,e.getNode())}function Hb(e,t){var n=t.get();return n&&e.container()===n&&Kr(n)}function Vb(n,e){return e.fold(function(e){Tc(n.get());var t=Sy(e);return n.set(t),he.some(bs(t,t.length-1))},function(e){return mf(e).map(function(e){if(Hb(e,n))return bs(n.get(),1);Tc(n.get());var t=jb(e,!0);return n.set(t),bs(t,1)})},function(e){return gf(e).map(function(e){if(Hb(e,n))return bs(n.get(),n.get().length-1);Tc(n.get());var t=jb(e,!1);return n.set(t),bs(t,t.length-1)})},function(e){Tc(n.get());var t=Ey(e);return n.set(t),he.some(bs(t,1))})}function qb(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return he.none()}function $b(e,t){return ac(t,e)||e}function Wb(e,t,n){var r=vy(n),o=$b(t,r.container());return ob(e,o,r).fold(function(){return ff(o,r).bind(A(ob,e,o)).map(function(e){return Ny.before(e)})},he.none)}function Kb(e,t){return null===Zc(e,t)}function Xb(e,t,n){return ob(e,t,n).filter(A(Kb,t))}function Yb(e,t,n){var r=by(n);return Xb(e,t,r).bind(function(e){return df(e,r).isNone()?he.some(Ny.start(e)):he.none()})}function Gb(e,t,n){var r=vy(n);return Xb(e,t,r).bind(function(e){return ff(e,r).isNone()?he.some(Ny.end(e)):he.none()})}function Jb(e,t,n){var r=by(n),o=$b(t,r.container());return ob(e,o,r).fold(function(){return df(o,r).bind(A(ob,e,o)).map(function(e){return Ny.after(e)})},he.none)}function Qb(e){return!1===(t=ky(e),"rtl"===cu.DOM.getStyle(t,"direction",!0)||(n=t.textContent,hy.test(n)));var t,n}function Zb(e,t,n){return qb([Wb,Yb,Gb,Jb],[e,t,n]).filter(Qb)}function ey(e){return e.fold(J("before"),J("start"),J("end"),J("after"))}function ty(e){return e.fold(Ny.before,Ny.before,Ny.after,Ny.after)}function ny(e){return e.fold(Ny.start,Ny.start,Ny.end,Ny.end)}function ry(a,e,u,t,n,s){return fn(ob(e,u,t),ob(e,u,n),function(e,t){return e!==t&&(r=t,o=ac(e,n=u),i=ac(r,n),o&&o===i)?Ny.after(a?e:t):s;var n,r,o,i}).getOr(s)}function oy(e,r){return e.fold(x,function(e){return n=r,!(ey(t=e)===ey(n)&&ky(t)===ky(n));var t,n})}function iy(e,t){return e?t.fold(i(he.some,Ny.start),he.none,i(he.some,Ny.after),he.none):t.fold(he.none,i(he.some,Ny.before),he.none,i(he.some,Ny.end))}function ay(e,a,u,s){var t=ib(e,s),c=Zb(a,u,t);return Zb(a,u,t).bind(A(iy,e)).orThunk(function(){return n=a,r=u,o=c,i=ib(t=e,s),cf(t,r,i).map(A(ib,t)).fold(function(){return o.map(ty)},function(e){return Zb(n,r,e).map(A(ry,t,n,r,i,e)).filter(A(oy,o))}).filter(Qb);var t,n,r,o,i})}function uy(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=window.console;r&&(r.error||r.log).apply(r,_e([e],t))}var sy,cy,ly=function(t,e){var n=t.editorManager.baseURL+"/skins/content",r="content"+t.editorManager.suffix+".css",o=!0===t.inline;return R(e,function(e){return/^[a-z0-9\-]+$/i.test(e)&&!o?n+"/"+e+"/"+r:t.documentBaseURI.toAbsolute(e)})},fy=0,dy=St.each,my=cu.DOM,gy=[9,27,$f.HOME,$f.END,19,20,44,144,145,33,34,45,16,17,18,91,92,93,$f.DOWN,$f.UP,$f.LEFT,$f.RIGHT].concat(Ct.browser.isFirefox()?[224]:[]),py="data-mce-placeholder",hy=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,vy=A(ib,!0),by=A(ib,!1),yy=Gn,Cy=Jn,wy=ar([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),xy=qn,Sy=A(zb,!0),Ey=A(zb,!1),Ny=ar([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),ky=function(e){return e.fold(u,u,u,u)};function _y(e,t,n){var r=e?1:-1;return t.setRng(bs(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0}function Ay(e,t){return e===vc.Backwards?H(t):t}function Ty(e,t,n,r){for(var o,i,a,u,s=Wc(n),c=r,l=[];c;){var f=(a=s,u=c,t===vc.Forwards?a.next(u):a.prev(u));if(!f)break;if(Xn(f.getNode(!1)))return t===vc.Forwards?{positions:Ay(t,l).concat([f]),breakType:sy.Br,breakAt:he.some(f)}:{positions:Ay(t,l),breakType:sy.Br,breakAt:he.some(f)};if(f.isVisible()){if(e(c,f)){var d=(o=c,Xn((i=f).getNode(t===vc.Forwards))?sy.Br:!1===uc(o,i)?sy.Block:sy.Wrap);return{positions:Ay(t,l),breakType:d,breakAt:he.some(f)}}l.push(f),c=f}else c=f}return{positions:Ay(t,l),breakType:sy.Eol,breakAt:he.none()}}function Ry(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===vc.Backwards?t.concat(e):[e].concat(t)}).getOr([])}function Dy(e,i){return P(e,function(e,o){return e.fold(function(){return he.some(o)},function(r){return fn(W(r.getClientRects()),W(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},he.none())}function Oy(t,e){return W(e.getClientRects()).bind(function(e){return Dy(t,e.left)})}function By(n){function e(e){return R(e,function(e){var t=Fu(e);return t.node=n,t})}if(Hn(n))return e(n.getClientRects());if(qn(n)){var t=n.ownerDocument.createRange();return t.setStart(n,0),t.setEnd(n,n.data.length),e(t.getClientRects())}}function Py(e){return z(e,By)}A(ay,!1),A(ay,!0),(cy=sy={})[cy.Br=0]="Br",cy[cy.Block=1]="Block",cy[cy.Wrap=2]="Wrap",cy[cy.Eol=3]="Eol";var Ly,Iy,My=A(Ty,bs.isAbove,-1),Fy=A(Ty,bs.isBelow,1),Uy=A(Ry,-1,My),zy=A(Ry,1,Fy);function jy(o,i,a,e,u,t){function n(e){var t=Py([e]);-1===o&&(t=t.reverse());for(var n=0;n<t.length;n++){var r=t[n];if(!a(r,l)){if(0<c.length&&i(r,ge(c))&&s++,r.line=s,u(r))return!0;c.push(r)}}}var s=0,c=[],l=ge(t.getClientRects());if(!l)return c;var r=t.getNode();return n(r),function(e,t,n,r){for(;r=ic(r,e,to,t);)if(n(r))return}(o,e,n,r),c}function Hy(t){return function(e){return e.line>t}}function Vy(t){return function(e){return e.line===t}}function qy(e,t){return Math.abs(e.left-t)}function $y(e,t){return Math.abs(e.right-t)}function Wy(e,t){return e>=t.left&&e<=t.right}function Ky(e,t){return e>=t.top&&e<=t.bottom}function Xy(e,o){return de(e,function(e,t){var n=Math.min(qy(e,o),$y(e,o)),r=Math.min(qy(t,o),$y(t,o));return Wy(o,t)||!Wy(o,e)&&(r===n&&FC(t.node)||r<n)?t:e})}function Yy(e,t,n,r,o){var i=UC(r,e,to,t,!o);do{if(!i||n(i))return}while(i=UC(i,e,to,t))}function Gy(e,t,n){var r,o,i,a=Py(U(Ce(e.getElementsByTagName("*")),rc)),u=U(a,A(Ky,n));if((i=Xy(u,t))&&((i=Xy(function(e,r,t){function n(t,e){var n=U(Py([e]),function(e){return!t(e,r)});return o=o.concat(n),0===n.length}void 0===t&&(t=!0);var o=[];return o.push(r),Yy(Ly.Up,e,A(n,ju),r.node,t),Yy(Ly.Down,e,A(n,Hu),r.node,t),o}(e,i,!sn(i.node)&&!Zn(i.node)),t))&&rc(i.node)))return{node:(r=i).node,before:qy(r,o=t)<$y(r,o)};return null}function Jy(e,t){e.selection.setRng(t),fd(e,e.selection.getRng())}function Qy(e,t,n){return he.some(Nb(e,t,n))}function Zy(e,t,n,r,o,i){var a=t===vc.Forwards,u=Wc(e.getBody()),s=A(pc,a?u.next:u.prev),c=a?r:o;if(!n.collapsed){var l=qu(n);if(i(l))return xb(t,e,l,t===vc.Backwards,!1)}var f=mc(t,e.getBody(),n);if(c(f))return Sb(e,f.getNode(!a));var d=ib(a,s(f)),m=Zr(n);if(!d)return m?he.some(n):he.none();if(c(d))return xb(t,e,d.getNode(!a),a,!1);var g=s(d);return g&&c(g)&&hc(d,g)?xb(t,e,g.getNode(!a),a,!1):m?Qy(e,d.toRange(),!1):he.none()}function e0(t,e,n,r,o,i){var a=mc(e,t.getBody(),n),u=ge(a.getClientRects()),s=e===Ly.Down;if(!u)return he.none();var c,l=U((s?MC:IC)(t.getBody(),Hy(1),a),Vy(1)),f=u.left,d=Xy(l,f);if(d&&i(d.node)){var m=Math.abs(f-d.left),g=Math.abs(f-d.right);return xb(e,t,d.node,m<g,!1)}if(c=r(a)?a.getNode():o(a)?a.getNode(!0):qu(n)){var p=function(e,t,n,r){function o(e){return ge(e.getClientRects())}var i,a,u,s=Wc(t),c=[],l=0,f=1===e?(i=s.next,a=Hu,u=ju,bs.after(r)):(i=s.prev,a=ju,u=Hu,bs.before(r)),d=o(f);do{if(f.isVisible()){var m=o(f);if(!u(m,d)){0<c.length&&a(m,ge(c))&&l++;var g=Fu(m);if(g.position=f,g.line=l,n(g))return c;c.push(g)}}}while(f=i(f));return c}(e,t.getBody(),Hy(1),c),h=Xy(U(p,Vy(1)),f);if(h)return Qy(t,h.position.toRange(),!1);if(h=ge(U(p,Vy(0))))return Qy(t,h.position.toRange(),!1)}return 0===l.length?zC(t,s).filter(s?o:r).map(function(e){return Nb(t,e.toRange(),!1)}):he.none()}function t0(t,e,n){return zC(t,e).filter(n).exists(function(e){return t.selection.setRng(e.toRange()),!0})}function n0(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)}function r0(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")}function o0(t,e,n){return Vb(e,n).map(function(e){return n0(t,e),n})}function i0(e,t,n){return!!Ws(e)&&(o=t,i=n,a=(r=e).getBody(),u=bs.fromRangeStart(r.selection.getRng()),ay(i,A(rb,r),a,u).bind(function(e){return o0(r,o,e)}).isSome());var r,o,i,a,u}function a0(e,t,n){return!!Ws(t)&&(r=e,i=(o=t).selection.getRng(),a=r?bs.fromRangeEnd(i):bs.fromRangeStart(i),!!y(o.selection.getSel().modify)&&(r&&Gr(a)?_y(!0,o.selection,a):!(r||!Jr(a))&&_y(!1,o.selection,a)));var r,o,i,a}function u0(g){var p=pu(null),h=A(rb,g);return g.on("NodeChange",function(e){var n,r,o,t,i,a,u,s,c,l,f,d,m;!Ws(g)||Ct.browser.isIE()&&e.initial||(i=h,a=g.dom,u=e.parents,X(q(s=U(R(Au(Et.fromDom(a.getRoot()),'*[data-mce-selected="inline-boundary"]'),function(e){return e.dom}),i),c=U(u,i)),A(r0,!1)),X(q(c,s),A(r0,!0)),f=p,(l=g).selection.isCollapsed()&&!0!==l.composing&&f.get()&&(d=bs.fromRangeStart(l.selection.getRng()),bs.isTextPosition(d)&&!1===(Gr(m=d)||Jr(m))&&(n0(l,Zs(f.get(),d)),f.set(null))),n=h,r=g,o=p,t=e.parents,r.selection.isCollapsed()&&X(U(t,n),function(e){var t=bs.fromRangeStart(r.selection.getRng());Zb(n,r.getBody(),t).bind(function(e){return o0(r,o,e)})}))}),p}function s0(n,t,r){if(Ws(n)){var e=zC(n,t).getOrThunk(function(){var e=n.selection.getRng();return t?bs.fromRangeEnd(e):bs.fromRangeStart(e)});return Zb(A(rb,n),n.getBody(),e).exists(function(e){var t=ty(e);return Vb(r,t).exists(function(e){return n0(n,e),!0})})}return!1}function c0(t,n){return function(e){return Vb(n,e).exists(function(e){return n0(t,e),!0})}}function l0(r,o,i,a){var u=r.getBody(),s=A(rb,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),Zb(s,u,bs.fromRangeStart(r.selection.getRng())).map(ny).map(c0(r,o))}),r.nodeChanged()}function f0(e,t,n){if(e.selection.isCollapsed()&&Ws(e)){var r=bs.fromRangeStart(e.selection.getRng());return o=t,a=n,u=r,s=(i=e).getBody(),c=ac(u.container(),s)||s,l=A(rb,i),(f=Zb(l,c,u)).bind(function(e){return a?e.fold(J(he.some(ny(e))),he.none,J(he.some(ty(e))),he.none):e.fold(he.none,J(he.some(ty(e))),he.none,J(he.some(ny(e))))}).map(c0(i,o)).getOrThunk(function(){var t=Gc(a,c,u),e=t.bind(function(e){return Zb(l,c,e)});return fn(f,e,function(){return ob(l,c,u).exists(function(e){return!!fn(mf(o=e),gf(o),function(e,t){var n=ib(!0,e),r=ib(!1,t);return ff(o,n).forall(function(e){return e.isEqual(r)})}).getOr(!0)&&(tg(i,a,Et.fromDom(e)),!0);var o})}).orThunk(function(){return e.bind(function(e){return t.map(function(e){return a?l0(i,o,u,e):l0(i,o,e,u),!0})})}).getOr(!1)})}var i,o,a,u,s,c,l,f;return!1}function d0(e){return 1===Ut(e)}function m0(g,p){var t,e=Et.fromDom(g.getBody()),n=Et.fromDom(g.selection.getStart()),h=U(M(t=xm(n,e),So).fold(J(t),function(e){return t.slice(0,e)}),d0);return Y(h).exists(function(e){var t,n,r,o,i,a,u,s,c,l=bs.fromRangeStart(g.selection.getRng()),f=p,d=l,m=e.dom;return!(!fn(mf(m),gf(m),function(e,t){var n=ib(!0,e),r=ib(!1,t),o=ib(!1,d);return f?ff(m,o).exists(function(e){return e.isEqual(r)&&d.isEqual(n)}):df(m,o).exists(function(e){return e.isEqual(n)&&d.isEqual(r)})}).getOr(!0)||Qc((t=e).dom)&&zg(t.dom)||(n=p,o=e,0===(c=R(U(h,A(Yg,r=g)),function(e){return e.dom})).length?tg(r,n,o):(a=o.dom,s=Wg(c,(u=Hg(!1)).dom),Vt(Et.fromDom(a),u),Mn(Et.fromDom(a)),i=bs(s,0),r.selection.setRng(i.toRange())),0))})}function g0(e,t){return!!e.selection.isCollapsed()&&m0(e,t)}function p0(e,t,n){return e._selectionOverrides.hideFakeCaret(),tg(e,t,Et.fromDom(n)),!0}function h0(e,t){return e.selection.isCollapsed()?(i=e,u=(a=t)?np:rp,s=a?vc.Forwards:vc.Backwards,c=mc(s,i.getBody(),i.selection.getRng()),u(c)?p0(i,a,c.getNode(!a)):he.from(ib(a,c)).filter(function(e){return u(e)&&hc(c,e)}).exists(function(e){return p0(i,a,e.getNode(!a))})):(r=t,o=(n=e).selection.getNode(),!!Zn(o)&&p0(n,r,o));var n,r,o,i,a,u,s,c}function v0(e){var t=parseInt(e,10);return isNaN(t)?0:t}function b0(e,t){return(e||"table"===Nt(t)?"margin":"padding")+("rtl"===Cn(t,"direction")?"-right":"-left")}function y0(e){var n,t=VC(e);return!e.mode.isReadOnly()&&(1<t.length||(n=e,j(t,function(e){var t=wn(e,b0(js(n),e)).map(v0).getOr(0);return"false"!==n.dom.getContentEditable(e.dom)&&0<t})))}function C0(e){return No(e)||ko(e)}function w0(e,s){var c=e.dom,t=e.selection,n=e.formatter,r=e.getParam("indentation","40px","string"),l=/[a-z%]+$/i.exec(r)[0],f=parseInt(r,10),d=js(e),o=Ls(e);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||""!==o||c.getParent(t.getNode(),c.isBlock)||n.apply("div"),X(VC(e),function(e){var t,n=c,r=s,o=f,i=l,a=e.dom,u=b0(d,Et.fromDom(a));"outdent"===r?(t=Math.max(0,v0(a.style[u])-o),n.setStyle(a,u,t?t+i:"")):(t=v0(a.style[u])+o+i,n.setStyle(a,u,t))})}function x0(e,t){if(e.selection.isCollapsed()&&y0(e)){var n=e.dom,r=e.selection.getRng(),o=bs.fromRangeStart(r),i=n.getParent(r.startContainer,n.isBlock);if(null!==i&&sp(Et.fromDom(i),o))return w0(e,"outdent"),!0}return!1}function S0(e,t){e.getDoc().execCommand(t,!1,null)}function E0(e){return void 0===e.touches||1!==e.touches.length?he.none():he.some(e.touches[0])}function N0(e,t){return Ee(e,t.nodeName)}function k0(e){var t,n,r,o=e.dom,i=e.selection,a=e.schema,u=a.getBlockElements(),s=i.getStart(),c=e.getBody(),l=Ls(e);if(s&&Hn(s)&&l){var f=c.nodeName.toLowerCase();if(a.isValidChild(f,l.toLowerCase())&&(d=u,m=c,g=s,!F(wm(Et.fromDom(g),Et.fromDom(m)),function(e){return N0(d,e.dom)}))){for(var d,m,g,p,h,v=i.getRng(),b=v.startContainer,y=v.startOffset,C=v.endContainer,w=v.endOffset,x=Td(e),s=c.firstChild;s;)p=u,qn(h=s)||Hn(h)&&!N0(p,h)&&!ul(h)?function(e,t){if(qn(t)){if(0===t.nodeValue.length)return 1;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||N0(e,t.nextSibling)))return 1}}(u,s)?(s=(n=s).nextSibling,o.remove(n)):(t||(t=o.create(l,Is(e)),s.parentNode.insertBefore(t,s),r=!0),s=(n=s).nextSibling,t.appendChild(n)):(t=null,s=s.nextSibling);r&&x&&(v.setStart(b,y),v.setEnd(C,w),i.setRng(v),e.nodeChanged())}}}function _0(e,t){t.hasAttribute("data-mce-caret")&&(Qr(t),e.selection.setRng(e.selection.getRng()),e.selection.scrollIntoView(t))}function A0(e,t){var n=yr(Et.fromDom(e.getBody()),"*[data-mce-caret]").map(function(e){return e.dom}).getOrNull();if(n)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void _0(e,n)):void(Yr(n)&&(_0(e,n),e.undoManager.add()))}function T0(e,t,n){var r,o,i,a=Wc(e.getBody()),u=A(pc,1===t?a.next:a.prev);!n.collapsed||""===Ls(e)||(r=e.dom.getParent(n.startContainer,"PRE"))&&(u(bs.fromRangeStart(n))||(i=e.dom.create(Ls(e)),(!Ct.ie||11<=Ct.ie)&&(i.innerHTML='<br data-mce-bogus="1">'),o=i,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse()))}function R0(t,e){return n=t,r=e?vc.Forwards:vc.Backwards,o=n.selection.getRng(),Zy(n,r,o,ap,up,qC).orThunk(function(){return T0(n,r,o),he.none()}).exists(function(e){return Jy(t,e),!0});var n,r,o}function D0(t,e){return r=e?1:-1,o=(n=t).selection.getRng(),e0(n,r,o,function(e){return ap(e)||op(e)},function(e){return up(e)||ip(e)},qC).orThunk(function(){return T0(n,r,o),he.none()}).exists(function(e){return Jy(t,e),!0});var n,r,o}function O0(e,t){return t0(e,t,t?up:ap)}function B0(e){return ie(["figcaption"],Nt(e))}function P0(e){var t=document.createRange();return t.setStartBefore(e.dom),t.setEndBefore(e.dom),t}function L0(e,t,n){(n?In:$t)(e,t)}function I0(h,v){var b=Et.fromDom(h.getBody()),y=bs.fromRangeStart(h.selection.getRng()),C=Ls(h),w=Is(h),e=y,t=A(je,b);return vr(Et.fromDom(e.container()),So,t).filter(B0).exists(function(){if(d=b,m=y,v?(p=d.dom,Fy(p,m).breakAt.isNone()):(g=d.dom,My(g,m).breakAt.isNone())){var e=(t=b,r=w,o=v,""===(n=C)?(l=o,L0(t,f=Et.fromTag("br"),l),P0(f)):(i=t,a=o,u=r,s=Et.fromTag(n),c=Et.fromTag("br"),pn(s,u),In(s,c),L0(i,s,a),P0(c)));return h.selection.setRng(e),!0}var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p;return!1})}function M0(e,t){return!!e.selection.isCollapsed()&&I0(e,t)}function F0(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){return e.apply(null,t)}}function U0(e,t){return I((n=t,z(R(e,function(e){return ke({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:oe},e)}),function(e){return n.keyCode===e.keyCode&&n.shiftKey===e.shiftKey&&n.altKey===e.altKey&&n.ctrlKey===e.ctrlKey&&n.metaKey===e.metaKey?[e]:[]})),function(e){return e.action()});var n}function z0(t,e){var n=e?vc.Forwards:vc.Backwards,r=t.selection.getRng();return Zy(t,n,r,np,rp,Zn).exists(function(e){return Jy(t,e),!0})}function j0(t,e){var n=e?1:-1,r=t.selection.getRng();return e0(t,n,r,np,rp,Zn).exists(function(e){return Jy(t,e),!0})}function H0(e,t){return t0(e,t,t?rp:np)}function V0(e,t,n,r,o){var i,a=Au(Et.fromDom(n),"td,th,caption").map(function(e){return e.dom}),u=U((i=e,z(a,function(e){var t,n={left:(t=Fu(e.getBoundingClientRect())).left- -1,top:t.top- -1,right:t.right+-2,bottom:t.bottom+-2,width:t.width+-1,height:t.height+-1};return[{x:n.left,y:i(n),cell:e},{x:n.right,y:i(n),cell:e}]})),function(e){return t(e,o)}),s=r,c=o;return P(u,function(e,r){return e.fold(function(){return he.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-s)+Math.abs(e.y-c)),n=Math.sqrt(Math.abs(r.x-s)+Math.abs(r.y-c));return he.some(n<t?r:e)})},he.none()).map(function(e){return e.cell})}function q0(e,t,n){var r,o,i=e(t,n);return i.breakType===sy.Wrap&&0===i.positions.length||!Xn(n.getNode())&&i.breakType===sy.Br&&1===i.positions.length?(r=e,o=t,!i.breakAt.exists(function(e){return r(o,e).breakAt.isSome()})):i.breakAt.isNone()}function $0(t,e,n,r){var o,i,a,u=t.selection.getRng(),s=e?1:-1;return!(!nc()||(o=e,i=n,a=bs.fromRangeStart(u),!Jc(!o,i).exists(function(e){return e.isEqual(a)}))||(xb(s,t,n,!e,!1).each(function(e){Jy(t,e)}),0))}function W0(u,s,c){var e,t,n=(e=!!s,t=c.getNode(e),Hn(t)&&"TABLE"===t.nodeName?he.some(t):he.none()),r=!1===s;n.fold(function(){return Jy(u,c.toRange())},function(a){return Jc(r,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return Jy(u,c.toRange())},function(e){var n,r,o=s,i=a,t=c;(r=Ls(n=u))?n.undoManager.transact(function(){var e=Et.fromTag(r);pn(e,Is(n)),In(e,Et.fromTag("br")),(o?qt:Vt)(Et.fromDom(i),e);var t=n.dom.createRng();t.setStart(e.dom,0),t.setEnd(e.dom,0),Jy(n,t)}):Jy(n,t.toRange())})})}function K0(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.selection.getRng(),p=bs.fromRangeStart(g),h=e.getBody();if(t||!KC(r,p))return!(!t||!XC(r,p))&&(o=h,d=i=n,W0(e,t,v=Y((m=a=p).getClientRects()).bind(function(e){return WC(d,e.left,e.top)}).bind(function(e){return Oy(mf(t=e).map(function(e){return[e].concat(Fy(t,e).positions)}).getOr([]),m);var t}).orThunk(function(){return W(a.getClientRects()).bind(function(e){return Dy(zy(o,bs.after(i)),e.left)})}).getOr(bs.after(i))),!0);var v=(u=h,l=s=n,W((f=c=p).getClientRects()).bind(function(e){return $C(l,e.left,e.top)}).bind(function(e){return Oy(gf(t=e).map(function(e){return My(t,e).positions.concat(e)}).getOr([]),f);var t}).orThunk(function(){return W(c.getClientRects()).bind(function(e){return Dy(Uy(u,bs.before(s)),e.left)})}).getOr(bs.before(s)));return W0(e,t,v),!0}function X0(n,r,o){return he.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return he.from(n.dom.getParent(t,"table")).map(function(e){return o(n,r,e,t)})}).getOr(!1)}function Y0(e,t){return X0(e,t,$0)}function G0(e,t){return X0(e,t,K0)}function J0(e,t){var n,r,o=t,i=e.dom,a=e.schema.getMoveCaretBeforeOnEnterElements();if(t){!/^(LI|DT|DD)$/.test(t.nodeName)||(r=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild))&&/^(UL|OL|DL)$/.test(r.nodeName)&&t.insertBefore(i.doc.createTextNode(Do),t.firstChild);var u=i.createRng();if(t.normalize(),t.hasChildNodes()){for(var s=new jr(t,t);n=s.current();){if(qn(n)){u.setStart(n,0),u.setEnd(n,0);break}if(a[n.nodeName.toLowerCase()]){u.setStartBefore(n),u.setEndBefore(n);break}o=n,n=s.next()}n||(u.setStart(o,0),u.setEnd(o,0))}else Xn(t)?t.nextSibling&&i.isBlock(t.nextSibling)?(u.setStartBefore(t),u.setEndBefore(t)):(u.setStartAfter(t),u.setEndAfter(t)):(u.setStart(t,0),u.setEnd(t,0));e.selection.setRng(u),fd(e,u)}}function Q0(e){return he.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))}function Z0(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t}function eC(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)}function tC(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e}function nC(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Hn(r);)r=r[n?"nextSibling":"previousSibling"];return r===t}function rC(e){e.innerHTML='<br data-mce-bogus="1">'}function oC(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t}function iC(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)}function aC(e,t,n){return!1===qn(t)?n:e?1===n&&t.data.charAt(n-1)===Oo?0:n:n===t.data.length-1&&t.data.charAt(n)===Oo?t.data.length:n}function uC(e,t){for(var n,r=e.getRoot(),o=t;o!==r&&"false"!==e.getContentEditable(o);)"true"===e.getContentEditable(o)&&(n=o),o=o.parentNode;return o!==r?n:r}function sC(e,t){var n=Ls(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&function(e,o,t){var i=e.dom;he.from(t.style).map(i.parseStyle).each(function(e){var t=xn(Et.fromDom(o)),n=ke(ke({},t),e);i.setStyles(o,n)}),fn(he.from(t.class).map(function(e){return e.split(/\s+/)}),he.from(o.className).map(function(e){return U(e.split(/\s+/),function(e){return""!==e})}),function(t,e){var n=U(e,function(e){return!ie(t,e)}),r=_e(_e([],t),n);i.setAttrib(o,"class",r.join(" "))});var n=["style","class"],r=ne(t,function(e,t){return!ie(n,t)});i.setAttribs(o,r)}(e,t,Is(e))}function cC(a,e){function t(e){var t,n=m,r=l.getTextInlineElements(),o=e||"TABLE"===C||"HR"===C?c.create(e||p):b.cloneNode(!1),i=o;if(!1===a.getParam("keep_styles",!0))c.setAttrib(o,"style",null),c.setAttrib(o,"class",null);else for(;r[n.nodeName]&&(Qc(n)||ul(n)||(t=n.cloneNode(!1),c.setAttrib(t,"id",""),o.hasChildNodes()?t.appendChild(o.firstChild):i=t,o.appendChild(t))),(n=n.parentNode)&&n!==F;);return sC(a,o),rC(i),o}function n(e){var t,n,r=aC(e,m,g);if(!qn(m)||!(e?0<r:r<m.nodeValue.length)){if(m.parentNode===b&&s&&!e)return 1;if(e&&Hn(m)&&m===b.firstChild)return 1;if(oC(m,"TABLE")||oC(m,"HR"))return s&&!e||!s&&e;var o=new jr(m,b);for(qn(m)&&(e&&0===r?o.prev():e||r!==m.nodeValue.length||o.next());t=o.current();){if(Hn(t)){if(!t.getAttribute("data-mce-bogus")&&(n=t.nodeName.toLowerCase(),f[n]&&"br"!==n))return}else if(qn(t)&&!no(t.nodeValue))return;e?o.prev():o.next()}return 1}}function r(){u=/^(H[1-6]|PRE|FIGURE)$/.test(C)&&"HGROUP"!==w?t(p):t(),a.getParam("end_container_on_empty_block",!1)&&iC(c,y)&&c.isEmpty(b)?u=c.split(y,b):c.insertAfter(u,b),J0(a,u)}var o,u,i,s,c=a.dom,l=a.schema,f=l.getNonEmptyElements(),d=a.selection.getRng();jf(c,d).each(function(e){d.setStart(e.startContainer,e.startOffset),d.setEnd(e.endContainer,e.endOffset)});var m=d.startContainer,g=d.startOffset,p=Ls(a),h=!(!e||!e.shiftKey),v=!(!e||!e.ctrlKey);Hn(m)&&m.hasChildNodes()&&(s=g>m.childNodes.length-1,m=m.childNodes[Math.min(g,m.childNodes.length-1)]||m,g=s&&qn(m)?m.nodeValue.length:0);var b,y,C,w,x,S,p,E,N,k,_,A,T,R,D,O,B,P,L,I,M,F=uC(c,m);F&&((p&&!h||!p&&h)&&(m=function(e,t,n,r){var o,i,a,u,s,c,l=p||"P",f=e.dom,d=uC(f,n),m=f.getParent(n,f.isBlock);if(!m||!iC(f,m)){if(s=((m=m||d)===e.getBody()||(c=m)&&/^(TD|TH|CAPTION)$/.test(c.nodeName)?m:m.parentNode).nodeName.toLowerCase(),!m.hasChildNodes())return sC(e,o=f.create(l)),m.appendChild(o),t.setStart(o,0),t.setEnd(o,0),o;for(a=n;a.parentNode!==m;)a=a.parentNode;for(;a&&!f.isBlock(a);)a=(i=a).previousSibling;if(i&&e.schema.isValidChild(s,l.toLowerCase())){for(sC(e,o=f.create(l)),i.parentNode.insertBefore(o,i),a=i;a&&!f.isBlock(a);)u=a.nextSibling,o.appendChild(a),a=u;t.setStart(n,r),t.setEnd(n,r)}}return n}(a,d,m,g)),y=(b=c.getParent(m,c.isBlock))?c.getParent(b.parentNode,c.isBlock):null,C=b?b.nodeName.toUpperCase():"","LI"!==(w=y?y.nodeName.toUpperCase():"")||v||(y=(b=y).parentNode,C=w),/^(LI|DT|DD)$/.test(C)&&c.isEmpty(b)?(N=t,k=y,_=b,A=p,I=(E=a).dom,M=E.selection.getRng(),k!==E.getBody()&&(R=(A=eC(T=k)&&eC(T.parentNode)?"LI":A)?N(A):I.create("BR"),nC(k,_,!0)&&nC(k,_,!1)?Z0(k,"LI")?(D=tC(k),I.insertAfter(R,D),(null===(L=(P=k).parentNode)||void 0===L?void 0:L.firstChild)===P?I.remove(D):I.remove(k)):I.replace(R,k):(nC(k,_,!0)?Z0(k,"LI")?(I.insertAfter(R,tC(k)),R.appendChild(I.doc.createTextNode(" ")),R.appendChild(k)):k.parentNode.insertBefore(R,k):nC(k,_,!1)?I.insertAfter(R,tC(k)):(k=tC(k),(O=M.cloneRange()).setStartAfter(_),O.setEndAfter(k),B=O.extractContents(),"LI"===A&&(B.firstChild&&"LI"===B.firstChild.nodeName)?(R=B.firstChild,I.insertAfter(B,k)):(I.insertAfter(B,k),I.insertAfter(R,k))),I.remove(_)),J0(E,R))):p&&b===a.getBody()||(p=p||"P",Wr(b)?(u=Qr(b),c.isEmpty(b)&&rC(b),sC(a,u),J0(a,u)):n()?r():n(!0)?(u=b.parentNode.insertBefore(t(),b),J0(a,oC(b,"HR")?u:b)):((S=(x=d).cloneRange()).setStart(x.startContainer,aC(!0,x.startContainer,x.startOffset)),S.setEnd(x.endContainer,aC(!1,x.endContainer,x.endOffset)),(o=S.cloneRange()).setEndAfter(b),i=o.extractContents(),X(Zu(Et.fromDom(i),Tn),function(e){var t=e.dom;t.nodeValue=Po(t.nodeValue)}),function(e){for(;qn(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(i),u=i.firstChild,c.insertAfter(i,b),function(e,t){var n,r,o=u,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Hn(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(n=i.length;n--;)!(o=i[n]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(r=o)&&"A"===r.nodeName&&e.isEmpty(r)&&e.remove(o)}}(c,f),function(e,t){t.normalize();var n=t.lastChild;n&&!/^(left|right)$/gi.test(e.getStyle(n,"float",!0))||e.add(t,"br")}(c,b),c.isEmpty(b)&&rC(b),u.normalize(),c.isEmpty(u)?(c.remove(u),r()):(sC(a,u),J0(a,u))),c.setAttrib(u,"id",""),a.fire("NewBlock",{newBlock:u})))}function lC(e,t,n){var r=e.dom.createRng();n?(r.setStartBefore(t),r.setEndBefore(t)):(r.setStartAfter(t),r.setEndAfter(t)),e.selection.setRng(r),fd(e,r)}function fC(e,t){var n=Et.fromTag("br");Vt(Et.fromDom(t),n),e.undoManager.add()}function dC(e,t){YC(e.getBody(),t)||qt(Et.fromDom(t),Et.fromTag("br"));var n=Et.fromTag("br");qt(Et.fromDom(t),n),lC(e,n.dom,!1),e.undoManager.add()}function mC(e){return e&&"A"===e.nodeName&&"href"in e}function gC(e){return e.fold(T,mC,mC,T)}function pC(e,t){t.fold(oe,A(fC,e),A(dC,e),oe)}function hC(e,t){var n,r,o,i=(r=A(rb,n=e),o=bs.fromRangeStart(n.selection.getRng()),Zb(r,n.getBody(),o).filter(gC));i.isSome()?i.each(A(pC,e)):function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();jf(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u,s=a.startOffset,c=a.startContainer;1===c.nodeType&&c.hasChildNodes()&&(u=s>c.childNodes.length-1,c=c.childNodes[Math.min(s,c.childNodes.length-1)]||c,s=u&&3===c.nodeType?c.nodeValue.length:0);var l=i.getParent(c,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=!(!t||!t.ctrlKey);"LI"!==d||m||(l=f),c&&3===c.nodeType&&s>=c.nodeValue.length&&!function(e){for(var t,n=new jr(c,l),r=e.getNonEmptyElements();t=n.next();)if(r[t.nodeName.toLowerCase()]||0<t.length)return 1}(e.schema)&&(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0),n=i.create("br"),Cs(i,a,n),lC(e,n,r),e.undoManager.add()}(e,t)}function vC(e,t){return Q0(e).filter(function(e){return 0<t.length&&Ue(Et.fromDom(e),t)}).isSome()}function bC(e,t){return vC(e,e.getParam("no_newline_selector",""))}function yC(n){return function(e,t){return""===Ls(e)===n}}function CC(n){return function(e,t){return Q0(e).filter(function(e){return ko(Et.fromDom(e))}).isSome()===n}}function wC(n,r){return function(e,t){return Q0(e).fold(J(""),function(e){return e.nodeName.toUpperCase()})===n.toUpperCase()===r}}function xC(e){return wC("pre",e)}function SC(n){return function(e,t){return e.getParam("br_in_pre",!0)===n}}function EC(e,t){return vC(e,e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption"))}function NC(e,t){return t}function kC(e){var t=Ls(e),n=function(e,t){for(var n,r=e.getRoot(),o=t;o!==r&&"false"!==e.getContentEditable(o);)"true"===e.getContentEditable(o)&&(n=o),o=o.parentNode;return o!==r?n:r}(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")}function _C(e,t){return function(n,r){return P(e,function(e,t){return e&&t(n,r)},!0)?he.some(t):he.none()}}function AC(e,t){var n,r;n=e,r=t,qb([_C([bC],GC.none()),_C([wC("summary",!0)],GC.br()),_C([xC(!0),SC(!1),NC],GC.br()),_C([xC(!0),SC(!1)],GC.block()),_C([xC(!0),SC(!0),NC],GC.block()),_C([xC(!0),SC(!0)],GC.br()),_C([CC(!0),NC],GC.br()),_C([CC(!0)],GC.block()),_C([yC(!0),NC,kC],GC.block()),_C([yC(!0)],GC.br()),_C([EC],GC.br()),_C([yC(!1),NC],GC.br()),_C([kC],GC.block())],[n,!(!r||!r.shiftKey)]).getOr(GC.none()).fold(function(){hC(e,t)},function(){cC(e,t)},oe)}function TC(e){return e.stopImmediatePropagation()}function RC(e){return e.keyCode===$f.PAGE_UP||e.keyCode===$f.PAGE_DOWN}function DC(e,t,n){n&&!e.get()?t.on("NodeChange",TC,!0):!n&&e.get()&&t.off("NodeChange",TC),e.set(n)}function OC(n,r){var e=r.container(),t=r.offset();return qn(e)?(e.insertData(t,n),he.some(bs(e,t+n.length))):gc(r).map(function(e){var t=Et.fromText(n);return(r.isAtEnd()?qt:Vt)(e,t),bs(t.dom,n.length)})}function BC(i,a){return function(e){return r=i,(!Lm(o=e)&&(n=o,df((t=r).dom,n).isNone()||ff(t.dom,n).isNone()||sp(t,n)||cp(t,n)||Rm(t,n)||Tm(t,n)||Bm(r,o)||Pm(r,o))?ZC:e1)(a);var t,n,r,o}}function PC(e){var t,n,r=bs.fromRangeStart(e.selection.getRng()),o=Et.fromDom(e.getBody());if(e.selection.isCollapsed()){var i=A(rb,e),a=bs.fromRangeStart(e.selection.getRng());return Zb(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return df(n.dom,bs.before(e))},function(e){return mf(e)},function(e){return gf(e)},function(e){return ff(n.dom,bs.after(e))})})).bind(BC(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1}function LC(e){var o,i,a,u,s,t,n,r,c,l,f,d,m,g,p=u0(e);return e.on("keyup compositionstart",A(A0,e)),g=p,(m=e).on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=m,n=g,r=e,o=ft().os,U0([{keyCode:$f.RIGHT,action:F0(R0,t,!0)},{keyCode:$f.LEFT,action:F0(R0,t,!1)},{keyCode:$f.UP,action:F0(D0,t,!1)},{keyCode:$f.DOWN,action:F0(D0,t,!0)},{keyCode:$f.RIGHT,action:F0(Y0,t,!0)},{keyCode:$f.LEFT,action:F0(Y0,t,!1)},{keyCode:$f.UP,action:F0(G0,t,!1)},{keyCode:$f.DOWN,action:F0(G0,t,!0)},{keyCode:$f.RIGHT,action:F0(z0,t,!0)},{keyCode:$f.LEFT,action:F0(z0,t,!1)},{keyCode:$f.UP,action:F0(j0,t,!1)},{keyCode:$f.DOWN,action:F0(j0,t,!0)},{keyCode:$f.RIGHT,action:F0(i0,t,n,!0)},{keyCode:$f.LEFT,action:F0(i0,t,n,!1)},{keyCode:$f.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:F0(jC,t,n)},{keyCode:$f.LEFT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:F0(HC,t,n)},{keyCode:$f.UP,action:F0(M0,t,!1)},{keyCode:$f.DOWN,action:F0(M0,t,!0)}],r).each(function(e){r.preventDefault()}))}),d=p,(f=e).on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(n=d,r=e,U0([{keyCode:$f.BACKSPACE,action:F0(x0,t=f,!1)},{keyCode:$f.BACKSPACE,action:F0(Lb,t,!1)},{keyCode:$f.DELETE,action:F0(Lb,t,!0)},{keyCode:$f.BACKSPACE,action:F0(Tb,t,!1)},{keyCode:$f.DELETE,action:F0(Tb,t,!0)},{keyCode:$f.BACKSPACE,action:F0(f0,t,n,!1)},{keyCode:$f.DELETE,action:F0(f0,t,n,!0)},{keyCode:$f.BACKSPACE,action:F0(xg,t,!1)},{keyCode:$f.DELETE,action:F0(xg,t,!0)},{keyCode:$f.BACKSPACE,action:F0(Ib,t,!1)},{keyCode:$f.DELETE,action:F0(Ib,t,!0)},{keyCode:$f.BACKSPACE,action:F0(h0,t,!1)},{keyCode:$f.DELETE,action:F0(h0,t,!0)},{keyCode:$f.BACKSPACE,action:F0(wb,t,!1)},{keyCode:$f.DELETE,action:F0(wb,t,!0)},{keyCode:$f.BACKSPACE,action:F0(bb,t,!1)},{keyCode:$f.DELETE,action:F0(bb,t,!0)},{keyCode:$f.BACKSPACE,action:F0(g0,t,!1)},{keyCode:$f.DELETE,action:F0(g0,t,!0)}],r).each(function(e){r.preventDefault()}))}),f.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(n=e,U0([{keyCode:$f.BACKSPACE,action:F0(Pb,t=f)},{keyCode:$f.DELETE,action:F0(Pb,t)}],n))}),(l=e).on("keydown",function(e){var t,n,r;e.keyCode===$f.ENTER&&(t=l,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),AC(t,n)})))}),(c=e).on("keydown",function(e){var t;!1===e.isDefaultPrevented()&&(t=e,U0([{keyCode:$f.SPACEBAR,action:F0(PC,c)}],t).each(function(e){t.preventDefault()}))}),n=t=e,r=xu(function(){n.composing||Hm(n)},0),JC.isIE()&&(n.on("keypress",function(e){r.throttle()}),n.on("remove",function(e){r.cancel()})),t.on("input",function(e){!1===e.isComposing&&Hm(t)}),s=p,(u=e).on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(n=s,r=e,U0([{keyCode:$f.END,action:F0(O0,t=u,!0)},{keyCode:$f.HOME,action:F0(O0,t,!1)},{keyCode:$f.END,action:F0(H0,t,!0)},{keyCode:$f.HOME,action:F0(H0,t,!1)},{keyCode:$f.END,action:F0(s0,t,!0,n)},{keyCode:$f.HOME,action:F0(s0,t,!1,n)}],r).each(function(e){r.preventDefault()}))}),o=e,i=p,QC.os.isOSX()||(a=pu(!1),o.on("keydown",function(e){RC(e)&&DC(a,o,!0)}),o.on("keyup",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(r=e,U0([{keyCode:$f.PAGE_UP,action:F0(s0,t=o,!1,n=i)},{keyCode:$f.PAGE_DOWN,action:F0(s0,t,!0,n)}],r)),RC(e)&&a.get()&&(DC(a,o,!1),o.nodeChanged())})),p}(Iy=Ly=Ly||{})[Iy.Up=-1]="Up",Iy[Iy.Down=1]="Down";var IC=A(jy,Ly.Up,ju,Hu),MC=A(jy,Ly.Down,Hu,ju),FC=Jn,UC=ic,zC=function(e,t){var n=e.selection.getRng(),r=e.getBody();if(t){var o=bs.fromRangeEnd(n),i=Fy(r,o);return Y(i.positions)}return o=bs.fromRangeStart(n),W((i=My(r,o)).positions)},jC=A(a0,!0),HC=A(a0,!1),VC=function(e){return U(R(e.selection.getSelectedBlocks(),Et.fromDom),function(e){return!C0(e)&&!Dt(e).exists(C0)&&vr(e,function(e){return Gn(e.dom)||Jn(e.dom)}).exists(function(e){return Gn(e.dom)})})},qC=Jn,$C=A(V0,function(e){return e.bottom},function(e,t){return e.y<t}),WC=A(V0,function(e){return e.top},function(e,t){return e.y>t}),KC=A(q0,My),XC=A(q0,Fy),YC=function(e,t){return n=bs.after(t),!!Xn(n.getNode())||ff(e,bs.after(t)).map(function(e){return Xn(e.getNode())}).getOr(!1);var n},GC=ar([{br:[]},{block:[]},{none:[]}]),JC=ft().browser,QC=ft(),ZC=A(OC,Do),e1=A(OC," "),t1=(n1.prototype.nodeChanged=function(e){var t,n,r,o=this.editor.selection;this.editor.initialized&&o&&!this.editor.getParam("disable_nodechange")&&!this.editor.mode.isReadOnly()&&(r=this.editor.getBody(),(t=o.getStart(!0)||r).ownerDocument===this.editor.getDoc()&&this.editor.dom.isChildOf(t,r)||(t=r),n=[],this.editor.dom.getParent(t,function(e){return e===r||void n.push(e)}),(e=e||{}).element=t,e.parents=n,this.editor.fire("NodeChange",e))},n1.prototype.isSameElementPath=function(e){var t,n=this.editor.$(e).parentsUntil(this.editor.getBody()).add(e);if(n.length===this.lastPath.length){for(t=n.length;0<=t&&n[t]===this.lastPath[t];t--);if(-1===t)return this.lastPath=n,!0}return this.lastPath=n,!1},n1);function n1(r){var o;this.lastPath=[],this.editor=r;var t=this;"onselectionchange"in r.getDoc()||r.on("NodeChange click mouseup keyup focus",function(e){var t=r.selection.getRng(),n={startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset};"nodechange"!==e.type&&Lf(n,o)||r.fire("SelectionChange"),o=n}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!e||!Ct.range&&r.selection.isCollapsed()||Vl(r)&&!t.isSameElementPath(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("mouseup",function(e){!e.isDefaultPrevented()&&Vl(r)&&("IMG"===r.selection.getNode().nodeName?Ur.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())})}function r1(e){return Hn(e)&&Eo(Et.fromDom(e))}function o1(e){var t=e.getBoundingClientRect(),n=e.ownerDocument,r=n.documentElement,o=n.defaultView;return{top:t.top+o.pageYOffset-r.clientTop,left:t.left+o.pageXOffset-r.clientLeft}}function i1(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function a1(e,S){var E=Ur.throttle(function(e,t){S._selectionOverrides.hideFakeCaret(),S.selection.placeCaretAt(e,t)},0);return S.on("remove",E.stop),function(x){return e.on(function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,w=Math.max(Math.abs(x.screenX-e.screenX),Math.abs(x.screenY-e.screenY));if(!e.dragging&&10<w){if(S.fire("dragstart",{target:e.element}).isDefaultPrevented())return;e.dragging=!0,S.focus()}e.dragging&&(d=e,t={pageX:(p=x,h=(g=S).inline?o1(g.getBody()):{left:0,top:0},C=(y=g).getBody(),v=y.inline?{left:C.scrollLeft,top:C.scrollTop}:{left:0,top:0},(m={pageX:(b=function(e,t){if(t.target.ownerDocument===e.getDoc())return{left:t.pageX,top:t.pageY};var n,r,o,i,a,u=o1(e.getContentAreaContainer()),s=(r=(n=e).getBody(),o=n.getDoc().documentElement,i={left:r.scrollLeft,top:r.scrollTop},a={left:r.scrollLeft||o.scrollLeft,top:r.scrollTop||o.scrollTop},n.inline?i:a);return{left:t.pageX-u.left+s.left,top:t.pageY-u.top+s.top}}(g,p)).left-h.left+v.left,pageY:b.top-h.top+v.top}).pageX-d.relX),pageY:m.pageY+5},l=e.ghost,f=S.getBody(),l.parentNode!==f&&f.appendChild(l),n=e.ghost,o=e.width,i=e.height,a=e.maxX,u=e.maxY,c=s=0,n.style.left=(r=t).pageX+"px",n.style.top=r.pageY+"px",u<r.pageY+i&&(c=r.pageY+i-u),n.style.width=o-(s=a<r.pageX+o?r.pageX+o-a:s)+"px",n.style.height=i-c+"px",E(x.clientX,x.clientY))})}}function u1(e){function t(e){var t,n,r,o,i,a;0===e.button&&(t=I(c.dom.getParents(e.target),function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}}(D1,O1)).getOr(null),i=c.getBody(),D1(a=t)&&a!==i&&(n=c.dom.getPos(t),r=c.getBody(),o=c.getDoc().documentElement,u.set({element:t,dragging:!1,screenX:e.screenX,screenY:e.screenY,maxX:(c.inline?r.scrollWidth:o.offsetWidth)-2,maxY:(c.inline?r.scrollHeight:o.offsetHeight)-2,relX:e.pageX-n.x,relY:e.pageY-n.y,width:t.offsetWidth,height:t.offsetHeight,ghost:function(e,t,n){var r=c.dom,o=e.cloneNode(!0);r.setStyles(o,{width:t,height:n}),r.setAttrib(o,"data-mce-selected",null);var i=r.create("div",{class:"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return r.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:t,height:n}),r.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(t,t.offsetWidth,t.offsetHeight)})))}function n(u){i.on(function(e){var t,n,r,o,i,a;e.dragging&&((o=3===(a=(r=s).selection.getSel().getRangeAt(0).startContainer).nodeType?a.parentNode:a)===(i=e.element)||r.dom.isChildOf(o,i)||D1(o)||((n=e.element.cloneNode(!0)).removeAttribute("data-mce-selected"),t=n,s.fire("drop",{clientX:u.clientX,clientY:u.clientY}).isDefaultPrevented()||s.undoManager.transact(function(){i1(e.element),s.insertContent(s.dom.getOuterHTML(t)),s._selectionOverrides.hideFakeCaret()})))}),B1(i)}var r,o,i,s,u,c,a=wu(),l=cu.DOM,f=document,d=a1(u=a,c=e),m=(r=i=a,function(){r.on(function(e){e.dragging&&o.fire("dragend")}),B1(r)});(o=s=e).on("mousedown",t),e.on("mousemove",d),e.on("mouseup",n),l.bind(f,"mousemove",d),l.bind(f,"mouseup",m),e.on("remove",function(){l.unbind(f,"mousemove",d),l.unbind(f,"mouseup",m)})}function s1(e){var n,i;function a(e){var t;e.isDefaultPrevented()||(t=e.dataTransfer)&&(ie(t.types,"Files")||0<t.files.length)&&(e.preventDefault(),"drop"===e.type&&Mv(i,"Dropped file type is not supported"))}function u(e){Ed(i,e.target)&&a(e)}function t(){var t=cu.DOM,n=i.dom,r=document,o=i.inline?i.getBody():i.getDoc(),e=["drop","dragover"];X(e,function(e){t.bind(r,e,u),n.bind(o,e,a)}),i.on("remove",function(){X(e,function(e){t.unbind(r,e,u),n.unbind(o,e,a)})})}u1(e),(n=e).on("drop",function(e){var t=void 0!==e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;!D1(t)&&"false"!==n.dom.getContentEditableParent(t)||e.preventDefault()}),e.getParam("block_unsupported_drop",!0,"boolean")&&(i=e).on("init",function(){Ur.setEditorTimeout(i,t,0)})}function c1(e,t){return _f(e.getBody(),t)}function l1(l){function f(e){return e!==v&&(L1(e)||Zn(e))&&h.isChildOf(e,v)}function i(e){e&&p.setRng(e)}function d(e,t,n,r){return void 0===r&&(r=!0),l.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&p.scrollIntoView(t,-1===e),s.show(n,t))}function t(e){return Xr(e)||Mo(e)||Fo(e)}function m(e){return t(e.startContainer)||t(e.endContainer)}function c(e,t){if(!e)return null;if(e.collapsed){if(!m(e)){var n=t?1:-1,r=mc(n,v,e),o=r.getNode(!t);if(rc(o))return d(n,o,!!t&&!r.isAtEnd(),!1);var i=r.getNode(t);if(rc(i))return d(n,i,!t&&!r.isAtEnd(),!1)}return null}var a=e.startContainer,u=e.startOffset,s=e.endOffset;if(3===a.nodeType&&0===u&&L1(a.parentNode)&&(a=a.parentNode,u=h.nodeIndex(a),a=a.parentNode),1!==a.nodeType)return null;if(s===u+1&&a===e.endContainer){var c=a.childNodes[u];if(f(c))return function(e){var t=e.cloneNode(!0),n=l.fire("ObjectSelected",{target:e,targetClone:t});if(n.isDefaultPrevented())return null;var r=function(e,t,n){var r=l.$,o=yr(Et.fromDom(l.getBody()),"#"+b).fold(function(){return r([])},function(e){return r([e.dom])});0===o.length&&(o=r('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",b)).appendTo(l.getBody());var i=h.createRng();t===n&&Ct.ie?(o.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(t),i.setStartAfter(o[0].firstChild.firstChild),i.setEndAfter(t)):(o.empty().append(Do).append(t).append(Do),i.setStart(o[0].firstChild,1),i.setEnd(o[0].lastChild,0)),o.css({top:h.getPos(e,l.getBody()).y}),o[0].focus();var a=p.getSel();return a.removeAllRanges(),a.addRange(i),i}(e,n.targetClone,t),o=Et.fromDom(e);return X(Au(Et.fromDom(l.getBody()),"*[data-mce-selected]"),function(e){je(o,e)||bn(e,y)}),h.getAttrib(e,y)||e.setAttribute(y,"1"),g=e,C(),r}(c)}return null}function a(){g&&g.removeAttribute(y),yr(Et.fromDom(l.getBody()),"#"+b).each(Mn),g=null}var g,n,e,o,p=l.selection,h=l.dom,u=h.isBlock,v=l.getBody(),s=tc(l,v,u,function(){return Td(l)}),b="sel-"+h.uniqueId(),y="data-mce-selected",r=p.getRng,C=function(){s.hide()};return Ct.ceFalse&&!bh(l)&&(l.on("mouseup",function(e){var t=r();t.collapsed&&lv(l,e.clientX,e.clientY)&&Eb(l,t,!1).each(i)}),l.on("click",function(e){var t=c1(l,e.target);t&&(L1(t)&&(e.preventDefault(),l.focus()),P1(t)&&h.isChildOf(t,p.getNode())&&a())}),l.on("blur NewBlock",a),l.on("ResizeWindow FullscreenStateChanged",s.reposition),l.on("tap",function(e){var t=e.target,n=c1(l,t);L1(n)?(e.preventDefault(),Sb(l,n).each(c)):f(t)&&Sb(l,t).each(c)},!0),l.on("mousedown",function(e){var t,n,r,o=e.target;o!==v&&"HTML"!==o.nodeName&&!h.isChildOf(o,v)||!1===lv(l,e.clientX,e.clientY)||((t=c1(l,o))?L1(t)?(e.preventDefault(),Sb(l,t).each(c)):(a(),P1(t)&&e.shiftKey||Af(e.clientX,e.clientY,p.getRng())||(C(),p.placeCaretAt(e.clientX,e.clientY))):f(o)?Sb(l,o).each(c):!1===rc(o)&&(a(),C(),(n=Gy(v,e.clientX,e.clientY))&&(w(o,n.node)||(e.preventDefault(),r=d(1,n.node,n.before,!1),l.getBody().focus(),i(r)))))}),l.on("keypress",function(e){$f.modifierPressed(e)||L1(p.getNode())&&e.preventDefault()}),l.on("GetSelectionRange",function(e){var t=e.range;g&&(g.parentNode?((t=t.cloneRange()).selectNode(g),e.range=t):g=null)}),l.on("SetSelectionRange",function(e){var t,n,r,o,i,a,u;e.range=(t=e.range,n=l.schema.getShortEndedElements(),r=h.createRng(),o=t.startContainer,i=t.startOffset,a=t.endContainer,u=t.endOffset,Ee(n,o.nodeName.toLowerCase())?0===i?r.setStartBefore(o):r.setStartAfter(o):r.setStart(o,i),Ee(n,a.nodeName.toLowerCase())?0===u?r.setEndBefore(a):r.setEndAfter(a):r.setEnd(a,u),r);var s=c(e.range,e.forward);s&&(e.range=s)}),l.on("AfterSetSelectionRange",function(e){var t=e.range,n=t.startContainer.parentNode;m(t)||"mcepastebin"===n.id||C(),h.hasClass(n,"mce-offscreen-selection")||a()}),l.on("copy",function(e){var t,n,r=e.clipboardData;e.isDefaultPrevented()||!e.clipboardData||Ct.ie||(t=(n=h.get(b))&&n.getElementsByTagName("*")[0])&&(e.preventDefault(),r.clearData(),r.setData("text/html",t.outerHTML),r.setData("text/plain",t.outerText||t.innerText))}),s1(l),e=xu(function(){var e,t;n.removed||!n.getBody().contains(document.activeElement)||(e=n.selection.getRng()).collapsed&&(t=Nb(n,e,!1),n.selection.setRng(t))},0),(n=l).on("focus",function(){e.throttle()}),n.on("blur",function(){e.cancel()}),(o=l).on("init",function(){o.on("focusin",function(e){var t,n,r=e.target;Zn(r)&&(t=_f(o.getBody(),r),n=Jn(t)?t:r,o.selection.getNode()!==n&&Sb(o,n).each(function(e){return o.selection.setRng(e)}))})})),{showCaret:d,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Qr(e),i(r()),p.scrollIntoView(e))},hideFakeCaret:C,destroy:function(){s.destroy(),g=null}};function w(e,t){var n,r=h.getParent(e,u),o=h.getParent(t,u);return r&&e!==o&&h.isChildOf(r,o)&&!1===L1(c1(l,r))||r&&(n=o,h.getParent(r,u)!==h.getParent(n,u))&&function(e){var t=Wc(e);if(e.firstChild){var n,r=bs.before(e.firstChild),o=t.next(r);return o&&!(ap(n=o)||up(n)||np(n)||rp(n))}}(r)}}function f1(a){function e(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(e){}}function u(e){return e.isDefaultPrevented()}function t(){a.shortcuts.add("meta+a",null,"SelectAll")}function n(){a.inline||b.bind(a.getDoc(),"mousedown mouseup",function(e){var t;e.target===a.getDoc().documentElement&&(t=y.getRng(),a.getBody().focus(),"mousedown"===e.type?Xr(t.startContainer)||y.placeCaretAt(e.clientX,e.clientY):y.setRng(t))})}function r(){Range.prototype.getClientRects||a.on("mousedown",function(e){var t;u(e)||"HTML"!==e.target.nodeName||((t=a.getBody()).blur(),Ur.setEditorTimeout(a,function(){t.focus()}))})}function o(){a.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==b.getContentEditableParent(t)&&(e.preventDefault(),a.selection.select(t),a.nodeChanged()),"A"===t.nodeName&&b.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),y.select(t))})}function i(){a.on("keydown",function(e){if(!u(e)&&e.keyCode===h&&y.isCollapsed()&&0===y.getRng().startOffset){var t=y.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function s(){a.getParam("readonly")||a.on("BeforeExecCommand mousedown",function(){e("StyleWithCSS",!1),e("enableInlineTableEditing",!1),Vs(a)||e("enableObjectResizing",!1)})}function c(){a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function l(){a.inline||a.on("keydown",function(){document.activeElement===document.body&&a.getWin().focus()})}function f(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){var t;"HTML"===e.target.nodeName&&(11<Ct.ie?a.getBody().focus():(t=a.selection.getRng(),a.getBody().focus(),a.selection.setRng(t),a.selection.normalize(),a.nodeChanged()))}))}function d(){Ct.mac&&a.on("keydown",function(e){!$f.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),a.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))})}function m(){a.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function g(){a.on("init",function(){a.dom.bind(a.getBody(),"submit",function(e){e.preventDefault()})})}var p=St.each,h=$f.BACKSPACE,v=$f.DELETE,b=a.dom,y=a.selection,C=a.parser,w=Ct.gecko,x=Ct.ie,S=Ct.webkit,E="data:text/mce-internal,",N=x?"Text":"URL",k=oe;return bh(a)?(S&&(n(),o(),g(),t(),Ct.iOS&&(l(),f(),m())),w&&(r(),s(),c(),d())):(a.on("keydown",function(e){if(!u(e)&&e.keyCode===$f.BACKSPACE){var t,n=(t=y.getRng()).startContainer,r=t.startOffset,o=b.getRoot(),i=n;if(t.collapsed&&0===r){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(a.formatter.toggle("blockquote",null,i),(t=b.createRng()).setStart(n,0),t.setEnd(n,0),y.setRng(t))}}}),a.on("keydown",function(e){var t,n,r,o,i=e.keyCode;u(e)||i!==v&&i!==h||(t=a.selection.isCollapsed(),n=a.getBody(),t&&!b.isEmpty(n)||!t&&(r=T(a.selection.getRng()),(o=b.createRng()).selectNode(a.getBody()),r!==T(o))||(e.preventDefault(),a.setContent(""),n.firstChild&&b.isBlock(n.firstChild)?a.selection.setCursorLocation(n.firstChild,0):a.selection.setCursorLocation(n,0),a.nodeChanged()))}),Ct.windowsPhone||a.on("keyup focusin mouseup",function(e){$f.modifierPressed(e)||y.normalize()},!0),S&&(n(),o(),Ls(a)&&a.on("init",function(){e("DefaultParagraphSeparator",Ls(a))}),g(),i(),C.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),Ct.iOS?(l(),f(),m()):t()),11<=Ct.ie&&(f(),i()),Ct.ie&&(t(),e("AutoUrlDetect",!1),a.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(a.selection.isCollapsed()&&"IMG"===t.target.tagName&&y.select(t.target),0<(n=a.selection.getContent()).length&&(r=E+escape(a.id)+","+escape(n),t.dataTransfer.setData(N,r)))}),a.on("drop",function(e){var t,n,r,o;u(e)||(t=e.dataTransfer&&(o=e.dataTransfer.getData(N))&&0<=o.indexOf(E)?(o=o.substr(E.length).split(","),{id:unescape(o[0]),html:unescape(o[1])}):null)&&t.id!==a.id&&(e.preventDefault(),n=Pf(e.x,e.y,a.getDoc()),y.setRng(n),r=t.html,a.queryCommandSupported("mceInsertClipboardContent")?a.execCommand("mceInsertClipboardContent",!1,{content:r,internal:!0}):a.execCommand("mceInsertContent",!1,r))})),w&&(a.on("keydown",function(e){if(!u(e)&&e.keyCode===h&&a.getBody().getElementsByTagName("hr").length&&y.isCollapsed()&&0===y.getRng().startOffset){var t=y.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return b.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(b.remove(n),e.preventDefault())}}),r(),a.on("keypress",function(e){var t;if(!u(e)&&(8===e.keyCode||46===e.keyCode)&&A())return t=_(),a.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),b.bind(a.getDoc(),"cut",function(e){var t;!u(e)&&A()&&(t=_(),Ur.setEditorTimeout(a,function(){t()}))}),s(),a.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||p(b.select("a"),function(e){var t=e.parentNode,n=b.getRoot();if(t.lastChild===e){for(;t&&!b.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}b.add(t,"br",{"data-mce-bogus":1})}})}),c(),d(),i())),{refreshContentEditable:k,isHidden:function(){if(!w||a.removed)return!1;var e=a.selection.getSel();return!e||!e.rangeCount||0===e.rangeCount}};function _(){var e=b.getAttribs(y.getStart().cloneNode(!1));return function(){var t=y.getStart();t!==a.getBody()&&(b.setAttrib(t,"style",null),p(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function A(){return!y.isCollapsed()&&b.getParent(y.getStart(),b.isBlock)!==b.getParent(y.getEnd(),b.isBlock)}function T(e){var t=b.create("body"),n=e.cloneContents();return t.appendChild(n),y.serializer.serialize(t,{format:"html"})}}function d1(e){return ne(e,function(e){return!1===b(e)})}function m1(e){var t=e.settings,n=e.editorUpload.blobCache;return d1({allow_conditional_comments:t.allow_conditional_comments,allow_html_data_urls:t.allow_html_data_urls,allow_svg_data_urls:t.allow_svg_data_urls,allow_html_in_named_anchor:t.allow_html_in_named_anchor,allow_script_urls:t.allow_script_urls,allow_unsafe_link_target:t.allow_unsafe_link_target,convert_fonts_to_spans:t.convert_fonts_to_spans,fix_list_elements:t.fix_list_elements,font_size_legacy_values:t.font_size_legacy_values,forced_root_block:t.forced_root_block,forced_root_block_attrs:t.forced_root_block_attrs,padd_empty_with_br:t.padd_empty_with_br,preserve_cdata:t.preserve_cdata,remove_trailing_brs:t.remove_trailing_brs,inline_styles:t.inline_styles,root_name:e.inline?e.getElement().nodeName.toLowerCase():void 0,validate:!0,blob_cache:n,document:e.getDoc(),images_dataimg_filter:t.images_dataimg_filter})}function g1(e){var t,u,n;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("Init"),e.focus(!0),n=(u=e).dom.getRoot(),u.inline||Vl(u)&&u.selection.getStart(!0)!==n||mf(n).each(function(e){var t,n,r,o,i=e.getNode(),a=sn(i)?mf(i).getOr(e):e;Ct.browser.isIE()?(t=u,n=a.toRange(),r=Et.fromDom(t.getBody()),o=(bd(t)?he.from(n):he.none()).map(yd).filter(vd(r)),t.bookmark=o.isSome()?o:t.bookmark):u.selection.setRng(a.toRange())}),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e).settings.auto_focus&&Ur.setEditorTimeout(t,function(){var e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus);e.destroyed||e.focus()},100)}function p1(e){return(e.inline?e.ui:e.dom).styleSheetLoader}function h1(e){function t(){o.unloadAll(a),e.inline||e.ui.styleSheetLoader.unloadAll(i)}function n(){e.removed?t():e.on("remove",t)}var r,o=p1(e),i=Hs(e),a=e.contentCSS;0<e.contentStyles.length&&(r="",St.each(e.contentStyles,function(e){r+=e+"\r\n"}),e.dom.addStyle(r));var u,s,c,l,f,d,m,g,p,h=_r.all((u=e,s=a,c=i,l=[new _r(function(e,t){return p1(u).loadAll(s,e,t)})],u.inline?l:l.concat([new _r(function(e,t){return u.ui.styleSheetLoader.loadAll(c,e,t)})]))).then(n).catch(n);return e.settings.content_style&&(d=(f=e).settings.content_style,m=Et.fromDom(f.getBody()),g=jt(Ln(m)),gn(p=Et.fromTag("style"),"type","text/css"),In(p,Et.fromText(d)),In(g,p),f.on("remove",function(){Mn(p)})),h}function v1(e){var t;!0!==e.removed&&(bh(t=e)||t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),g1(e))}function b1(t,e){var n=t.settings,r=t.getElement(),o=t.getDoc();n.inline||(t.getElement().style.visibility=t.orgVisibility),e||t.inline||(o.open(),o.write(t.iframeHTML),o.close()),t.inline&&(I1.addClass(r,"mce-content-body"),t.contentDocument=o=document,t.contentWindow=window,t.bodyElement=r,t.contentAreaContainer=r);var u,i,a,s,c,l,f,d,m,g,p,h=t.getBody();h.disabled=!0,t.readonly=!!n.readonly,t.readonly||(t.inline&&"static"===I1.getStyle(h,"position",!0)&&(h.style.position="relative"),h.contentEditable=t.getParam("content_editable_state",!0)),h.disabled=!1,t.editorUpload=Xv(t),t.schema=go(n),t.dom=cu(o,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:n.force_hex_style_colors,update_styles:!0,root_element:t.inline?t.getBody():null,collect:function(){return t.inline},schema:t.schema,contentCssCors:t.getParam("content_css_cors",!1,"boolean"),referrerPolicy:Us(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((i=Gh(m1(u=t),u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o=e.length,i=u.dom,a="data-mce-"+t;o--;)(r=(n=e[o]).attr(t))&&!n.attr(a)&&0!==r.indexOf("data:")&&0!==r.indexOf("blob:")&&("style"===t?((r=i.serializeStyle(i.parseStyle(r),n.name)).length||(r=null),n.attr(a,r),n.attr(t,r)):"tabindex"===t?(n.attr(a,r),n.attr(t,null)):n.attr(a,u.convertURL(r,t,n.name)))}),i.addNodeFilter("script",function(e){for(var t=e.length;t--;){var n=e[t],r=n.attr("type")||"no/type";0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}}),u.settings.preserve_cdata&&i.addNodeFilter("#cdata",function(e){for(var t=e.length;t--;){var n=e[t];n.type=8,n.name="#comment",n.value="[CDATA["+u.dom.encode(n.value)+"]]"}}),i.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,n=u.schema.getNonEmptyElements();t--;){var r=e[t];r.isEmpty(n)&&0===r.getAll("br").length&&(r.append(new Jd("br",1)).shortEnded=!0)}}),i),t.serializer=Zh((a=t.settings,ke(ke({},m1(t)),d1({url_converter:a.url_converter,url_converter_scope:a.url_converter_scope,element_format:a.element_format,entities:a.entities,entity_encoding:a.entity_encoding,indent:a.indent,indent_after:a.indent_after,indent_before:a.indent_before,block_elements:a.block_elements,boolean_attributes:a.boolean_attributes,custom_elements:a.custom_elements,extended_valid_elements:a.extended_valid_elements,invalid_elements:a.invalid_elements,invalid_styles:a.invalid_styles,move_caret_before_on_enter_elements:a.move_caret_before_on_enter_elements,non_empty_elements:a.non_empty_elements,schema:a.schema,self_closing_elements:a.self_closing_elements,short_ended_elements:a.short_ended_elements,special:a.special,text_block_elements:a.text_block_elements,text_inline_elements:a.text_inline_elements,valid_children:a.valid_children,valid_classes:a.valid_classes,valid_elements:a.valid_elements,valid_styles:a.valid_styles,verify_html:a.verify_html,whitespace_elements:a.whitespace_elements}))),t),t.selection=zh(t.dom,t.getWin(),t.serializer,t),t.annotator=Yl(t),t.formatter=Qv(t),t.undoManager=eb(t),t._nodeChangeDispatcher=new t1(t),t._selectionOverrides=l1(t),d=t,m=wu(),g=pu(!1),p=Su(function(e){d.fire("longpress",ke(ke({},e),{type:"longpress"})),g.set(!0)},400),d.on("touchstart",function(n){E0(n).each(function(e){p.cancel();var t={x:e.clientX,y:e.clientY,target:n.target};p.throttle(n),g.set(!1),m.set(t)})},!0),d.on("touchmove",function(e){p.cancel(),E0(e).each(function(i){m.on(function(e){var t=i,n=e,r=Math.abs(t.clientX-n.x),o=Math.abs(t.clientY-n.y);(5<r||5<o)&&(m.clear(),g.set(!1),d.fire("longpresscancel"))})})},!0),d.on("touchend touchcancel",function(t){p.cancel(),"touchcancel"!==t.type&&m.get().filter(function(e){return e.target.isEqualNode(t.target)}).each(function(){g.get()?t.preventDefault():d.fire("tap",ke(ke({},t),{type:"tap"}))})},!0),(l=c=t).on("click",function(e){l.dom.getParent(e.target,"details")&&e.preventDefault()}),(f=c).parser.addNodeFilter("details",function(e){X(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),f.serializer.addNodeFilter("details",function(e){X(e,function(e){var t=e.attr("data-mce-open");e.attr("open",K(t)?t:null),e.attr("data-mce-open",null)})}),bh(t)||(s=t).on("click",function(e){var t,n,r,o,i;3<=e.detail&&(r=(t=s).selection.getRng(),o=bs.fromRangeStart(r),i=bs.fromRangeEnd(r),!bs.isElementPosition(o)||r1(n=o.container())&&mf(n).each(function(e){return r.setStart(e.container(),e.offset())}),!bs.isElementPosition(i)||r1(n=o.container())&&gf(n).each(function(e){return r.setEnd(e.container(),e.offset())}),t.selection.setRng(Sg(r)))});var v,b,y,C,w,x,S,E,N,k=bh(v=t)?pu(null):LC(v);N=k,(E=t).addCommand("delete",function(){var e,t=N;x0(e=E)||Lb(e,!1)||Tb(e,!1)||f0(e,t,!1)||bb(e,!1)||xg(e)||Ib(e,!1)||h0(e,!1)||wb(e)||g0(e,!1)||(S0(e,"Delete"),sb(e))}),E.addCommand("forwardDelete",function(){var e,t=N;Lb(e=E,!0)||Tb(e,!0)||f0(e,t,!0)||bb(e,!0)||xg(e)||Ib(e,!0)||h0(e,!0)||wb(e)||g0(e,!0)||S0(e,"ForwardDelete")}),Ls(b=t)&&b.on("NodeChange",A(k0,b)),C=(y=t).dom,w=Ls(y),x=y.getParam("placeholder",kc.getAttrib(y.getElement(),"placeholder"),"string"),S=function(e,t){var n,r,o;!function(e){if(tb(e)){var t=e.keyCode;return!nb(e)&&($f.metaKeyPressed(e)||e.altKey||112<=t&&t<=123||ie(gy,t))}}(e)&&(n=y.getBody(),r=!(tb(o=e)&&!(nb(o)||"keyup"===o.type&&229===o.keyCode))&&function(e,t,n){if(oo(Et.fromDom(t),!1)){var r=""===n,o=t.firstElementChild;return!o||!e.getStyle(t.firstElementChild,"padding-left")&&!e.getStyle(t.firstElementChild,"padding-right")&&(r?!e.isBlock(o):n===o.nodeName.toLowerCase())}return!1}(C,n,w),""!==C.getAttrib(n,py)===r&&!t||(C.setAttrib(n,py,r?x:null),C.setAttrib(n,"aria-placeholder",r?x:null),y.fire("PlaceholderToggle",{state:r}),y.on(r?"keydown":"keyup",S),y.off(r?"keyup":"keydown",S)))},x&&y.on("init",function(e){S(e,!0),y.on("change SetContent ExecCommand",S),y.on("paste",function(e){return Ur.setEditorTimeout(y,function(){return S(e)})})});var _=yh(t);(function(t){var e=t.settings,n=t.getDoc(),r=t.getBody();t.fire("PreInit"),e.browser_spellcheck||e.gecko_spellcheck||(n.body.spellcheck=!1,I1.setAttrib(r,"spellcheck","false")),t.quirks=f1(t),t.fire("PostRender");var o=t.getParam("directionality",yu.isRtl()?"rtl":void 0);void 0!==o&&(r.dir=o),e.protect&&t.on("BeforeSetContent",function(t){St.each(e.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type})})(t),_.fold(function(){h1(t).then(function(){return v1(t)})},function(e){t.setProgressState(!0),h1(t).then(function(){e().then(function(e){t.setProgressState(!1),v1(t)},function(e){t.notificationManager.open({type:"error",text:String(e)}),v1(t)})})})}function y1(e,t){var n,r,o,i,a=e.translate(e.getParam("iframe_aria_text","Rich Text Area. Press ALT-0 for help.","string")),u=(n=e.id,r=a,t.height,o=e.getParam("iframe_attrs",{}),pn(i=Et.fromTag("iframe"),o),pn(i,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),ku(i,"tox-edit-area__iframe"),i.dom);u.onload=function(){u.onload=null,e.fire("load")};var s=function(e,t){if(document.domain!==window.location.hostname&&Ct.browser.isIE()){var n=Vv("mce");e[n]=function(){b1(e)};var r='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return M1.setAttrib(t,"src",r),!0}return!1}(e,u);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=u,e.iframeHTML=function(e){var t=e.getParam("doctype","<!DOCTYPE html>")+"<html><head>";e.getParam("document_base_url","")!==e.documentBaseUrl&&(t+='<base href="'+e.documentBaseURI.getURI()+'" />'),t+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';var n=Bs(e,"body_id","tinymce"),r=Bs(e,"body_class","");return Ps(e)&&(t+='<meta http-equiv="Content-Security-Policy" content="'+Ps(e)+'" />'),t+('</head><body id="'+n+'" class="mce-content-body '+r+'" data-id="'+e.id)+'"><br></body></html>'}(e),M1.add(t.iframeContainer,u),s}function C1(e){return e.replace(/^\-/,"")}function w1(e){return{editorContainer:e,iframeContainer:e,api:{}}}function x1(e){var t,n,r,o,i,a,u,s=e.getElement();return e.orgDisplay=s.style.display,K($s(e))?e.theme.renderUI():y($s(e))?(n=(t=e).getElement(),(r=$s(t)(t,n)).editorContainer.nodeType&&(r.editorContainer.id=r.editorContainer.id||t.id+"_parent"),r.iframeContainer&&r.iframeContainer.nodeType&&(r.iframeContainer.id=r.iframeContainer.id||t.id+"_iframecontainer"),r.height=r.iframeHeight||n.offsetHeight,r):(u=(o=e).getElement(),o.inline?w1(null):(i=u,a=F1.create("div"),F1.insertAfter(a,i),w1(a)))}function S1(e){var n,t,r,o,i,a,u,s;e.fire("ScriptsLoaded"),n=e,t=St.trim(Fs(n)),r=n.ui.registry.getAll().icons,Q(ke(ke({},Av.get("default").icons),Av.get(t).icons),function(e,t){Ee(r,t)||n.ui.registry.addIcon(t,e)}),a=$s(o=e),K(a)?(o.settings.theme=C1(a),i=Pv.get(a),o.theme=new i(o,Pv.urls[a]),o.theme.init&&o.theme.init(o,Pv.urls[a]||o.documentBaseUrl.replace(/\/$/,""),o.$)):o.theme={},s=[],St.each(Ks(u=e).split(/[ ,]/),function(e){U1(u,s,C1(e))});var c=x1(e),l=e,f=he.from(c.api).getOr({}),d={show:he.from(f.show).getOr(oe),hide:he.from(f.hide).getOr(oe),disable:he.from(f.disable).getOr(oe),isDisabled:he.from(f.isDisabled).getOr(T),enable:function(){l.mode.isReadOnly()||he.from(f.enable).map(w)}};l.ui=ke(ke({},l.ui),d);var m,g,p,h={editorContainer:c.editorContainer,iframeContainer:c.iframeContainer};return e.editorContainer=h.editorContainer||null,jv(e),e.inline?b1(e):(p=y1(m=e,g=h),g.editorContainer&&(M1.get(g.editorContainer).style.display=m.orgDisplay,m.hidden=M1.isHidden(g.editorContainer)),m.getElement().style.display="none",M1.setAttrib(m.id,"aria-hidden","true"),void(p||b1(m)))}function E1(e){return"-"===e.charAt(0)}function N1(t,e,n){return he.from(e).filter(function(e){return 0<e.length&&!Av.has(e)}).map(function(e){return{url:t.editorManager.baseURL+"/icons/"+e+"/icons"+n+".js",name:he.some(e)}})}function k1(c,l){var e,t,f=mu.ScriptLoader,n=f,r=l,o=function(){var r,o,t,n,e,i,a,u,s;e=f,u=zs(i=c),s=i.getParam("language_url","","string"),!1===yu.hasCode(u)&&"en"!==u&&(a=""!==s?s:i.editorManager.baseURL+"/langs/"+u+".js",e.add(a,oe,void 0,function(){Fv(i,"LanguageLoadError",Uv("language",a,u))})),t=f,X(function(e){for(var t=[],n=function(e){t.push(e)},r=0;r<e.length;r++)e[r].each(n);return t}([N1(n=c,"default",l),he.from(n.getParam("icons_url","","string")).filter(function(e){return 0<e.length}).map(function(e){return{url:e,name:he.none()}}).orThunk(function(){return N1(n,Fs(n),"")})]),function(e){t.add(e.url,oe,void 0,function(){Fv(n,"IconsLoadError",Uv("icons",e.url,e.name.getOrUndefined()))})}),r=c,o=l,St.each(r.getParam("external_plugins"),function(e,t){Bv.load(t,e,oe,void 0,function(){zv(r,e,t)}),r.settings.plugins+=" "+t}),St.each(Ks(r).split(/[ ,]/),function(e){var t,n;(e=St.trim(e))&&!Bv.urls[e]&&(E1(e)?(e=e.substr(1,e.length),t=Bv.dependencies(e),St.each(t,function(e){var t=Bv.createUrl({prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"},e);Bv.load(t.resource,t,oe,void 0,function(){zv(r,t.prefix+t.resource+t.suffix,t.resource)})})):(n={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"},Bv.load(e,n,oe,void 0,function(){zv(r,n.prefix+n.resource+n.suffix,e)})))}),f.loadQueue(function(){c.removed||S1(c)},c,function(){c.removed||S1(c)})},i=$s(e=c);K(i)?(E1(i)||Ee(Pv.urls,i)||((t=e.getParam("theme_url"))?Pv.load(i,e.documentBaseURI.toAbsolute(t)):Pv.load(i,"themes/"+i+"/theme"+r+".js")),n.loadQueue(function(){Pv.waitFor(i,o)})):o()}function _1(a){return function(i,e){return he.from(e).map(Et.fromDom).filter(An).bind(function(e){return n=a,t=i,r=e.dom,Pg(Et.fromDom(r),function(e){return wn(t=e,n).orThunk(function(){return"font"===Nt(t)?ae(j1,n).bind(function(e){return vn(t,e)}):he.none()});var t},function(e){return je(Et.fromDom(t),e)}).or((o=e.dom,he.from(cu.DOM.getStyle(o,a,!0))));var n,t,r,o}).getOr("")}}function A1(e){return mf(e.getBody()).map(function(e){var t=e.container();return qn(t)?t.parentNode:t})}function T1(e,t){return n=e,r=a(he.some,t),o=n,he.from(o.selection.getRng()).bind(function(e){var t=o.getBody();return e.startContainer===t&&0===e.startOffset?he.none():he.from(o.selection.getStart(!0))}).orThunk(A(A1,n)).map(Et.fromDom).filter(An).bind(r);var n,r,o}function R1(e,t){if(/^[0-9.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=St.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),o=St.explode(e.getParam("font_size_classes",""));return o?o[n-1]||t:r[n-1]||t}return t}return t}var D1=Jn,O1=Gn,B1=function(e){e.on(function(e){i1(e.ghost)}),e.clear()},P1=Gn,L1=Jn,I1=cu.DOM,M1=cu.DOM,F1=cu.DOM,U1=function(t,n,r){var o,i,a,u,e=Bv.get(r),s=Bv.urls[r]||t.documentBaseUrl.replace(/\/$/,"");if(r=St.trim(r),e&&-1===St.inArray(n,r)&&(St.each(Bv.dependencies(r),function(e){U1(t,n,e)}),!t.plugins[r]))try{var c=new e(t,s,t.$);(t.plugins[r]=c).init&&(c.init(t,s),n.push(r))}catch(e){i=r,a=e,Tf(o=t,"PluginLoadError",{message:u=yu.translate(["Failed to initialize plugin: {0}",i])}),uy(u,a),Mv(o,u)}},z1=cu.DOM,j1={"font-size":"size","font-family":"face"},H1=_1("font-size"),V1=i(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},_1("font-family")),q1=St.each,$1=St.map,W1=St.inArray,K1=(X1.prototype.execCommand=function(t,n,r,e){var o,i,a=!1,u=this;if(!u.editor.removed){if("mcefocus"!==t.toLowerCase()&&(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?xd(i=u.editor).each(function(e){return i.selection.setRng(e)}):u.editor.focus()),(e=u.editor.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;var s=t.toLowerCase();if(o=u.commands.exec[s])return o(s,n,r),u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(q1(this.editor.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(u.editor.theme&&u.editor.theme.execCommand&&u.editor.theme.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=u.editor.getDoc().execCommand(t,n,r)}catch(e){}return!!a&&(u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},X1.prototype.queryCommandState=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.state[e])return t(e);try{return this.editor.getDoc().queryCommandState(e)}catch(e){}return!1}},X1.prototype.queryCommandValue=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.value[e])return t(e);try{return this.editor.getDoc().queryCommandValue(e)}catch(e){}}},X1.prototype.addCommands=function(e,n){void 0===n&&(n="exec");var r=this;q1(e,function(t,e){q1(e.toLowerCase().split(","),function(e){r.commands[n][e]=t})})},X1.prototype.addCommand=function(e,o,i){var a=this;e=e.toLowerCase(),this.commands.exec[e]=function(e,t,n,r){return o.call(i||a.editor,t,n,r)}},X1.prototype.queryCommandSupported=function(e){if(e=e.toLowerCase(),this.commands.exec[e])return!0;try{return this.editor.getDoc().queryCommandSupported(e)}catch(e){}return!1},X1.prototype.addQueryStateHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.state[e]=function(){return t.call(n||r.editor)}},X1.prototype.addQueryValueHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.value[e]=function(){return t.call(n||r.editor)}},X1.prototype.hasCustomCommand=function(e){return e=e.toLowerCase(),!!this.commands.exec[e]},X1.prototype.execNativeCommand=function(e,t,n){return void 0===t&&(t=!1),void 0===n&&(n=null),this.editor.getDoc().execCommand(e,t,n)},X1.prototype.isFormatMatch=function(e){return this.editor.formatter.match(e)},X1.prototype.toggleFormat=function(e,t){this.editor.formatter.toggle(e,t),this.editor.nodeChanged()},X1.prototype.storeSelection=function(e){this.selectionBookmark=this.editor.selection.getBookmark(e)},X1.prototype.restoreSelection=function(){this.editor.selection.moveToBookmark(this.selectionBookmark)},X1.prototype.setupCommands=function(u){var o=this;function e(r){return function(){var e=u.selection,t=e.isCollapsed()?[u.dom.getParent(e.getNode(),u.dom.isBlock)]:e.getSelectedBlocks(),n=$1(t,function(e){return!!u.formatter.matchNode(e,r)});return-1!==W1(n,!0)}}this.addCommands({"mceResetDesignMode,mceBeginUndoLevel":oe,"mceEndUndoLevel,mceAddUndoLevel":function(){u.undoManager.add()},mceFocus:function(e,t,n){var r,o;o=n,(r=u).removed||(o?Yd:function(t){var e=t.selection,n=t.getBody(),r=e.getRng();t.quirks.refreshContentEditable(),void 0!==t.bookmark&&!1===Td(t)&&xd(t).each(function(e){t.selection.setRng(e),r=e});var o,i,a=(o=t,i=e.getNode(),o.dom.getParent(i,function(e){return"true"===o.dom.getContentEditable(e)}));if(t.$.contains(n,a))return Ad(a),_d(t,r),Yd(t);t.inline||(Ct.opera||Ad(n),t.getWin().focus()),(Ct.gecko||t.inline)&&(Ad(n),_d(t,r)),Yd(t)})(r)},"Cut,Copy,Paste":function(e){var t,n,r=u.getDoc();try{o.execNativeCommand(e)}catch(e){t=!0}!(t="paste"===e&&!r.queryCommandEnabled(e)||t)&&r.queryCommandSupported(e)||(n=u.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."),Ct.mac&&(n=n.replace(/Ctrl\+/g,"\u2318+")),u.notificationManager.open({text:n,type:"error"}))},unlink:function(){var e;u.selection.isCollapsed()?(e=u.dom.getParent(u.selection.getStart(),"a"))&&u.dom.remove(e,!0):u.formatter.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),q1("left,center,right,justify".split(","),function(e){t!==e&&u.formatter.remove("align"+e)}),"none"!==t&&o.toggleFormat("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t;o.execNativeCommand(e);var n=u.dom.getParent(u.selection.getNode(),"ol,ul");n&&(t=n.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(t.nodeName)&&(o.storeSelection(),u.dom.split(t,n),o.restoreSelection()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){o.toggleFormat(e)},"ForeColor,HiliteColor":function(e,t,n){o.toggleFormat(e,{value:n})},FontName:function(e,t,n){var r,o;o=R1(r=u,n),r.formatter.toggle("fontname",{value:R(o.split(/\s*,\s*/),function(e){return-1===e.indexOf(" ")||Ye(e,'"')||Ye(e,"'")?e:"'"+e+"'"}).join(",")}),r.nodeChanged()},FontSize:function(e,t,n){var r;(r=u).formatter.toggle("fontsize",{value:R1(r,n)}),r.nodeChanged()},LineHeight:function(e,t,n){var r;(r=u).formatter.toggle("lineheight",{value:String(n)}),r.nodeChanged()},Lang:function(e,t,n){o.toggleFormat(e,{value:n.code,customValue:n.customCode})},RemoveFormat:function(e){u.formatter.remove(e)},mceBlockQuote:function(){o.toggleFormat("blockquote")},FormatBlock:function(e,t,n){return o.toggleFormat(n||"p")},mceCleanup:function(){var e=u.selection.getBookmark();u.setContent(u.getContent()),u.selection.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||u.selection.getNode();r!==u.getBody()&&(o.storeSelection(),u.dom.remove(r,!0),o.restoreSelection())},mceSelectNodeDepth:function(e,t,n){var r=0;u.dom.getParent(u.selection.getNode(),function(e){if(1===e.nodeType&&r++===n)return u.selection.select(e),!1},u.getBody())},mceSelectNode:function(e,t,n){u.selection.select(n)},mceInsertContent:function(e,t,n){var r,o,i,a;r=u,o=function(e){if("string"==typeof e)return{content:e,details:{}};var t=St.extend({paste:e.paste,data:{paste:e.paste}},e);return{content:e.content,details:t}}(n),i=o.content,a=o.details,Ch(r).editor.insertContent(i,a)},mceInsertRawHTML:function(e,t,n){u.selection.setContent("tiny_mce_marker");var r=u.getContent();u.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceInsertNewLine:function(e,t,n){AC(u,n)},mceToggleFormat:function(e,t,n){o.toggleFormat(n)},mceSetContent:function(e,t,n){u.setContent(n)},"Indent,Outdent":function(e){w0(u,e)},mceRepaint:oe,InsertHorizontalRule:function(){u.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){u.hasVisual=!u.hasVisual,u.addVisual()},mceReplaceContent:function(e,t,n){u.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,u.selection.getContent({format:"text"})))},mceInsertLink:function(e,t,n){"string"==typeof n&&(n={href:n});var r=u.dom.getParent(u.selection.getNode(),"a");n.href=n.href.replace(/ /g,"%20"),r&&n.href||u.formatter.remove("link"),n.href&&u.formatter.apply("link",n,r)},selectAll:function(){var e,t=u.dom.getParent(u.selection.getStart(),Gn);t&&((e=u.dom.createRng()).selectNodeContents(t),u.selection.setRng(e))},mceNewDocument:function(){u.setContent("")},InsertLineBreak:function(e,t,n){return hC(u,n),!0}}),o.addCommands({JustifyLeft:e("alignleft"),JustifyCenter:e("aligncenter"),JustifyRight:e("alignright"),JustifyFull:e("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return o.isFormatMatch(e)},mceBlockQuote:function(){return o.isFormatMatch("blockquote")},Outdent:function(){return y0(u)},"InsertUnorderedList,InsertOrderedList":function(e){var t=u.dom.getParent(u.selection.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),o.addCommands({Undo:function(){u.undoManager.undo()},Redo:function(){u.undoManager.redo()}}),o.addQueryValueHandler("FontName",function(){return T1(t=u,function(e){return V1(t.getBody(),e.dom)}).getOr("");var t},this),o.addQueryValueHandler("FontSize",function(){return T1(t=u,function(e){return H1(t.getBody(),e.dom)}).getOr("");var t},this),o.addQueryValueHandler("LineHeight",function(){return T1(t=u,function(n){var e=Et.fromDom(t.getBody());return Pg(n,function(e){return wn(e,"line-height")},A(je,e)).getOrThunk(function(){var e=parseFloat(Cn(n,"line-height")),t=parseFloat(Cn(n,"font-size"));return String(e/t)})}).getOr("");var t},this)},X1);function X1(e){this.commands={state:{},exec:{},value:{}},this.editor=e,this.setupCommands(e)}function Y1(e,t,n){var r,o,i,a,u,s;_u(e,t)&&!1===n?(o=t,Nu(r=e)?r.dom.classList.remove(o):(u=o,0<(s=U(Eu(a=r,"class"),function(e){return e!==u})).length?gn(a,"class",s.join(" ")):bn(a,"class")),0===(Nu(i=r)?i.dom.classList:Eu(i,"class")).length&&bn(i,"class")):n&&ku(e,t)}function G1(e,t,n){try{e.getDoc().execCommand(t,!1,String(n))}catch(e){}}function J1(e,t){e.dom.contentEditable=t?"true":"false"}function Q1(e,t){var n,r,o=Et.fromDom(e.getBody());Y1(o,"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e._selectionOverrides.hideFakeCaret(),he.from(e.selection.getNode()).each(function(e){e.removeAttribute("data-mce-selected")}),J1(o,!(e.readonly=!0)),X(Au(o,'*[contenteditable="true"]'),function(e){gn(e,tw,"true"),J1(e,!1)})):(J1(o,!(e.readonly=!1)),X(Au(o,"*["+tw+'="true"]'),function(e){bn(e,tw),J1(e,!0)}),G1(e,"StyleWithCSS",!1),G1(e,"enableInlineTableEditing",!1),G1(e,"enableObjectResizing",!1),(Td(n=e)||(r=n,md(Ln(Et.fromDom(r.getElement()))).filter(function(e){return!(void 0!==(t=e.dom.classList)&&(t.contains("tox-edit-area")||t.contains("tox-edit-area__iframe")||t.contains("mce-content-body")))&&Ed(r,e.dom);var t}).isSome()))&&e.focus(),e.selection.setRng(e.selection.getRng()),e.nodeChanged())}function Z1(e){return e.readonly}function ew(t){t.parser.addAttributeFilter("contenteditable",function(e){Z1(t)&&X(e,function(e){e.attr(tw,e.attr("contenteditable")),e.attr("contenteditable","false")})}),t.serializer.addAttributeFilter(tw,function(e){Z1(t)&&X(e,function(e){e.attr("contenteditable",e.attr(tw))})}),t.serializer.addTempAttr(tw)}var tw="data-mce-contenteditable",nw=St.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel"," "),rw=(ow.isNative=function(e){return!!nw[e.toLowerCase()]},ow.prototype.fire=function(e,t){var n=e.toLowerCase(),r=bo(n,t||{},this.scope);this.settings.beforeFire&&this.settings.beforeFire(r);var o=this.bindings[n];if(o)for(var i=0,a=o.length;i<a;i++){var u=o[i];if(!u.removed){if(u.once&&this.off(n,u.func),r.isImmediatePropagationStopped())return r;if(!1===u.func.call(this.scope,r))return r.preventDefault(),r}}return r},ow.prototype.on=function(e,t,n,r){if(t=!1===t?T:t){var o={func:t,removed:!1};r&&St.extend(o,r);for(var i=e.toLowerCase().split(" "),a=i.length;a--;){var u=i[a],s=this.bindings[u];s||(s=[],this.toggleEvent(u,!0)),s=n?_e([o],s):_e(_e([],s),[o]),this.bindings[u]=s}}return this},ow.prototype.off=function(e,t){var n=this;if(e)for(var r=e.toLowerCase().split(" "),o=r.length;o--;){var i,a=r[o],u=this.bindings[a];if(!a)return Q(this.bindings,function(e,t){n.toggleEvent(t,!1),delete n.bindings[t]}),this;u&&(t?(u=(i=O(u,function(e){return e.func===t})).fail,this.bindings[a]=u,X(i.pass,function(e){e.removed=!0})):u.length=0,u.length||(this.toggleEvent(e,!1),delete this.bindings[a]))}else Q(this.bindings,function(e,t){n.toggleEvent(t,!1)}),this.bindings={};return this},ow.prototype.once=function(e,t,n){return this.on(e,t,n,{once:!0})},ow.prototype.has=function(e){return e=e.toLowerCase(),!(!this.bindings[e]||0===this.bindings[e].length)},ow);function ow(e){this.bindings={},this.settings=e||{},this.scope=this.settings.scope||this,this.toggleEvent=this.settings.toggleEvent||T}function iw(n){return n._eventDispatcher||(n._eventDispatcher=new rw({scope:n,toggleEvent:function(e,t){rw.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher}function aw(e,t){if("selectionchange"===t)return e.getDoc();if(!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t))return e.getDoc().documentElement;var n=qs(e);return n?(e.eventRoot||(e.eventRoot=mw.select(n)[0]),e.eventRoot):e.getBody()}function uw(e,t,n){var r,o,i,a;e.hidden||Z1(e)?Z1(e)&&(r=e,"click"!==(o=n).type||$f.metaKeyPressed(o)||(i=Et.fromDom(o.target),a=r,Cr(i,"a",function(e){return je(e,Et.fromDom(a.getBody()))}).bind(function(e){return vn(e,"href")}).each(function(e){var t,n;o.preventDefault(),/^#/.test(e)?(t=r.dom.select(e+',[name="'+(Ye(n=e,"#")?n.substring("#".length):n)+'"]')).length&&r.selection.scrollIntoView(t[0],!0):window.open(e,"_blank","rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes")}))):e.fire(t,n)}function sw(i,a){var e,t;i.delegates||(i.delegates={}),i.delegates[a]||i.removed||(t=aw(i,a),qs(i)?(fw||(fw={},i.editorManager.on("removeEditor",function(){i.editorManager.activeEditor||fw&&(Q(fw,function(e,t){i.dom.unbind(aw(i,t))}),fw=null)})),fw[a]||(fw[a]=e=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();o!==t&&!mw.isChildOf(t,o)||uw(n[r],a,e)}},mw.bind(t,a,e))):(mw.bind(t,a,e=function(e){uw(i,a,e)}),i.delegates[a]=e))}function cw(e,t,n,r){var o=n[t.get()],i=n[r];try{i.activate()}catch(e){return void console.error("problem while activating editor mode "+r+":",e)}o.deactivate(),o.editorReadOnly!==i.editorReadOnly&&Q1(e,i.editorReadOnly),t.set(r),e.fire("SwitchMode",{mode:r})}function lw(e){var t,n={};hw(vw(e.toLowerCase(),"+"),function(e){e in yw?n[e]=!0:/^[0-9]{2,}$/.test(e)?n.keyCode=parseInt(e,10):(n.charCode=e.charCodeAt(0),n.keyCode=bw[e]||e.toUpperCase().charCodeAt(0))});var r=[n.keyCode];for(t in yw)n[t]?r.push(t):n[t]=!1;return n.id=r.join(","),n.access&&(n.alt=!0,Ct.mac?n.ctrl=!0:n.shift=!0),n.meta&&(Ct.mac?n.meta=!0:(n.ctrl=!0,n.meta=!1)),n}var fw,dw={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;var r=iw(this).fire(e,t);if(!1!==n&&this.parent)for(var o=this.parent();o&&!r.isPropagationStopped();)o.fire(e,r,!1),o=o.parent();return r},on:function(e,t,n){return iw(this).on(e,t,n)},off:function(e,t){return iw(this).off(e,t)},once:function(e,t){return iw(this).once(e,t)},hasEventListeners:function(e){return iw(this).has(e)}},mw=cu.DOM,gw=ke(ke({},dw),{bindPendingEventDelegates:function(){var t=this;St.each(t._pendingNativeEvents,function(e){sw(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(n.removed||(t?n.initialized?sw(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(aw(n,e),e,n.delegates[e]),delete n.delegates[e])))},unbindAllNativeEvents:function(){var n=this,e=n.getBody(),t=n.dom;n.delegates&&(Q(n.delegates,function(e,t){n.dom.unbind(aw(n,t),t,e)}),delete n.delegates),!n.inline&&e&&t&&(e.onload=null,t.unbind(n.getWin()),t.unbind(n.getDoc())),t&&(t.unbind(e),t.unbind(n.getContainer()))}}),pw=["design","readonly"],hw=St.each,vw=St.explode,bw={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},yw=St.makeMap("alt,ctrl,shift,meta,access"),Cw=(ww.prototype.add=function(e,n,t,r){var o=this,i=o.normalizeCommandFunc(t);return hw(vw(St.trim(e)),function(e){var t=o.createShortcut(e,n,i,r);o.shortcuts[t.id]=t}),!0},ww.prototype.remove=function(e){var t=this.createShortcut(e);return!!this.shortcuts[t.id]&&(delete this.shortcuts[t.id],!0)},ww.prototype.normalizeCommandFunc=function(e){var t=this,n=e;return"string"==typeof n?function(){t.editor.execCommand(n,!1,null)}:St.isArray(n)?function(){t.editor.execCommand(n[0],n[1],n[2])}:n},ww.prototype.createShortcut=function(e,t,n,r){var o=St.map(vw(e,">"),lw);return o[o.length-1]=St.extend(o[o.length-1],{func:n,scope:r||this.editor}),St.extend(o[0],{desc:this.editor.translate(t),subpatterns:o.slice(1)})},ww.prototype.hasModifier=function(e){return e.altKey||e.ctrlKey||e.metaKey},ww.prototype.isFunctionKey=function(e){return"keydown"===e.type&&112<=e.keyCode&&e.keyCode<=123},ww.prototype.matchShortcut=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},ww.prototype.executeShortcutAction=function(e){return e.func?e.func.call(e.scope):null},ww);function ww(e){this.shortcuts={},this.pendingPatterns=[],this.editor=e;var n=this;e.on("keyup keypress keydown",function(t){!n.hasModifier(t)&&!n.isFunctionKey(t)||t.isDefaultPrevented()||(hw(n.shortcuts,function(e){if(n.matchShortcut(t,e))return n.pendingPatterns=e.subpatterns.slice(0),"keydown"===t.type&&n.executeShortcutAction(e),!0}),n.matchShortcut(t,n.pendingPatterns[0])&&(1===n.pendingPatterns.length&&"keydown"===t.type&&n.executeShortcutAction(n.pendingPatterns[0]),n.pendingPatterns.shift()))})}var xw=St.each,Sw=St.trim,Ew="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),Nw={ftp:21,http:80,https:443,mailto:25},kw=(_w.parseDataUri=function(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return{type:t=r?r[1]:t,data:n[1]}},_w.getDocumentBaseUrl=function(e){var t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname;return/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},_w.prototype.setPath=function(e){var t=/^(.*?)\/?(\w+)?$/.exec(e);this.path=t[0],this.directory=t[1],this.file=t[2],this.source="",this.getURI()},_w.prototype.toRelative=function(e){var t;if("./"===e)return e;var n=new _w(e,{base_uri:this});if("mce_host"!==n.host&&this.host!==n.host&&n.host||this.port!==n.port||this.protocol!==n.protocol&&""!==n.protocol)return n.getURI();var r=this.getURI(),o=n.getURI();return r===o||"/"===r.charAt(r.length-1)&&r.substr(0,r.length-1)===o?r:(t=this.toRelPath(this.path,n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),t)},_w.prototype.toAbsolute=function(e,t){var n=new _w(e,{base_uri:this});return n.getURI(t&&this.isSameOrigin(n))},_w.prototype.isSameOrigin=function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=Nw[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},_w.prototype.toRelPath=function(e,t){var n,r,o=0,i="",a=e.substring(0,e.lastIndexOf("/")).split("/"),u=t.split("/");if(a.length>=u.length)for(n=0,r=a.length;n<r;n++)if(n>=u.length||a[n]!==u[n]){o=n+1;break}if(a.length<u.length)for(n=0,r=u.length;n<r;n++)if(n>=a.length||a[n]!==u[n]){o=n+1;break}if(1===o)return t;for(n=0,r=a.length-(o-1);n<r;n++)i+="../";for(n=o-1,r=u.length;n<r;n++)i+=n!==o-1?"/"+u[n]:u[n];return i},_w.prototype.toAbsPath=function(e,t){var n,r,o=0,i=[],a=/\/$/.test(t)?"/":"",u=e.split("/"),s=t.split("/");for(xw(u,function(e){e&&i.push(e)}),u=i,n=s.length-1,i=[];0<=n;n--)0!==s[n].length&&"."!==s[n]&&(".."!==s[n]?0<o?o--:i.push(s[n]):o++);return 0!==(r=(n=u.length-o)<=0?H(i).join("/"):u.slice(0,n).join("/")+"/"+H(i).join("/")).indexOf("/")&&(r="/"+r),a&&r.lastIndexOf("/")!==r.length-1&&(r+=a),r},_w.prototype.getURI=function(e){var t;return void 0===e&&(e=!1),this.source&&!e||(t="",e||(this.protocol?t+=this.protocol+"://":t+="//",this.userInfo&&(t+=this.userInfo+"@"),this.host&&(t+=this.host),this.port&&(t+=":"+this.port)),this.path&&(t+=this.path),this.query&&(t+="?"+this.query),this.anchor&&(t+="#"+this.anchor),this.source=t),this.source},_w);function _w(e,t){e=Sw(e),this.settings=t||{};var n,r,o,i,a=this.settings.base_uri,u=this;/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)?u.source=e:(n=0===e.indexOf("//"),0!==e.indexOf("/")||n||(e=(a&&a.protocol||"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(r=this.settings.base_uri?this.settings.base_uri.path:new _w(document.location.href).directory,e=this.settings.base_uri&&""==this.settings.base_uri.protocol?"//mce_host"+u.toAbsPath(r,e):(o=/([^#?]*)([#?]?.*)/.exec(e),(a&&a.protocol||"http")+"://mce_host"+u.toAbsPath(r,o[1])+o[2])),e=e.replace(/@@/g,"(mce_at)"),i=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?(\[[a-zA-Z0-9:.%]+\]|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),xw(Ew,function(e,t){var n=(n=i[t])&&n.replace(/\(mce_at\)/g,"@@");u[e]=n}),a&&(u.protocol||(u.protocol=a.protocol),u.userInfo||(u.userInfo=a.userInfo),u.port||"mce_host"!==u.host||(u.port=a.port),u.host&&"mce_host"!==u.host||(u.host=a.host),u.source=""),n&&(u.protocol=""))}var Aw=cu.DOM,Tw=St.extend,Rw=St.each,Dw=St.resolve,Ow=Ct.ie,Bw=(Pw.prototype.render=function(){!function(t){var e=t.id;yu.setCode(zs(t));var n,r,o,i,a=function(){z1.unbind(window,"ready",a),t.render()};bi.Event.domLoaded?t.getElement()&&Ct.contentEditable&&(n=Et.fromDom(t.getElement()),r=P(n.dom.attributes,function(e,t){return e[t.name]=t.value,e},{}),t.on("remove",function(){D(n.dom.attributes,function(e){return bn(n,e.name),0}),pn(n,r)}),t.ui.styleSheetLoader=zr.forElement(n,{contentCssCors:(o=t).getParam("content_css_cors"),referrerPolicy:Us(o)}),t.getParam("inline")?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden"),(i=t.getElement().form||z1.getParent(e,"form"))&&(t.formElement=i,t.getParam("hidden_input")&&!Vn(t.getElement())&&(z1.insertAfter(z1.create("input",{type:"hidden",name:e}),e),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},z1.bind(i,"submit reset",t.formEventDelegate),t.on("reset",function(){t.resetContent()}),!t.getParam("submit_patch")||i.submit.nodeType||i.submit.length||i._mceOldSubmit||(i._mceOldSubmit=i.submit,i.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),i._mceOldSubmit(i)})),t.windowManager=Lv(t),t.notificationManager=fv(t),"xml"===t.getParam("encoding")&&t.on("GetContent",function(e){e.save&&(e.content=z1.encode(e.content))}),t.getParam("add_form_submit_trigger")&&t.on("submit",function(){t.initialized&&t.save()}),t.getParam("add_unload_trigger")&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),k1(t,t.suffix)):z1.bind(window,"ready",a)}(this)},Pw.prototype.focus=function(e){this.execCommand("mceFocus",!1,e)},Pw.prototype.hasFocus=function(){return Td(this)},Pw.prototype.execCallback=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?Dw(r):0,o=Dw(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,t)},Pw.prototype.translate=function(e){return yu.translate(e)},Pw.prototype.getParam=function(e,t,n){return i=t,a=n,l=(o=e)in(r=this).settings?r.settings[o]:i,"hash"===a?(c={},"string"==typeof(s=l)?X(0<s.indexOf("=")?s.split(/[;,](?![^=;,]*(?:[;,]|$))/):s.split(","),function(e){var t=e.split("=");1<t.length?c[St.trim(t[0])]=St.trim(t[1]):c[St.trim(t[0])]=St.trim(t[0])}):c=s,c):"string"===a?uv(K,r,o).getOr(i):"number"===a?uv(E,r,o).getOr(i):"boolean"===a?uv(v,r,o).getOr(i):"object"===a?uv(h,r,o).getOr(i):"array"===a?uv(S,r,o).getOr(i):"string[]"===a?uv((u=K,function(e){return S(e)&&j(e,u)}),r,o).getOr(i):"function"===a?uv(y,r,o).getOr(i):l;var r,o,i,a,u,s,c,l},Pw.prototype.hasPlugin=function(e,t){return!(!ie(Ks(this).split(/[ ,]/),e)||t&&void 0===Bv.get(e))},Pw.prototype.nodeChanged=function(e){this._nodeChangeDispatcher.nodeChanged(e)},Pw.prototype.addCommand=function(e,t,n){this.editorCommands.addCommand(e,t,n)},Pw.prototype.addQueryStateHandler=function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},Pw.prototype.addQueryValueHandler=function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},Pw.prototype.addShortcut=function(e,t,n,r){this.shortcuts.add(e,t,n,r)},Pw.prototype.execCommand=function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},Pw.prototype.queryCommandState=function(e){return this.editorCommands.queryCommandState(e)},Pw.prototype.queryCommandValue=function(e){return this.editorCommands.queryCommandValue(e)},Pw.prototype.queryCommandSupported=function(e){return this.editorCommands.queryCommandSupported(e)},Pw.prototype.show=function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable="true":(Aw.show(this.getContainer()),Aw.hide(this.id)),this.load(),this.fire("show"))},Pw.prototype.hide=function(){var e=this,t=e.getDoc();e.hidden||(Ow&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable="false",e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(Aw.hide(e.getContainer()),Aw.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},Pw.prototype.isHidden=function(){return!!this.hidden},Pw.prototype.setProgressState=function(e,t){this.fire("ProgressState",{state:e,time:t})},Pw.prototype.load=function(e){var t=this.getElement();if(this.removed)return"";if(t){(e=e||{}).load=!0;var n=Vn(t)?t.value:t.innerHTML,r=this.setContent(n,e);return e.element=t,e.no_events||this.fire("LoadContent",e),e.element=t=null,r}},Pw.prototype.save=function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,Vn(o)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Aw.getParent(r.id,"form"))&&Rw(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},Pw.prototype.setContent=function(e,t){return ev(this,e,t)},Pw.prototype.getContent=function(e){return t=this,r=(n=void 0===(n=e)?{}:n).format||"html",o=n,Ch(t).editor.getContent(o,r);var t,n,r,o},Pw.prototype.insertContent=function(e,t){t&&(e=Tw({content:e},t)),this.execCommand("mceInsertContent",!1,e)},Pw.prototype.resetContent=function(e){void 0===e?ev(this,this.startContent,{format:"raw"}):ev(this,e),this.undoManager.reset(),this.setDirty(!1),this.nodeChanged()},Pw.prototype.isDirty=function(){return!this.isNotDirty},Pw.prototype.setDirty=function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},Pw.prototype.getContainer=function(){return this.container||(this.container=Aw.get(this.editorContainer||this.id+"_parent")),this.container},Pw.prototype.getContentAreaContainer=function(){return this.contentAreaContainer},Pw.prototype.getElement=function(){return this.targetElm||(this.targetElm=Aw.get(this.id)),this.targetElm},Pw.prototype.getWin=function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},Pw.prototype.getDoc=function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},Pw.prototype.getBody=function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},Pw.prototype.convertURL=function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):this.documentBaseURI.toAbsolute(e,r.remove_script_host)},Pw.prototype.addVisual=function(e){var t;t=e,wh(this).editor.addVisual(t)},Pw.prototype.remove=function(){var e,t,n,r,o;(e=this).removed||(t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement(),r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&Cv.remove(o.nextSibling),e.fire("remove"),e.editorManager.remove(e),!e.inline&&r&&Cv.setStyle(e.id,"display",e.orgDisplay),e.fire("detach"),Cv.remove(e.getContainer()),tv(t),tv(n),e.destroy())},Pw.prototype.destroy=function(e){var t,n,r,o,i,a,u;n=e,a=(t=this).selection,u=t.dom,t.destroyed||(n||t.removed?(n||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),tv(a),tv(u)),(o=(r=t).formElement)&&(o._mceOldSubmit&&(o.submit=o._mceOldSubmit,o._mceOldSubmit=null),Cv.unbind(o,"submit reset",r.formEventDelegate)),(i=t).contentAreaContainer=i.formElement=i.container=i.editorContainer=null,i.bodyElement=i.contentDocument=i.contentWindow=null,i.iframeElement=i.targetElm=null,i.selection&&(i.selection=i.selection.win=i.selection.dom=i.selection.dom.doc=null),t.destroyed=!0):t.remove())},Pw.prototype.uploadImages=function(e){return this.editorUpload.uploadImages(e)},Pw.prototype._scanForImages=function(){return this.editorUpload.scanForImages()},Pw.prototype.addButton=function(){throw new Error("editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead")},Pw.prototype.addSidebar=function(){throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead")},Pw.prototype.addMenuItem=function(){throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead")},Pw.prototype.addContextToolbar=function(){throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead")},Pw);function Pw(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C=this;function w(n,r){return function(e,t){return n[e.toLowerCase()]=ke(ke({},t),{type:r})}}this.plugins={},this.contentCSS=[],this.contentStyles=[],this.loadedCSS={},this.isNotDirty=!1,this.editorManager=n,this.documentBaseUrl=n.documentBaseURL,Tw(this,gw),this.settings=(d=(f=this).documentBaseUrl,m=n.defaultSettings,p=d,h=Sv,v=f,b={id:e,theme:"silver",toolbar_mode:ov(g=t,"floating"),plugins:"",document_base_url:p,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,inline_styles:!0,convert_fonts_to_spans:!0,indent:!0,indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:v.convertURL,url_converter_scope:v},y=ke(ke({},b),h?_v:{}),av(Ev||Nv,Ev,y,m,g)),this.settings.suffix&&(n.suffix=this.settings.suffix),this.suffix=n.suffix,this.settings.base_url&&n._setBaseUrl(this.settings.base_url),this.baseUri=n.baseURI,this.settings.referrer_policy&&(mu.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy),cu.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)),Cu.languageLoad=this.settings.language_load,Cu.baseURL=n.baseURL,this.id=e,this.setDirty(!1),this.documentBaseURI=new kw(this.settings.document_base_url,{base_uri:this.baseUri}),this.baseURI=this.baseUri,this.inline=!!this.settings.inline,this.shortcuts=new Cw(this),this.editorCommands=new K1(this),this.settings.cache_suffix&&(Ct.cacheSuffix=this.settings.cache_suffix.replace(/^[\?\&]+/,"")),this.ui={registry:{addAutocompleter:(u={},(r={addButton:w(o={},"button"),addGroupToolbarButton:w(o,"grouptoolbarbutton"),addToggleButton:w(o,"togglebutton"),addMenuButton:w(o,"menubutton"),addSplitButton:w(o,"splitbutton"),addMenuItem:w(i={},"menuitem"),addNestedMenuItem:w(i,"nestedmenuitem"),addToggleMenuItem:w(i,"togglemenuitem"),addAutocompleter:w(a={},"autocompleter"),addContextMenu:w(s={},"contextmenu"),addContextToolbar:w(c={},"contexttoolbar"),addContextForm:w(c,"contextform"),addSidebar:w(l={},"sidebar"),addIcon:function(e,t){return u[e.toLowerCase()]=t},getAll:function(){return{buttons:o,menuItems:i,icons:u,popups:a,contextMenus:s,contextToolbars:c,sidebars:l}}}).addAutocompleter),addButton:r.addButton,addContextForm:r.addContextForm,addContextMenu:r.addContextMenu,addContextToolbar:r.addContextToolbar,addIcon:r.addIcon,addMenuButton:r.addMenuButton,addMenuItem:r.addMenuItem,addNestedMenuItem:r.addNestedMenuItem,addSidebar:r.addSidebar,addSplitButton:r.addSplitButton,addToggleButton:r.addToggleButton,addGroupToolbarButton:r.addGroupToolbarButton,addToggleMenuItem:r.addToggleMenuItem,getAll:r.getAll},styleSheetLoader:void 0,show:oe,hide:oe,enable:oe,disable:oe,isDisabled:T};var x,S,E,N,k,_=(N=pu("design"),k=pu({design:{activate:oe,deactivate:oe,editorReadOnly:!1},readonly:{activate:oe,deactivate:oe,editorReadOnly:!0}}),(S=x=this).serializer?ew(S):S.on("PreInit",function(){ew(S)}),(E=x).on("ShowCaret",function(e){Z1(E)&&e.preventDefault()}),E.on("ObjectSelected",function(e){Z1(E)&&e.preventDefault()}),{isReadOnly:function(){return Z1(x)},set:function(e){return function(e,t,n,r){if(r!==n.get()){if(!Ee(t,r))throw new Error("Editor mode '"+r+"' is invalid");e.initialized?cw(e,n,t,r):e.on("init",function(){return cw(e,n,t,r)})}}(x,k.get(),N,e)},get:function(){return N.get()},register:function(e,t){k.set(function(e,t,n){var r;if(ie(pw,t))throw new Error("Cannot override default mode "+t);return ke(ke({},e),((r={})[t]=ke(ke({},n),{deactivate:function(){try{n.deactivate()}catch(e){console.error("problem while deactivating editor mode "+t+":",e)}}}),r))}(k.get(),e,t))}});this.mode=_,this.setMode=_.set,n.fire("SetupEditor",{editor:this}),this.execCallback("setup",this),this.$=ou.overrideDefaults(function(){return{context:C.inline?C.getBody():C.getDoc(),element:C.getBody()}})}function Lw(t){var n=t.type;jw(Xw.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})}function Iw(e){e!==qw&&(e?ou(window).on("resize scroll",Lw):ou(window).off("resize scroll",Lw),qw=e)}function Mw(t){var e=Ww;delete $w[t.id];for(var n=0;n<$w.length;n++)if($w[n]===t){$w.splice(n,1);break}return Ww=U(Ww,function(e){return t!==e}),Xw.activeEditor===t&&(Xw.activeEditor=0<Ww.length?Ww[0]:null),Xw.focusedEditor===t&&(Xw.focusedEditor=null),e.length!==Ww.length}var Fw,Uw=cu.DOM,zw=St.explode,jw=St.each,Hw=St.extend,Vw=0,qw=!1,$w=[],Ww=[],Kw="CSS1Compat"!==document.compatMode,Xw=ke(ke({},dw),{baseURI:null,baseURL:null,defaultSettings:{},documentBaseURL:null,suffix:null,$:ou,majorVersion:"5",minorVersion:"9.1",releaseDate:"2021-08-27",editors:$w,i18n:yu,activeEditor:null,focusedEditor:null,settings:{},setup:function(){var e,t="",n=kw.getDocumentBaseUrl(document.location);/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,t=r.suffix;else{for(var o,i=document.getElementsByTagName("script"),a=0;a<i.length;a++)if(""!==(o=i[a].src||"")){var u=o.substring(o.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(o)){-1!==u.indexOf(".min")&&(t=".min"),e=o.substring(0,o.lastIndexOf("/"));break}}!e&&document.currentScript&&(-1!==(o=document.currentScript.src).indexOf(".min")&&(t=".min"),e=o.substring(0,o.lastIndexOf("/")))}this.baseURL=new kw(n).toAbsolute(e),this.documentBaseURL=n,this.baseURI=new kw(this.baseURL),this.suffix=t,this.on("AddEditor",A(Nd,this)),this.on("RemoveEditor",A(kd,this))},overrideDefaults:function(e){var t=e.base_url;t&&this._setBaseUrl(t);var n=e.suffix;e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;void 0!==r&&Q(r,function(e,t){Cu.PluginManager.urls[t]=e})},init:function(r){function u(e){var t=e.id;return t||(t=ae(e,"name").filter(function(e){return!Uw.get(e)}).getOrThunk(Uw.uniqueId),e.setAttribute("id",t)),t}function s(e,t){return t.constructor===RegExp?t.test(e.className):Uw.hasClass(e,t)}var n,c=this,l=St.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu"," "),f=function(e){n=e},t=function(){function n(e,t,n){var r=new Bw(e,t,c);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()}var o,e,i=0,a=[];Uw.unbind(window,"ready",t),(e=r.onpageload)&&e.apply(c,[]),o=ou.unique(function(t){var n=[];if(Ct.browser.isIE()&&Ct.browser.version.major<11)return uy("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(Kw)return uy("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."),[];if(t.types)return jw(t.types,function(e){n=n.concat(Uw.select(e.selector))}),n;if(t.selector)return Uw.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":var e=t.elements||"";0<e.length&&jw(zw(e),function(t){var e=Uw.get(t);e?n.push(e):jw(document.forms,function(e){jw(e.elements,function(e){e.name===t&&(t="mce_editor_"+Vw++,Uw.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":jw(Uw.select("textarea"),function(e){t.editor_deselector&&s(e,t.editor_deselector)||t.editor_selector&&!s(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?jw(r.types,function(t){St.each(o,function(e){return!Uw.is(e,t.selector)||(n(u(e),Hw({},r,t),e),!1)})}):(St.each(o,function(e){var t;(t=c.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(Mw(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0)}),0===(o=St.grep(o,function(e){return!c.get(e.id)})).length?f([]):jw(o,function(e){var t=e;r.inline&&t.tagName.toLowerCase()in l?uy("Could not initialize inline editor on invalid inline target element",e):n(u(e),r,e)}))};return c.settings=r,Uw.bind(window,"ready",t),new _r(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?Ww.slice(0):K(t)?I(Ww,function(e){return e.id===t}).getOr(null):E(t)&&Ww[t]||null},add:function(e){var n=this;return $w[e.id]===e||(null===n.get(e.id)&&("length"!==e.id&&($w[e.id]=e),$w.push(e),Ww.push(e)),Iw(!0),n.activeEditor=e,n.fire("AddEditor",{editor:e}),Fw||(Fw=function(e){var t=n.fire("BeforeUnload");if(t.returnValue)return e.preventDefault(),e.returnValue=t.returnValue,t.returnValue},window.addEventListener("beforeunload",Fw))),e},createEditor:function(e,t){return this.add(new Bw(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!K(e))return n=e,l(r.get(n.id))?null:(Mw(n)&&r.fire("RemoveEditor",{editor:n}),0===Ww.length&&window.removeEventListener("beforeunload",Fw),n.remove(),Iw(0<Ww.length),n);jw(Uw.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=Ww.length-1;0<=t;t--)r.remove(Ww[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new Bw(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",!1,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){jw(Ww,function(e){e.save()})},addI18n:function(e,t){yu.add(e,t)},translate:function(e){return yu.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e},_setBaseUrl:function(e){this.baseURL=new kw(this.documentBaseURL).toAbsolute(e.replace(/\/+$/,"")),this.baseURI=new kw(this.baseURL)}});function Yw(e,t,n){var r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,c=(n||"").split("");return"b"===c[0]&&(o+=s),"r"===c[1]&&(r+=u),"c"===c[0]&&(o+=ox(s/2)),"c"===c[1]&&(r+=ox(u/2)),"b"===c[3]&&(o-=a),"r"===c[4]&&(r-=i),"c"===c[3]&&(o-=ox(a/2)),"c"===c[4]&&(r-=ox(i/2)),Jw(r,o,i,a)}function Gw(){}Xw.setup();function Jw(e,t,n,r){return{x:e,y:t,w:n,h:r}}var Qw,Zw,ex,tx,nx=Math.min,rx=Math.max,ox=Math.round,ix={inflate:function(e,t,n){return Jw(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:Yw,findBestRelativePosition:function(e,t,n,r){for(var o,i=0;i<r.length;i++)if((o=Yw(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n=rx(e.x,t.x),r=rx(e.y,t.y),o=nx(e.x+e.w,t.x+t.w),i=nx(e.y+e.h,t.y+t.h);return o-n<0||i-r<0?null:Jw(n,r,o-n,i-r)},clamp:function(e,t,n){var r=e.x,o=e.y,i=e.x+e.w,a=e.y+e.h,u=t.x+t.w,s=t.y+t.h,c=rx(0,t.x-r),l=rx(0,t.y-o),f=rx(0,i-u),d=rx(0,a-s);return r+=c,o+=l,n&&(i+=c,a+=l,r-=f,o-=d),Jw(r,o,(i-=f)-r,(a-=d)-o)},create:Jw,fromClientRect:function(e){return Jw(e.left,e.top,e.width,e.height)}},ax=(Qw={},Zw={},{load:function(r,o){var i='Script at URL "'+o+'" failed to load',a='Script at URL "'+o+"\" did not call `tinymce.Resource.add('"+r+"', data)` within 1 second";if(void 0!==Qw[r])return Qw[r];var e=new _r(function(e,t){var n=function(e,t,n){function r(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||(o=!0,null!==i&&(clearTimeout(i),i=null),n.apply(null,e))}}void 0===n&&(n=1e3);var o=!1,i=null,a=r(e),u=r(t);return{start:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||null!==i||(i=setTimeout(function(){return u.apply(null,e)},n))},resolve:a,reject:u}}(e,t);Zw[r]=n.resolve,mu.ScriptLoader.loadScript(o,function(){return n.start(a)},function(){return n.reject(i)})});return Qw[r]=e},add:function(e,t){void 0!==Zw[e]&&(Zw[e](t),delete Zw[e]),Qw[e]=_r.resolve(t)}}),ux=St.each,sx=St.extend;Gw.extend=ex=function(n){function r(){var e,t,n;if(!tx&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)}function t(){return this}var o=this.prototype;tx=!0;var i=new this;return tx=!1,n.Mixins&&(ux(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&ux(n.Methods.split(","),function(e){n[e]=t}),n.Properties&&ux(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return void 0!==e?(this[t]=e,this):this[t]}}),n.Statics&&ux(n.Statics,function(e,t){r[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=sx({},o.Defaults,n.Defaults)),Q(n,function(e,t){var n,r;"function"==typeof e&&o[t]?i[t]=(n=t,r=e,function(){var e=this._super;this._super=o[n];var t=r.apply(this,arguments);return this._super=e,t}):i[t]=e}),r.prototype=i,(r.constructor=r).extend=ex,r};var cx,lx,fx,dx=Math.min,mx=Math.max,gx=Math.round,px={serialize:function(e){var t=JSON.stringify(e);return K(t)?t.replace(/[\u0080-\uFFFF]/g,function(e){var t=e.charCodeAt(0).toString(16);return"\\u"+"0000".substring(t.length)+t}):t},parse:function(e){try{return JSON.parse(e)}catch(e){}}},hx={callbacks:{},count:0,send:function(t){var n=this,r=cu.DOM,o=(void 0!==t.count?t:n).count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},vx=ke(ke({},dw),{send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):Ur.setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",vx.fire("beforeInitialize",{settings:e}),(t=new XMLHttpRequest).overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&St.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=vx.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();Ur.setTimeout(r,10)}}),bx=St.extend,yx=(Cx.sendRPC=function(e){return(new Cx).send(e)},Cx.prototype.send=function(e){var n=e.error,r=e.success,o=bx(this.settings,e);o.success=function(e,t){(e=void 0===(e=px.parse(e))?{error:"JSON Parse error."}:e).error?n.call(o.error_scope||o.scope,e.error,t):r.call(o.success_scope||o.scope,e.result)},o.error=function(e,t){n&&n.call(o.error_scope||o.scope,e,t)},o.data=px.serialize({id:e.id||"c"+this.count++,method:e.method,params:e.params}),o.content_type="application/json",vx.send(o)},Cx);function Cx(e){this.settings=bx({},e),this.count=0}try{var wx,xx="__storage_test__";(wx=window.localStorage).setItem(xx,xx),wx.removeItem(xx)}catch(e){cx={},lx=[],fx={getItem:function(e){return cx[e]||null},setItem:function(e,t){lx.push(e),cx[e]=String(t)},key:function(e){return lx[e]},removeItem:function(t){lx=lx.filter(function(e){return e===t}),delete cx[t]},clear:function(){lx=[],cx={}},length:0},Object.defineProperty(fx,"length",{get:function(){return lx.length},configurable:!1,enumerable:!1}),wx=fx}var Sx={geom:{Rect:ix},util:{Promise:_r,Delay:Ur,Tools:St,VK:$f,URI:kw,Class:Gw,EventDispatcher:rw,Observable:dw,I18n:yu,XHR:vx,JSON:px,JSONRequest:yx,JSONP:hx,LocalStorage:wx,Color:function(e){function t(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=mx(0,dx(t,1)),n=mx(0,dx(n,1)),0!==t){var r=e/60,o=n*t,i=o*(1-Math.abs(r%2-1)),a=n-o;switch(Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=gx(255*(u+a)),s=gx(255*(s+a)),c=gx(255*(c+a))}else u=s=c=gx(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n}var n={},u=0,s=0,c=0;return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=dx(e/=255,dx(t/=255,n/=255)))===(a=mx(e,mx(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:gx(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:gx(100*r),v:gx(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){function e(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+e(u)+e(s)+e(c)},n.parse=t,n},ImageUploader:function(n){var e=Hv(),r=Kv(n,e);return{upload:function(e,t){return r.upload(e,(t=void 0===t||t)?Wv(n):void 0)}}}},dom:{EventUtils:bi,Sizzle:ba,DomQuery:ou,TreeWalker:jr,TextSeeker:Mu,DOMUtils:cu,ScriptLoader:mu,RangeUtils:qf,Serializer:Zh,StyleSheetLoader:Mr,ControlSelection:Of,BookmarkManager:Gl,Selection:zh,Event:bi.Event},html:{Styles:ho,Entities:si,Node:Jd,Schema:go,SaxParser:tm,DomParser:Gh,Writer:um,Serializer:sm},Env:Ct,AddOnManager:Cu,Annotator:Yl,Formatter:Qv,UndoManager:eb,EditorCommands:K1,WindowManager:Lv,NotificationManager:fv,EditorObservable:gw,Shortcuts:Cw,Editor:Bw,FocusManager:Kd,EditorManager:Xw,DOM:cu.DOM,ScriptLoader:mu.ScriptLoader,PluginManager:Bv,ThemeManager:Pv,IconManager:Av,Resource:ax,trim:St.trim,isArray:St.isArray,is:St.is,toArray:St.toArray,makeMap:St.makeMap,each:St.each,map:St.map,grep:St.grep,inArray:St.inArray,extend:St.extend,create:St.create,walk:St.walk,createNS:St.createNS,resolve:St.resolve,explode:St.explode,_addCacheSuffix:St._addCacheSuffix,isOpera:Ct.opera,isWebKit:Ct.webkit,isIE:Ct.ie,isGecko:Ct.gecko,isMac:Ct.mac},Ex=St.extend(Xw,Sx),Nx=Ex;window.tinymce=Nx,window.tinyMCE=Nx,function(e){if("object"==typeof module)try{module.exports=e}catch(e){}}(Ex)}();
\ No newline at end of file
diff --git a/projects/editor/src/index.html b/projects/editor/src/index.html
index 25406b52b5d72a62c38747b34abd21d4bfd6612b..48392f9600e4cde51587f077c8f8a915ca06760c 100644
--- a/projects/editor/src/index.html
+++ b/projects/editor/src/index.html
@@ -8,6 +8,7 @@
   <link rel="icon" type="image/x-icon" href="favicon.ico">
   <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
   <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+  <script src="assets/tinymce/js/tinymce/tinymce.min.js"></script>
   <script>
     window.postMessage({
       type: 'voeStartCommand',