summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-07-21 18:28:33 +0800
committerLin Jen-Shin <godfat@godfat.org>2016-07-21 18:28:33 +0800
commit83975914337d1dc05193a83d27be577c5631f801 (patch)
treeaeaf2450cb8a8a1c99b064d7d353e28d682c0b65
parente3ce02300bf90451b98479720d1093afe8b7eea8 (diff)
parent4211f50014faebf027fd2bc80e0cf1d3f012627c (diff)
downloadgitlab-ce-83975914337d1dc05193a83d27be577c5631f801.tar.gz
Merge branch 'artifacts-from-ref-and-build-name-api' into artifacts-from-ref-and-build-name
* artifacts-from-ref-and-build-name-api: (384 commits) Add API documentation for downloading the latest successful build Since it's too hard to use JOIN with Rails... feedback: Workaround MySQL with INNER JOIN: Just put setup directly in the test, feedback: Cleanup the use of let, feedback: Lose unneeded instance variables and variables, feedback: Add link to user profile to commit avatar (!5163) It's not longer than 80 chars Make sure there's a build Use the same logic, it should specify that it's not logged in Use 'when logging as guest' for context, feedback: Cleanup that a bit Refactor service settings view Fix a problem with processing a pipeline where stage only has manual actions Rename user2 to reporter_user Should check against `authorize_read_builds!` A CHANGELOG entry Don't show other actions of the same name Use limit parameter rather than hardcoded value Reuse those two methods ...
-rw-r--r--.gitlab-ci.yml3
-rw-r--r--.rubocop.yml4
-rw-r--r--.rubocop_todo.yml4
-rw-r--r--CHANGELOG33
-rw-r--r--Gemfile7
-rw-r--r--Gemfile.lock14
-rw-r--r--MAINTENANCE.md36
-rw-r--r--app/assets/images/emoji.pngbin1025831 -> 1087659 bytes
-rw-r--r--app/assets/images/emoji@2x.pngbin2492919 -> 2652225 bytes
-rw-r--r--app/assets/javascripts/gl_dropdown.js.coffee2
-rw-r--r--app/assets/javascripts/graphs/graphs_bundle.js.coffee (renamed from app/assets/javascripts/graphs/application.js.coffee)0
-rw-r--r--app/assets/javascripts/issues-bulk-assignment.js.coffee13
-rw-r--r--app/assets/javascripts/lib/utils/datetime_utility.js.coffee2
-rw-r--r--app/assets/javascripts/network/network_bundle.js.coffee (renamed from app/assets/javascripts/network/application.js.coffee)0
-rw-r--r--app/assets/javascripts/profile/profile_bundle.js.coffee (renamed from app/assets/javascripts/profile/application.js.coffee)0
-rw-r--r--app/assets/javascripts/protected_branches.js.coffee8
-rw-r--r--app/assets/javascripts/subscription_select.js.coffee18
-rw-r--r--app/assets/javascripts/users/users_bundle.js.coffee (renamed from app/assets/javascripts/users/application.js.coffee)0
-rw-r--r--app/assets/stylesheets/framework/blocks.scss4
-rw-r--r--app/assets/stylesheets/framework/buttons.scss18
-rw-r--r--app/assets/stylesheets/framework/files.scss2
-rw-r--r--app/assets/stylesheets/framework/sidebar.scss4
-rw-r--r--app/assets/stylesheets/framework/typography.scss32
-rw-r--r--app/assets/stylesheets/framework/variables.scss2
-rw-r--r--app/assets/stylesheets/pages/emojis.scss2607
-rw-r--r--app/assets/stylesheets/pages/issuable.scss3
-rw-r--r--app/assets/stylesheets/pages/issues.scss10
-rw-r--r--app/assets/stylesheets/pages/merge_requests.scss16
-rw-r--r--app/assets/stylesheets/pages/pipelines.scss67
-rw-r--r--app/assets/stylesheets/pages/projects.scss73
-rw-r--r--app/assets/stylesheets/pages/status.scss8
-rw-r--r--app/assets/stylesheets/pages/tags.scss7
-rw-r--r--app/assets/stylesheets/pages/tree.scss2
-rw-r--r--app/controllers/admin/groups_controller.rb2
-rw-r--r--app/controllers/admin/services_controller.rb15
-rw-r--r--app/controllers/concerns/creates_commit.rb3
-rw-r--r--app/controllers/concerns/diff_for_path.rb1
-rw-r--r--app/controllers/concerns/service_params.rb35
-rw-r--r--app/controllers/groups_controller.rb2
-rw-r--r--app/controllers/projects/badges_controller.rb5
-rw-r--r--app/controllers/projects/blob_controller.rb6
-rw-r--r--app/controllers/projects/builds_controller.rb13
-rw-r--r--app/controllers/projects/compare_controller.rb1
-rw-r--r--app/controllers/projects/issues_controller.rb1
-rw-r--r--app/controllers/projects/pipelines_settings_controller.rb30
-rw-r--r--app/controllers/projects/protected_branches_controller.rb2
-rw-r--r--app/controllers/projects/refs_controller.rb2
-rw-r--r--app/controllers/projects/services_controller.rb30
-rw-r--r--app/controllers/projects_controller.rb4
-rw-r--r--app/helpers/avatars_helper.rb30
-rw-r--r--app/helpers/branches_helper.rb2
-rw-r--r--app/helpers/ci_status_helper.rb14
-rw-r--r--app/helpers/commits_helper.rb10
-rw-r--r--app/helpers/diff_helper.rb9
-rw-r--r--app/helpers/external_wiki_helper.rb5
-rw-r--r--app/helpers/services_helper.rb25
-rw-r--r--app/helpers/time_helper.rb26
-rw-r--r--app/mailers/emails/builds.rb1
-rw-r--r--app/models/ability.rb4
-rw-r--r--app/models/ci/build.rb91
-rw-r--r--app/models/ci/pipeline.rb24
-rw-r--r--app/models/ci/runner.rb8
-rw-r--r--app/models/ci/trigger_request.rb8
-rw-r--r--app/models/commit_status.rb10
-rw-r--r--app/models/concerns/statuseable.rb6
-rw-r--r--app/models/deployment.rb4
-rw-r--r--app/models/merge_request.rb8
-rw-r--r--app/models/merge_request_diff.rb9
-rw-r--r--app/models/project.rb68
-rw-r--r--app/models/project_services/builds_email_service.rb27
-rw-r--r--app/models/project_services/slack_service.rb51
-rw-r--r--app/models/repository.rb114
-rw-r--r--app/models/service.rb29
-rw-r--r--app/models/user.rb2
-rw-r--r--app/services/ci/create_builds_service.rb6
-rw-r--r--app/services/commits/change_service.rb4
-rw-r--r--app/services/create_branch_service.rb28
-rw-r--r--app/services/files/base_service.rb4
-rw-r--r--app/services/files/update_service.rb5
-rw-r--r--app/services/git_push_service.rb3
-rw-r--r--app/services/issuable_base_service.rb10
-rw-r--r--app/services/issues/bulk_update_service.rb2
-rw-r--r--app/services/merge_requests/merge_service.rb4
-rw-r--r--app/services/merge_requests/refresh_service.rb2
-rw-r--r--app/services/projects/import_export/export_service.rb6
-rw-r--r--app/uploaders/avatar_uploader.rb4
-rw-r--r--app/views/admin/groups/_form.html.haml4
-rw-r--r--app/views/emojis/index.html.haml2
-rw-r--r--app/views/events/_event.html.haml6
-rw-r--r--app/views/groups/edit.html.haml4
-rw-r--r--app/views/layouts/_init_auto_complete.html.haml10
-rw-r--r--app/views/layouts/nav/_explore.html.haml4
-rw-r--r--app/views/layouts/nav/_project_settings.html.haml6
-rw-r--r--app/views/profiles/_head.html.haml2
-rw-r--r--app/views/projects/_builds_settings.html.haml65
-rw-r--r--app/views/projects/badges/index.html.haml23
-rw-r--r--app/views/projects/blob/_editor.html.haml4
-rw-r--r--app/views/projects/branches/_branch.html.haml4
-rw-r--r--app/views/projects/builds/_sidebar.html.haml6
-rw-r--r--app/views/projects/buttons/_download.html.haml4
-rw-r--r--app/views/projects/buttons/_fork.html.haml4
-rw-r--r--app/views/projects/ci/builds/_build.html.haml13
-rw-r--r--app/views/projects/ci/pipelines/_pipeline.html.haml50
-rw-r--r--app/views/projects/commits/_commit.html.haml3
-rw-r--r--app/views/projects/deployments/_actions.haml22
-rw-r--r--app/views/projects/deployments/_deployment.html.haml10
-rw-r--r--app/views/projects/diffs/_content.html.haml10
-rw-r--r--app/views/projects/diffs/_diffs.html.haml2
-rw-r--r--app/views/projects/edit.html.haml6
-rw-r--r--app/views/projects/environments/_environment.html.haml3
-rw-r--r--app/views/projects/environments/index.html.haml1
-rw-r--r--app/views/projects/environments/show.html.haml2
-rw-r--r--app/views/projects/forks/index.html.haml4
-rw-r--r--app/views/projects/forks/new.html.haml91
-rw-r--r--app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml2
-rw-r--r--app/views/projects/graphs/_head.html.haml2
-rw-r--r--app/views/projects/merge_requests/widget/open/_conflicts.html.haml2
-rw-r--r--app/views/projects/network/show.html.haml2
-rw-r--r--app/views/projects/notes/_notes_with_form.html.haml4
-rw-r--r--app/views/projects/pipelines_settings/show.html.haml103
-rw-r--r--app/views/projects/protected_branches/_branches_list.html.haml2
-rw-r--r--app/views/projects/protected_branches/_protected_branch.html.haml2
-rw-r--r--app/views/projects/protected_branches/index.html.haml8
-rw-r--r--app/views/projects/repositories/_download_archive.html.haml4
-rw-r--r--app/views/projects/services/_form.html.haml3
-rw-r--r--app/views/projects/tags/_download.html.haml4
-rw-r--r--app/views/projects/tags/show.html.haml67
-rw-r--r--app/views/shared/_allow_request_access.html.haml6
-rw-r--r--app/views/shared/_service_settings.html.haml81
-rw-r--r--app/views/shared/icons/_icon_fork.svg1
-rw-r--r--app/views/shared/icons/_icon_status_cancel.svg12
-rw-r--r--app/views/shared/icons/_icon_status_failed.svg12
-rw-r--r--app/views/shared/icons/_icon_status_pending.svg13
-rw-r--r--app/views/shared/icons/_icon_status_running.svg12
-rw-r--r--app/views/shared/icons/_icon_status_success.svg15
-rw-r--r--app/views/shared/icons/_icon_status_warning.svg15
-rw-r--r--app/views/shared/issuable/_filter.html.haml9
-rw-r--r--app/views/users/show.html.haml2
-rw-r--r--config/application.rb10
-rw-r--r--config/initializers/relative_naming_ci_namespace.rb16
-rw-r--r--config/initializers/secure_headers.rb99
-rw-r--r--config/initializers/sidekiq.rb10
-rw-r--r--config/routes.rb14
-rw-r--r--db/fixtures/development/14_builds.rb63
-rw-r--r--db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb8
-rw-r--r--db/migrate/20160519203051_add_developers_can_merge_to_protected_branches.rb9
-rw-r--r--db/migrate/20160629025435_add_column_in_progress_merge_commit_sha_to_merge_requests.rb8
-rw-r--r--db/migrate/20160715154212_add_request_access_enabled_to_projects.rb12
-rw-r--r--db/migrate/20160715204316_add_request_access_enabled_to_groups.rb12
-rw-r--r--db/migrate/20160718153603_add_has_external_wiki_to_projects.rb7
-rw-r--r--db/schema.rb24
-rw-r--r--doc/api/branches.md20
-rw-r--r--doc/api/builds.md38
-rw-r--r--doc/api/todos.md152
-rw-r--r--doc/ci/variables/README.md68
-rw-r--r--doc/ci/yaml/README.md20
-rw-r--r--doc/development/migration_style_guide.md46
-rw-r--r--doc/development/rake_tasks.md5
-rw-r--r--doc/integration/slack.md5
-rw-r--r--doc/project_services/img/slack_configuration.pngbin0 -> 72072 bytes
-rw-r--r--doc/project_services/project_services.md2
-rw-r--r--doc/project_services/slack.md26
-rw-r--r--doc/raketasks/maintenance.md19
-rw-r--r--doc/workflow/add-user/add-user.md3
-rw-r--r--doc/workflow/groups.md3
-rw-r--r--features/steps/admin/settings.rb16
-rw-r--r--fixtures/emojis/aliases.json191
-rw-r--r--fixtures/emojis/digests.json2166
-rw-r--r--fixtures/emojis/index.json13379
-rw-r--r--generator_templates/active_record/migration/create_table_migration.rb8
-rw-r--r--generator_templates/active_record/migration/migration.rb8
-rw-r--r--lib/api/branches.rb29
-rw-r--r--lib/api/builds.rb8
-rw-r--r--lib/api/commit_statuses.rb2
-rw-r--r--lib/api/entities.rb47
-rw-r--r--lib/api/helpers.rb11
-rw-r--r--lib/api/merge_requests.rb2
-rw-r--r--lib/api/projects.rb2
-rw-r--r--lib/api/todos.rb2
-rw-r--r--lib/banzai/filter/autolink_filter.rb2
-rw-r--r--lib/banzai/filter/relative_link_filter.rb3
-rw-r--r--lib/ci/gitlab_ci_yaml_processor.rb71
-rw-r--r--lib/gitlab/access.rb8
-rw-r--r--lib/gitlab/award_emoji.rb24
-rw-r--r--lib/gitlab/checks/change_access.rb96
-rw-r--r--lib/gitlab/checks/force_push.rb17
-rw-r--r--lib/gitlab/checks/matching_merge_request.rb18
-rw-r--r--lib/gitlab/diff/file.rb6
-rw-r--r--lib/gitlab/diff/position.rb4
-rw-r--r--lib/gitlab/downtime_check.rb71
-rw-r--r--lib/gitlab/downtime_check/message.rb28
-rw-r--r--lib/gitlab/force_push_check.rb15
-rw-r--r--lib/gitlab/git_access.rb144
-rw-r--r--lib/gitlab/git_access_status.rb4
-rw-r--r--lib/gitlab/git_access_wiki.rb2
-rw-r--r--lib/gitlab/gon_helper.rb2
-rw-r--r--lib/gitlab/import_export.rb2
-rw-r--r--lib/gitlab/import_export/avatar_restorer.rb31
-rw-r--r--lib/gitlab/import_export/avatar_saver.rb31
-rw-r--r--lib/gitlab/import_export/command_line_util.rb9
-rw-r--r--lib/gitlab/import_export/import_export.yml6
-rw-r--r--lib/gitlab/import_export/importer.rb6
-rw-r--r--lib/gitlab/import_export/relation_factory.rb5
-rw-r--r--lib/gitlab/import_export/uploads_saver.rb8
-rw-r--r--lib/gitlab/user_access.rb48
-rw-r--r--lib/tasks/downtime_check.rake26
-rw-r--r--lib/tasks/gemojione.rake17
-rw-r--r--lib/tasks/gitlab/check.rake2
-rw-r--r--lib/tasks/gitlab/db.rake15
-rw-r--r--lib/tasks/gitlab/track_deployment.rake9
-rw-r--r--spec/controllers/help_controller_spec.rb9
-rw-r--r--spec/controllers/projects_controller_spec.rb20
-rw-r--r--spec/factories/ci/builds.rb7
-rw-r--r--spec/features/environments_spec.rb38
-rw-r--r--spec/features/expand_collapse_diffs_spec.rb43
-rw-r--r--spec/features/groups/members/user_requests_access_spec.rb7
-rw-r--r--spec/features/pipelines_settings_spec.rb35
-rw-r--r--spec/features/pipelines_spec.rb22
-rw-r--r--spec/features/projects/badges/list_spec.rb2
-rw-r--r--spec/features/projects/members/user_requests_access_spec.rb7
-rw-r--r--spec/features/projects/slack_service/slack_service_spec.rb26
-rw-r--r--spec/helpers/ci_status_helper_spec.rb10
-rw-r--r--spec/helpers/diff_helper_spec.rb23
-rw-r--r--spec/helpers/time_helper_spec.rb25
-rw-r--r--spec/lib/banzai/filter/autolink_filter_spec.rb20
-rw-r--r--spec/lib/ci/gitlab_ci_yaml_processor_spec.rb2
-rw-r--r--spec/lib/gitlab/badge/build_spec.rb2
-rw-r--r--spec/lib/gitlab/diff/file_spec.rb14
-rw-r--r--spec/lib/gitlab/diff/position_spec.rb24
-rw-r--r--spec/lib/gitlab/diff/position_tracer_spec.rb3
-rw-r--r--spec/lib/gitlab/downtime_check/message_spec.rb17
-rw-r--r--spec/lib/gitlab/downtime_check_spec.rb113
-rw-r--r--spec/lib/gitlab/git_access_spec.rb319
-rw-r--r--spec/lib/gitlab/import_export/avatar_restorer_spec.rb25
-rw-r--r--spec/lib/gitlab/import_export/avatar_saver_spec.rb27
-rw-r--r--spec/lib/gitlab/import_export/project.json18
-rw-r--r--spec/lib/gitlab/import_export/project_tree_restorer_spec.rb7
-rw-r--r--spec/lib/gitlab/import_export/project_tree_saver_spec.rb9
-rw-r--r--spec/lib/gitlab/user_access_spec.rb88
-rw-r--r--spec/models/build_spec.rb330
-rw-r--r--spec/models/ci/pipeline_spec.rb88
-rw-r--r--spec/models/deployment_spec.rb1
-rw-r--r--spec/models/project_services/builds_email_service_spec.rb38
-rw-r--r--spec/models/project_services/slack_service_spec.rb71
-rw-r--r--spec/models/project_spec.rb120
-rw-r--r--spec/models/repository_spec.rb87
-rw-r--r--spec/models/user_spec.rb23
-rw-r--r--spec/requests/api/api_helpers_spec.rb27
-rw-r--r--spec/requests/api/branches_spec.rb87
-rw-r--r--spec/requests/api/builds_spec.rb102
-rw-r--r--spec/requests/api/todos_spec.rb3
-rw-r--r--spec/requests/ci/api/builds_spec.rb10
-rw-r--r--spec/routing/routing_spec.rb7
-rw-r--r--spec/services/git_push_service_spec.rb14
-rw-r--r--spec/services/issues/bulk_update_service_spec.rb38
-rw-r--r--spec/services/merge_requests/refresh_service_spec.rb3
-rw-r--r--spec/support/api_helpers.rb14
-rw-r--r--spec/support/test_env.rb4
-rw-r--r--spec/views/projects/builds/show.html.haml_spec.rb19
259 files changed, 15475 insertions, 8435 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ff8aa351226..f566dfd76e9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -148,7 +148,7 @@ spinach 9 10: *spinach-knapsack
.spinach-knapsack-ruby23: &spinach-knapsack-ruby23
<<: *spinach-knapsack
<<: *ruby-23
-
+
rspec 0 20 ruby23: *rspec-knapsack-ruby23
rspec 1 20 ruby23: *rspec-knapsack-ruby23
rspec 2 20 ruby23: *rspec-knapsack-ruby23
@@ -196,6 +196,7 @@ rake flog: *exec
rake flay: *exec
rake db:migrate:reset: *exec
license_finder: *exec
+rake downtime_check: *exec
bundler:audit:
stage: test
diff --git a/.rubocop.yml b/.rubocop.yml
index db0bcfadcf4..6adbda53456 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -291,6 +291,10 @@ Style/MultilineMethodDefinitionBraceLayout:
Style/MultilineOperationIndentation:
Enabled: false
+# Avoid multi-line `? :` (the ternary operator), use if/unless instead.
+Style/MultilineTernaryOperator:
+ Enabled: true
+
# Favor unless over if for negative conditions (or control flow or).
Style/NegatedIf:
Enabled: true
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 9310e711889..b622b9239d4 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -226,10 +226,6 @@ Style/LineEndConcatenation:
Style/MethodCallParentheses:
Enabled: false
-# Offense count: 3
-Style/MultilineTernaryOperator:
- Enabled: false
-
# Offense count: 62
# Cop supports --auto-correct.
Style/MutableConstant:
diff --git a/CHANGELOG b/CHANGELOG
index fcfc2d7aa30..16c50ef107e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,17 +1,26 @@
Please view this file on the master branch, on stable branches it's out of date.
+v 8.11.0 (unreleased)
+ - Fix of 'Commits being passed to custom hooks are already reachable when using the UI'
+ - Limit git rev-list output count to one in forced push check
v 8.10.0 (unreleased)
+ - Fix profile activity heatmap to show correct day name (eanplatter)
+ - Speed up ExternalWikiHelper#get_project_wiki_path
- Expose {should,force}_remove_source_branch (Ben Boeckel)
+ - Add the functionality to be able to rename a file. !5049 (tiagonbotelho)
- Disable PostgreSQL statement timeout during migrations
- Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho)
- Fix commit builds API, return all builds for all pipelines for given commit. !4849
- Replace Haml with Hamlit to make view rendering faster. !3666
- Refresh the branch cache after `git gc` runs
+ - Allow to disable request access button on projects/groups
- Refactor repository paths handling to allow multiple git mount points
- Optimize system note visibility checking by memoizing the visible reference count !5070
- Add Application Setting to configure default Repository Path for new projects
- Delete award emoji when deleting a user
- Remove pinTo from Flash and make inline flash messages look nicer !4854 (winniehell)
+ - Add an API for downloading latest successful build from a particular branch or tag !5347
+ - Add link to profile to commit avatar !5163 (winniehell)
- Wrap code blocks on Activies and Todos page. !4783 (winniehell)
- Align flash messages with left side of page content !4959 (winniehell)
- Display tooltip for "Copy to Clipboard" button !5164 (winniehell)
@@ -21,26 +30,36 @@ v 8.10.0 (unreleased)
- Escape file extension when parsing search results !5141 (winniehell)
- Apply the trusted_proxies config to the rack request object for use with rack_attack
- Upgrade to Rails 4.2.7. !5236
+ - Extend exposed environment variables for CI builds
+ - Allow to pull code with deploy key from public projects
+ - Use limit parameter rather than hardcoded value in `ldap:check` rake task (Mike Ricketts)
- Add Sidekiq queue duration to transaction metrics.
- Add a new column `artifacts_size` to table `ci_builds` !4964
- Let Workhorse serve format-patch diffs
- Display tooltip for mentioned users and groups !5261 (winniehell)
+ - Allow build email service to be tested
- Added day name to contribution calendar tooltips
- Make images fit to the size of the viewport !4810
- Fix check for New Branch button on Issue page !4630 (winniehell)
+ - Fix GFM autocomplete not working on wiki pages
- Fix MR-auto-close text added to description. !4836
- Support U2F devices in Firefox. !5177
- Fix issue, preventing users w/o push access to sort tags !5105 (redetection)
- Add Spring EmojiOne updates.
+ - Added Rake task for tracking deployments !5320
- Fix fetching LFS objects for private CI projects
+ - Add the new 2016 Emoji! Adds 72 new emoji including bacon, facepalm, and selfie. !5237
- Add syntax for multiline blockquote using `>>>` fence !3954
- Fix viewing notification settings when a project is pending deletion
- Updated compare dropdown menus to use GL dropdown
+ - Redirects back to issue after clicking login link
- Eager load award emoji on notes
+ - Allow to define manual actions/builds on Pipelines and Environments
- Fix pagination when sorting by columns with lots of ties (like priority)
- The Markdown reference parsers now re-use query results to prevent running the same queries multiple times !5020
- Updated project header design
- Issuable collapsed assignee tooltip is now the users name
+ - Fix compare view not changing code view rendering style
- Exclude email check from the standard health check
- Updated layout for Projects, Groups, Users on Admin area !4424
- Fix changing issue state columns in milestone view
@@ -52,9 +71,11 @@ v 8.10.0 (unreleased)
- API: Expose `due_date` for issues (Robert Schilling)
- API: Todos !3188 (Robert Schilling)
- API: Expose shared groups for projects and shared projects for groups !5050 (Robert Schilling)
+ - API: Expose `developers_can_push` and `developers_can_merge` for branches !5208 (Robert Schilling)
- Add "Enabled Git access protocols" to Application Settings
- Diffs will create button/diff form on demand no on server side
- Reduce size of HTML used by diff comment forms
+ - Protected branches have a "Developers can Merge" setting. !4892 (original implementation by Mathias Vestergaard)
- Fix user creation with stronger minimum password requirements !4054 (nathan-pmt)
- Only show New Snippet button to users that can create snippets.
- PipelinesFinder uses git cache data
@@ -65,6 +86,7 @@ v 8.10.0 (unreleased)
- Collapse large diffs by default (!4990)
- Fix mentioned users list on diff notes
- Fix creation of deployment on build that is retried, redeployed or rollback
+ - Don't parse Rinku returned value to DocFragment when it didn't change the original html string.
- Check for conflicts with existing Project's wiki path when creating a new project.
- Show last push widget in upstream after push to fork
- Fix stage status shown for pipelines
@@ -77,6 +99,7 @@ v 8.10.0 (unreleased)
- Avoid to retrieve MR closes_issues as much as possible.
- Add API endpoint for a group issues !4520 (mahcsig)
- Add Bugzilla integration !4930 (iamtjg)
+ - Fix new snippet style bug (elliotec)
- Instrument Rinku usage
- Be explicit to define merge request discussion variables
- Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab
@@ -87,6 +110,7 @@ v 8.10.0 (unreleased)
- Don't render discussion notes when requesting diff tab through AJAX
- Add basic system information like memory and disk usage to the admin panel
- Don't garbage collect commits that have related DB records like comments
+ - Allow to setup event by channel on slack service
- More descriptive message for git hooks and file locks
- Aliases of award emoji should be stored as original name. !5060 (dixpac)
- Handle custom Git hook result in GitLab UI
@@ -100,6 +124,7 @@ v 8.10.0 (unreleased)
- Add min value for project limit field on user's form !3622 (jastkand)
- Reset project pushes_since_gc when we enqueue the git gc call
- Add reminder to not paste private SSH keys !4399 (Ingo Blechschmidt)
+ - Collapsed diffs lines/size don't acumulate to overflow diffs.
- Remove duplicate `description` field in `MergeRequest` entities (Ben Boeckel)
- Style of import project buttons were fixed in the new project page. !5183 (rdemirbay)
- Fix GitHub client requests when rate limit is disabled
@@ -111,9 +136,17 @@ v 8.10.0 (unreleased)
- Fix last update timestamp on issues not preserved on gitlab.com and project imports
- Fix issues importing projects from EE to CE
- Fix creating group with space in group path
+ - Improve cron_jobs loading error messages !5318 / !5360
- Create Todos for Issue author when assign or mention himself (Katarzyna Kobierska)
- Limit the number of retries on error to 3 for exporting projects
- Allow empty repositories on project import/export
+ - Render only commit message title in builds (Katarzyna Kobierska Ula Budziszewska)
+ - Allow bulk (un)subscription from issues in issue index
+ - Fix MR diff encoding issues exporting GitLab projects
+ - Move builds settings out of project settings and rename Pipelines
+ - Add builds badge to Pipelines settings page
+ - Export and import avatar as part of project import/export
+ - Fix migration corrupting import data for old version upgrades
v 8.9.6
- Fix importing of events under notes for GitLab projects. !5154
diff --git a/Gemfile b/Gemfile
index 81e8ff60ad5..c5df68839d5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -52,7 +52,7 @@ gem 'browser', '~> 2.2'
# Extracting information from a git repository
# Provide access to Gitlab::Git library
-gem 'gitlab_git', '~> 10.2'
+gem 'gitlab_git', '~> 10.3.2'
# LDAP Auth
# GitLab fork with several improvements to original library. For full list of changes
@@ -223,7 +223,7 @@ gem 'jquery-turbolinks', '~> 2.1.0'
gem 'addressable', '~> 2.3.8'
gem 'bootstrap-sass', '~> 3.3.0'
gem 'font-awesome-rails', '~> 4.6.1'
-gem 'gemojione', '~> 2.6'
+gem 'gemojione', '~> 3.0'
gem 'gon', '~> 6.0.1'
gem 'jquery-atwho-rails', '~> 1.3.2'
gem 'jquery-rails', '~> 4.1.0'
@@ -349,3 +349,6 @@ gem 'health_check', '~> 2.1.0'
# System information
gem 'vmstat', '~> 2.1.0'
gem 'sys-filesystem', '~> 1.1.6'
+
+# Secure headers for Content Security Policy
+gem 'secure_headers', '~> 3.3'
diff --git a/Gemfile.lock b/Gemfile.lock
index 0987fd5665a..363904a4baa 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -255,7 +255,7 @@ GEM
ruby-progressbar (~> 1.4)
gemnasium-gitlab-service (0.2.6)
rugged (~> 0.21)
- gemojione (2.6.1)
+ gemojione (3.0.1)
json
get_process_mem (0.2.0)
gherkin-ruby (0.3.2)
@@ -274,7 +274,7 @@ GEM
diff-lcs (~> 1.1)
mime-types (>= 1.16, < 3)
posix-spawn (~> 0.3)
- gitlab_git (10.2.3)
+ gitlab_git (10.3.2)
activesupport (~> 4.0)
charlock_holmes (~> 0.7.3)
github-linguist (~> 4.7.0)
@@ -578,7 +578,7 @@ GEM
railties (>= 4.2.0, < 5.1)
rinku (2.0.0)
rotp (2.1.2)
- rouge (2.0.3)
+ rouge (2.0.5)
rqrcode (0.7.0)
chunky_png
rqrcode-rails3 (0.1.7)
@@ -645,6 +645,8 @@ GEM
sdoc (0.3.20)
json (>= 1.1.3)
rdoc (~> 3.10)
+ secure_headers (3.3.2)
+ useragent
seed-fu (2.3.6)
activerecord (>= 3.1)
activesupport (>= 3.1)
@@ -767,6 +769,7 @@ GEM
get_process_mem (~> 0)
unicorn (>= 4, < 6)
uniform_notifier (1.9.0)
+ useragent (0.16.7)
uuid (2.3.8)
macaddr (~> 1.0)
version_sorter (2.0.0)
@@ -857,11 +860,11 @@ DEPENDENCIES
foreman (~> 0.78.0)
fuubar (~> 2.0.0)
gemnasium-gitlab-service (~> 0.2)
- gemojione (~> 2.6)
+ gemojione (~> 3.0)
github-linguist (~> 4.7.0)
github-markup (~> 1.4)
gitlab-flowdock-git-hook (~> 1.0.1)
- gitlab_git (~> 10.2)
+ gitlab_git (~> 10.3.2)
gitlab_meta (= 7.0)
gitlab_omniauth-ldap (~> 1.2.1)
gollum-lib (~> 4.2)
@@ -944,6 +947,7 @@ DEPENDENCIES
sass-rails (~> 5.0.0)
scss_lint (~> 0.47.0)
sdoc (~> 0.3.20)
+ secure_headers (~> 3.3)
seed-fu (~> 2.3.5)
select2-rails (~> 3.5.9)
sentry-raven (~> 1.1.0)
diff --git a/MAINTENANCE.md b/MAINTENANCE.md
index d3d36670693..1efb2a35f6d 100644
--- a/MAINTENANCE.md
+++ b/MAINTENANCE.md
@@ -1,15 +1,35 @@
# GitLab Maintenance Policy
-GitLab is a fast moving and evolving project. We currently don't have the resources to support many releases concurrently. We support exactly one stable release at any given time.
+GitLab follows the [Semantic Versioning](http://semver.org/) for its releases:
+`(Major).(Minor).(Patch)` in a [pragmatic way].
-GitLab follows the [Semantic Versioning](http://semver.org/) for its releases: `(Major).(Minor).(Patch)` in a [pragmatic way](https://gist.github.com/jashkenas/cbd2b088e20279ae2c8e).
+- **Major version**: Whenever there is something significant or any backwards
+ incompatible changes are introduced to the public API.
+- **Minor version**: When new, backwards compatible functionality is introduced
+ to the public API or a minor feature is introduced, or when a set of smaller
+ features is rolled out.
+- **Patch number**: When backwards compatible bug fixes are introduced that fix
+ incorrect behavior.
-- **Major version**: Whenever there is something significant or any backwards incompatible changes are introduced to the public API.
-- **Minor version**: When new, backwards compatible functionality is introduced to the public API or a minor feature is introduced, or when a set of smaller features is rolled out.
-- **Patch number**: When backwards compatible bug fixes are introduced that fix incorrect behavior.
+The current stable release will receive security patches and bug fixes
+(eg. `8.9.0` -> `8.9.1`). Feature releases will mark the next supported stable
+release where the minor version is increased numerically by increments of one
+(eg. `8.9 -> 8.10`).
-The current stable release will receive security patches and bug fixes (eg. `5.0` -> `5.0.1`). Feature releases will mark the next supported stable release where the minor version is increased numerically by increments of one (eg. `5.0 -> 5.1`).
+Our current policy is to support one stable release at any given time, but for
+medium-level security issues, we may consider [backporting to the previous two
+monthly releases][rel-sec].
-We encourage everyone to run the latest stable release to ensure that you can easily upgrade to the most secure and feature rich GitLab experience. In order to make sure you can easily run the most recent stable release, we are working hard to keep the update process simple and reliable.
+We encourage everyone to run the latest stable release to ensure that you can
+easily upgrade to the most secure and feature-rich GitLab experience. In order
+to make sure you can easily run the most recent stable release, we are working
+hard to keep the update process simple and reliable.
-More information about the release procedures can be found in the doc/release directory.
+More information about the release procedures can be found in our
+[release-tools documentation][rel]. You may also want to read our
+[Responsible Disclosure Policy][disclosure].
+
+[rel-sec]: https://gitlab.com/gitlab-org/release-tools/blob/master/doc/security.md#backporting
+[rel]: https://gitlab.com/gitlab-org/release-tools/blob/master/doc/
+[disclosure]: https://about.gitlab.com/disclosure/
+[pragmatic way]: https://gist.github.com/jashkenas/cbd2b088e20279ae2c8e
diff --git a/app/assets/images/emoji.png b/app/assets/images/emoji.png
index 6bacb0e92b6..6f1a34a5591 100644
--- a/app/assets/images/emoji.png
+++ b/app/assets/images/emoji.png
Binary files differ
diff --git a/app/assets/images/emoji@2x.png b/app/assets/images/emoji@2x.png
index 99588b56616..dc9cae1d44c 100644
--- a/app/assets/images/emoji@2x.png
+++ b/app/assets/images/emoji@2x.png
Binary files differ
diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee
index 1b0d0db8954..951530e03a5 100644
--- a/app/assets/javascripts/gl_dropdown.js.coffee
+++ b/app/assets/javascripts/gl_dropdown.js.coffee
@@ -250,6 +250,8 @@ class GitLabDropdown
if self.options.clicked
self.options.clicked(selected, $el, e)
+ $el.trigger('blur')
+
# Finds an element inside wrapper element
getElement: (selector) ->
@dropdown.find selector
diff --git a/app/assets/javascripts/graphs/application.js.coffee b/app/assets/javascripts/graphs/graphs_bundle.js.coffee
index e0f681acf0b..e0f681acf0b 100644
--- a/app/assets/javascripts/graphs/application.js.coffee
+++ b/app/assets/javascripts/graphs/graphs_bundle.js.coffee
diff --git a/app/assets/javascripts/issues-bulk-assignment.js.coffee b/app/assets/javascripts/issues-bulk-assignment.js.coffee
index 6b0e69dbae7..3d09ea08e3b 100644
--- a/app/assets/javascripts/issues-bulk-assignment.js.coffee
+++ b/app/assets/javascripts/issues-bulk-assignment.js.coffee
@@ -85,12 +85,13 @@ class @IssuableBulkActions
getFormDataAsObject: ->
formData =
update:
- state_event : @form.find('input[name="update[state_event]"]').val()
- assignee_id : @form.find('input[name="update[assignee_id]"]').val()
- milestone_id : @form.find('input[name="update[milestone_id]"]').val()
- issues_ids : @form.find('input[name="update[issues_ids]"]').val()
- add_label_ids : []
- remove_label_ids : []
+ state_event : @form.find('input[name="update[state_event]"]').val()
+ assignee_id : @form.find('input[name="update[assignee_id]"]').val()
+ milestone_id : @form.find('input[name="update[milestone_id]"]').val()
+ issues_ids : @form.find('input[name="update[issues_ids]"]').val()
+ subscription_event : @form.find('input[name="update[subscription_event]"]').val()
+ add_label_ids : []
+ remove_label_ids : []
if @willUpdateLabels
@getLabelsToApply().map (id) ->
diff --git a/app/assets/javascripts/lib/utils/datetime_utility.js.coffee b/app/assets/javascripts/lib/utils/datetime_utility.js.coffee
index 178963fe0aa..2371e913844 100644
--- a/app/assets/javascripts/lib/utils/datetime_utility.js.coffee
+++ b/app/assets/javascripts/lib/utils/datetime_utility.js.coffee
@@ -2,7 +2,7 @@
w.gl ?= {}
w.gl.utils ?= {}
- w.gl.utils.days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
+ w.gl.utils.days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
w.gl.utils.formatDate = (datetime) ->
dateFormat(datetime, 'mmm d, yyyy h:MMtt Z')
diff --git a/app/assets/javascripts/network/application.js.coffee b/app/assets/javascripts/network/network_bundle.js.coffee
index f75f63869c5..f75f63869c5 100644
--- a/app/assets/javascripts/network/application.js.coffee
+++ b/app/assets/javascripts/network/network_bundle.js.coffee
diff --git a/app/assets/javascripts/profile/application.js.coffee b/app/assets/javascripts/profile/profile_bundle.js.coffee
index 91cacfece46..91cacfece46 100644
--- a/app/assets/javascripts/profile/application.js.coffee
+++ b/app/assets/javascripts/profile/profile_bundle.js.coffee
diff --git a/app/assets/javascripts/protected_branches.js.coffee b/app/assets/javascripts/protected_branches.js.coffee
index 79c2306e4d2..14afef2e2ee 100644
--- a/app/assets/javascripts/protected_branches.js.coffee
+++ b/app/assets/javascripts/protected_branches.js.coffee
@@ -1,18 +1,18 @@
$ ->
$(".protected-branches-list :checkbox").change (e) ->
name = $(this).attr("name")
- if name == "developers_can_push"
+ if name == "developers_can_push" || name == "developers_can_merge"
id = $(this).val()
- checked = $(this).is(":checked")
+ can_push = $(this).is(":checked")
url = $(this).data("url")
$.ajax
- type: "PUT"
+ type: "PATCH"
url: url
dataType: "json"
data:
id: id
protected_branch:
- developers_can_push: checked
+ "#{name}": can_push
success: ->
row = $(e.target)
diff --git a/app/assets/javascripts/subscription_select.js.coffee b/app/assets/javascripts/subscription_select.js.coffee
new file mode 100644
index 00000000000..e5eb7a50d80
--- /dev/null
+++ b/app/assets/javascripts/subscription_select.js.coffee
@@ -0,0 +1,18 @@
+class @SubscriptionSelect
+ constructor: ->
+ $('.js-subscription-event').each (i, el) ->
+ fieldName = $(el).data("field-name")
+
+ $(el).glDropdown(
+ selectable: true
+ fieldName: fieldName
+ toggleLabel: (selected, el, instance) =>
+ label = 'Subscription'
+ $item = instance.dropdown.find('.is-active')
+ label = $item.text() if $item.length
+ label
+ clicked: (item, $el, e)->
+ e.preventDefault()
+ id: (obj, el) ->
+ $(el).data("id")
+ )
diff --git a/app/assets/javascripts/users/application.js.coffee b/app/assets/javascripts/users/users_bundle.js.coffee
index 91cacfece46..91cacfece46 100644
--- a/app/assets/javascripts/users/application.js.coffee
+++ b/app/assets/javascripts/users/users_bundle.js.coffee
diff --git a/app/assets/stylesheets/framework/blocks.scss b/app/assets/stylesheets/framework/blocks.scss
index ad94e457cfd..7ce203d2ec7 100644
--- a/app/assets/stylesheets/framework/blocks.scss
+++ b/app/assets/stylesheets/framework/blocks.scss
@@ -232,7 +232,9 @@
.nav-block {
.controls {
float: right;
- margin-top: 11px;
+ margin-top: 8px;
+ padding-bottom: 7px;
+ border-bottom: 1px solid $border-color;
}
}
diff --git a/app/assets/stylesheets/framework/buttons.scss b/app/assets/stylesheets/framework/buttons.scss
index 590b8f54363..f87b8a2ad1c 100644
--- a/app/assets/stylesheets/framework/buttons.scss
+++ b/app/assets/stylesheets/framework/buttons.scss
@@ -49,6 +49,17 @@
border-color: $border-dark;
color: $color;
}
+
+ svg {
+
+ path {
+ fill: $color;
+ }
+
+ use {
+ stroke: $color;
+ }
+ }
}
@mixin btn-green {
@@ -173,6 +184,13 @@
.caret {
margin-left: 5px;
}
+
+ svg {
+ height: 15px;
+ width: auto;
+ position: relative;
+ top: 2px;
+ }
}
.btn-lg {
diff --git a/app/assets/stylesheets/framework/files.scss b/app/assets/stylesheets/framework/files.scss
index 71e4b50f2af..407f1873431 100644
--- a/app/assets/stylesheets/framework/files.scss
+++ b/app/assets/stylesheets/framework/files.scss
@@ -70,7 +70,7 @@
}
&.wiki {
- padding: $gl-padding;
+ padding: 30px $gl-padding;
.highlight {
margin-bottom: 9px;
diff --git a/app/assets/stylesheets/framework/sidebar.scss b/app/assets/stylesheets/framework/sidebar.scss
index d52e8f00172..3fa4a22258d 100644
--- a/app/assets/stylesheets/framework/sidebar.scss
+++ b/app/assets/stylesheets/framework/sidebar.scss
@@ -198,6 +198,10 @@ header.header-pinned-nav {
.sidebar-collapsed-icon {
cursor: pointer;
+
+ .btn {
+ background-color: $gray-light;
+ }
}
}
diff --git a/app/assets/stylesheets/framework/typography.scss b/app/assets/stylesheets/framework/typography.scss
index 3575984b229..8659604cb8b 100644
--- a/app/assets/stylesheets/framework/typography.scss
+++ b/app/assets/stylesheets/framework/typography.scss
@@ -37,39 +37,41 @@
}
h1 {
- font-size: 1.3em;
+ font-size: 2em;
font-weight: 600;
- margin: 24px 0 12px;
- padding: 0 0 10px;
- border-bottom: 1px solid #e7e9ed;
+ margin: 1em 0 10px;
+ padding: 0 0 0.3em;
+ border-bottom: 1px solid $btn-default-border;
color: $gl-gray-dark;
}
h2 {
- font-size: 1.2em;
+ font-size: 1.6em;
font-weight: 600;
- margin: 24px 0 12px;
+ margin: 1em 0 10px;
+ padding-bottom: 0.3em;
+ border-bottom: 1px solid $btn-default-border;
color: $gl-gray-dark;
}
h3 {
- margin: 24px 0 12px;
- font-size: 1.1em;
+ margin: 1em 0 10px;
+ font-size: 1.4em;
}
h4 {
- margin: 24px 0 12px;
- font-size: 0.98em;
+ margin: 1em 0 10px;
+ font-size: 1.25em;
}
h5 {
- margin: 24px 0 12px;
- font-size: 0.95em;
+ margin: 1em 0 10px;
+ font-size: 1em;
}
h6 {
- margin: 24px 0 12px;
- font-size: 0.90em;
+ margin: 1em 0 10px;
+ font-size: 0.95em;
}
blockquote {
@@ -115,7 +117,7 @@
ul, ol {
padding: 0;
- margin: 6px 0 6px 28px !important;
+ margin: 3px 0 3px 28px !important;
}
li {
diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss
index f0e7002e4cd..1882d4e888d 100644
--- a/app/assets/stylesheets/framework/variables.scss
+++ b/app/assets/stylesheets/framework/variables.scss
@@ -16,7 +16,7 @@ $border-color: #e5e5e5;
$focus-border-color: #3aabf0;
$table-border-color: #f0f0f0;
$background-color: #fafafa;
-$dark-background-color: #f7f7f7;
+$dark-background-color: #f5f5f5;
$table-text-gray: #8f8f8f;
/*
diff --git a/app/assets/stylesheets/pages/emojis.scss b/app/assets/stylesheets/pages/emojis.scss
index b731abc7450..f17797b2381 100644
--- a/app/assets/stylesheets/pages/emojis.scss
+++ b/app/assets/stylesheets/pages/emojis.scss
@@ -1,4 +1,4 @@
-.emoji-0023-20E3 { background-position: 0 0; }
+.emoji-0023-20E3 { background-position: 0 0px; }
.emoji-002A-20E3 { background-position: -20px 0; }
.emoji-0030-20E3 { background-position: 0 -20px; }
.emoji-0031-20E3 { background-position: -20px -20px; }
@@ -452,1271 +452,1344 @@
.emoji-1F391 { background-position: -420px -200px; }
.emoji-1F392 { background-position: -420px -220px; }
.emoji-1F393 { background-position: -420px -240px; }
-.emoji-1F394 { background-position: -420px -260px; }
-.emoji-1F395 { background-position: -420px -280px; }
-.emoji-1F396 { background-position: -420px -300px; }
-.emoji-1F397 { background-position: -420px -320px; }
-.emoji-1F398 { background-position: -420px -340px; }
-.emoji-1F399 { background-position: -420px -360px; }
-.emoji-1F39A { background-position: -420px -380px; }
-.emoji-1F39B { background-position: -420px -400px; }
-.emoji-1F39C { background-position: 0 -420px; }
-.emoji-1F39D { background-position: -20px -420px; }
-.emoji-1F39E { background-position: -40px -420px; }
-.emoji-1F39F { background-position: -60px -420px; }
-.emoji-1F3A0 { background-position: -80px -420px; }
-.emoji-1F3A1 { background-position: -100px -420px; }
-.emoji-1F3A2 { background-position: -120px -420px; }
-.emoji-1F3A3 { background-position: -140px -420px; }
-.emoji-1F3A4 { background-position: -160px -420px; }
-.emoji-1F3A5 { background-position: -180px -420px; }
-.emoji-1F3A6 { background-position: -200px -420px; }
-.emoji-1F3A7 { background-position: -220px -420px; }
-.emoji-1F3A8 { background-position: -240px -420px; }
-.emoji-1F3A9 { background-position: -260px -420px; }
-.emoji-1F3AA { background-position: -280px -420px; }
-.emoji-1F3AB { background-position: -300px -420px; }
-.emoji-1F3AC { background-position: -320px -420px; }
-.emoji-1F3AD { background-position: -340px -420px; }
-.emoji-1F3AE { background-position: -360px -420px; }
-.emoji-1F3AF { background-position: -380px -420px; }
-.emoji-1F3B0 { background-position: -400px -420px; }
-.emoji-1F3B1 { background-position: -420px -420px; }
-.emoji-1F3B2 { background-position: -440px 0; }
-.emoji-1F3B3 { background-position: -440px -20px; }
-.emoji-1F3B4 { background-position: -440px -40px; }
-.emoji-1F3B5 { background-position: -440px -60px; }
-.emoji-1F3B6 { background-position: -440px -80px; }
-.emoji-1F3B7 { background-position: -440px -100px; }
-.emoji-1F3B8 { background-position: -440px -120px; }
-.emoji-1F3B9 { background-position: -440px -140px; }
-.emoji-1F3BA { background-position: -440px -160px; }
-.emoji-1F3BB { background-position: -440px -180px; }
-.emoji-1F3BC { background-position: -440px -200px; }
-.emoji-1F3BD { background-position: -440px -220px; }
-.emoji-1F3BE { background-position: -440px -240px; }
-.emoji-1F3BF { background-position: -440px -260px; }
-.emoji-1F3C0 { background-position: -440px -280px; }
-.emoji-1F3C1 { background-position: -440px -300px; }
-.emoji-1F3C2 { background-position: -440px -320px; }
-.emoji-1F3C3 { background-position: -440px -340px; }
-.emoji-1F3C3-1F3FB { background-position: -440px -360px; }
-.emoji-1F3C3-1F3FC { background-position: -440px -380px; }
-.emoji-1F3C3-1F3FD { background-position: -440px -400px; }
-.emoji-1F3C3-1F3FE { background-position: -440px -420px; }
-.emoji-1F3C3-1F3FF { background-position: 0 -440px; }
-.emoji-1F3C4 { background-position: -20px -440px; }
-.emoji-1F3C4-1F3FB { background-position: -40px -440px; }
-.emoji-1F3C4-1F3FC { background-position: -60px -440px; }
-.emoji-1F3C4-1F3FD { background-position: -80px -440px; }
-.emoji-1F3C4-1F3FE { background-position: -100px -440px; }
-.emoji-1F3C4-1F3FF { background-position: -120px -440px; }
-.emoji-1F3C5 { background-position: -140px -440px; }
-.emoji-1F3C6 { background-position: -160px -440px; }
-.emoji-1F3C7 { background-position: -180px -440px; }
-.emoji-1F3C7-1F3FB { background-position: -200px -440px; }
-.emoji-1F3C7-1F3FC { background-position: -220px -440px; }
-.emoji-1F3C7-1F3FD { background-position: -240px -440px; }
-.emoji-1F3C7-1F3FE { background-position: -260px -440px; }
-.emoji-1F3C7-1F3FF { background-position: -280px -440px; }
-.emoji-1F3C8 { background-position: -300px -440px; }
-.emoji-1F3C9 { background-position: -320px -440px; }
-.emoji-1F3CA { background-position: -340px -440px; }
-.emoji-1F3CA-1F3FB { background-position: -360px -440px; }
-.emoji-1F3CA-1F3FC { background-position: -380px -440px; }
-.emoji-1F3CA-1F3FD { background-position: -400px -440px; }
-.emoji-1F3CA-1F3FE { background-position: -420px -440px; }
-.emoji-1F3CA-1F3FF { background-position: -440px -440px; }
-.emoji-1F3CB { background-position: -460px 0; }
-.emoji-1F3CB-1F3FB { background-position: -460px -20px; }
-.emoji-1F3CB-1F3FC { background-position: -460px -40px; }
-.emoji-1F3CB-1F3FD { background-position: -460px -60px; }
-.emoji-1F3CB-1F3FE { background-position: -460px -80px; }
-.emoji-1F3CB-1F3FF { background-position: -460px -100px; }
-.emoji-1F3CC { background-position: -460px -120px; }
-.emoji-1F3CD { background-position: -460px -140px; }
-.emoji-1F3CE { background-position: -460px -160px; }
-.emoji-1F3CF { background-position: -460px -180px; }
-.emoji-1F3D0 { background-position: -460px -200px; }
-.emoji-1F3D1 { background-position: -460px -220px; }
-.emoji-1F3D2 { background-position: -460px -240px; }
-.emoji-1F3D3 { background-position: -460px -260px; }
-.emoji-1F3D4 { background-position: -460px -280px; }
-.emoji-1F3D5 { background-position: -460px -300px; }
-.emoji-1F3D6 { background-position: -460px -320px; }
-.emoji-1F3D7 { background-position: -460px -340px; }
-.emoji-1F3D8 { background-position: -460px -360px; }
-.emoji-1F3D9 { background-position: -460px -380px; }
-.emoji-1F3DA { background-position: -460px -400px; }
-.emoji-1F3DB { background-position: -460px -420px; }
-.emoji-1F3DC { background-position: -460px -440px; }
-.emoji-1F3DD { background-position: 0 -460px; }
-.emoji-1F3DE { background-position: -20px -460px; }
-.emoji-1F3DF { background-position: -40px -460px; }
-.emoji-1F3E0 { background-position: -60px -460px; }
-.emoji-1F3E1 { background-position: -80px -460px; }
-.emoji-1F3E2 { background-position: -100px -460px; }
-.emoji-1F3E3 { background-position: -120px -460px; }
-.emoji-1F3E4 { background-position: -140px -460px; }
-.emoji-1F3E5 { background-position: -160px -460px; }
-.emoji-1F3E6 { background-position: -180px -460px; }
-.emoji-1F3E7 { background-position: -200px -460px; }
-.emoji-1F3E8 { background-position: -220px -460px; }
-.emoji-1F3E9 { background-position: -240px -460px; }
-.emoji-1F3EA { background-position: -260px -460px; }
-.emoji-1F3EB { background-position: -280px -460px; }
-.emoji-1F3EC { background-position: -300px -460px; }
-.emoji-1F3ED { background-position: -320px -460px; }
-.emoji-1F3EE { background-position: -340px -460px; }
-.emoji-1F3EF { background-position: -360px -460px; }
-.emoji-1F3F0 { background-position: -380px -460px; }
-.emoji-1F3F1 { background-position: -400px -460px; }
-.emoji-1F3F2 { background-position: -420px -460px; }
-.emoji-1F3F3 { background-position: -440px -460px; }
-.emoji-1F3F4 { background-position: -460px -460px; }
-.emoji-1F3F5 { background-position: -480px 0; }
-.emoji-1F3F6 { background-position: -480px -20px; }
-.emoji-1F3F7 { background-position: -480px -40px; }
-.emoji-1F3F8 { background-position: -480px -60px; }
-.emoji-1F3F9 { background-position: -480px -80px; }
-.emoji-1F3FA { background-position: -480px -100px; }
-.emoji-1F3FB { background-position: -480px -120px; }
-.emoji-1F3FC { background-position: -480px -140px; }
-.emoji-1F3FD { background-position: -480px -160px; }
-.emoji-1F3FE { background-position: -480px -180px; }
-.emoji-1F3FF { background-position: -480px -200px; }
-.emoji-1F400 { background-position: -480px -220px; }
-.emoji-1F401 { background-position: -480px -240px; }
-.emoji-1F402 { background-position: -480px -260px; }
-.emoji-1F403 { background-position: -480px -280px; }
-.emoji-1F404 { background-position: -480px -300px; }
-.emoji-1F405 { background-position: -480px -320px; }
-.emoji-1F406 { background-position: -480px -340px; }
-.emoji-1F407 { background-position: -480px -360px; }
-.emoji-1F408 { background-position: -480px -380px; }
-.emoji-1F409 { background-position: -480px -400px; }
-.emoji-1F40A { background-position: -480px -420px; }
-.emoji-1F40B { background-position: -480px -440px; }
-.emoji-1F40C { background-position: -480px -460px; }
-.emoji-1F40D { background-position: 0 -480px; }
-.emoji-1F40E { background-position: -20px -480px; }
-.emoji-1F40F { background-position: -40px -480px; }
-.emoji-1F410 { background-position: -60px -480px; }
-.emoji-1F411 { background-position: -80px -480px; }
-.emoji-1F412 { background-position: -100px -480px; }
-.emoji-1F413 { background-position: -120px -480px; }
-.emoji-1F414 { background-position: -140px -480px; }
-.emoji-1F415 { background-position: -160px -480px; }
-.emoji-1F416 { background-position: -180px -480px; }
-.emoji-1F417 { background-position: -200px -480px; }
-.emoji-1F418 { background-position: -220px -480px; }
-.emoji-1F419 { background-position: -240px -480px; }
-.emoji-1F41A { background-position: -260px -480px; }
-.emoji-1F41B { background-position: -280px -480px; }
-.emoji-1F41C { background-position: -300px -480px; }
-.emoji-1F41D { background-position: -320px -480px; }
-.emoji-1F41E { background-position: -340px -480px; }
-.emoji-1F41F { background-position: -360px -480px; }
-.emoji-1F420 { background-position: -380px -480px; }
-.emoji-1F421 { background-position: -400px -480px; }
-.emoji-1F422 { background-position: -420px -480px; }
-.emoji-1F423 { background-position: -440px -480px; }
-.emoji-1F424 { background-position: -460px -480px; }
-.emoji-1F425 { background-position: -480px -480px; }
-.emoji-1F426 { background-position: -500px 0; }
-.emoji-1F427 { background-position: -500px -20px; }
-.emoji-1F428 { background-position: -500px -40px; }
-.emoji-1F429 { background-position: -500px -60px; }
-.emoji-1F42A { background-position: -500px -80px; }
-.emoji-1F42B { background-position: -500px -100px; }
-.emoji-1F42C { background-position: -500px -120px; }
-.emoji-1F42D { background-position: -500px -140px; }
-.emoji-1F42E { background-position: -500px -160px; }
-.emoji-1F42F { background-position: -500px -180px; }
-.emoji-1F430 { background-position: -500px -200px; }
-.emoji-1F431 { background-position: -500px -220px; }
-.emoji-1F432 { background-position: -500px -240px; }
-.emoji-1F433 { background-position: -500px -260px; }
-.emoji-1F434 { background-position: -500px -280px; }
-.emoji-1F435 { background-position: -500px -300px; }
-.emoji-1F436 { background-position: -500px -320px; }
-.emoji-1F437 { background-position: -500px -340px; }
-.emoji-1F438 { background-position: -500px -360px; }
-.emoji-1F439 { background-position: -500px -380px; }
-.emoji-1F43A { background-position: -500px -400px; }
-.emoji-1F43B { background-position: -500px -420px; }
-.emoji-1F43C { background-position: -500px -440px; }
-.emoji-1F43D { background-position: -500px -460px; }
-.emoji-1F43E { background-position: -500px -480px; }
-.emoji-1F43F { background-position: 0 -500px; }
-.emoji-1F440 { background-position: -20px -500px; }
-.emoji-1F441 { background-position: -40px -500px; }
-.emoji-1F441-1F5E8 { background-position: -60px -500px; }
-.emoji-1F442 { background-position: -80px -500px; }
-.emoji-1F442-1F3FB { background-position: -100px -500px; }
-.emoji-1F442-1F3FC { background-position: -120px -500px; }
-.emoji-1F442-1F3FD { background-position: -140px -500px; }
-.emoji-1F442-1F3FE { background-position: -160px -500px; }
-.emoji-1F442-1F3FF { background-position: -180px -500px; }
-.emoji-1F443 { background-position: -200px -500px; }
-.emoji-1F443-1F3FB { background-position: -220px -500px; }
-.emoji-1F443-1F3FC { background-position: -240px -500px; }
-.emoji-1F443-1F3FD { background-position: -260px -500px; }
-.emoji-1F443-1F3FE { background-position: -280px -500px; }
-.emoji-1F443-1F3FF { background-position: -300px -500px; }
-.emoji-1F444 { background-position: -320px -500px; }
-.emoji-1F445 { background-position: -340px -500px; }
-.emoji-1F446 { background-position: -360px -500px; }
-.emoji-1F446-1F3FB { background-position: -380px -500px; }
-.emoji-1F446-1F3FC { background-position: -400px -500px; }
-.emoji-1F446-1F3FD { background-position: -420px -500px; }
-.emoji-1F446-1F3FE { background-position: -440px -500px; }
-.emoji-1F446-1F3FF { background-position: -460px -500px; }
-.emoji-1F447 { background-position: -480px -500px; }
-.emoji-1F447-1F3FB { background-position: -500px -500px; }
-.emoji-1F447-1F3FC { background-position: -520px 0; }
-.emoji-1F447-1F3FD { background-position: -520px -20px; }
-.emoji-1F447-1F3FE { background-position: -520px -40px; }
-.emoji-1F447-1F3FF { background-position: -520px -60px; }
-.emoji-1F448 { background-position: -520px -80px; }
-.emoji-1F448-1F3FB { background-position: -520px -100px; }
-.emoji-1F448-1F3FC { background-position: -520px -120px; }
-.emoji-1F448-1F3FD { background-position: -520px -140px; }
-.emoji-1F448-1F3FE { background-position: -520px -160px; }
-.emoji-1F448-1F3FF { background-position: -520px -180px; }
-.emoji-1F449 { background-position: -520px -200px; }
-.emoji-1F449-1F3FB { background-position: -520px -220px; }
-.emoji-1F449-1F3FC { background-position: -520px -240px; }
-.emoji-1F449-1F3FD { background-position: -520px -260px; }
-.emoji-1F449-1F3FE { background-position: -520px -280px; }
-.emoji-1F449-1F3FF { background-position: -520px -300px; }
-.emoji-1F44A { background-position: -520px -320px; }
-.emoji-1F44A-1F3FB { background-position: -520px -340px; }
-.emoji-1F44A-1F3FC { background-position: -520px -360px; }
-.emoji-1F44A-1F3FD { background-position: -520px -380px; }
-.emoji-1F44A-1F3FE { background-position: -520px -400px; }
-.emoji-1F44A-1F3FF { background-position: -520px -420px; }
-.emoji-1F44B { background-position: -520px -440px; }
-.emoji-1F44B-1F3FB { background-position: -520px -460px; }
-.emoji-1F44B-1F3FC { background-position: -520px -480px; }
-.emoji-1F44B-1F3FD { background-position: -520px -500px; }
-.emoji-1F44B-1F3FE { background-position: 0 -520px; }
-.emoji-1F44B-1F3FF { background-position: -20px -520px; }
-.emoji-1F44C { background-position: -40px -520px; }
-.emoji-1F44C-1F3FB { background-position: -60px -520px; }
-.emoji-1F44C-1F3FC { background-position: -80px -520px; }
-.emoji-1F44C-1F3FD { background-position: -100px -520px; }
-.emoji-1F44C-1F3FE { background-position: -120px -520px; }
-.emoji-1F44C-1F3FF { background-position: -140px -520px; }
-.emoji-1F44D { background-position: -160px -520px; }
-.emoji-1F44D-1F3FB { background-position: -180px -520px; }
-.emoji-1F44D-1F3FC { background-position: -200px -520px; }
-.emoji-1F44D-1F3FD { background-position: -220px -520px; }
-.emoji-1F44D-1F3FE { background-position: -240px -520px; }
-.emoji-1F44D-1F3FF { background-position: -260px -520px; }
-.emoji-1F44E { background-position: -280px -520px; }
-.emoji-1F44E-1F3FB { background-position: -300px -520px; }
-.emoji-1F44E-1F3FC { background-position: -320px -520px; }
-.emoji-1F44E-1F3FD { background-position: -340px -520px; }
-.emoji-1F44E-1F3FE { background-position: -360px -520px; }
-.emoji-1F44E-1F3FF { background-position: -380px -520px; }
-.emoji-1F44F { background-position: -400px -520px; }
-.emoji-1F44F-1F3FB { background-position: -420px -520px; }
-.emoji-1F44F-1F3FC { background-position: -440px -520px; }
-.emoji-1F44F-1F3FD { background-position: -460px -520px; }
-.emoji-1F44F-1F3FE { background-position: -480px -520px; }
-.emoji-1F44F-1F3FF { background-position: -500px -520px; }
-.emoji-1F450 { background-position: -520px -520px; }
-.emoji-1F450-1F3FB { background-position: -540px 0; }
-.emoji-1F450-1F3FC { background-position: -540px -20px; }
-.emoji-1F450-1F3FD { background-position: -540px -40px; }
-.emoji-1F450-1F3FE { background-position: -540px -60px; }
-.emoji-1F450-1F3FF { background-position: -540px -80px; }
-.emoji-1F451 { background-position: -540px -100px; }
-.emoji-1F452 { background-position: -540px -120px; }
-.emoji-1F453 { background-position: -540px -140px; }
-.emoji-1F454 { background-position: -540px -160px; }
-.emoji-1F455 { background-position: -540px -180px; }
-.emoji-1F456 { background-position: -540px -200px; }
-.emoji-1F457 { background-position: -540px -220px; }
-.emoji-1F458 { background-position: -540px -240px; }
-.emoji-1F459 { background-position: -540px -260px; }
-.emoji-1F45A { background-position: -540px -280px; }
-.emoji-1F45B { background-position: -540px -300px; }
-.emoji-1F45C { background-position: -540px -320px; }
-.emoji-1F45D { background-position: -540px -340px; }
-.emoji-1F45E { background-position: -540px -360px; }
-.emoji-1F45F { background-position: -540px -380px; }
-.emoji-1F460 { background-position: -540px -400px; }
-.emoji-1F461 { background-position: -540px -420px; }
-.emoji-1F462 { background-position: -540px -440px; }
-.emoji-1F463 { background-position: -540px -460px; }
-.emoji-1F464 { background-position: -540px -480px; }
-.emoji-1F465 { background-position: -540px -500px; }
-.emoji-1F466 { background-position: -540px -520px; }
-.emoji-1F466-1F3FB { background-position: 0 -540px; }
-.emoji-1F466-1F3FC { background-position: -20px -540px; }
-.emoji-1F466-1F3FD { background-position: -40px -540px; }
-.emoji-1F466-1F3FE { background-position: -60px -540px; }
-.emoji-1F466-1F3FF { background-position: -80px -540px; }
-.emoji-1F467 { background-position: -100px -540px; }
-.emoji-1F467-1F3FB { background-position: -120px -540px; }
-.emoji-1F467-1F3FC { background-position: -140px -540px; }
-.emoji-1F467-1F3FD { background-position: -160px -540px; }
-.emoji-1F467-1F3FE { background-position: -180px -540px; }
-.emoji-1F467-1F3FF { background-position: -200px -540px; }
-.emoji-1F468 { background-position: -220px -540px; }
-.emoji-1F468-1F3FB { background-position: -240px -540px; }
-.emoji-1F468-1F3FC { background-position: -260px -540px; }
-.emoji-1F468-1F3FD { background-position: -280px -540px; }
-.emoji-1F468-1F3FE { background-position: -300px -540px; }
-.emoji-1F468-1F3FF { background-position: -320px -540px; }
-.emoji-1F468-1F468-1F466 { background-position: -340px -540px; }
-.emoji-1F468-1F468-1F466-1F466 { background-position: -360px -540px; }
-.emoji-1F468-1F468-1F467 { background-position: -380px -540px; }
-.emoji-1F468-1F468-1F467-1F466 { background-position: -400px -540px; }
-.emoji-1F468-1F468-1F467-1F467 { background-position: -420px -540px; }
-.emoji-1F468-1F469-1F466-1F466 { background-position: -440px -540px; }
-.emoji-1F468-1F469-1F467 { background-position: -460px -540px; }
-.emoji-1F468-1F469-1F467-1F466 { background-position: -480px -540px; }
-.emoji-1F468-1F469-1F467-1F467 { background-position: -500px -540px; }
-.emoji-1F468-2764-1F468 { background-position: -520px -540px; }
-.emoji-1F468-2764-1F48B-1F468 { background-position: -540px -540px; }
-.emoji-1F469 { background-position: -560px 0; }
-.emoji-1F469-1F3FB { background-position: -560px -20px; }
-.emoji-1F469-1F3FC { background-position: -560px -40px; }
-.emoji-1F469-1F3FD { background-position: -560px -60px; }
-.emoji-1F469-1F3FE { background-position: -560px -80px; }
-.emoji-1F469-1F3FF { background-position: -560px -100px; }
-.emoji-1F469-1F469-1F466 { background-position: -560px -120px; }
-.emoji-1F469-1F469-1F466-1F466 { background-position: -560px -140px; }
-.emoji-1F469-1F469-1F467 { background-position: -560px -160px; }
-.emoji-1F469-1F469-1F467-1F466 { background-position: -560px -180px; }
-.emoji-1F469-1F469-1F467-1F467 { background-position: -560px -200px; }
-.emoji-1F469-2764-1F469 { background-position: -560px -220px; }
-.emoji-1F469-2764-1F48B-1F469 { background-position: -560px -240px; }
-.emoji-1F46A { background-position: -560px -260px; }
-.emoji-1F46B { background-position: -560px -280px; }
-.emoji-1F46C { background-position: -560px -300px; }
-.emoji-1F46D { background-position: -560px -320px; }
-.emoji-1F46E { background-position: -560px -340px; }
-.emoji-1F46E-1F3FB { background-position: -560px -360px; }
-.emoji-1F46E-1F3FC { background-position: -560px -380px; }
-.emoji-1F46E-1F3FD { background-position: -560px -400px; }
-.emoji-1F46E-1F3FE { background-position: -560px -420px; }
-.emoji-1F46E-1F3FF { background-position: -560px -440px; }
-.emoji-1F46F { background-position: -560px -460px; }
-.emoji-1F470 { background-position: -560px -480px; }
-.emoji-1F470-1F3FB { background-position: -560px -500px; }
-.emoji-1F470-1F3FC { background-position: -560px -520px; }
-.emoji-1F470-1F3FD { background-position: -560px -540px; }
-.emoji-1F470-1F3FE { background-position: 0 -560px; }
-.emoji-1F470-1F3FF { background-position: -20px -560px; }
-.emoji-1F471 { background-position: -40px -560px; }
-.emoji-1F471-1F3FB { background-position: -60px -560px; }
-.emoji-1F471-1F3FC { background-position: -80px -560px; }
-.emoji-1F471-1F3FD { background-position: -100px -560px; }
-.emoji-1F471-1F3FE { background-position: -120px -560px; }
-.emoji-1F471-1F3FF { background-position: -140px -560px; }
-.emoji-1F472 { background-position: -160px -560px; }
-.emoji-1F472-1F3FB { background-position: -180px -560px; }
-.emoji-1F472-1F3FC { background-position: -200px -560px; }
-.emoji-1F472-1F3FD { background-position: -220px -560px; }
-.emoji-1F472-1F3FE { background-position: -240px -560px; }
-.emoji-1F472-1F3FF { background-position: -260px -560px; }
-.emoji-1F473 { background-position: -280px -560px; }
-.emoji-1F473-1F3FB { background-position: -300px -560px; }
-.emoji-1F473-1F3FC { background-position: -320px -560px; }
-.emoji-1F473-1F3FD { background-position: -340px -560px; }
-.emoji-1F473-1F3FE { background-position: -360px -560px; }
-.emoji-1F473-1F3FF { background-position: -380px -560px; }
-.emoji-1F474 { background-position: -400px -560px; }
-.emoji-1F474-1F3FB { background-position: -420px -560px; }
-.emoji-1F474-1F3FC { background-position: -440px -560px; }
-.emoji-1F474-1F3FD { background-position: -460px -560px; }
-.emoji-1F474-1F3FE { background-position: -480px -560px; }
-.emoji-1F474-1F3FF { background-position: -500px -560px; }
-.emoji-1F475 { background-position: -520px -560px; }
-.emoji-1F475-1F3FB { background-position: -540px -560px; }
-.emoji-1F475-1F3FC { background-position: -560px -560px; }
-.emoji-1F475-1F3FD { background-position: -580px 0; }
-.emoji-1F475-1F3FE { background-position: -580px -20px; }
-.emoji-1F475-1F3FF { background-position: -580px -40px; }
-.emoji-1F476 { background-position: -580px -60px; }
-.emoji-1F476-1F3FB { background-position: -580px -80px; }
-.emoji-1F476-1F3FC { background-position: -580px -100px; }
-.emoji-1F476-1F3FD { background-position: -580px -120px; }
-.emoji-1F476-1F3FE { background-position: -580px -140px; }
-.emoji-1F476-1F3FF { background-position: -580px -160px; }
-.emoji-1F477 { background-position: -580px -180px; }
-.emoji-1F477-1F3FB { background-position: -580px -200px; }
-.emoji-1F477-1F3FC { background-position: -580px -220px; }
-.emoji-1F477-1F3FD { background-position: -580px -240px; }
-.emoji-1F477-1F3FE { background-position: -580px -260px; }
-.emoji-1F477-1F3FF { background-position: -580px -280px; }
-.emoji-1F478 { background-position: -580px -300px; }
-.emoji-1F478-1F3FB { background-position: -580px -320px; }
-.emoji-1F478-1F3FC { background-position: -580px -340px; }
-.emoji-1F478-1F3FD { background-position: -580px -360px; }
-.emoji-1F478-1F3FE { background-position: -580px -380px; }
-.emoji-1F478-1F3FF { background-position: -580px -400px; }
-.emoji-1F479 { background-position: -580px -420px; }
-.emoji-1F47A { background-position: -580px -440px; }
-.emoji-1F47B { background-position: -580px -460px; }
-.emoji-1F47C { background-position: -580px -480px; }
-.emoji-1F47C-1F3FB { background-position: -580px -500px; }
-.emoji-1F47C-1F3FC { background-position: -580px -520px; }
-.emoji-1F47C-1F3FD { background-position: -580px -540px; }
-.emoji-1F47C-1F3FE { background-position: -580px -560px; }
-.emoji-1F47C-1F3FF { background-position: 0 -580px; }
-.emoji-1F47D { background-position: -20px -580px; }
-.emoji-1F47E { background-position: -40px -580px; }
-.emoji-1F47F { background-position: -60px -580px; }
-.emoji-1F480 { background-position: -80px -580px; }
-.emoji-1F481 { background-position: -100px -580px; }
-.emoji-1F481-1F3FB { background-position: -120px -580px; }
-.emoji-1F481-1F3FC { background-position: -140px -580px; }
-.emoji-1F481-1F3FD { background-position: -160px -580px; }
-.emoji-1F481-1F3FE { background-position: -180px -580px; }
-.emoji-1F481-1F3FF { background-position: -200px -580px; }
-.emoji-1F482 { background-position: -220px -580px; }
-.emoji-1F482-1F3FB { background-position: -240px -580px; }
-.emoji-1F482-1F3FC { background-position: -260px -580px; }
-.emoji-1F482-1F3FD { background-position: -280px -580px; }
-.emoji-1F482-1F3FE { background-position: -300px -580px; }
-.emoji-1F482-1F3FF { background-position: -320px -580px; }
-.emoji-1F483 { background-position: -340px -580px; }
-.emoji-1F483-1F3FB { background-position: -360px -580px; }
-.emoji-1F483-1F3FC { background-position: -380px -580px; }
-.emoji-1F483-1F3FD { background-position: -400px -580px; }
-.emoji-1F483-1F3FE { background-position: -420px -580px; }
-.emoji-1F483-1F3FF { background-position: -440px -580px; }
-.emoji-1F484 { background-position: -460px -580px; }
-.emoji-1F485 { background-position: -480px -580px; }
-.emoji-1F485-1F3FB { background-position: -500px -580px; }
-.emoji-1F485-1F3FC { background-position: -520px -580px; }
-.emoji-1F485-1F3FD { background-position: -540px -580px; }
-.emoji-1F485-1F3FE { background-position: -560px -580px; }
-.emoji-1F485-1F3FF { background-position: -580px -580px; }
-.emoji-1F486 { background-position: -600px 0; }
-.emoji-1F486-1F3FB { background-position: -600px -20px; }
-.emoji-1F486-1F3FC { background-position: -600px -40px; }
-.emoji-1F486-1F3FD { background-position: -600px -60px; }
-.emoji-1F486-1F3FE { background-position: -600px -80px; }
-.emoji-1F486-1F3FF { background-position: -600px -100px; }
-.emoji-1F487 { background-position: -600px -120px; }
-.emoji-1F487-1F3FB { background-position: -600px -140px; }
-.emoji-1F487-1F3FC { background-position: -600px -160px; }
-.emoji-1F487-1F3FD { background-position: -600px -180px; }
-.emoji-1F487-1F3FE { background-position: -600px -200px; }
-.emoji-1F487-1F3FF { background-position: -600px -220px; }
-.emoji-1F488 { background-position: -600px -240px; }
-.emoji-1F489 { background-position: -600px -260px; }
-.emoji-1F48A { background-position: -600px -280px; }
-.emoji-1F48B { background-position: -600px -300px; }
-.emoji-1F48C { background-position: -600px -320px; }
-.emoji-1F48D { background-position: -600px -340px; }
-.emoji-1F48E { background-position: -600px -360px; }
-.emoji-1F48F { background-position: -600px -380px; }
-.emoji-1F490 { background-position: -600px -400px; }
-.emoji-1F491 { background-position: -600px -420px; }
-.emoji-1F492 { background-position: -600px -440px; }
-.emoji-1F493 { background-position: -600px -460px; }
-.emoji-1F494 { background-position: -600px -480px; }
-.emoji-1F495 { background-position: -600px -500px; }
-.emoji-1F496 { background-position: -600px -520px; }
-.emoji-1F497 { background-position: -600px -540px; }
-.emoji-1F498 { background-position: -600px -560px; }
-.emoji-1F499 { background-position: -600px -580px; }
-.emoji-1F49A { background-position: 0 -600px; }
-.emoji-1F49B { background-position: -20px -600px; }
-.emoji-1F49C { background-position: -40px -600px; }
-.emoji-1F49D { background-position: -60px -600px; }
-.emoji-1F49E { background-position: -80px -600px; }
-.emoji-1F49F { background-position: -100px -600px; }
-.emoji-1F4A0 { background-position: -120px -600px; }
-.emoji-1F4A1 { background-position: -140px -600px; }
-.emoji-1F4A2 { background-position: -160px -600px; }
-.emoji-1F4A3 { background-position: -180px -600px; }
-.emoji-1F4A4 { background-position: -200px -600px; }
-.emoji-1F4A5 { background-position: -220px -600px; }
-.emoji-1F4A6 { background-position: -240px -600px; }
-.emoji-1F4A7 { background-position: -260px -600px; }
-.emoji-1F4A8 { background-position: -280px -600px; }
-.emoji-1F4A9 { background-position: -300px -600px; }
-.emoji-1F4AA { background-position: -320px -600px; }
-.emoji-1F4AA-1F3FB { background-position: -340px -600px; }
-.emoji-1F4AA-1F3FC { background-position: -360px -600px; }
-.emoji-1F4AA-1F3FD { background-position: -380px -600px; }
-.emoji-1F4AA-1F3FE { background-position: -400px -600px; }
-.emoji-1F4AA-1F3FF { background-position: -420px -600px; }
-.emoji-1F4AB { background-position: -440px -600px; }
-.emoji-1F4AC { background-position: -460px -600px; }
-.emoji-1F4AD { background-position: -480px -600px; }
-.emoji-1F4AE { background-position: -500px -600px; }
-.emoji-1F4AF { background-position: -520px -600px; }
-.emoji-1F4B0 { background-position: -540px -600px; }
-.emoji-1F4B1 { background-position: -560px -600px; }
-.emoji-1F4B2 { background-position: -580px -600px; }
-.emoji-1F4B3 { background-position: -600px -600px; }
-.emoji-1F4B4 { background-position: -620px 0; }
-.emoji-1F4B5 { background-position: -620px -20px; }
-.emoji-1F4B6 { background-position: -620px -40px; }
-.emoji-1F4B7 { background-position: -620px -60px; }
-.emoji-1F4B8 { background-position: -620px -80px; }
-.emoji-1F4B9 { background-position: -620px -100px; }
-.emoji-1F4BA { background-position: -620px -120px; }
-.emoji-1F4BB { background-position: -620px -140px; }
-.emoji-1F4BC { background-position: -620px -160px; }
-.emoji-1F4BD { background-position: -620px -180px; }
-.emoji-1F4BE { background-position: -620px -200px; }
-.emoji-1F4BF { background-position: -620px -220px; }
-.emoji-1F4C0 { background-position: -620px -240px; }
-.emoji-1F4C1 { background-position: -620px -260px; }
-.emoji-1F4C2 { background-position: -620px -280px; }
-.emoji-1F4C3 { background-position: -620px -300px; }
-.emoji-1F4C4 { background-position: -620px -320px; }
-.emoji-1F4C5 { background-position: -620px -340px; }
-.emoji-1F4C6 { background-position: -620px -360px; }
-.emoji-1F4C7 { background-position: -620px -380px; }
-.emoji-1F4C8 { background-position: -620px -400px; }
-.emoji-1F4C9 { background-position: -620px -420px; }
-.emoji-1F4CA { background-position: -620px -440px; }
-.emoji-1F4CB { background-position: -620px -460px; }
-.emoji-1F4CC { background-position: -620px -480px; }
-.emoji-1F4CD { background-position: -620px -500px; }
-.emoji-1F4CE { background-position: -620px -520px; }
-.emoji-1F4CF { background-position: -620px -540px; }
-.emoji-1F4D0 { background-position: -620px -560px; }
-.emoji-1F4D1 { background-position: -620px -580px; }
-.emoji-1F4D2 { background-position: -620px -600px; }
-.emoji-1F4D3 { background-position: 0 -620px; }
-.emoji-1F4D4 { background-position: -20px -620px; }
-.emoji-1F4D5 { background-position: -40px -620px; }
-.emoji-1F4D6 { background-position: -60px -620px; }
-.emoji-1F4D7 { background-position: -80px -620px; }
-.emoji-1F4D8 { background-position: -100px -620px; }
-.emoji-1F4D9 { background-position: -120px -620px; }
-.emoji-1F4DA { background-position: -140px -620px; }
-.emoji-1F4DB { background-position: -160px -620px; }
-.emoji-1F4DC { background-position: -180px -620px; }
-.emoji-1F4DD { background-position: -200px -620px; }
-.emoji-1F4DE { background-position: -220px -620px; }
-.emoji-1F4DF { background-position: -240px -620px; }
-.emoji-1F4E0 { background-position: -260px -620px; }
-.emoji-1F4E1 { background-position: -280px -620px; }
-.emoji-1F4E2 { background-position: -300px -620px; }
-.emoji-1F4E3 { background-position: -320px -620px; }
-.emoji-1F4E4 { background-position: -340px -620px; }
-.emoji-1F4E5 { background-position: -360px -620px; }
-.emoji-1F4E6 { background-position: -380px -620px; }
-.emoji-1F4E7 { background-position: -400px -620px; }
-.emoji-1F4E8 { background-position: -420px -620px; }
-.emoji-1F4E9 { background-position: -440px -620px; }
-.emoji-1F4EA { background-position: -460px -620px; }
-.emoji-1F4EB { background-position: -480px -620px; }
-.emoji-1F4EC { background-position: -500px -620px; }
-.emoji-1F4ED { background-position: -520px -620px; }
-.emoji-1F4EE { background-position: -540px -620px; }
-.emoji-1F4EF { background-position: -560px -620px; }
-.emoji-1F4F0 { background-position: -580px -620px; }
-.emoji-1F4F1 { background-position: -600px -620px; }
-.emoji-1F4F2 { background-position: -620px -620px; }
-.emoji-1F4F3 { background-position: -640px 0; }
-.emoji-1F4F4 { background-position: -640px -20px; }
-.emoji-1F4F5 { background-position: -640px -40px; }
-.emoji-1F4F6 { background-position: -640px -60px; }
-.emoji-1F4F7 { background-position: -640px -80px; }
-.emoji-1F4F8 { background-position: -640px -100px; }
-.emoji-1F4F9 { background-position: -640px -120px; }
-.emoji-1F4FA { background-position: -640px -140px; }
-.emoji-1F4FB { background-position: -640px -160px; }
-.emoji-1F4FC { background-position: -640px -180px; }
-.emoji-1F4FD { background-position: -640px -200px; }
-.emoji-1F4FE { background-position: -640px -220px; }
-.emoji-1F4FF { background-position: -640px -240px; }
-.emoji-1F500 { background-position: -640px -260px; }
-.emoji-1F501 { background-position: -640px -280px; }
-.emoji-1F502 { background-position: -640px -300px; }
-.emoji-1F503 { background-position: -640px -320px; }
-.emoji-1F504 { background-position: -640px -340px; }
-.emoji-1F505 { background-position: -640px -360px; }
-.emoji-1F506 { background-position: -640px -380px; }
-.emoji-1F507 { background-position: -640px -400px; }
-.emoji-1F508 { background-position: -640px -420px; }
-.emoji-1F509 { background-position: -640px -440px; }
-.emoji-1F50A { background-position: -640px -460px; }
-.emoji-1F50B { background-position: -640px -480px; }
-.emoji-1F50C { background-position: -640px -500px; }
-.emoji-1F50D { background-position: -640px -520px; }
-.emoji-1F50E { background-position: -640px -540px; }
-.emoji-1F50F { background-position: -640px -560px; }
-.emoji-1F510 { background-position: -640px -580px; }
-.emoji-1F511 { background-position: -640px -600px; }
-.emoji-1F512 { background-position: -640px -620px; }
-.emoji-1F513 { background-position: 0 -640px; }
-.emoji-1F514 { background-position: -20px -640px; }
-.emoji-1F515 { background-position: -40px -640px; }
-.emoji-1F516 { background-position: -60px -640px; }
-.emoji-1F517 { background-position: -80px -640px; }
-.emoji-1F518 { background-position: -100px -640px; }
-.emoji-1F519 { background-position: -120px -640px; }
-.emoji-1F51A { background-position: -140px -640px; }
-.emoji-1F51B { background-position: -160px -640px; }
-.emoji-1F51C { background-position: -180px -640px; }
-.emoji-1F51D { background-position: -200px -640px; }
-.emoji-1F51E { background-position: -220px -640px; }
-.emoji-1F51F { background-position: -240px -640px; }
-.emoji-1F520 { background-position: -260px -640px; }
-.emoji-1F521 { background-position: -280px -640px; }
-.emoji-1F522 { background-position: -300px -640px; }
-.emoji-1F523 { background-position: -320px -640px; }
-.emoji-1F524 { background-position: -340px -640px; }
-.emoji-1F525 { background-position: -360px -640px; }
-.emoji-1F526 { background-position: -380px -640px; }
-.emoji-1F527 { background-position: -400px -640px; }
-.emoji-1F528 { background-position: -420px -640px; }
-.emoji-1F529 { background-position: -440px -640px; }
-.emoji-1F52A { background-position: -460px -640px; }
-.emoji-1F52B { background-position: -480px -640px; }
-.emoji-1F52C { background-position: -500px -640px; }
-.emoji-1F52D { background-position: -520px -640px; }
-.emoji-1F52E { background-position: -540px -640px; }
-.emoji-1F52F { background-position: -560px -640px; }
-.emoji-1F530 { background-position: -580px -640px; }
-.emoji-1F531 { background-position: -600px -640px; }
-.emoji-1F532 { background-position: -620px -640px; }
-.emoji-1F533 { background-position: -640px -640px; }
-.emoji-1F534 { background-position: -660px 0; }
-.emoji-1F535 { background-position: -660px -20px; }
-.emoji-1F536 { background-position: -660px -40px; }
-.emoji-1F537 { background-position: -660px -60px; }
-.emoji-1F538 { background-position: -660px -80px; }
-.emoji-1F539 { background-position: -660px -100px; }
-.emoji-1F53A { background-position: -660px -120px; }
-.emoji-1F53B { background-position: -660px -140px; }
-.emoji-1F53C { background-position: -660px -160px; }
-.emoji-1F53D { background-position: -660px -180px; }
-.emoji-1F546 { background-position: -660px -200px; }
-.emoji-1F547 { background-position: -660px -220px; }
-.emoji-1F548 { background-position: -660px -240px; }
-.emoji-1F549 { background-position: -660px -260px; }
-.emoji-1F54A { background-position: -660px -280px; }
-.emoji-1F54B { background-position: -660px -300px; }
-.emoji-1F54C { background-position: -660px -320px; }
-.emoji-1F54D { background-position: -660px -340px; }
-.emoji-1F54E { background-position: -660px -360px; }
-.emoji-1F550 { background-position: -660px -380px; }
-.emoji-1F551 { background-position: -660px -400px; }
-.emoji-1F552 { background-position: -660px -420px; }
-.emoji-1F553 { background-position: -660px -440px; }
-.emoji-1F554 { background-position: -660px -460px; }
-.emoji-1F555 { background-position: -660px -480px; }
-.emoji-1F556 { background-position: -660px -500px; }
-.emoji-1F557 { background-position: -660px -520px; }
-.emoji-1F558 { background-position: -660px -540px; }
-.emoji-1F559 { background-position: -660px -560px; }
-.emoji-1F55A { background-position: -660px -580px; }
-.emoji-1F55B { background-position: -660px -600px; }
-.emoji-1F55C { background-position: -660px -620px; }
-.emoji-1F55D { background-position: -660px -640px; }
-.emoji-1F55E { background-position: 0 -660px; }
-.emoji-1F55F { background-position: -20px -660px; }
-.emoji-1F560 { background-position: -40px -660px; }
-.emoji-1F561 { background-position: -60px -660px; }
-.emoji-1F562 { background-position: -80px -660px; }
-.emoji-1F563 { background-position: -100px -660px; }
-.emoji-1F564 { background-position: -120px -660px; }
-.emoji-1F565 { background-position: -140px -660px; }
-.emoji-1F566 { background-position: -160px -660px; }
-.emoji-1F567 { background-position: -180px -660px; }
-.emoji-1F568 { background-position: -200px -660px; }
-.emoji-1F569 { background-position: -220px -660px; }
-.emoji-1F56A { background-position: -240px -660px; }
-.emoji-1F56B { background-position: -260px -660px; }
-.emoji-1F56C { background-position: -280px -660px; }
-.emoji-1F56D { background-position: -300px -660px; }
-.emoji-1F56E { background-position: -320px -660px; }
-.emoji-1F56F { background-position: -340px -660px; }
-.emoji-1F570 { background-position: -360px -660px; }
-.emoji-1F571 { background-position: -380px -660px; }
-.emoji-1F572 { background-position: -400px -660px; }
-.emoji-1F573 { background-position: -420px -660px; }
-.emoji-1F574 { background-position: -440px -660px; }
-.emoji-1F575 { background-position: -460px -660px; }
-.emoji-1F575-1F3FB { background-position: -480px -660px; }
-.emoji-1F575-1F3FC { background-position: -500px -660px; }
-.emoji-1F575-1F3FD { background-position: -520px -660px; }
-.emoji-1F575-1F3FE { background-position: -540px -660px; }
-.emoji-1F575-1F3FF { background-position: -560px -660px; }
-.emoji-1F576 { background-position: -580px -660px; }
-.emoji-1F577 { background-position: -600px -660px; }
-.emoji-1F578 { background-position: -620px -660px; }
-.emoji-1F579 { background-position: -640px -660px; }
-.emoji-1F57B { background-position: -660px -660px; }
-.emoji-1F57E { background-position: -680px 0; }
-.emoji-1F57F { background-position: -680px -20px; }
-.emoji-1F581 { background-position: -680px -40px; }
-.emoji-1F582 { background-position: -680px -60px; }
-.emoji-1F583 { background-position: -680px -80px; }
-.emoji-1F585 { background-position: -680px -100px; }
-.emoji-1F586 { background-position: -680px -120px; }
-.emoji-1F587 { background-position: -680px -140px; }
-.emoji-1F588 { background-position: -680px -160px; }
-.emoji-1F589 { background-position: -680px -180px; }
-.emoji-1F58A { background-position: -680px -200px; }
-.emoji-1F58B { background-position: -680px -220px; }
-.emoji-1F58C { background-position: -680px -240px; }
-.emoji-1F58D { background-position: -680px -260px; }
-.emoji-1F58E { background-position: -680px -280px; }
-.emoji-1F58F { background-position: -680px -300px; }
-.emoji-1F590 { background-position: -680px -320px; }
-.emoji-1F590-1F3FB { background-position: -680px -340px; }
-.emoji-1F590-1F3FC { background-position: -680px -360px; }
-.emoji-1F590-1F3FD { background-position: -680px -380px; }
-.emoji-1F590-1F3FE { background-position: -680px -400px; }
-.emoji-1F590-1F3FF { background-position: -680px -420px; }
-.emoji-1F591 { background-position: -680px -440px; }
-.emoji-1F592 { background-position: -680px -460px; }
-.emoji-1F593 { background-position: -680px -480px; }
-.emoji-1F594 { background-position: -680px -500px; }
-.emoji-1F595 { background-position: -680px -520px; }
-.emoji-1F595-1F3FB { background-position: -680px -540px; }
-.emoji-1F595-1F3FC { background-position: -680px -560px; }
-.emoji-1F595-1F3FD { background-position: -680px -580px; }
-.emoji-1F595-1F3FE { background-position: -680px -600px; }
-.emoji-1F595-1F3FF { background-position: -680px -620px; }
-.emoji-1F596 { background-position: -680px -640px; }
-.emoji-1F596-1F3FB { background-position: -680px -660px; }
-.emoji-1F596-1F3FC { background-position: 0 -680px; }
-.emoji-1F596-1F3FD { background-position: -20px -680px; }
-.emoji-1F596-1F3FE { background-position: -40px -680px; }
-.emoji-1F596-1F3FF { background-position: -60px -680px; }
-.emoji-1F597 { background-position: -80px -680px; }
-.emoji-1F598 { background-position: -100px -680px; }
-.emoji-1F599 { background-position: -120px -680px; }
-.emoji-1F59E { background-position: -140px -680px; }
-.emoji-1F59F { background-position: -160px -680px; }
-.emoji-1F5A5 { background-position: -180px -680px; }
-.emoji-1F5A6 { background-position: -200px -680px; }
-.emoji-1F5A7 { background-position: -220px -680px; }
-.emoji-1F5A8 { background-position: -240px -680px; }
-.emoji-1F5A9 { background-position: -260px -680px; }
-.emoji-1F5AA { background-position: -280px -680px; }
-.emoji-1F5AB { background-position: -300px -680px; }
-.emoji-1F5AD { background-position: -320px -680px; }
-.emoji-1F5AE { background-position: -340px -680px; }
-.emoji-1F5AF { background-position: -360px -680px; }
-.emoji-1F5B1 { background-position: -380px -680px; }
-.emoji-1F5B2 { background-position: -400px -680px; }
-.emoji-1F5B3 { background-position: -420px -680px; }
-.emoji-1F5B4 { background-position: -440px -680px; }
-.emoji-1F5B8 { background-position: -460px -680px; }
-.emoji-1F5B9 { background-position: -480px -680px; }
-.emoji-1F5BC { background-position: -500px -680px; }
-.emoji-1F5BD { background-position: -520px -680px; }
-.emoji-1F5BE { background-position: -540px -680px; }
-.emoji-1F5C0 { background-position: -560px -680px; }
-.emoji-1F5C1 { background-position: -580px -680px; }
-.emoji-1F5C2 { background-position: -600px -680px; }
-.emoji-1F5C3 { background-position: -620px -680px; }
-.emoji-1F5C4 { background-position: -640px -680px; }
-.emoji-1F5C6 { background-position: -660px -680px; }
-.emoji-1F5C7 { background-position: -680px -680px; }
-.emoji-1F5C9 { background-position: -700px 0; }
-.emoji-1F5CA { background-position: -700px -20px; }
-.emoji-1F5CE { background-position: -700px -40px; }
-.emoji-1F5CF { background-position: -700px -60px; }
-.emoji-1F5D0 { background-position: -700px -80px; }
-.emoji-1F5D1 { background-position: -700px -100px; }
-.emoji-1F5D2 { background-position: -700px -120px; }
-.emoji-1F5D3 { background-position: -700px -140px; }
-.emoji-1F5D4 { background-position: -700px -160px; }
-.emoji-1F5D8 { background-position: -700px -180px; }
-.emoji-1F5D9 { background-position: -700px -200px; }
-.emoji-1F5DC { background-position: -700px -220px; }
-.emoji-1F5DD { background-position: -700px -240px; }
-.emoji-1F5DE { background-position: -700px -260px; }
-.emoji-1F5E0 { background-position: -700px -280px; }
-.emoji-1F5E1 { background-position: -700px -300px; }
-.emoji-1F5E2 { background-position: -700px -320px; }
-.emoji-1F5E3 { background-position: -700px -340px; }
-.emoji-1F5E8 { background-position: -700px -360px; }
-.emoji-1F5E9 { background-position: -700px -380px; }
-.emoji-1F5EA { background-position: -700px -400px; }
-.emoji-1F5EB { background-position: -700px -420px; }
-.emoji-1F5EC { background-position: -700px -440px; }
-.emoji-1F5ED { background-position: -700px -460px; }
-.emoji-1F5EE { background-position: -700px -480px; }
-.emoji-1F5EF { background-position: -700px -500px; }
-.emoji-1F5F0 { background-position: -700px -520px; }
-.emoji-1F5F1 { background-position: -700px -540px; }
-.emoji-1F5F2 { background-position: -700px -560px; }
-.emoji-1F5F3 { background-position: -700px -580px; }
-.emoji-1F5F4 { background-position: -700px -600px; }
-.emoji-1F5F5 { background-position: -700px -620px; }
-.emoji-1F5F8 { background-position: -700px -640px; }
-.emoji-1F5F9 { background-position: -700px -660px; }
-.emoji-1F5FA { background-position: -700px -680px; }
-.emoji-1F5FB { background-position: 0 -700px; }
-.emoji-1F5FC { background-position: -20px -700px; }
-.emoji-1F5FD { background-position: -40px -700px; }
-.emoji-1F5FE { background-position: -60px -700px; }
-.emoji-1F5FF { background-position: -80px -700px; }
-.emoji-1F600 { background-position: -100px -700px; }
-.emoji-1F601 { background-position: -120px -700px; }
-.emoji-1F602 { background-position: -140px -700px; }
-.emoji-1F603 { background-position: -160px -700px; }
-.emoji-1F604 { background-position: -180px -700px; }
-.emoji-1F605 { background-position: -200px -700px; }
-.emoji-1F606 { background-position: -220px -700px; }
-.emoji-1F607 { background-position: -240px -700px; }
-.emoji-1F608 { background-position: -260px -700px; }
-.emoji-1F609 { background-position: -280px -700px; }
-.emoji-1F60A { background-position: -300px -700px; }
-.emoji-1F60B { background-position: -320px -700px; }
-.emoji-1F60C { background-position: -340px -700px; }
-.emoji-1F60D { background-position: -360px -700px; }
-.emoji-1F60E { background-position: -380px -700px; }
-.emoji-1F60F { background-position: -400px -700px; }
-.emoji-1F610 { background-position: -420px -700px; }
-.emoji-1F611 { background-position: -440px -700px; }
-.emoji-1F612 { background-position: -460px -700px; }
-.emoji-1F613 { background-position: -480px -700px; }
-.emoji-1F614 { background-position: -500px -700px; }
-.emoji-1F615 { background-position: -520px -700px; }
-.emoji-1F616 { background-position: -540px -700px; }
-.emoji-1F617 { background-position: -560px -700px; }
-.emoji-1F618 { background-position: -580px -700px; }
-.emoji-1F619 { background-position: -600px -700px; }
-.emoji-1F61A { background-position: -620px -700px; }
-.emoji-1F61B { background-position: -640px -700px; }
-.emoji-1F61C { background-position: -660px -700px; }
-.emoji-1F61D { background-position: -680px -700px; }
-.emoji-1F61E { background-position: -700px -700px; }
-.emoji-1F61F { background-position: -720px 0; }
-.emoji-1F620 { background-position: -720px -20px; }
-.emoji-1F621 { background-position: -720px -40px; }
-.emoji-1F622 { background-position: -720px -60px; }
-.emoji-1F623 { background-position: -720px -80px; }
-.emoji-1F624 { background-position: -720px -100px; }
-.emoji-1F625 { background-position: -720px -120px; }
-.emoji-1F626 { background-position: -720px -140px; }
-.emoji-1F627 { background-position: -720px -160px; }
-.emoji-1F628 { background-position: -720px -180px; }
-.emoji-1F629 { background-position: -720px -200px; }
-.emoji-1F62A { background-position: -720px -220px; }
-.emoji-1F62B { background-position: -720px -240px; }
-.emoji-1F62C { background-position: -720px -260px; }
-.emoji-1F62D { background-position: -720px -280px; }
-.emoji-1F62E { background-position: -720px -300px; }
-.emoji-1F62F { background-position: -720px -320px; }
-.emoji-1F630 { background-position: -720px -340px; }
-.emoji-1F631 { background-position: -720px -360px; }
-.emoji-1F632 { background-position: -720px -380px; }
-.emoji-1F633 { background-position: -720px -400px; }
-.emoji-1F634 { background-position: -720px -420px; }
-.emoji-1F635 { background-position: -720px -440px; }
-.emoji-1F636 { background-position: -720px -460px; }
-.emoji-1F637 { background-position: -720px -480px; }
-.emoji-1F638 { background-position: -720px -500px; }
-.emoji-1F639 { background-position: -720px -520px; }
-.emoji-1F63A { background-position: -720px -540px; }
-.emoji-1F63B { background-position: -720px -560px; }
-.emoji-1F63C { background-position: -720px -580px; }
-.emoji-1F63D { background-position: -720px -600px; }
-.emoji-1F63E { background-position: -720px -620px; }
-.emoji-1F63F { background-position: -720px -640px; }
-.emoji-1F640 { background-position: -720px -660px; }
-.emoji-1F641 { background-position: -720px -680px; }
-.emoji-1F642 { background-position: -720px -700px; }
-.emoji-1F643 { background-position: 0 -720px; }
-.emoji-1F644 { background-position: -20px -720px; }
-.emoji-1F645 { background-position: -40px -720px; }
-.emoji-1F645-1F3FB { background-position: -60px -720px; }
-.emoji-1F645-1F3FC { background-position: -80px -720px; }
-.emoji-1F645-1F3FD { background-position: -100px -720px; }
-.emoji-1F645-1F3FE { background-position: -120px -720px; }
-.emoji-1F645-1F3FF { background-position: -140px -720px; }
-.emoji-1F646 { background-position: -160px -720px; }
-.emoji-1F646-1F3FB { background-position: -180px -720px; }
-.emoji-1F646-1F3FC { background-position: -200px -720px; }
-.emoji-1F646-1F3FD { background-position: -220px -720px; }
-.emoji-1F646-1F3FE { background-position: -240px -720px; }
-.emoji-1F646-1F3FF { background-position: -260px -720px; }
-.emoji-1F647 { background-position: -280px -720px; }
-.emoji-1F647-1F3FB { background-position: -300px -720px; }
-.emoji-1F647-1F3FC { background-position: -320px -720px; }
-.emoji-1F647-1F3FD { background-position: -340px -720px; }
-.emoji-1F647-1F3FE { background-position: -360px -720px; }
-.emoji-1F647-1F3FF { background-position: -380px -720px; }
-.emoji-1F648 { background-position: -400px -720px; }
-.emoji-1F649 { background-position: -420px -720px; }
-.emoji-1F64A { background-position: -440px -720px; }
-.emoji-1F64B { background-position: -460px -720px; }
-.emoji-1F64B-1F3FB { background-position: -480px -720px; }
-.emoji-1F64B-1F3FC { background-position: -500px -720px; }
-.emoji-1F64B-1F3FD { background-position: -520px -720px; }
-.emoji-1F64B-1F3FE { background-position: -540px -720px; }
-.emoji-1F64B-1F3FF { background-position: -560px -720px; }
-.emoji-1F64C { background-position: -580px -720px; }
-.emoji-1F64C-1F3FB { background-position: -600px -720px; }
-.emoji-1F64C-1F3FC { background-position: -620px -720px; }
-.emoji-1F64C-1F3FD { background-position: -640px -720px; }
-.emoji-1F64C-1F3FE { background-position: -660px -720px; }
-.emoji-1F64C-1F3FF { background-position: -680px -720px; }
-.emoji-1F64D { background-position: -700px -720px; }
-.emoji-1F64D-1F3FB { background-position: -720px -720px; }
-.emoji-1F64D-1F3FC { background-position: -740px 0; }
-.emoji-1F64D-1F3FD { background-position: -740px -20px; }
-.emoji-1F64D-1F3FE { background-position: -740px -40px; }
-.emoji-1F64D-1F3FF { background-position: -740px -60px; }
-.emoji-1F64E { background-position: -740px -80px; }
-.emoji-1F64E-1F3FB { background-position: -740px -100px; }
-.emoji-1F64E-1F3FC { background-position: -740px -120px; }
-.emoji-1F64E-1F3FD { background-position: -740px -140px; }
-.emoji-1F64E-1F3FE { background-position: -740px -160px; }
-.emoji-1F64E-1F3FF { background-position: -740px -180px; }
-.emoji-1F64F { background-position: -740px -200px; }
-.emoji-1F64F-1F3FB { background-position: -740px -220px; }
-.emoji-1F64F-1F3FC { background-position: -740px -240px; }
-.emoji-1F64F-1F3FD { background-position: -740px -260px; }
-.emoji-1F64F-1F3FE { background-position: -740px -280px; }
-.emoji-1F64F-1F3FF { background-position: -740px -300px; }
-.emoji-1F680 { background-position: -740px -320px; }
-.emoji-1F681 { background-position: -740px -340px; }
-.emoji-1F682 { background-position: -740px -360px; }
-.emoji-1F683 { background-position: -740px -380px; }
-.emoji-1F684 { background-position: -740px -400px; }
-.emoji-1F685 { background-position: -740px -420px; }
-.emoji-1F686 { background-position: -740px -440px; }
-.emoji-1F687 { background-position: -740px -460px; }
-.emoji-1F688 { background-position: -740px -480px; }
-.emoji-1F689 { background-position: -740px -500px; }
-.emoji-1F68A { background-position: -740px -520px; }
-.emoji-1F68B { background-position: -740px -540px; }
-.emoji-1F68C { background-position: -740px -560px; }
-.emoji-1F68D { background-position: -740px -580px; }
-.emoji-1F68E { background-position: -740px -600px; }
-.emoji-1F68F { background-position: -740px -620px; }
-.emoji-1F690 { background-position: -740px -640px; }
-.emoji-1F691 { background-position: -740px -660px; }
-.emoji-1F692 { background-position: -740px -680px; }
-.emoji-1F693 { background-position: -740px -700px; }
-.emoji-1F694 { background-position: -740px -720px; }
-.emoji-1F695 { background-position: 0 -740px; }
-.emoji-1F696 { background-position: -20px -740px; }
-.emoji-1F697 { background-position: -40px -740px; }
-.emoji-1F698 { background-position: -60px -740px; }
-.emoji-1F699 { background-position: -80px -740px; }
-.emoji-1F69A { background-position: -100px -740px; }
-.emoji-1F69B { background-position: -120px -740px; }
-.emoji-1F69C { background-position: -140px -740px; }
-.emoji-1F69D { background-position: -160px -740px; }
-.emoji-1F69E { background-position: -180px -740px; }
-.emoji-1F69F { background-position: -200px -740px; }
-.emoji-1F6A0 { background-position: -220px -740px; }
-.emoji-1F6A1 { background-position: -240px -740px; }
-.emoji-1F6A2 { background-position: -260px -740px; }
-.emoji-1F6A3 { background-position: -280px -740px; }
-.emoji-1F6A3-1F3FB { background-position: -300px -740px; }
-.emoji-1F6A3-1F3FC { background-position: -320px -740px; }
-.emoji-1F6A3-1F3FD { background-position: -340px -740px; }
-.emoji-1F6A3-1F3FE { background-position: -360px -740px; }
-.emoji-1F6A3-1F3FF { background-position: -380px -740px; }
-.emoji-1F6A4 { background-position: -400px -740px; }
-.emoji-1F6A5 { background-position: -420px -740px; }
-.emoji-1F6A6 { background-position: -440px -740px; }
-.emoji-1F6A7 { background-position: -460px -740px; }
-.emoji-1F6A8 { background-position: -480px -740px; }
-.emoji-1F6A9 { background-position: -500px -740px; }
-.emoji-1F6AA { background-position: -520px -740px; }
-.emoji-1F6AB { background-position: -540px -740px; }
-.emoji-1F6AC { background-position: -560px -740px; }
-.emoji-1F6AD { background-position: -580px -740px; }
-.emoji-1F6AE { background-position: -600px -740px; }
-.emoji-1F6AF { background-position: -620px -740px; }
-.emoji-1F6B0 { background-position: -640px -740px; }
-.emoji-1F6B1 { background-position: -660px -740px; }
-.emoji-1F6B2 { background-position: -680px -740px; }
-.emoji-1F6B3 { background-position: -700px -740px; }
-.emoji-1F6B4 { background-position: -720px -740px; }
-.emoji-1F6B4-1F3FB { background-position: -740px -740px; }
-.emoji-1F6B4-1F3FC { background-position: -760px 0; }
-.emoji-1F6B4-1F3FD { background-position: -760px -20px; }
-.emoji-1F6B4-1F3FE { background-position: -760px -40px; }
-.emoji-1F6B4-1F3FF { background-position: -760px -60px; }
-.emoji-1F6B5 { background-position: -760px -80px; }
-.emoji-1F6B5-1F3FB { background-position: -760px -100px; }
-.emoji-1F6B5-1F3FC { background-position: -760px -120px; }
-.emoji-1F6B5-1F3FD { background-position: -760px -140px; }
-.emoji-1F6B5-1F3FE { background-position: -760px -160px; }
-.emoji-1F6B5-1F3FF { background-position: -760px -180px; }
-.emoji-1F6B6 { background-position: -760px -200px; }
-.emoji-1F6B6-1F3FB { background-position: -760px -220px; }
-.emoji-1F6B6-1F3FC { background-position: -760px -240px; }
-.emoji-1F6B6-1F3FD { background-position: -760px -260px; }
-.emoji-1F6B6-1F3FE { background-position: -760px -280px; }
-.emoji-1F6B6-1F3FF { background-position: -760px -300px; }
-.emoji-1F6B7 { background-position: -760px -320px; }
-.emoji-1F6B8 { background-position: -760px -340px; }
-.emoji-1F6B9 { background-position: -760px -360px; }
-.emoji-1F6BA { background-position: -760px -380px; }
-.emoji-1F6BB { background-position: -760px -400px; }
-.emoji-1F6BC { background-position: -760px -420px; }
-.emoji-1F6BD { background-position: -760px -440px; }
-.emoji-1F6BE { background-position: -760px -460px; }
-.emoji-1F6BF { background-position: -760px -480px; }
-.emoji-1F6C0 { background-position: -760px -500px; }
-.emoji-1F6C0-1F3FB { background-position: -760px -520px; }
-.emoji-1F6C0-1F3FC { background-position: -760px -540px; }
-.emoji-1F6C0-1F3FD { background-position: -760px -560px; }
-.emoji-1F6C0-1F3FE { background-position: -760px -580px; }
-.emoji-1F6C0-1F3FF { background-position: -760px -600px; }
-.emoji-1F6C1 { background-position: -760px -620px; }
-.emoji-1F6C2 { background-position: -760px -640px; }
-.emoji-1F6C3 { background-position: -760px -660px; }
-.emoji-1F6C4 { background-position: -760px -680px; }
-.emoji-1F6C5 { background-position: -760px -700px; }
-.emoji-1F6C6 { background-position: -760px -720px; }
-.emoji-1F6C7 { background-position: -760px -740px; }
-.emoji-1F6C8 { background-position: 0 -760px; }
-.emoji-1F6C9 { background-position: -20px -760px; }
-.emoji-1F6CA { background-position: -40px -760px; }
-.emoji-1F6CB { background-position: -60px -760px; }
-.emoji-1F6CC { background-position: -80px -760px; }
-.emoji-1F6CD { background-position: -100px -760px; }
-.emoji-1F6CE { background-position: -120px -760px; }
-.emoji-1F6CF { background-position: -140px -760px; }
-.emoji-1F6D0 { background-position: -160px -760px; }
-.emoji-1F6E0 { background-position: -180px -760px; }
-.emoji-1F6E1 { background-position: -200px -760px; }
-.emoji-1F6E2 { background-position: -220px -760px; }
-.emoji-1F6E3 { background-position: -240px -760px; }
-.emoji-1F6E4 { background-position: -260px -760px; }
-.emoji-1F6E5 { background-position: -280px -760px; }
-.emoji-1F6E6 { background-position: -300px -760px; }
-.emoji-1F6E7 { background-position: -320px -760px; }
-.emoji-1F6E8 { background-position: -340px -760px; }
-.emoji-1F6E9 { background-position: -360px -760px; }
-.emoji-1F6EA { background-position: -380px -760px; }
-.emoji-1F6EB { background-position: -400px -760px; }
-.emoji-1F6EC { background-position: -420px -760px; }
-.emoji-1F6F0 { background-position: -440px -760px; }
-.emoji-1F6F1 { background-position: -460px -760px; }
-.emoji-1F6F2 { background-position: -480px -760px; }
-.emoji-1F6F3 { background-position: -500px -760px; }
-.emoji-1F910 { background-position: -520px -760px; }
-.emoji-1F911 { background-position: -540px -760px; }
-.emoji-1F912 { background-position: -560px -760px; }
-.emoji-1F913 { background-position: -580px -760px; }
-.emoji-1F914 { background-position: -600px -760px; }
-.emoji-1F915 { background-position: -620px -760px; }
-.emoji-1F916 { background-position: -640px -760px; }
-.emoji-1F917 { background-position: -660px -760px; }
-.emoji-1F918 { background-position: -680px -760px; }
-.emoji-1F918-1F3FB { background-position: -700px -760px; }
-.emoji-1F918-1F3FC { background-position: -720px -760px; }
-.emoji-1F918-1F3FD { background-position: -740px -760px; }
-.emoji-1F918-1F3FE { background-position: -760px -760px; }
-.emoji-1F918-1F3FF { background-position: -780px 0; }
-.emoji-1F980 { background-position: -780px -20px; }
-.emoji-1F981 { background-position: -780px -40px; }
-.emoji-1F982 { background-position: -780px -60px; }
-.emoji-1F983 { background-position: -780px -80px; }
-.emoji-1F984 { background-position: -780px -100px; }
-.emoji-1F9C0 { background-position: -780px -120px; }
-.emoji-203C { background-position: -780px -140px; }
-.emoji-2049 { background-position: -780px -160px; }
-.emoji-2122 { background-position: -780px -180px; }
-.emoji-2139 { background-position: -780px -200px; }
-.emoji-2194 { background-position: -780px -220px; }
-.emoji-2195 { background-position: -780px -240px; }
-.emoji-2196 { background-position: -780px -260px; }
-.emoji-2197 { background-position: -780px -280px; }
-.emoji-2198 { background-position: -780px -300px; }
-.emoji-2199 { background-position: -780px -320px; }
-.emoji-21A9 { background-position: -780px -340px; }
-.emoji-21AA { background-position: -780px -360px; }
-.emoji-231A { background-position: -780px -380px; }
-.emoji-231B { background-position: -780px -400px; }
-.emoji-2328 { background-position: -780px -420px; }
-.emoji-23E9 { background-position: -780px -440px; }
-.emoji-23EA { background-position: -780px -460px; }
-.emoji-23EB { background-position: -780px -480px; }
-.emoji-23EC { background-position: -780px -500px; }
-.emoji-23ED { background-position: -780px -520px; }
-.emoji-23EE { background-position: -780px -540px; }
-.emoji-23EF { background-position: -780px -560px; }
-.emoji-23F0 { background-position: -780px -580px; }
-.emoji-23F1 { background-position: -780px -600px; }
-.emoji-23F2 { background-position: -780px -620px; }
-.emoji-23F3 { background-position: -780px -640px; }
-.emoji-23F8 { background-position: -780px -660px; }
-.emoji-23F9 { background-position: -780px -680px; }
-.emoji-23FA { background-position: -780px -700px; }
-.emoji-24C2 { background-position: -780px -720px; }
-.emoji-25AA { background-position: -780px -740px; }
-.emoji-25AB { background-position: -780px -760px; }
-.emoji-25B6 { background-position: 0 -780px; }
-.emoji-25C0 { background-position: -20px -780px; }
-.emoji-25FB { background-position: -40px -780px; }
-.emoji-25FC { background-position: -60px -780px; }
-.emoji-25FD { background-position: -80px -780px; }
-.emoji-25FE { background-position: -100px -780px; }
-.emoji-2600 { background-position: -120px -780px; }
-.emoji-2601 { background-position: -140px -780px; }
-.emoji-2602 { background-position: -160px -780px; }
-.emoji-2603 { background-position: -180px -780px; }
-.emoji-2604 { background-position: -200px -780px; }
-.emoji-260E { background-position: -220px -780px; }
-.emoji-2611 { background-position: -240px -780px; }
-.emoji-2614 { background-position: -260px -780px; }
-.emoji-2615 { background-position: -280px -780px; }
-.emoji-2618 { background-position: -300px -780px; }
-.emoji-261D { background-position: -320px -780px; }
-.emoji-261D-1F3FB { background-position: -340px -780px; }
-.emoji-261D-1F3FC { background-position: -360px -780px; }
-.emoji-261D-1F3FD { background-position: -380px -780px; }
-.emoji-261D-1F3FE { background-position: -400px -780px; }
-.emoji-261D-1F3FF { background-position: -420px -780px; }
-.emoji-2620 { background-position: -440px -780px; }
-.emoji-2622 { background-position: -460px -780px; }
-.emoji-2623 { background-position: -480px -780px; }
-.emoji-2626 { background-position: -500px -780px; }
-.emoji-262A { background-position: -520px -780px; }
-.emoji-262E { background-position: -540px -780px; }
-.emoji-262F { background-position: -560px -780px; }
-.emoji-2638 { background-position: -580px -780px; }
-.emoji-2639 { background-position: -600px -780px; }
-.emoji-263A { background-position: -620px -780px; }
-.emoji-2648 { background-position: -640px -780px; }
-.emoji-2649 { background-position: -660px -780px; }
-.emoji-264A { background-position: -680px -780px; }
-.emoji-264B { background-position: -700px -780px; }
-.emoji-264C { background-position: -720px -780px; }
-.emoji-264D { background-position: -740px -780px; }
-.emoji-264E { background-position: -760px -780px; }
-.emoji-264F { background-position: -780px -780px; }
-.emoji-2650 { background-position: -800px 0; }
-.emoji-2651 { background-position: -800px -20px; }
-.emoji-2652 { background-position: -800px -40px; }
-.emoji-2653 { background-position: -800px -60px; }
-.emoji-2660 { background-position: -800px -80px; }
-.emoji-2663 { background-position: -800px -100px; }
-.emoji-2665 { background-position: -800px -120px; }
-.emoji-2666 { background-position: -800px -140px; }
-.emoji-2668 { background-position: -800px -160px; }
-.emoji-267B { background-position: -800px -180px; }
-.emoji-267F { background-position: -800px -200px; }
-.emoji-2692 { background-position: -800px -220px; }
-.emoji-2693 { background-position: -800px -240px; }
-.emoji-2694 { background-position: -800px -260px; }
-.emoji-2696 { background-position: -800px -280px; }
-.emoji-2697 { background-position: -800px -300px; }
-.emoji-2699 { background-position: -800px -320px; }
-.emoji-269B { background-position: -800px -340px; }
-.emoji-269C { background-position: -800px -360px; }
-.emoji-26A0 { background-position: -800px -380px; }
-.emoji-26A1 { background-position: -800px -400px; }
-.emoji-26AA { background-position: -800px -420px; }
-.emoji-26AB { background-position: -800px -440px; }
-.emoji-26B0 { background-position: -800px -460px; }
-.emoji-26B1 { background-position: -800px -480px; }
-.emoji-26BD { background-position: -800px -500px; }
-.emoji-26BE { background-position: -800px -520px; }
-.emoji-26C4 { background-position: -800px -540px; }
-.emoji-26C5 { background-position: -800px -560px; }
-.emoji-26C8 { background-position: -800px -580px; }
-.emoji-26CE { background-position: -800px -600px; }
-.emoji-26CF { background-position: -800px -620px; }
-.emoji-26D1 { background-position: -800px -640px; }
-.emoji-26D3 { background-position: -800px -660px; }
-.emoji-26D4 { background-position: -800px -680px; }
-.emoji-26E9 { background-position: -800px -700px; }
-.emoji-26EA { background-position: -800px -720px; }
-.emoji-26F0 { background-position: -800px -740px; }
-.emoji-26F1 { background-position: -800px -760px; }
-.emoji-26F2 { background-position: -800px -780px; }
-.emoji-26F3 { background-position: 0 -800px; }
-.emoji-26F4 { background-position: -20px -800px; }
-.emoji-26F5 { background-position: -40px -800px; }
-.emoji-26F7 { background-position: -60px -800px; }
-.emoji-26F8 { background-position: -80px -800px; }
-.emoji-26F9 { background-position: -100px -800px; }
-.emoji-26F9-1F3FB { background-position: -120px -800px; }
-.emoji-26F9-1F3FC { background-position: -140px -800px; }
-.emoji-26F9-1F3FD { background-position: -160px -800px; }
-.emoji-26F9-1F3FE { background-position: -180px -800px; }
-.emoji-26F9-1F3FF { background-position: -200px -800px; }
-.emoji-26FA { background-position: -220px -800px; }
-.emoji-26FD { background-position: -240px -800px; }
-.emoji-2702 { background-position: -260px -800px; }
-.emoji-2705 { background-position: -280px -800px; }
-.emoji-2708 { background-position: -300px -800px; }
-.emoji-2709 { background-position: -320px -800px; }
-.emoji-270A { background-position: -340px -800px; }
-.emoji-270A-1F3FB { background-position: -360px -800px; }
-.emoji-270A-1F3FC { background-position: -380px -800px; }
-.emoji-270A-1F3FD { background-position: -400px -800px; }
-.emoji-270A-1F3FE { background-position: -420px -800px; }
-.emoji-270A-1F3FF { background-position: -440px -800px; }
-.emoji-270B { background-position: -460px -800px; }
-.emoji-270B-1F3FB { background-position: -480px -800px; }
-.emoji-270B-1F3FC { background-position: -500px -800px; }
-.emoji-270B-1F3FD { background-position: -520px -800px; }
-.emoji-270B-1F3FE { background-position: -540px -800px; }
-.emoji-270B-1F3FF { background-position: -560px -800px; }
-.emoji-270C { background-position: -580px -800px; }
-.emoji-270C-1F3FB { background-position: -600px -800px; }
-.emoji-270C-1F3FC { background-position: -620px -800px; }
-.emoji-270C-1F3FD { background-position: -640px -800px; }
-.emoji-270C-1F3FE { background-position: -660px -800px; }
-.emoji-270C-1F3FF { background-position: -680px -800px; }
-.emoji-270D { background-position: -700px -800px; }
-.emoji-270D-1F3FB { background-position: -720px -800px; }
-.emoji-270D-1F3FC { background-position: -740px -800px; }
-.emoji-270D-1F3FD { background-position: -760px -800px; }
-.emoji-270D-1F3FE { background-position: -780px -800px; }
-.emoji-270D-1F3FF { background-position: -800px -800px; }
-.emoji-270F { background-position: -820px 0; }
-.emoji-2712 { background-position: -820px -20px; }
-.emoji-2714 { background-position: -820px -40px; }
-.emoji-2716 { background-position: -820px -60px; }
-.emoji-271D { background-position: -820px -80px; }
-.emoji-2721 { background-position: -820px -100px; }
-.emoji-2728 { background-position: -820px -120px; }
-.emoji-2733 { background-position: -820px -140px; }
-.emoji-2734 { background-position: -820px -160px; }
-.emoji-2744 { background-position: -820px -180px; }
-.emoji-2747 { background-position: -820px -200px; }
-.emoji-274C { background-position: -820px -220px; }
-.emoji-274E { background-position: -820px -240px; }
-.emoji-2753 { background-position: -820px -260px; }
-.emoji-2754 { background-position: -820px -280px; }
-.emoji-2755 { background-position: -820px -300px; }
-.emoji-2757 { background-position: -820px -320px; }
-.emoji-2763 { background-position: -820px -340px; }
-.emoji-2764 { background-position: -820px -360px; }
-.emoji-2795 { background-position: -820px -380px; }
-.emoji-2796 { background-position: -820px -400px; }
-.emoji-2797 { background-position: -820px -420px; }
-.emoji-27A1 { background-position: -820px -440px; }
-.emoji-27B0 { background-position: -820px -460px; }
-.emoji-27BF { background-position: -820px -480px; }
-.emoji-2934 { background-position: -820px -500px; }
-.emoji-2935 { background-position: -820px -520px; }
-.emoji-2B05 { background-position: -820px -540px; }
-.emoji-2B06 { background-position: -820px -560px; }
-.emoji-2B07 { background-position: -820px -580px; }
-.emoji-2B1B { background-position: -820px -600px; }
-.emoji-2B1C { background-position: -820px -620px; }
-.emoji-2B50 { background-position: -820px -640px; }
-.emoji-2B55 { background-position: -820px -660px; }
-.emoji-3030 { background-position: -820px -680px; }
-.emoji-303D { background-position: -820px -700px; }
-.emoji-3297 { background-position: -820px -720px; }
-.emoji-3299 { background-position: -820px -740px; }
+.emoji-1F396 { background-position: -420px -260px; }
+.emoji-1F397 { background-position: -420px -280px; }
+.emoji-1F399 { background-position: -420px -300px; }
+.emoji-1F39A { background-position: -420px -320px; }
+.emoji-1F39B { background-position: -420px -340px; }
+.emoji-1F39E { background-position: -420px -360px; }
+.emoji-1F39F { background-position: -420px -380px; }
+.emoji-1F3A0 { background-position: -420px -400px; }
+.emoji-1F3A1 { background-position: 0 -420px; }
+.emoji-1F3A2 { background-position: -20px -420px; }
+.emoji-1F3A3 { background-position: -40px -420px; }
+.emoji-1F3A4 { background-position: -60px -420px; }
+.emoji-1F3A5 { background-position: -80px -420px; }
+.emoji-1F3A6 { background-position: -100px -420px; }
+.emoji-1F3A7 { background-position: -120px -420px; }
+.emoji-1F3A8 { background-position: -140px -420px; }
+.emoji-1F3A9 { background-position: -160px -420px; }
+.emoji-1F3AA { background-position: -180px -420px; }
+.emoji-1F3AB { background-position: -200px -420px; }
+.emoji-1F3AC { background-position: -220px -420px; }
+.emoji-1F3AD { background-position: -240px -420px; }
+.emoji-1F3AE { background-position: -260px -420px; }
+.emoji-1F3AF { background-position: -280px -420px; }
+.emoji-1F3B0 { background-position: -300px -420px; }
+.emoji-1F3B1 { background-position: -320px -420px; }
+.emoji-1F3B2 { background-position: -340px -420px; }
+.emoji-1F3B3 { background-position: -360px -420px; }
+.emoji-1F3B4 { background-position: -380px -420px; }
+.emoji-1F3B5 { background-position: -400px -420px; }
+.emoji-1F3B6 { background-position: -420px -420px; }
+.emoji-1F3B7 { background-position: -440px 0; }
+.emoji-1F3B8 { background-position: -440px -20px; }
+.emoji-1F3B9 { background-position: -440px -40px; }
+.emoji-1F3BA { background-position: -440px -60px; }
+.emoji-1F3BB { background-position: -440px -80px; }
+.emoji-1F3BC { background-position: -440px -100px; }
+.emoji-1F3BD { background-position: -440px -120px; }
+.emoji-1F3BE { background-position: -440px -140px; }
+.emoji-1F3BF { background-position: -440px -160px; }
+.emoji-1F3C0 { background-position: -440px -180px; }
+.emoji-1F3C1 { background-position: -440px -200px; }
+.emoji-1F3C2 { background-position: -440px -220px; }
+.emoji-1F3C3 { background-position: -440px -240px; }
+.emoji-1F3C3-1F3FB { background-position: -440px -260px; }
+.emoji-1F3C3-1F3FC { background-position: -440px -280px; }
+.emoji-1F3C3-1F3FD { background-position: -440px -300px; }
+.emoji-1F3C3-1F3FE { background-position: -440px -320px; }
+.emoji-1F3C3-1F3FF { background-position: -440px -340px; }
+.emoji-1F3C4 { background-position: -440px -360px; }
+.emoji-1F3C4-1F3FB { background-position: -440px -380px; }
+.emoji-1F3C4-1F3FC { background-position: -440px -400px; }
+.emoji-1F3C4-1F3FD { background-position: -440px -420px; }
+.emoji-1F3C4-1F3FE { background-position: 0 -440px; }
+.emoji-1F3C4-1F3FF { background-position: -20px -440px; }
+.emoji-1F3C5 { background-position: -40px -440px; }
+.emoji-1F3C6 { background-position: -60px -440px; }
+.emoji-1F3C7 { background-position: -80px -440px; }
+.emoji-1F3C7-1F3FB { background-position: -100px -440px; }
+.emoji-1F3C7-1F3FC { background-position: -120px -440px; }
+.emoji-1F3C7-1F3FD { background-position: -140px -440px; }
+.emoji-1F3C7-1F3FE { background-position: -160px -440px; }
+.emoji-1F3C7-1F3FF { background-position: -180px -440px; }
+.emoji-1F3C8 { background-position: -200px -440px; }
+.emoji-1F3C9 { background-position: -220px -440px; }
+.emoji-1F3CA { background-position: -240px -440px; }
+.emoji-1F3CA-1F3FB { background-position: -260px -440px; }
+.emoji-1F3CA-1F3FC { background-position: -280px -440px; }
+.emoji-1F3CA-1F3FD { background-position: -300px -440px; }
+.emoji-1F3CA-1F3FE { background-position: -320px -440px; }
+.emoji-1F3CA-1F3FF { background-position: -340px -440px; }
+.emoji-1F3CB { background-position: -360px -440px; }
+.emoji-1F3CB-1F3FB { background-position: -380px -440px; }
+.emoji-1F3CB-1F3FC { background-position: -400px -440px; }
+.emoji-1F3CB-1F3FD { background-position: -420px -440px; }
+.emoji-1F3CB-1F3FE { background-position: -440px -440px; }
+.emoji-1F3CB-1F3FF { background-position: -460px 0; }
+.emoji-1F3CC { background-position: -460px -20px; }
+.emoji-1F3CD { background-position: -460px -40px; }
+.emoji-1F3CE { background-position: -460px -60px; }
+.emoji-1F3CF { background-position: -460px -80px; }
+.emoji-1F3D0 { background-position: -460px -100px; }
+.emoji-1F3D1 { background-position: -460px -120px; }
+.emoji-1F3D2 { background-position: -460px -140px; }
+.emoji-1F3D3 { background-position: -460px -160px; }
+.emoji-1F3D4 { background-position: -460px -180px; }
+.emoji-1F3D5 { background-position: -460px -200px; }
+.emoji-1F3D6 { background-position: -460px -220px; }
+.emoji-1F3D7 { background-position: -460px -240px; }
+.emoji-1F3D8 { background-position: -460px -260px; }
+.emoji-1F3D9 { background-position: -460px -280px; }
+.emoji-1F3DA { background-position: -460px -300px; }
+.emoji-1F3DB { background-position: -460px -320px; }
+.emoji-1F3DC { background-position: -460px -340px; }
+.emoji-1F3DD { background-position: -460px -360px; }
+.emoji-1F3DE { background-position: -460px -380px; }
+.emoji-1F3DF { background-position: -460px -400px; }
+.emoji-1F3E0 { background-position: -460px -420px; }
+.emoji-1F3E1 { background-position: -460px -440px; }
+.emoji-1F3E2 { background-position: 0 -460px; }
+.emoji-1F3E3 { background-position: -20px -460px; }
+.emoji-1F3E4 { background-position: -40px -460px; }
+.emoji-1F3E5 { background-position: -60px -460px; }
+.emoji-1F3E6 { background-position: -80px -460px; }
+.emoji-1F3E7 { background-position: -100px -460px; }
+.emoji-1F3E8 { background-position: -120px -460px; }
+.emoji-1F3E9 { background-position: -140px -460px; }
+.emoji-1F3EA { background-position: -160px -460px; }
+.emoji-1F3EB { background-position: -180px -460px; }
+.emoji-1F3EC { background-position: -200px -460px; }
+.emoji-1F3ED { background-position: -220px -460px; }
+.emoji-1F3EE { background-position: -240px -460px; }
+.emoji-1F3EF { background-position: -260px -460px; }
+.emoji-1F3F0 { background-position: -280px -460px; }
+.emoji-1F3F3 { background-position: -300px -460px; }
+.emoji-1F3F4 { background-position: -320px -460px; }
+.emoji-1F3F5 { background-position: -340px -460px; }
+.emoji-1F3F7 { background-position: -360px -460px; }
+.emoji-1F3F8 { background-position: -380px -460px; }
+.emoji-1F3F9 { background-position: -400px -460px; }
+.emoji-1F3FA { background-position: -420px -460px; }
+.emoji-1F3FB { background-position: -440px -460px; }
+.emoji-1F3FC { background-position: -460px -460px; }
+.emoji-1F3FD { background-position: -480px 0; }
+.emoji-1F3FE { background-position: -480px -20px; }
+.emoji-1F3FF { background-position: -480px -40px; }
+.emoji-1F400 { background-position: -480px -60px; }
+.emoji-1F401 { background-position: -480px -80px; }
+.emoji-1F402 { background-position: -480px -100px; }
+.emoji-1F403 { background-position: -480px -120px; }
+.emoji-1F404 { background-position: -480px -140px; }
+.emoji-1F405 { background-position: -480px -160px; }
+.emoji-1F406 { background-position: -480px -180px; }
+.emoji-1F407 { background-position: -480px -200px; }
+.emoji-1F408 { background-position: -480px -220px; }
+.emoji-1F409 { background-position: -480px -240px; }
+.emoji-1F40A { background-position: -480px -260px; }
+.emoji-1F40B { background-position: -480px -280px; }
+.emoji-1F40C { background-position: -480px -300px; }
+.emoji-1F40D { background-position: -480px -320px; }
+.emoji-1F40E { background-position: -480px -340px; }
+.emoji-1F40F { background-position: -480px -360px; }
+.emoji-1F410 { background-position: -480px -380px; }
+.emoji-1F411 { background-position: -480px -400px; }
+.emoji-1F412 { background-position: -480px -420px; }
+.emoji-1F413 { background-position: -480px -440px; }
+.emoji-1F414 { background-position: -480px -460px; }
+.emoji-1F415 { background-position: 0 -480px; }
+.emoji-1F416 { background-position: -20px -480px; }
+.emoji-1F417 { background-position: -40px -480px; }
+.emoji-1F418 { background-position: -60px -480px; }
+.emoji-1F419 { background-position: -80px -480px; }
+.emoji-1F41A { background-position: -100px -480px; }
+.emoji-1F41B { background-position: -120px -480px; }
+.emoji-1F41C { background-position: -140px -480px; }
+.emoji-1F41D { background-position: -160px -480px; }
+.emoji-1F41E { background-position: -180px -480px; }
+.emoji-1F41F { background-position: -200px -480px; }
+.emoji-1F420 { background-position: -220px -480px; }
+.emoji-1F421 { background-position: -240px -480px; }
+.emoji-1F422 { background-position: -260px -480px; }
+.emoji-1F423 { background-position: -280px -480px; }
+.emoji-1F424 { background-position: -300px -480px; }
+.emoji-1F425 { background-position: -320px -480px; }
+.emoji-1F426 { background-position: -340px -480px; }
+.emoji-1F427 { background-position: -360px -480px; }
+.emoji-1F428 { background-position: -380px -480px; }
+.emoji-1F429 { background-position: -400px -480px; }
+.emoji-1F42A { background-position: -420px -480px; }
+.emoji-1F42B { background-position: -440px -480px; }
+.emoji-1F42C { background-position: -460px -480px; }
+.emoji-1F42D { background-position: -480px -480px; }
+.emoji-1F42E { background-position: -500px 0; }
+.emoji-1F42F { background-position: -500px -20px; }
+.emoji-1F430 { background-position: -500px -40px; }
+.emoji-1F431 { background-position: -500px -60px; }
+.emoji-1F432 { background-position: -500px -80px; }
+.emoji-1F433 { background-position: -500px -100px; }
+.emoji-1F434 { background-position: -500px -120px; }
+.emoji-1F435 { background-position: -500px -140px; }
+.emoji-1F436 { background-position: -500px -160px; }
+.emoji-1F437 { background-position: -500px -180px; }
+.emoji-1F438 { background-position: -500px -200px; }
+.emoji-1F439 { background-position: -500px -220px; }
+.emoji-1F43A { background-position: -500px -240px; }
+.emoji-1F43B { background-position: -500px -260px; }
+.emoji-1F43C { background-position: -500px -280px; }
+.emoji-1F43D { background-position: -500px -300px; }
+.emoji-1F43E { background-position: -500px -320px; }
+.emoji-1F43F { background-position: -500px -340px; }
+.emoji-1F440 { background-position: -500px -360px; }
+.emoji-1F441 { background-position: -500px -380px; }
+.emoji-1F441-1F5E8 { background-position: -500px -400px; }
+.emoji-1F442 { background-position: -500px -420px; }
+.emoji-1F442-1F3FB { background-position: -500px -440px; }
+.emoji-1F442-1F3FC { background-position: -500px -460px; }
+.emoji-1F442-1F3FD { background-position: -500px -480px; }
+.emoji-1F442-1F3FE { background-position: 0 -500px; }
+.emoji-1F442-1F3FF { background-position: -20px -500px; }
+.emoji-1F443 { background-position: -40px -500px; }
+.emoji-1F443-1F3FB { background-position: -60px -500px; }
+.emoji-1F443-1F3FC { background-position: -80px -500px; }
+.emoji-1F443-1F3FD { background-position: -100px -500px; }
+.emoji-1F443-1F3FE { background-position: -120px -500px; }
+.emoji-1F443-1F3FF { background-position: -140px -500px; }
+.emoji-1F444 { background-position: -160px -500px; }
+.emoji-1F445 { background-position: -180px -500px; }
+.emoji-1F446 { background-position: -200px -500px; }
+.emoji-1F446-1F3FB { background-position: -220px -500px; }
+.emoji-1F446-1F3FC { background-position: -240px -500px; }
+.emoji-1F446-1F3FD { background-position: -260px -500px; }
+.emoji-1F446-1F3FE { background-position: -280px -500px; }
+.emoji-1F446-1F3FF { background-position: -300px -500px; }
+.emoji-1F447 { background-position: -320px -500px; }
+.emoji-1F447-1F3FB { background-position: -340px -500px; }
+.emoji-1F447-1F3FC { background-position: -360px -500px; }
+.emoji-1F447-1F3FD { background-position: -380px -500px; }
+.emoji-1F447-1F3FE { background-position: -400px -500px; }
+.emoji-1F447-1F3FF { background-position: -420px -500px; }
+.emoji-1F448 { background-position: -440px -500px; }
+.emoji-1F448-1F3FB { background-position: -460px -500px; }
+.emoji-1F448-1F3FC { background-position: -480px -500px; }
+.emoji-1F448-1F3FD { background-position: -500px -500px; }
+.emoji-1F448-1F3FE { background-position: -520px 0; }
+.emoji-1F448-1F3FF { background-position: -520px -20px; }
+.emoji-1F449 { background-position: -520px -40px; }
+.emoji-1F449-1F3FB { background-position: -520px -60px; }
+.emoji-1F449-1F3FC { background-position: -520px -80px; }
+.emoji-1F449-1F3FD { background-position: -520px -100px; }
+.emoji-1F449-1F3FE { background-position: -520px -120px; }
+.emoji-1F449-1F3FF { background-position: -520px -140px; }
+.emoji-1F44A { background-position: -520px -160px; }
+.emoji-1F44A-1F3FB { background-position: -520px -180px; }
+.emoji-1F44A-1F3FC { background-position: -520px -200px; }
+.emoji-1F44A-1F3FD { background-position: -520px -220px; }
+.emoji-1F44A-1F3FE { background-position: -520px -240px; }
+.emoji-1F44A-1F3FF { background-position: -520px -260px; }
+.emoji-1F44B { background-position: -520px -280px; }
+.emoji-1F44B-1F3FB { background-position: -520px -300px; }
+.emoji-1F44B-1F3FC { background-position: -520px -320px; }
+.emoji-1F44B-1F3FD { background-position: -520px -340px; }
+.emoji-1F44B-1F3FE { background-position: -520px -360px; }
+.emoji-1F44B-1F3FF { background-position: -520px -380px; }
+.emoji-1F44C { background-position: -520px -400px; }
+.emoji-1F44C-1F3FB { background-position: -520px -420px; }
+.emoji-1F44C-1F3FC { background-position: -520px -440px; }
+.emoji-1F44C-1F3FD { background-position: -520px -460px; }
+.emoji-1F44C-1F3FE { background-position: -520px -480px; }
+.emoji-1F44C-1F3FF { background-position: -520px -500px; }
+.emoji-1F44D { background-position: 0 -520px; }
+.emoji-1F44D-1F3FB { background-position: -20px -520px; }
+.emoji-1F44D-1F3FC { background-position: -40px -520px; }
+.emoji-1F44D-1F3FD { background-position: -60px -520px; }
+.emoji-1F44D-1F3FE { background-position: -80px -520px; }
+.emoji-1F44D-1F3FF { background-position: -100px -520px; }
+.emoji-1F44E { background-position: -120px -520px; }
+.emoji-1F44E-1F3FB { background-position: -140px -520px; }
+.emoji-1F44E-1F3FC { background-position: -160px -520px; }
+.emoji-1F44E-1F3FD { background-position: -180px -520px; }
+.emoji-1F44E-1F3FE { background-position: -200px -520px; }
+.emoji-1F44E-1F3FF { background-position: -220px -520px; }
+.emoji-1F44F { background-position: -240px -520px; }
+.emoji-1F44F-1F3FB { background-position: -260px -520px; }
+.emoji-1F44F-1F3FC { background-position: -280px -520px; }
+.emoji-1F44F-1F3FD { background-position: -300px -520px; }
+.emoji-1F44F-1F3FE { background-position: -320px -520px; }
+.emoji-1F44F-1F3FF { background-position: -340px -520px; }
+.emoji-1F450 { background-position: -360px -520px; }
+.emoji-1F450-1F3FB { background-position: -380px -520px; }
+.emoji-1F450-1F3FC { background-position: -400px -520px; }
+.emoji-1F450-1F3FD { background-position: -420px -520px; }
+.emoji-1F450-1F3FE { background-position: -440px -520px; }
+.emoji-1F450-1F3FF { background-position: -460px -520px; }
+.emoji-1F451 { background-position: -480px -520px; }
+.emoji-1F452 { background-position: -500px -520px; }
+.emoji-1F453 { background-position: -520px -520px; }
+.emoji-1F454 { background-position: -540px 0; }
+.emoji-1F455 { background-position: -540px -20px; }
+.emoji-1F456 { background-position: -540px -40px; }
+.emoji-1F457 { background-position: -540px -60px; }
+.emoji-1F458 { background-position: -540px -80px; }
+.emoji-1F459 { background-position: -540px -100px; }
+.emoji-1F45A { background-position: -540px -120px; }
+.emoji-1F45B { background-position: -540px -140px; }
+.emoji-1F45C { background-position: -540px -160px; }
+.emoji-1F45D { background-position: -540px -180px; }
+.emoji-1F45E { background-position: -540px -200px; }
+.emoji-1F45F { background-position: -540px -220px; }
+.emoji-1F460 { background-position: -540px -240px; }
+.emoji-1F461 { background-position: -540px -260px; }
+.emoji-1F462 { background-position: -540px -280px; }
+.emoji-1F463 { background-position: -540px -300px; }
+.emoji-1F464 { background-position: -540px -320px; }
+.emoji-1F465 { background-position: -540px -340px; }
+.emoji-1F466 { background-position: -540px -360px; }
+.emoji-1F466-1F3FB { background-position: -540px -380px; }
+.emoji-1F466-1F3FC { background-position: -540px -400px; }
+.emoji-1F466-1F3FD { background-position: -540px -420px; }
+.emoji-1F466-1F3FE { background-position: -540px -440px; }
+.emoji-1F466-1F3FF { background-position: -540px -460px; }
+.emoji-1F467 { background-position: -540px -480px; }
+.emoji-1F467-1F3FB { background-position: -540px -500px; }
+.emoji-1F467-1F3FC { background-position: -540px -520px; }
+.emoji-1F467-1F3FD { background-position: 0 -540px; }
+.emoji-1F467-1F3FE { background-position: -20px -540px; }
+.emoji-1F467-1F3FF { background-position: -40px -540px; }
+.emoji-1F468 { background-position: -60px -540px; }
+.emoji-1F468-1F3FB { background-position: -80px -540px; }
+.emoji-1F468-1F3FC { background-position: -100px -540px; }
+.emoji-1F468-1F3FD { background-position: -120px -540px; }
+.emoji-1F468-1F3FE { background-position: -140px -540px; }
+.emoji-1F468-1F3FF { background-position: -160px -540px; }
+.emoji-1F468-1F468-1F466 { background-position: -180px -540px; }
+.emoji-1F468-1F468-1F466-1F466 { background-position: -200px -540px; }
+.emoji-1F468-1F468-1F467 { background-position: -220px -540px; }
+.emoji-1F468-1F468-1F467-1F466 { background-position: -240px -540px; }
+.emoji-1F468-1F468-1F467-1F467 { background-position: -260px -540px; }
+.emoji-1F468-1F469-1F466-1F466 { background-position: -280px -540px; }
+.emoji-1F468-1F469-1F467 { background-position: -300px -540px; }
+.emoji-1F468-1F469-1F467-1F466 { background-position: -320px -540px; }
+.emoji-1F468-1F469-1F467-1F467 { background-position: -340px -540px; }
+.emoji-1F468-2764-1F468 { background-position: -360px -540px; }
+.emoji-1F468-2764-1F48B-1F468 { background-position: -380px -540px; }
+.emoji-1F469 { background-position: -400px -540px; }
+.emoji-1F469-1F3FB { background-position: -420px -540px; }
+.emoji-1F469-1F3FC { background-position: -440px -540px; }
+.emoji-1F469-1F3FD { background-position: -460px -540px; }
+.emoji-1F469-1F3FE { background-position: -480px -540px; }
+.emoji-1F469-1F3FF { background-position: -500px -540px; }
+.emoji-1F469-1F469-1F466 { background-position: -520px -540px; }
+.emoji-1F469-1F469-1F466-1F466 { background-position: -540px -540px; }
+.emoji-1F469-1F469-1F467 { background-position: -560px 0; }
+.emoji-1F469-1F469-1F467-1F466 { background-position: -560px -20px; }
+.emoji-1F469-1F469-1F467-1F467 { background-position: -560px -40px; }
+.emoji-1F469-2764-1F469 { background-position: -560px -60px; }
+.emoji-1F469-2764-1F48B-1F469 { background-position: -560px -80px; }
+.emoji-1F46A { background-position: -560px -100px; }
+.emoji-1F46B { background-position: -560px -120px; }
+.emoji-1F46C { background-position: -560px -140px; }
+.emoji-1F46D { background-position: -560px -160px; }
+.emoji-1F46E { background-position: -560px -180px; }
+.emoji-1F46E-1F3FB { background-position: -560px -200px; }
+.emoji-1F46E-1F3FC { background-position: -560px -220px; }
+.emoji-1F46E-1F3FD { background-position: -560px -240px; }
+.emoji-1F46E-1F3FE { background-position: -560px -260px; }
+.emoji-1F46E-1F3FF { background-position: -560px -280px; }
+.emoji-1F46F { background-position: -560px -300px; }
+.emoji-1F470 { background-position: -560px -320px; }
+.emoji-1F470-1F3FB { background-position: -560px -340px; }
+.emoji-1F470-1F3FC { background-position: -560px -360px; }
+.emoji-1F470-1F3FD { background-position: -560px -380px; }
+.emoji-1F470-1F3FE { background-position: -560px -400px; }
+.emoji-1F470-1F3FF { background-position: -560px -420px; }
+.emoji-1F471 { background-position: -560px -440px; }
+.emoji-1F471-1F3FB { background-position: -560px -460px; }
+.emoji-1F471-1F3FC { background-position: -560px -480px; }
+.emoji-1F471-1F3FD { background-position: -560px -500px; }
+.emoji-1F471-1F3FE { background-position: -560px -520px; }
+.emoji-1F471-1F3FF { background-position: -560px -540px; }
+.emoji-1F472 { background-position: 0 -560px; }
+.emoji-1F472-1F3FB { background-position: -20px -560px; }
+.emoji-1F472-1F3FC { background-position: -40px -560px; }
+.emoji-1F472-1F3FD { background-position: -60px -560px; }
+.emoji-1F472-1F3FE { background-position: -80px -560px; }
+.emoji-1F472-1F3FF { background-position: -100px -560px; }
+.emoji-1F473 { background-position: -120px -560px; }
+.emoji-1F473-1F3FB { background-position: -140px -560px; }
+.emoji-1F473-1F3FC { background-position: -160px -560px; }
+.emoji-1F473-1F3FD { background-position: -180px -560px; }
+.emoji-1F473-1F3FE { background-position: -200px -560px; }
+.emoji-1F473-1F3FF { background-position: -220px -560px; }
+.emoji-1F474 { background-position: -240px -560px; }
+.emoji-1F474-1F3FB { background-position: -260px -560px; }
+.emoji-1F474-1F3FC { background-position: -280px -560px; }
+.emoji-1F474-1F3FD { background-position: -300px -560px; }
+.emoji-1F474-1F3FE { background-position: -320px -560px; }
+.emoji-1F474-1F3FF { background-position: -340px -560px; }
+.emoji-1F475 { background-position: -360px -560px; }
+.emoji-1F475-1F3FB { background-position: -380px -560px; }
+.emoji-1F475-1F3FC { background-position: -400px -560px; }
+.emoji-1F475-1F3FD { background-position: -420px -560px; }
+.emoji-1F475-1F3FE { background-position: -440px -560px; }
+.emoji-1F475-1F3FF { background-position: -460px -560px; }
+.emoji-1F476 { background-position: -480px -560px; }
+.emoji-1F476-1F3FB { background-position: -500px -560px; }
+.emoji-1F476-1F3FC { background-position: -520px -560px; }
+.emoji-1F476-1F3FD { background-position: -540px -560px; }
+.emoji-1F476-1F3FE { background-position: -560px -560px; }
+.emoji-1F476-1F3FF { background-position: -580px 0; }
+.emoji-1F477 { background-position: -580px -20px; }
+.emoji-1F477-1F3FB { background-position: -580px -40px; }
+.emoji-1F477-1F3FC { background-position: -580px -60px; }
+.emoji-1F477-1F3FD { background-position: -580px -80px; }
+.emoji-1F477-1F3FE { background-position: -580px -100px; }
+.emoji-1F477-1F3FF { background-position: -580px -120px; }
+.emoji-1F478 { background-position: -580px -140px; }
+.emoji-1F478-1F3FB { background-position: -580px -160px; }
+.emoji-1F478-1F3FC { background-position: -580px -180px; }
+.emoji-1F478-1F3FD { background-position: -580px -200px; }
+.emoji-1F478-1F3FE { background-position: -580px -220px; }
+.emoji-1F478-1F3FF { background-position: -580px -240px; }
+.emoji-1F479 { background-position: -580px -260px; }
+.emoji-1F47A { background-position: -580px -280px; }
+.emoji-1F47B { background-position: -580px -300px; }
+.emoji-1F47C { background-position: -580px -320px; }
+.emoji-1F47C-1F3FB { background-position: -580px -340px; }
+.emoji-1F47C-1F3FC { background-position: -580px -360px; }
+.emoji-1F47C-1F3FD { background-position: -580px -380px; }
+.emoji-1F47C-1F3FE { background-position: -580px -400px; }
+.emoji-1F47C-1F3FF { background-position: -580px -420px; }
+.emoji-1F47D { background-position: -580px -440px; }
+.emoji-1F47E { background-position: -580px -460px; }
+.emoji-1F47F { background-position: -580px -480px; }
+.emoji-1F480 { background-position: -580px -500px; }
+.emoji-1F481 { background-position: -580px -520px; }
+.emoji-1F481-1F3FB { background-position: -580px -540px; }
+.emoji-1F481-1F3FC { background-position: -580px -560px; }
+.emoji-1F481-1F3FD { background-position: 0 -580px; }
+.emoji-1F481-1F3FE { background-position: -20px -580px; }
+.emoji-1F481-1F3FF { background-position: -40px -580px; }
+.emoji-1F482 { background-position: -60px -580px; }
+.emoji-1F482-1F3FB { background-position: -80px -580px; }
+.emoji-1F482-1F3FC { background-position: -100px -580px; }
+.emoji-1F482-1F3FD { background-position: -120px -580px; }
+.emoji-1F482-1F3FE { background-position: -140px -580px; }
+.emoji-1F482-1F3FF { background-position: -160px -580px; }
+.emoji-1F483 { background-position: -180px -580px; }
+.emoji-1F483-1F3FB { background-position: -200px -580px; }
+.emoji-1F483-1F3FC { background-position: -220px -580px; }
+.emoji-1F483-1F3FD { background-position: -240px -580px; }
+.emoji-1F483-1F3FE { background-position: -260px -580px; }
+.emoji-1F483-1F3FF { background-position: -280px -580px; }
+.emoji-1F484 { background-position: -300px -580px; }
+.emoji-1F485 { background-position: -320px -580px; }
+.emoji-1F485-1F3FB { background-position: -340px -580px; }
+.emoji-1F485-1F3FC { background-position: -360px -580px; }
+.emoji-1F485-1F3FD { background-position: -380px -580px; }
+.emoji-1F485-1F3FE { background-position: -400px -580px; }
+.emoji-1F485-1F3FF { background-position: -420px -580px; }
+.emoji-1F486 { background-position: -440px -580px; }
+.emoji-1F486-1F3FB { background-position: -460px -580px; }
+.emoji-1F486-1F3FC { background-position: -480px -580px; }
+.emoji-1F486-1F3FD { background-position: -500px -580px; }
+.emoji-1F486-1F3FE { background-position: -520px -580px; }
+.emoji-1F486-1F3FF { background-position: -540px -580px; }
+.emoji-1F487 { background-position: -560px -580px; }
+.emoji-1F487-1F3FB { background-position: -580px -580px; }
+.emoji-1F487-1F3FC { background-position: -600px 0; }
+.emoji-1F487-1F3FD { background-position: -600px -20px; }
+.emoji-1F487-1F3FE { background-position: -600px -40px; }
+.emoji-1F487-1F3FF { background-position: -600px -60px; }
+.emoji-1F488 { background-position: -600px -80px; }
+.emoji-1F489 { background-position: -600px -100px; }
+.emoji-1F48A { background-position: -600px -120px; }
+.emoji-1F48B { background-position: -600px -140px; }
+.emoji-1F48C { background-position: -600px -160px; }
+.emoji-1F48D { background-position: -600px -180px; }
+.emoji-1F48E { background-position: -600px -200px; }
+.emoji-1F48F { background-position: -600px -220px; }
+.emoji-1F490 { background-position: -600px -240px; }
+.emoji-1F491 { background-position: -600px -260px; }
+.emoji-1F492 { background-position: -600px -280px; }
+.emoji-1F493 { background-position: -600px -300px; }
+.emoji-1F494 { background-position: -600px -320px; }
+.emoji-1F495 { background-position: -600px -340px; }
+.emoji-1F496 { background-position: -600px -360px; }
+.emoji-1F497 { background-position: -600px -380px; }
+.emoji-1F498 { background-position: -600px -400px; }
+.emoji-1F499 { background-position: -600px -420px; }
+.emoji-1F49A { background-position: -600px -440px; }
+.emoji-1F49B { background-position: -600px -460px; }
+.emoji-1F49C { background-position: -600px -480px; }
+.emoji-1F49D { background-position: -600px -500px; }
+.emoji-1F49E { background-position: -600px -520px; }
+.emoji-1F49F { background-position: -600px -540px; }
+.emoji-1F4A0 { background-position: -600px -560px; }
+.emoji-1F4A1 { background-position: -600px -580px; }
+.emoji-1F4A2 { background-position: 0 -600px; }
+.emoji-1F4A3 { background-position: -20px -600px; }
+.emoji-1F4A4 { background-position: -40px -600px; }
+.emoji-1F4A5 { background-position: -60px -600px; }
+.emoji-1F4A6 { background-position: -80px -600px; }
+.emoji-1F4A7 { background-position: -100px -600px; }
+.emoji-1F4A8 { background-position: -120px -600px; }
+.emoji-1F4A9 { background-position: -140px -600px; }
+.emoji-1F4AA { background-position: -160px -600px; }
+.emoji-1F4AA-1F3FB { background-position: -180px -600px; }
+.emoji-1F4AA-1F3FC { background-position: -200px -600px; }
+.emoji-1F4AA-1F3FD { background-position: -220px -600px; }
+.emoji-1F4AA-1F3FE { background-position: -240px -600px; }
+.emoji-1F4AA-1F3FF { background-position: -260px -600px; }
+.emoji-1F4AB { background-position: -280px -600px; }
+.emoji-1F4AC { background-position: -300px -600px; }
+.emoji-1F4AD { background-position: -320px -600px; }
+.emoji-1F4AE { background-position: -340px -600px; }
+.emoji-1F4AF { background-position: -360px -600px; }
+.emoji-1F4B0 { background-position: -380px -600px; }
+.emoji-1F4B1 { background-position: -400px -600px; }
+.emoji-1F4B2 { background-position: -420px -600px; }
+.emoji-1F4B3 { background-position: -440px -600px; }
+.emoji-1F4B4 { background-position: -460px -600px; }
+.emoji-1F4B5 { background-position: -480px -600px; }
+.emoji-1F4B6 { background-position: -500px -600px; }
+.emoji-1F4B7 { background-position: -520px -600px; }
+.emoji-1F4B8 { background-position: -540px -600px; }
+.emoji-1F4B9 { background-position: -560px -600px; }
+.emoji-1F4BA { background-position: -580px -600px; }
+.emoji-1F4BB { background-position: -600px -600px; }
+.emoji-1F4BC { background-position: -620px 0; }
+.emoji-1F4BD { background-position: -620px -20px; }
+.emoji-1F4BE { background-position: -620px -40px; }
+.emoji-1F4BF { background-position: -620px -60px; }
+.emoji-1F4C0 { background-position: -620px -80px; }
+.emoji-1F4C1 { background-position: -620px -100px; }
+.emoji-1F4C2 { background-position: -620px -120px; }
+.emoji-1F4C3 { background-position: -620px -140px; }
+.emoji-1F4C4 { background-position: -620px -160px; }
+.emoji-1F4C5 { background-position: -620px -180px; }
+.emoji-1F4C6 { background-position: -620px -200px; }
+.emoji-1F4C7 { background-position: -620px -220px; }
+.emoji-1F4C8 { background-position: -620px -240px; }
+.emoji-1F4C9 { background-position: -620px -260px; }
+.emoji-1F4CA { background-position: -620px -280px; }
+.emoji-1F4CB { background-position: -620px -300px; }
+.emoji-1F4CC { background-position: -620px -320px; }
+.emoji-1F4CD { background-position: -620px -340px; }
+.emoji-1F4CE { background-position: -620px -360px; }
+.emoji-1F4CF { background-position: -620px -380px; }
+.emoji-1F4D0 { background-position: -620px -400px; }
+.emoji-1F4D1 { background-position: -620px -420px; }
+.emoji-1F4D2 { background-position: -620px -440px; }
+.emoji-1F4D3 { background-position: -620px -460px; }
+.emoji-1F4D4 { background-position: -620px -480px; }
+.emoji-1F4D5 { background-position: -620px -500px; }
+.emoji-1F4D6 { background-position: -620px -520px; }
+.emoji-1F4D7 { background-position: -620px -540px; }
+.emoji-1F4D8 { background-position: -620px -560px; }
+.emoji-1F4D9 { background-position: -620px -580px; }
+.emoji-1F4DA { background-position: -620px -600px; }
+.emoji-1F4DB { background-position: 0 -620px; }
+.emoji-1F4DC { background-position: -20px -620px; }
+.emoji-1F4DD { background-position: -40px -620px; }
+.emoji-1F4DE { background-position: -60px -620px; }
+.emoji-1F4DF { background-position: -80px -620px; }
+.emoji-1F4E0 { background-position: -100px -620px; }
+.emoji-1F4E1 { background-position: -120px -620px; }
+.emoji-1F4E2 { background-position: -140px -620px; }
+.emoji-1F4E3 { background-position: -160px -620px; }
+.emoji-1F4E4 { background-position: -180px -620px; }
+.emoji-1F4E5 { background-position: -200px -620px; }
+.emoji-1F4E6 { background-position: -220px -620px; }
+.emoji-1F4E7 { background-position: -240px -620px; }
+.emoji-1F4E8 { background-position: -260px -620px; }
+.emoji-1F4E9 { background-position: -280px -620px; }
+.emoji-1F4EA { background-position: -300px -620px; }
+.emoji-1F4EB { background-position: -320px -620px; }
+.emoji-1F4EC { background-position: -340px -620px; }
+.emoji-1F4ED { background-position: -360px -620px; }
+.emoji-1F4EE { background-position: -380px -620px; }
+.emoji-1F4EF { background-position: -400px -620px; }
+.emoji-1F4F0 { background-position: -420px -620px; }
+.emoji-1F4F1 { background-position: -440px -620px; }
+.emoji-1F4F2 { background-position: -460px -620px; }
+.emoji-1F4F3 { background-position: -480px -620px; }
+.emoji-1F4F4 { background-position: -500px -620px; }
+.emoji-1F4F5 { background-position: -520px -620px; }
+.emoji-1F4F6 { background-position: -540px -620px; }
+.emoji-1F4F7 { background-position: -560px -620px; }
+.emoji-1F4F8 { background-position: -580px -620px; }
+.emoji-1F4F9 { background-position: -600px -620px; }
+.emoji-1F4FA { background-position: -620px -620px; }
+.emoji-1F4FB { background-position: -640px 0; }
+.emoji-1F4FC { background-position: -640px -20px; }
+.emoji-1F4FD { background-position: -640px -40px; }
+.emoji-1F4FF { background-position: -640px -60px; }
+.emoji-1F500 { background-position: -640px -80px; }
+.emoji-1F501 { background-position: -640px -100px; }
+.emoji-1F502 { background-position: -640px -120px; }
+.emoji-1F503 { background-position: -640px -140px; }
+.emoji-1F504 { background-position: -640px -160px; }
+.emoji-1F505 { background-position: -640px -180px; }
+.emoji-1F506 { background-position: -640px -200px; }
+.emoji-1F507 { background-position: -640px -220px; }
+.emoji-1F508 { background-position: -640px -240px; }
+.emoji-1F509 { background-position: -640px -260px; }
+.emoji-1F50A { background-position: -640px -280px; }
+.emoji-1F50B { background-position: -640px -300px; }
+.emoji-1F50C { background-position: -640px -320px; }
+.emoji-1F50D { background-position: -640px -340px; }
+.emoji-1F50E { background-position: -640px -360px; }
+.emoji-1F50F { background-position: -640px -380px; }
+.emoji-1F510 { background-position: -640px -400px; }
+.emoji-1F511 { background-position: -640px -420px; }
+.emoji-1F512 { background-position: -640px -440px; }
+.emoji-1F513 { background-position: -640px -460px; }
+.emoji-1F514 { background-position: -640px -480px; }
+.emoji-1F515 { background-position: -640px -500px; }
+.emoji-1F516 { background-position: -640px -520px; }
+.emoji-1F517 { background-position: -640px -540px; }
+.emoji-1F518 { background-position: -640px -560px; }
+.emoji-1F519 { background-position: -640px -580px; }
+.emoji-1F51A { background-position: -640px -600px; }
+.emoji-1F51B { background-position: -640px -620px; }
+.emoji-1F51C { background-position: 0 -640px; }
+.emoji-1F51D { background-position: -20px -640px; }
+.emoji-1F51E { background-position: -40px -640px; }
+.emoji-1F51F { background-position: -60px -640px; }
+.emoji-1F520 { background-position: -80px -640px; }
+.emoji-1F521 { background-position: -100px -640px; }
+.emoji-1F522 { background-position: -120px -640px; }
+.emoji-1F523 { background-position: -140px -640px; }
+.emoji-1F524 { background-position: -160px -640px; }
+.emoji-1F525 { background-position: -180px -640px; }
+.emoji-1F526 { background-position: -200px -640px; }
+.emoji-1F527 { background-position: -220px -640px; }
+.emoji-1F528 { background-position: -240px -640px; }
+.emoji-1F529 { background-position: -260px -640px; }
+.emoji-1F52A { background-position: -280px -640px; }
+.emoji-1F52B { background-position: -300px -640px; }
+.emoji-1F52C { background-position: -320px -640px; }
+.emoji-1F52D { background-position: -340px -640px; }
+.emoji-1F52E { background-position: -360px -640px; }
+.emoji-1F52F { background-position: -380px -640px; }
+.emoji-1F530 { background-position: -400px -640px; }
+.emoji-1F531 { background-position: -420px -640px; }
+.emoji-1F532 { background-position: -440px -640px; }
+.emoji-1F533 { background-position: -460px -640px; }
+.emoji-1F534 { background-position: -480px -640px; }
+.emoji-1F535 { background-position: -500px -640px; }
+.emoji-1F536 { background-position: -520px -640px; }
+.emoji-1F537 { background-position: -540px -640px; }
+.emoji-1F538 { background-position: -560px -640px; }
+.emoji-1F539 { background-position: -580px -640px; }
+.emoji-1F53A { background-position: -600px -640px; }
+.emoji-1F53B { background-position: -620px -640px; }
+.emoji-1F53C { background-position: -640px -640px; }
+.emoji-1F53D { background-position: -660px 0; }
+.emoji-1F549 { background-position: -660px -20px; }
+.emoji-1F54A { background-position: -660px -40px; }
+.emoji-1F54B { background-position: -660px -60px; }
+.emoji-1F54C { background-position: -660px -80px; }
+.emoji-1F54D { background-position: -660px -100px; }
+.emoji-1F54E { background-position: -660px -120px; }
+.emoji-1F550 { background-position: -660px -140px; }
+.emoji-1F551 { background-position: -660px -160px; }
+.emoji-1F552 { background-position: -660px -180px; }
+.emoji-1F553 { background-position: -660px -200px; }
+.emoji-1F554 { background-position: -660px -220px; }
+.emoji-1F555 { background-position: -660px -240px; }
+.emoji-1F556 { background-position: -660px -260px; }
+.emoji-1F557 { background-position: -660px -280px; }
+.emoji-1F558 { background-position: -660px -300px; }
+.emoji-1F559 { background-position: -660px -320px; }
+.emoji-1F55A { background-position: -660px -340px; }
+.emoji-1F55B { background-position: -660px -360px; }
+.emoji-1F55C { background-position: -660px -380px; }
+.emoji-1F55D { background-position: -660px -400px; }
+.emoji-1F55E { background-position: -660px -420px; }
+.emoji-1F55F { background-position: -660px -440px; }
+.emoji-1F560 { background-position: -660px -460px; }
+.emoji-1F561 { background-position: -660px -480px; }
+.emoji-1F562 { background-position: -660px -500px; }
+.emoji-1F563 { background-position: -660px -520px; }
+.emoji-1F564 { background-position: -660px -540px; }
+.emoji-1F565 { background-position: -660px -560px; }
+.emoji-1F566 { background-position: -660px -580px; }
+.emoji-1F567 { background-position: -660px -600px; }
+.emoji-1F56F { background-position: -660px -620px; }
+.emoji-1F570 { background-position: -660px -640px; }
+.emoji-1F573 { background-position: 0 -660px; }
+.emoji-1F574 { background-position: -20px -660px; }
+.emoji-1F575 { background-position: -40px -660px; }
+.emoji-1F575-1F3FB { background-position: -60px -660px; }
+.emoji-1F575-1F3FC { background-position: -80px -660px; }
+.emoji-1F575-1F3FD { background-position: -100px -660px; }
+.emoji-1F575-1F3FE { background-position: -120px -660px; }
+.emoji-1F575-1F3FF { background-position: -140px -660px; }
+.emoji-1F576 { background-position: -160px -660px; }
+.emoji-1F577 { background-position: -180px -660px; }
+.emoji-1F578 { background-position: -200px -660px; }
+.emoji-1F579 { background-position: -220px -660px; }
+.emoji-1F57A { background-position: -240px -660px; }
+.emoji-1F57A-1F3FB { background-position: -260px -660px; }
+.emoji-1F57A-1F3FC { background-position: -280px -660px; }
+.emoji-1F57A-1F3FD { background-position: -300px -660px; }
+.emoji-1F57A-1F3FE { background-position: -320px -660px; }
+.emoji-1F57A-1F3FF { background-position: -340px -660px; }
+.emoji-1F587 { background-position: -360px -660px; }
+.emoji-1F58A { background-position: -380px -660px; }
+.emoji-1F58B { background-position: -400px -660px; }
+.emoji-1F58C { background-position: -420px -660px; }
+.emoji-1F58D { background-position: -440px -660px; }
+.emoji-1F590 { background-position: -460px -660px; }
+.emoji-1F590-1F3FB { background-position: -480px -660px; }
+.emoji-1F590-1F3FC { background-position: -500px -660px; }
+.emoji-1F590-1F3FD { background-position: -520px -660px; }
+.emoji-1F590-1F3FE { background-position: -540px -660px; }
+.emoji-1F590-1F3FF { background-position: -560px -660px; }
+.emoji-1F595 { background-position: -580px -660px; }
+.emoji-1F595-1F3FB { background-position: -600px -660px; }
+.emoji-1F595-1F3FC { background-position: -620px -660px; }
+.emoji-1F595-1F3FD { background-position: -640px -660px; }
+.emoji-1F595-1F3FE { background-position: -660px -660px; }
+.emoji-1F595-1F3FF { background-position: -680px 0; }
+.emoji-1F596 { background-position: -680px -20px; }
+.emoji-1F596-1F3FB { background-position: -680px -40px; }
+.emoji-1F596-1F3FC { background-position: -680px -60px; }
+.emoji-1F596-1F3FD { background-position: -680px -80px; }
+.emoji-1F596-1F3FE { background-position: -680px -100px; }
+.emoji-1F596-1F3FF { background-position: -680px -120px; }
+.emoji-1F5A4 { background-position: -680px -140px; }
+.emoji-1F5A5 { background-position: -680px -160px; }
+.emoji-1F5A8 { background-position: -680px -180px; }
+.emoji-1F5B1 { background-position: -680px -200px; }
+.emoji-1F5B2 { background-position: -680px -220px; }
+.emoji-1F5BC { background-position: -680px -240px; }
+.emoji-1F5C2 { background-position: -680px -260px; }
+.emoji-1F5C3 { background-position: -680px -280px; }
+.emoji-1F5C4 { background-position: -680px -300px; }
+.emoji-1F5D1 { background-position: -680px -320px; }
+.emoji-1F5D2 { background-position: -680px -340px; }
+.emoji-1F5D3 { background-position: -680px -360px; }
+.emoji-1F5DC { background-position: -680px -380px; }
+.emoji-1F5DD { background-position: -680px -400px; }
+.emoji-1F5DE { background-position: -680px -420px; }
+.emoji-1F5E1 { background-position: -680px -440px; }
+.emoji-1F5E3 { background-position: -680px -460px; }
+.emoji-1F5EF { background-position: -680px -480px; }
+.emoji-1F5F3 { background-position: -680px -500px; }
+.emoji-1F5FA { background-position: -680px -520px; }
+.emoji-1F5FB { background-position: -680px -540px; }
+.emoji-1F5FC { background-position: -680px -560px; }
+.emoji-1F5FD { background-position: -680px -580px; }
+.emoji-1F5FE { background-position: -680px -600px; }
+.emoji-1F5FF { background-position: -680px -620px; }
+.emoji-1F600 { background-position: -680px -640px; }
+.emoji-1F601 { background-position: -680px -660px; }
+.emoji-1F602 { background-position: 0 -680px; }
+.emoji-1F603 { background-position: -20px -680px; }
+.emoji-1F604 { background-position: -40px -680px; }
+.emoji-1F605 { background-position: -60px -680px; }
+.emoji-1F606 { background-position: -80px -680px; }
+.emoji-1F607 { background-position: -100px -680px; }
+.emoji-1F608 { background-position: -120px -680px; }
+.emoji-1F609 { background-position: -140px -680px; }
+.emoji-1F60A { background-position: -160px -680px; }
+.emoji-1F60B { background-position: -180px -680px; }
+.emoji-1F60C { background-position: -200px -680px; }
+.emoji-1F60D { background-position: -220px -680px; }
+.emoji-1F60E { background-position: -240px -680px; }
+.emoji-1F60F { background-position: -260px -680px; }
+.emoji-1F610 { background-position: -280px -680px; }
+.emoji-1F611 { background-position: -300px -680px; }
+.emoji-1F612 { background-position: -320px -680px; }
+.emoji-1F613 { background-position: -340px -680px; }
+.emoji-1F614 { background-position: -360px -680px; }
+.emoji-1F615 { background-position: -380px -680px; }
+.emoji-1F616 { background-position: -400px -680px; }
+.emoji-1F617 { background-position: -420px -680px; }
+.emoji-1F618 { background-position: -440px -680px; }
+.emoji-1F619 { background-position: -460px -680px; }
+.emoji-1F61A { background-position: -480px -680px; }
+.emoji-1F61B { background-position: -500px -680px; }
+.emoji-1F61C { background-position: -520px -680px; }
+.emoji-1F61D { background-position: -540px -680px; }
+.emoji-1F61E { background-position: -560px -680px; }
+.emoji-1F61F { background-position: -580px -680px; }
+.emoji-1F620 { background-position: -600px -680px; }
+.emoji-1F621 { background-position: -620px -680px; }
+.emoji-1F622 { background-position: -640px -680px; }
+.emoji-1F623 { background-position: -660px -680px; }
+.emoji-1F624 { background-position: -680px -680px; }
+.emoji-1F625 { background-position: -700px 0; }
+.emoji-1F626 { background-position: -700px -20px; }
+.emoji-1F627 { background-position: -700px -40px; }
+.emoji-1F628 { background-position: -700px -60px; }
+.emoji-1F629 { background-position: -700px -80px; }
+.emoji-1F62A { background-position: -700px -100px; }
+.emoji-1F62B { background-position: -700px -120px; }
+.emoji-1F62C { background-position: -700px -140px; }
+.emoji-1F62D { background-position: -700px -160px; }
+.emoji-1F62E { background-position: -700px -180px; }
+.emoji-1F62F { background-position: -700px -200px; }
+.emoji-1F630 { background-position: -700px -220px; }
+.emoji-1F631 { background-position: -700px -240px; }
+.emoji-1F632 { background-position: -700px -260px; }
+.emoji-1F633 { background-position: -700px -280px; }
+.emoji-1F634 { background-position: -700px -300px; }
+.emoji-1F635 { background-position: -700px -320px; }
+.emoji-1F636 { background-position: -700px -340px; }
+.emoji-1F637 { background-position: -700px -360px; }
+.emoji-1F638 { background-position: -700px -380px; }
+.emoji-1F639 { background-position: -700px -400px; }
+.emoji-1F63A { background-position: -700px -420px; }
+.emoji-1F63B { background-position: -700px -440px; }
+.emoji-1F63C { background-position: -700px -460px; }
+.emoji-1F63D { background-position: -700px -480px; }
+.emoji-1F63E { background-position: -700px -500px; }
+.emoji-1F63F { background-position: -700px -520px; }
+.emoji-1F640 { background-position: -700px -540px; }
+.emoji-1F641 { background-position: -700px -560px; }
+.emoji-1F642 { background-position: -700px -580px; }
+.emoji-1F643 { background-position: -700px -600px; }
+.emoji-1F644 { background-position: -700px -620px; }
+.emoji-1F645 { background-position: -700px -640px; }
+.emoji-1F645-1F3FB { background-position: -700px -660px; }
+.emoji-1F645-1F3FC { background-position: -700px -680px; }
+.emoji-1F645-1F3FD { background-position: 0 -700px; }
+.emoji-1F645-1F3FE { background-position: -20px -700px; }
+.emoji-1F645-1F3FF { background-position: -40px -700px; }
+.emoji-1F646 { background-position: -60px -700px; }
+.emoji-1F646-1F3FB { background-position: -80px -700px; }
+.emoji-1F646-1F3FC { background-position: -100px -700px; }
+.emoji-1F646-1F3FD { background-position: -120px -700px; }
+.emoji-1F646-1F3FE { background-position: -140px -700px; }
+.emoji-1F646-1F3FF { background-position: -160px -700px; }
+.emoji-1F647 { background-position: -180px -700px; }
+.emoji-1F647-1F3FB { background-position: -200px -700px; }
+.emoji-1F647-1F3FC { background-position: -220px -700px; }
+.emoji-1F647-1F3FD { background-position: -240px -700px; }
+.emoji-1F647-1F3FE { background-position: -260px -700px; }
+.emoji-1F647-1F3FF { background-position: -280px -700px; }
+.emoji-1F648 { background-position: -300px -700px; }
+.emoji-1F649 { background-position: -320px -700px; }
+.emoji-1F64A { background-position: -340px -700px; }
+.emoji-1F64B { background-position: -360px -700px; }
+.emoji-1F64B-1F3FB { background-position: -380px -700px; }
+.emoji-1F64B-1F3FC { background-position: -400px -700px; }
+.emoji-1F64B-1F3FD { background-position: -420px -700px; }
+.emoji-1F64B-1F3FE { background-position: -440px -700px; }
+.emoji-1F64B-1F3FF { background-position: -460px -700px; }
+.emoji-1F64C { background-position: -480px -700px; }
+.emoji-1F64C-1F3FB { background-position: -500px -700px; }
+.emoji-1F64C-1F3FC { background-position: -520px -700px; }
+.emoji-1F64C-1F3FD { background-position: -540px -700px; }
+.emoji-1F64C-1F3FE { background-position: -560px -700px; }
+.emoji-1F64C-1F3FF { background-position: -580px -700px; }
+.emoji-1F64D { background-position: -600px -700px; }
+.emoji-1F64D-1F3FB { background-position: -620px -700px; }
+.emoji-1F64D-1F3FC { background-position: -640px -700px; }
+.emoji-1F64D-1F3FD { background-position: -660px -700px; }
+.emoji-1F64D-1F3FE { background-position: -680px -700px; }
+.emoji-1F64D-1F3FF { background-position: -700px -700px; }
+.emoji-1F64E { background-position: -720px 0; }
+.emoji-1F64E-1F3FB { background-position: -720px -20px; }
+.emoji-1F64E-1F3FC { background-position: -720px -40px; }
+.emoji-1F64E-1F3FD { background-position: -720px -60px; }
+.emoji-1F64E-1F3FE { background-position: -720px -80px; }
+.emoji-1F64E-1F3FF { background-position: -720px -100px; }
+.emoji-1F64F { background-position: -720px -120px; }
+.emoji-1F64F-1F3FB { background-position: -720px -140px; }
+.emoji-1F64F-1F3FC { background-position: -720px -160px; }
+.emoji-1F64F-1F3FD { background-position: -720px -180px; }
+.emoji-1F64F-1F3FE { background-position: -720px -200px; }
+.emoji-1F64F-1F3FF { background-position: -720px -220px; }
+.emoji-1F680 { background-position: -720px -240px; }
+.emoji-1F681 { background-position: -720px -260px; }
+.emoji-1F682 { background-position: -720px -280px; }
+.emoji-1F683 { background-position: -720px -300px; }
+.emoji-1F684 { background-position: -720px -320px; }
+.emoji-1F685 { background-position: -720px -340px; }
+.emoji-1F686 { background-position: -720px -360px; }
+.emoji-1F687 { background-position: -720px -380px; }
+.emoji-1F688 { background-position: -720px -400px; }
+.emoji-1F689 { background-position: -720px -420px; }
+.emoji-1F68A { background-position: -720px -440px; }
+.emoji-1F68B { background-position: -720px -460px; }
+.emoji-1F68C { background-position: -720px -480px; }
+.emoji-1F68D { background-position: -720px -500px; }
+.emoji-1F68E { background-position: -720px -520px; }
+.emoji-1F68F { background-position: -720px -540px; }
+.emoji-1F690 { background-position: -720px -560px; }
+.emoji-1F691 { background-position: -720px -580px; }
+.emoji-1F692 { background-position: -720px -600px; }
+.emoji-1F693 { background-position: -720px -620px; }
+.emoji-1F694 { background-position: -720px -640px; }
+.emoji-1F695 { background-position: -720px -660px; }
+.emoji-1F696 { background-position: -720px -680px; }
+.emoji-1F697 { background-position: -720px -700px; }
+.emoji-1F698 { background-position: 0 -720px; }
+.emoji-1F699 { background-position: -20px -720px; }
+.emoji-1F69A { background-position: -40px -720px; }
+.emoji-1F69B { background-position: -60px -720px; }
+.emoji-1F69C { background-position: -80px -720px; }
+.emoji-1F69D { background-position: -100px -720px; }
+.emoji-1F69E { background-position: -120px -720px; }
+.emoji-1F69F { background-position: -140px -720px; }
+.emoji-1F6A0 { background-position: -160px -720px; }
+.emoji-1F6A1 { background-position: -180px -720px; }
+.emoji-1F6A2 { background-position: -200px -720px; }
+.emoji-1F6A3 { background-position: -220px -720px; }
+.emoji-1F6A3-1F3FB { background-position: -240px -720px; }
+.emoji-1F6A3-1F3FC { background-position: -260px -720px; }
+.emoji-1F6A3-1F3FD { background-position: -280px -720px; }
+.emoji-1F6A3-1F3FE { background-position: -300px -720px; }
+.emoji-1F6A3-1F3FF { background-position: -320px -720px; }
+.emoji-1F6A4 { background-position: -340px -720px; }
+.emoji-1F6A5 { background-position: -360px -720px; }
+.emoji-1F6A6 { background-position: -380px -720px; }
+.emoji-1F6A7 { background-position: -400px -720px; }
+.emoji-1F6A8 { background-position: -420px -720px; }
+.emoji-1F6A9 { background-position: -440px -720px; }
+.emoji-1F6AA { background-position: -460px -720px; }
+.emoji-1F6AB { background-position: -480px -720px; }
+.emoji-1F6AC { background-position: -500px -720px; }
+.emoji-1F6AD { background-position: -520px -720px; }
+.emoji-1F6AE { background-position: -540px -720px; }
+.emoji-1F6AF { background-position: -560px -720px; }
+.emoji-1F6B0 { background-position: -580px -720px; }
+.emoji-1F6B1 { background-position: -600px -720px; }
+.emoji-1F6B2 { background-position: -620px -720px; }
+.emoji-1F6B3 { background-position: -640px -720px; }
+.emoji-1F6B4 { background-position: -660px -720px; }
+.emoji-1F6B4-1F3FB { background-position: -680px -720px; }
+.emoji-1F6B4-1F3FC { background-position: -700px -720px; }
+.emoji-1F6B4-1F3FD { background-position: -720px -720px; }
+.emoji-1F6B4-1F3FE { background-position: -740px 0; }
+.emoji-1F6B4-1F3FF { background-position: -740px -20px; }
+.emoji-1F6B5 { background-position: -740px -40px; }
+.emoji-1F6B5-1F3FB { background-position: -740px -60px; }
+.emoji-1F6B5-1F3FC { background-position: -740px -80px; }
+.emoji-1F6B5-1F3FD { background-position: -740px -100px; }
+.emoji-1F6B5-1F3FE { background-position: -740px -120px; }
+.emoji-1F6B5-1F3FF { background-position: -740px -140px; }
+.emoji-1F6B6 { background-position: -740px -160px; }
+.emoji-1F6B6-1F3FB { background-position: -740px -180px; }
+.emoji-1F6B6-1F3FC { background-position: -740px -200px; }
+.emoji-1F6B6-1F3FD { background-position: -740px -220px; }
+.emoji-1F6B6-1F3FE { background-position: -740px -240px; }
+.emoji-1F6B6-1F3FF { background-position: -740px -260px; }
+.emoji-1F6B7 { background-position: -740px -280px; }
+.emoji-1F6B8 { background-position: -740px -300px; }
+.emoji-1F6B9 { background-position: -740px -320px; }
+.emoji-1F6BA { background-position: -740px -340px; }
+.emoji-1F6BB { background-position: -740px -360px; }
+.emoji-1F6BC { background-position: -740px -380px; }
+.emoji-1F6BD { background-position: -740px -400px; }
+.emoji-1F6BE { background-position: -740px -420px; }
+.emoji-1F6BF { background-position: -740px -440px; }
+.emoji-1F6C0 { background-position: -740px -460px; }
+.emoji-1F6C0-1F3FB { background-position: -740px -480px; }
+.emoji-1F6C0-1F3FC { background-position: -740px -500px; }
+.emoji-1F6C0-1F3FD { background-position: -740px -520px; }
+.emoji-1F6C0-1F3FE { background-position: -740px -540px; }
+.emoji-1F6C0-1F3FF { background-position: -740px -560px; }
+.emoji-1F6C1 { background-position: -740px -580px; }
+.emoji-1F6C2 { background-position: -740px -600px; }
+.emoji-1F6C3 { background-position: -740px -620px; }
+.emoji-1F6C4 { background-position: -740px -640px; }
+.emoji-1F6C5 { background-position: -740px -660px; }
+.emoji-1F6CB { background-position: -740px -680px; }
+.emoji-1F6CC { background-position: -740px -700px; }
+.emoji-1F6CD { background-position: -740px -720px; }
+.emoji-1F6CE { background-position: 0 -740px; }
+.emoji-1F6CF { background-position: -20px -740px; }
+.emoji-1F6D0 { background-position: -40px -740px; }
+.emoji-1F6D1 { background-position: -60px -740px; }
+.emoji-1F6D2 { background-position: -80px -740px; }
+.emoji-1F6E0 { background-position: -100px -740px; }
+.emoji-1F6E1 { background-position: -120px -740px; }
+.emoji-1F6E2 { background-position: -140px -740px; }
+.emoji-1F6E3 { background-position: -160px -740px; }
+.emoji-1F6E4 { background-position: -180px -740px; }
+.emoji-1F6E5 { background-position: -200px -740px; }
+.emoji-1F6E9 { background-position: -220px -740px; }
+.emoji-1F6EB { background-position: -240px -740px; }
+.emoji-1F6EC { background-position: -260px -740px; }
+.emoji-1F6F0 { background-position: -280px -740px; }
+.emoji-1F6F3 { background-position: -300px -740px; }
+.emoji-1F6F4 { background-position: -320px -740px; }
+.emoji-1F6F5 { background-position: -340px -740px; }
+.emoji-1F6F6 { background-position: -360px -740px; }
+.emoji-1F910 { background-position: -380px -740px; }
+.emoji-1F911 { background-position: -400px -740px; }
+.emoji-1F912 { background-position: -420px -740px; }
+.emoji-1F913 { background-position: -440px -740px; }
+.emoji-1F914 { background-position: -460px -740px; }
+.emoji-1F915 { background-position: -480px -740px; }
+.emoji-1F916 { background-position: -500px -740px; }
+.emoji-1F917 { background-position: -520px -740px; }
+.emoji-1F918 { background-position: -540px -740px; }
+.emoji-1F918-1F3FB { background-position: -560px -740px; }
+.emoji-1F918-1F3FC { background-position: -580px -740px; }
+.emoji-1F918-1F3FD { background-position: -600px -740px; }
+.emoji-1F918-1F3FE { background-position: -620px -740px; }
+.emoji-1F918-1F3FF { background-position: -640px -740px; }
+.emoji-1F919 { background-position: -660px -740px; }
+.emoji-1F919-1F3FB { background-position: -680px -740px; }
+.emoji-1F919-1F3FC { background-position: -700px -740px; }
+.emoji-1F919-1F3FD { background-position: -720px -740px; }
+.emoji-1F919-1F3FE { background-position: -740px -740px; }
+.emoji-1F919-1F3FF { background-position: -760px 0; }
+.emoji-1F91A { background-position: -760px -20px; }
+.emoji-1F91A-1F3FB { background-position: -760px -40px; }
+.emoji-1F91A-1F3FC { background-position: -760px -60px; }
+.emoji-1F91A-1F3FD { background-position: -760px -80px; }
+.emoji-1F91A-1F3FE { background-position: -760px -100px; }
+.emoji-1F91A-1F3FF { background-position: -760px -120px; }
+.emoji-1F91B { background-position: -760px -140px; }
+.emoji-1F91B-1F3FB { background-position: -760px -160px; }
+.emoji-1F91B-1F3FC { background-position: -760px -180px; }
+.emoji-1F91B-1F3FD { background-position: -760px -200px; }
+.emoji-1F91B-1F3FE { background-position: -760px -220px; }
+.emoji-1F91B-1F3FF { background-position: -760px -240px; }
+.emoji-1F91C { background-position: -760px -260px; }
+.emoji-1F91C-1F3FB { background-position: -760px -280px; }
+.emoji-1F91C-1F3FC { background-position: -760px -300px; }
+.emoji-1F91C-1F3FD { background-position: -760px -320px; }
+.emoji-1F91C-1F3FE { background-position: -760px -340px; }
+.emoji-1F91C-1F3FF { background-position: -760px -360px; }
+.emoji-1F91D { background-position: -760px -380px; }
+.emoji-1F91D-1F3FB { background-position: -760px -400px; }
+.emoji-1F91D-1F3FC { background-position: -760px -420px; }
+.emoji-1F91D-1F3FD { background-position: -760px -440px; }
+.emoji-1F91D-1F3FE { background-position: -760px -460px; }
+.emoji-1F91D-1F3FF { background-position: -760px -480px; }
+.emoji-1F91E { background-position: -760px -500px; }
+.emoji-1F91E-1F3FB { background-position: -760px -520px; }
+.emoji-1F91E-1F3FC { background-position: -760px -540px; }
+.emoji-1F91E-1F3FD { background-position: -760px -560px; }
+.emoji-1F91E-1F3FE { background-position: -760px -580px; }
+.emoji-1F91E-1F3FF { background-position: -760px -600px; }
+.emoji-1F920 { background-position: -760px -620px; }
+.emoji-1F921 { background-position: -760px -640px; }
+.emoji-1F922 { background-position: -760px -660px; }
+.emoji-1F923 { background-position: -760px -680px; }
+.emoji-1F924 { background-position: -760px -700px; }
+.emoji-1F925 { background-position: -760px -720px; }
+.emoji-1F926 { background-position: -760px -740px; }
+.emoji-1F926-1F3FB { background-position: 0 -760px; }
+.emoji-1F926-1F3FC { background-position: -20px -760px; }
+.emoji-1F926-1F3FD { background-position: -40px -760px; }
+.emoji-1F926-1F3FE { background-position: -60px -760px; }
+.emoji-1F926-1F3FF { background-position: -80px -760px; }
+.emoji-1F927 { background-position: -100px -760px; }
+.emoji-1F930 { background-position: -120px -760px; }
+.emoji-1F930-1F3FB { background-position: -140px -760px; }
+.emoji-1F930-1F3FC { background-position: -160px -760px; }
+.emoji-1F930-1F3FD { background-position: -180px -760px; }
+.emoji-1F930-1F3FE { background-position: -200px -760px; }
+.emoji-1F930-1F3FF { background-position: -220px -760px; }
+.emoji-1F933 { background-position: -240px -760px; }
+.emoji-1F933-1F3FB { background-position: -260px -760px; }
+.emoji-1F933-1F3FC { background-position: -280px -760px; }
+.emoji-1F933-1F3FD { background-position: -300px -760px; }
+.emoji-1F933-1F3FE { background-position: -320px -760px; }
+.emoji-1F933-1F3FF { background-position: -340px -760px; }
+.emoji-1F934 { background-position: -360px -760px; }
+.emoji-1F934-1F3FB { background-position: -380px -760px; }
+.emoji-1F934-1F3FC { background-position: -400px -760px; }
+.emoji-1F934-1F3FD { background-position: -420px -760px; }
+.emoji-1F934-1F3FE { background-position: -440px -760px; }
+.emoji-1F934-1F3FF { background-position: -460px -760px; }
+.emoji-1F935 { background-position: -480px -760px; }
+.emoji-1F935-1F3FB { background-position: -500px -760px; }
+.emoji-1F935-1F3FC { background-position: -520px -760px; }
+.emoji-1F935-1F3FD { background-position: -540px -760px; }
+.emoji-1F935-1F3FE { background-position: -560px -760px; }
+.emoji-1F935-1F3FF { background-position: -580px -760px; }
+.emoji-1F936 { background-position: -600px -760px; }
+.emoji-1F936-1F3FB { background-position: -620px -760px; }
+.emoji-1F936-1F3FC { background-position: -640px -760px; }
+.emoji-1F936-1F3FD { background-position: -660px -760px; }
+.emoji-1F936-1F3FE { background-position: -680px -760px; }
+.emoji-1F936-1F3FF { background-position: -700px -760px; }
+.emoji-1F937 { background-position: -720px -760px; }
+.emoji-1F937-1F3FB { background-position: -740px -760px; }
+.emoji-1F937-1F3FC { background-position: -760px -760px; }
+.emoji-1F937-1F3FD { background-position: -780px 0; }
+.emoji-1F937-1F3FE { background-position: -780px -20px; }
+.emoji-1F937-1F3FF { background-position: -780px -40px; }
+.emoji-1F938 { background-position: -780px -60px; }
+.emoji-1F938-1F3FB { background-position: -780px -80px; }
+.emoji-1F938-1F3FC { background-position: -780px -100px; }
+.emoji-1F938-1F3FD { background-position: -780px -120px; }
+.emoji-1F938-1F3FE { background-position: -780px -140px; }
+.emoji-1F938-1F3FF { background-position: -780px -160px; }
+.emoji-1F939 { background-position: -780px -180px; }
+.emoji-1F939-1F3FB { background-position: -780px -200px; }
+.emoji-1F939-1F3FC { background-position: -780px -220px; }
+.emoji-1F939-1F3FD { background-position: -780px -240px; }
+.emoji-1F939-1F3FE { background-position: -780px -260px; }
+.emoji-1F939-1F3FF { background-position: -780px -280px; }
+.emoji-1F93A { background-position: -780px -300px; }
+.emoji-1F93C { background-position: -780px -320px; }
+.emoji-1F93C-1F3FB { background-position: -780px -340px; }
+.emoji-1F93C-1F3FC { background-position: -780px -360px; }
+.emoji-1F93C-1F3FD { background-position: -780px -380px; }
+.emoji-1F93C-1F3FE { background-position: -780px -400px; }
+.emoji-1F93C-1F3FF { background-position: -780px -420px; }
+.emoji-1F93D { background-position: -780px -440px; }
+.emoji-1F93D-1F3FB { background-position: -780px -460px; }
+.emoji-1F93D-1F3FC { background-position: -780px -480px; }
+.emoji-1F93D-1F3FD { background-position: -780px -500px; }
+.emoji-1F93D-1F3FE { background-position: -780px -520px; }
+.emoji-1F93D-1F3FF { background-position: -780px -540px; }
+.emoji-1F93E { background-position: -780px -560px; }
+.emoji-1F93E-1F3FB { background-position: -780px -580px; }
+.emoji-1F93E-1F3FC { background-position: -780px -600px; }
+.emoji-1F93E-1F3FD { background-position: -780px -620px; }
+.emoji-1F93E-1F3FE { background-position: -780px -640px; }
+.emoji-1F93E-1F3FF { background-position: -780px -660px; }
+.emoji-1F940 { background-position: -780px -680px; }
+.emoji-1F941 { background-position: -780px -700px; }
+.emoji-1F942 { background-position: -780px -720px; }
+.emoji-1F943 { background-position: -780px -740px; }
+.emoji-1F944 { background-position: -780px -760px; }
+.emoji-1F945 { background-position: 0 -780px; }
+.emoji-1F947 { background-position: -20px -780px; }
+.emoji-1F948 { background-position: -40px -780px; }
+.emoji-1F949 { background-position: -60px -780px; }
+.emoji-1F94A { background-position: -80px -780px; }
+.emoji-1F94B { background-position: -100px -780px; }
+.emoji-1F950 { background-position: -120px -780px; }
+.emoji-1F951 { background-position: -140px -780px; }
+.emoji-1F952 { background-position: -160px -780px; }
+.emoji-1F953 { background-position: -180px -780px; }
+.emoji-1F954 { background-position: -200px -780px; }
+.emoji-1F955 { background-position: -220px -780px; }
+.emoji-1F956 { background-position: -240px -780px; }
+.emoji-1F957 { background-position: -260px -780px; }
+.emoji-1F958 { background-position: -280px -780px; }
+.emoji-1F959 { background-position: -300px -780px; }
+.emoji-1F95A { background-position: -320px -780px; }
+.emoji-1F95B { background-position: -340px -780px; }
+.emoji-1F95C { background-position: -360px -780px; }
+.emoji-1F95D { background-position: -380px -780px; }
+.emoji-1F95E { background-position: -400px -780px; }
+.emoji-1F980 { background-position: -420px -780px; }
+.emoji-1F981 { background-position: -440px -780px; }
+.emoji-1F982 { background-position: -460px -780px; }
+.emoji-1F983 { background-position: -480px -780px; }
+.emoji-1F984 { background-position: -500px -780px; }
+.emoji-1F985 { background-position: -520px -780px; }
+.emoji-1F986 { background-position: -540px -780px; }
+.emoji-1F987 { background-position: -560px -780px; }
+.emoji-1F988 { background-position: -580px -780px; }
+.emoji-1F989 { background-position: -600px -780px; }
+.emoji-1F98A { background-position: -620px -780px; }
+.emoji-1F98B { background-position: -640px -780px; }
+.emoji-1F98C { background-position: -660px -780px; }
+.emoji-1F98D { background-position: -680px -780px; }
+.emoji-1F98E { background-position: -700px -780px; }
+.emoji-1F98F { background-position: -720px -780px; }
+.emoji-1F990 { background-position: -740px -780px; }
+.emoji-1F991 { background-position: -760px -780px; }
+.emoji-1F9C0 { background-position: -780px -780px; }
+.emoji-203C { background-position: -800px 0; }
+.emoji-2049 { background-position: -800px -20px; }
+.emoji-2122 { background-position: -800px -40px; }
+.emoji-2139 { background-position: -800px -60px; }
+.emoji-2194 { background-position: -800px -80px; }
+.emoji-2195 { background-position: -800px -100px; }
+.emoji-2196 { background-position: -800px -120px; }
+.emoji-2197 { background-position: -800px -140px; }
+.emoji-2198 { background-position: -800px -160px; }
+.emoji-2199 { background-position: -800px -180px; }
+.emoji-21A9 { background-position: -800px -200px; }
+.emoji-21AA { background-position: -800px -220px; }
+.emoji-231A { background-position: -800px -240px; }
+.emoji-231B { background-position: -800px -260px; }
+.emoji-2328 { background-position: -800px -280px; }
+.emoji-23CF { background-position: -800px -300px; }
+.emoji-23E9 { background-position: -800px -320px; }
+.emoji-23EA { background-position: -800px -340px; }
+.emoji-23EB { background-position: -800px -360px; }
+.emoji-23EC { background-position: -800px -380px; }
+.emoji-23ED { background-position: -800px -400px; }
+.emoji-23EE { background-position: -800px -420px; }
+.emoji-23EF { background-position: -800px -440px; }
+.emoji-23F0 { background-position: -800px -460px; }
+.emoji-23F1 { background-position: -800px -480px; }
+.emoji-23F2 { background-position: -800px -500px; }
+.emoji-23F3 { background-position: -800px -520px; }
+.emoji-23F8 { background-position: -800px -540px; }
+.emoji-23F9 { background-position: -800px -560px; }
+.emoji-23FA { background-position: -800px -580px; }
+.emoji-24C2 { background-position: -800px -600px; }
+.emoji-25AA { background-position: -800px -620px; }
+.emoji-25AB { background-position: -800px -640px; }
+.emoji-25B6 { background-position: -800px -660px; }
+.emoji-25C0 { background-position: -800px -680px; }
+.emoji-25FB { background-position: -800px -700px; }
+.emoji-25FC { background-position: -800px -720px; }
+.emoji-25FD { background-position: -800px -740px; }
+.emoji-25FE { background-position: -800px -760px; }
+.emoji-2600 { background-position: -800px -780px; }
+.emoji-2601 { background-position: 0 -800px; }
+.emoji-2602 { background-position: -20px -800px; }
+.emoji-2603 { background-position: -40px -800px; }
+.emoji-2604 { background-position: -60px -800px; }
+.emoji-260E { background-position: -80px -800px; }
+.emoji-2611 { background-position: -100px -800px; }
+.emoji-2614 { background-position: -120px -800px; }
+.emoji-2615 { background-position: -140px -800px; }
+.emoji-2618 { background-position: -160px -800px; }
+.emoji-261D { background-position: -180px -800px; }
+.emoji-261D-1F3FB { background-position: -200px -800px; }
+.emoji-261D-1F3FC { background-position: -220px -800px; }
+.emoji-261D-1F3FD { background-position: -240px -800px; }
+.emoji-261D-1F3FE { background-position: -260px -800px; }
+.emoji-261D-1F3FF { background-position: -280px -800px; }
+.emoji-2620 { background-position: -300px -800px; }
+.emoji-2622 { background-position: -320px -800px; }
+.emoji-2623 { background-position: -340px -800px; }
+.emoji-2626 { background-position: -360px -800px; }
+.emoji-262A { background-position: -380px -800px; }
+.emoji-262E { background-position: -400px -800px; }
+.emoji-262F { background-position: -420px -800px; }
+.emoji-2638 { background-position: -440px -800px; }
+.emoji-2639 { background-position: -460px -800px; }
+.emoji-263A { background-position: -480px -800px; }
+.emoji-2648 { background-position: -500px -800px; }
+.emoji-2649 { background-position: -520px -800px; }
+.emoji-264A { background-position: -540px -800px; }
+.emoji-264B { background-position: -560px -800px; }
+.emoji-264C { background-position: -580px -800px; }
+.emoji-264D { background-position: -600px -800px; }
+.emoji-264E { background-position: -620px -800px; }
+.emoji-264F { background-position: -640px -800px; }
+.emoji-2650 { background-position: -660px -800px; }
+.emoji-2651 { background-position: -680px -800px; }
+.emoji-2652 { background-position: -700px -800px; }
+.emoji-2653 { background-position: -720px -800px; }
+.emoji-2660 { background-position: -740px -800px; }
+.emoji-2663 { background-position: -760px -800px; }
+.emoji-2665 { background-position: -780px -800px; }
+.emoji-2666 { background-position: -800px -800px; }
+.emoji-2668 { background-position: -820px 0; }
+.emoji-267B { background-position: -820px -20px; }
+.emoji-267F { background-position: -820px -40px; }
+.emoji-2692 { background-position: -820px -60px; }
+.emoji-2693 { background-position: -820px -80px; }
+.emoji-2694 { background-position: -820px -100px; }
+.emoji-2696 { background-position: -820px -120px; }
+.emoji-2697 { background-position: -820px -140px; }
+.emoji-2699 { background-position: -820px -160px; }
+.emoji-269B { background-position: -820px -180px; }
+.emoji-269C { background-position: -820px -200px; }
+.emoji-26A0 { background-position: -820px -220px; }
+.emoji-26A1 { background-position: -820px -240px; }
+.emoji-26AA { background-position: -820px -260px; }
+.emoji-26AB { background-position: -820px -280px; }
+.emoji-26B0 { background-position: -820px -300px; }
+.emoji-26B1 { background-position: -820px -320px; }
+.emoji-26BD { background-position: -820px -340px; }
+.emoji-26BE { background-position: -820px -360px; }
+.emoji-26C4 { background-position: -820px -380px; }
+.emoji-26C5 { background-position: -820px -400px; }
+.emoji-26C8 { background-position: -820px -420px; }
+.emoji-26CE { background-position: -820px -440px; }
+.emoji-26CF { background-position: -820px -460px; }
+.emoji-26D1 { background-position: -820px -480px; }
+.emoji-26D3 { background-position: -820px -500px; }
+.emoji-26D4 { background-position: -820px -520px; }
+.emoji-26E9 { background-position: -820px -540px; }
+.emoji-26EA { background-position: -820px -560px; }
+.emoji-26F0 { background-position: -820px -580px; }
+.emoji-26F1 { background-position: -820px -600px; }
+.emoji-26F2 { background-position: -820px -620px; }
+.emoji-26F3 { background-position: -820px -640px; }
+.emoji-26F4 { background-position: -820px -660px; }
+.emoji-26F5 { background-position: -820px -680px; }
+.emoji-26F7 { background-position: -820px -700px; }
+.emoji-26F8 { background-position: -820px -720px; }
+.emoji-26F9 { background-position: -820px -740px; }
+.emoji-26F9-1F3FB { background-position: -820px -760px; }
+.emoji-26F9-1F3FC { background-position: -820px -780px; }
+.emoji-26F9-1F3FD { background-position: -820px -800px; }
+.emoji-26F9-1F3FE { background-position: 0 -820px; }
+.emoji-26F9-1F3FF { background-position: -20px -820px; }
+.emoji-26FA { background-position: -40px -820px; }
+.emoji-26FD { background-position: -60px -820px; }
+.emoji-2702 { background-position: -80px -820px; }
+.emoji-2705 { background-position: -100px -820px; }
+.emoji-2708 { background-position: -120px -820px; }
+.emoji-2709 { background-position: -140px -820px; }
+.emoji-270A { background-position: -160px -820px; }
+.emoji-270A-1F3FB { background-position: -180px -820px; }
+.emoji-270A-1F3FC { background-position: -200px -820px; }
+.emoji-270A-1F3FD { background-position: -220px -820px; }
+.emoji-270A-1F3FE { background-position: -240px -820px; }
+.emoji-270A-1F3FF { background-position: -260px -820px; }
+.emoji-270B { background-position: -280px -820px; }
+.emoji-270B-1F3FB { background-position: -300px -820px; }
+.emoji-270B-1F3FC { background-position: -320px -820px; }
+.emoji-270B-1F3FD { background-position: -340px -820px; }
+.emoji-270B-1F3FE { background-position: -360px -820px; }
+.emoji-270B-1F3FF { background-position: -380px -820px; }
+.emoji-270C { background-position: -400px -820px; }
+.emoji-270C-1F3FB { background-position: -420px -820px; }
+.emoji-270C-1F3FC { background-position: -440px -820px; }
+.emoji-270C-1F3FD { background-position: -460px -820px; }
+.emoji-270C-1F3FE { background-position: -480px -820px; }
+.emoji-270C-1F3FF { background-position: -500px -820px; }
+.emoji-270D { background-position: -520px -820px; }
+.emoji-270D-1F3FB { background-position: -540px -820px; }
+.emoji-270D-1F3FC { background-position: -560px -820px; }
+.emoji-270D-1F3FD { background-position: -580px -820px; }
+.emoji-270D-1F3FE { background-position: -600px -820px; }
+.emoji-270D-1F3FF { background-position: -620px -820px; }
+.emoji-270F { background-position: -640px -820px; }
+.emoji-2712 { background-position: -660px -820px; }
+.emoji-2714 { background-position: -680px -820px; }
+.emoji-2716 { background-position: -700px -820px; }
+.emoji-271D { background-position: -720px -820px; }
+.emoji-2721 { background-position: -740px -820px; }
+.emoji-2728 { background-position: -760px -820px; }
+.emoji-2733 { background-position: -780px -820px; }
+.emoji-2734 { background-position: -800px -820px; }
+.emoji-2744 { background-position: -820px -820px; }
+.emoji-2747 { background-position: -840px 0; }
+.emoji-274C { background-position: -840px -20px; }
+.emoji-274E { background-position: -840px -40px; }
+.emoji-2753 { background-position: -840px -60px; }
+.emoji-2754 { background-position: -840px -80px; }
+.emoji-2755 { background-position: -840px -100px; }
+.emoji-2757 { background-position: -840px -120px; }
+.emoji-2763 { background-position: -840px -140px; }
+.emoji-2764 { background-position: -840px -160px; }
+.emoji-2795 { background-position: -840px -180px; }
+.emoji-2796 { background-position: -840px -200px; }
+.emoji-2797 { background-position: -840px -220px; }
+.emoji-27A1 { background-position: -840px -240px; }
+.emoji-27B0 { background-position: -840px -260px; }
+.emoji-27BF { background-position: -840px -280px; }
+.emoji-2934 { background-position: -840px -300px; }
+.emoji-2935 { background-position: -840px -320px; }
+.emoji-2B05 { background-position: -840px -340px; }
+.emoji-2B06 { background-position: -840px -360px; }
+.emoji-2B07 { background-position: -840px -380px; }
+.emoji-2B1B { background-position: -840px -400px; }
+.emoji-2B1C { background-position: -840px -420px; }
+.emoji-2B50 { background-position: -840px -440px; }
+.emoji-2B55 { background-position: -840px -460px; }
+.emoji-3030 { background-position: -840px -480px; }
+.emoji-303D { background-position: -840px -500px; }
+.emoji-3297 { background-position: -840px -520px; }
+.emoji-3299 { background-position: -840px -540px; }
.emoji-icon {
background-image: image-url('emoji.png');
@@ -1731,6 +1804,6 @@
only screen and (min-resolution: 192dpi),
only screen and (min-resolution: 2dppx) {
background-image: image-url('emoji@2x.png');
- background-size: 840px 820px;
+ background-size: 860px 840px;
}
}
diff --git a/app/assets/stylesheets/pages/issuable.scss b/app/assets/stylesheets/pages/issuable.scss
index 542fa244689..ded437625ee 100644
--- a/app/assets/stylesheets/pages/issuable.scss
+++ b/app/assets/stylesheets/pages/issuable.scss
@@ -122,7 +122,8 @@
button {
float: right;
- padding: 3px 5px;
+ padding: 1px 5px;
+ background-color: $gray-light;
}
}
diff --git a/app/assets/stylesheets/pages/issues.scss b/app/assets/stylesheets/pages/issues.scss
index 0e4d8c140aa..ee3b2d2b801 100644
--- a/app/assets/stylesheets/pages/issues.scss
+++ b/app/assets/stylesheets/pages/issues.scss
@@ -63,7 +63,7 @@ form.edit-issue {
.merge-request,
.issue {
&.today {
- background: #f8feef;
+ background: #f3fff2;
border-color: #e1e8d5;
}
@@ -78,6 +78,14 @@ form.edit-issue {
}
}
+.merge-request-ci-status {
+ svg {
+ margin-right: 4px;
+ position: relative;
+ top: 1px;
+ }
+}
+
@media (max-width: $screen-xs-max) {
.issue-btn-group {
width: 100%;
diff --git a/app/assets/stylesheets/pages/merge_requests.scss b/app/assets/stylesheets/pages/merge_requests.scss
index 15c6c9f231a..5254faf723d 100644
--- a/app/assets/stylesheets/pages/merge_requests.scss
+++ b/app/assets/stylesheets/pages/merge_requests.scss
@@ -60,8 +60,10 @@
.ci_widget {
border-bottom: 1px solid #eef0f2;
- i {
+ svg {
margin-right: 4px;
+ position: relative;
+ top: 1px;
}
&.ci-success {
@@ -196,6 +198,16 @@
.merge-request-title {
margin-bottom: 2px;
+
+ .ci-status-link {
+
+ svg {
+ height: 16px;
+ width: 16px;
+ position: relative;
+ top: 3px;
+ }
+ }
}
}
@@ -270,7 +282,7 @@
.item-title {
@media (min-width: $screen-sm-min) {
- width: 49%;
+ width: 45%;
}
}
diff --git a/app/assets/stylesheets/pages/pipelines.scss b/app/assets/stylesheets/pages/pipelines.scss
index a0334207c68..a404f108dc4 100644
--- a/app/assets/stylesheets/pages/pipelines.scss
+++ b/app/assets/stylesheets/pages/pipelines.scss
@@ -1,7 +1,7 @@
.pipelines {
.stage {
- max-width: 80px;
- width: 80px;
+ max-width: 90px;
+ width: 90px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
@@ -30,13 +30,17 @@
}
.table.builds {
- min-width: 1100px;
+ min-width: 1200px;
tr {
th {
- padding: 16px;
+ padding: 16px 8px;
border: none;
}
+
+ td {
+ padding: 10px 8px;
+ }
}
tbody {
@@ -45,6 +49,14 @@
.commit-link {
+ .ci-status {
+
+ svg {
+ top: 1px;
+ margin-right: 0;
+ }
+ }
+
a:hover {
text-decoration: none;
}
@@ -53,9 +65,8 @@
.branch-commit {
.branch-name {
- margin-left: 8px;
font-weight: bold;
- max-width: 180px;
+ max-width: 150px;
overflow: hidden;
display: inline-block;
white-space: nowrap;
@@ -64,10 +75,15 @@
}
svg {
- margin: 0 6px;
height: 14px;
width: auto;
vertical-align: middle;
+ fill: $table-text-gray;
+ }
+
+ .fa {
+ font-size: 12px;
+ color: $table-text-gray;
}
.commit-id {
@@ -100,6 +116,31 @@
}
}
+ .icon-container {
+ display: inline-block;
+ text-align: right;
+ width: 20px;
+
+ .fa {
+ position: relative;
+ right: 3px;
+ }
+
+ svg {
+ position: relative;
+ right: 1px;
+ }
+ }
+
+ .stage-cell {
+
+ svg {
+ height: 18px;
+ width: 18px;
+ vertical-align: middle;
+ }
+ }
+
.duration,
.finished-at {
color: $table-text-gray;
@@ -107,21 +148,19 @@
.fa {
font-size: 12px;
+ margin-right: 4px;
}
svg {
- height: 12px;
- width: auto;
+ width: 12px;
+ height: auto;
vertical-align: middle;
- }
-
- .fa,
- svg {
- margin-right: 5px;
+ margin-right: 4px;
}
}
.pipeline-actions {
+ min-width: 140px;
.btn {
margin: 0;
diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss
index ea9f7cf0540..cc3aef5199e 100644
--- a/app/assets/stylesheets/pages/projects.scss
+++ b/app/assets/stylesheets/pages/projects.scss
@@ -129,6 +129,17 @@
color: $layout-link-gray;
}
+ svg {
+
+ path {
+ fill: $layout-link-gray;
+ }
+
+ use {
+ stroke: $layout-link-gray;
+ }
+ }
+
.fa-caret-down {
margin-left: 3px;
}
@@ -322,18 +333,53 @@ a.deploy-project-label {
}
.fork-namespaces {
- .fork-thumbnail {
- text-align: center;
- margin-bottom: $gl-padding;
-
- .caption {
- padding: $gl-padding 0;
- min-height: 30px;
- }
+ .row {
+ -webkit-flex-wrap: wrap;
+ display: -webkit-flex;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+
+ .fork-thumbnail {
+ @include border-radius($border-radius-base);
+ background-color: $white-light;
+ border: 1px solid $border-white-light;
+ height: 202px;
+ margin: $gl-padding;
+ text-align: center;
+ width: 169px;
+ &:hover, &.forked {
+ background-color: $row-hover;
+ border-color: $row-hover-border;
+ }
+ .no-avatar {
+ width: 100px;
+ height: 100px;
+ background-color: $gray-light;
+ border: 1px solid $gray-dark;
+ margin: 0 auto;
+ @include border-radius(50%);
+ i {
+ font-size: 100px;
+ color: $gray-dark;
+ }
+ }
+ a {
+ display: block;
+ width: 100%;
+ height: 100%;
+ padding-top: $gl-padding;
+ color: $gl-gray;
+ .caption {
+ min-height: 30px;
+ padding: $gl-padding 0;
+ }
+ }
- img {
- @include border-radius(50%);
- max-width: 100px;
+ img {
+ @include border-radius(50%);
+ max-width: 100px;
+ }
}
}
}
@@ -486,6 +532,11 @@ pre.light-well {
> span {
margin-left: 10px;
}
+
+ svg {
+ position: relative;
+ top: 2px;
+ }
}
}
diff --git a/app/assets/stylesheets/pages/status.scss b/app/assets/stylesheets/pages/status.scss
index c6b053150be..a22d4b6f6be 100644
--- a/app/assets/stylesheets/pages/status.scss
+++ b/app/assets/stylesheets/pages/status.scss
@@ -41,6 +41,14 @@
color: $blue-normal;
border-color: $blue-normal;
}
+
+ svg {
+ height: 13px;
+ width: 13px;
+ position: relative;
+ top: 1px;
+ margin: 0 3px;
+ }
}
.ci-status-icon-success {
diff --git a/app/assets/stylesheets/pages/tags.scss b/app/assets/stylesheets/pages/tags.scss
new file mode 100644
index 00000000000..24ebd3e7cfa
--- /dev/null
+++ b/app/assets/stylesheets/pages/tags.scss
@@ -0,0 +1,7 @@
+.tag-buttons {
+ line-height: 40px;
+
+ .btn:not(.dropdown-toggle) {
+ margin-left: 10px;
+ }
+}
diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss
index 42a20e9775f..390977297fb 100644
--- a/app/assets/stylesheets/pages/tree.scss
+++ b/app/assets/stylesheets/pages/tree.scss
@@ -19,7 +19,7 @@
border-top: 1px solid $table-border-gray;
td, th {
- line-height: 23px;
+ line-height: 21px;
}
&:hover {
diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb
index 94b5aaa71d0..f3a88a8e6c8 100644
--- a/app/controllers/admin/groups_controller.rb
+++ b/app/controllers/admin/groups_controller.rb
@@ -60,6 +60,6 @@ class Admin::GroupsController < Admin::ApplicationController
end
def group_params
- params.require(:group).permit(:name, :description, :path, :avatar, :visibility_level)
+ params.require(:group).permit(:name, :description, :path, :avatar, :visibility_level, :request_access_enabled)
end
end
diff --git a/app/controllers/admin/services_controller.rb b/app/controllers/admin/services_controller.rb
index 46133588332..7c37f3155da 100644
--- a/app/controllers/admin/services_controller.rb
+++ b/app/controllers/admin/services_controller.rb
@@ -1,4 +1,6 @@
class Admin::ServicesController < Admin::ApplicationController
+ include ServiceParams
+
before_action :service, only: [:edit, :update]
def index
@@ -13,7 +15,7 @@ class Admin::ServicesController < Admin::ApplicationController
end
def update
- if service.update_attributes(application_services_params[:service])
+ if service.update_attributes(service_params[:service])
redirect_to admin_application_settings_services_path,
notice: 'Application settings saved successfully'
else
@@ -37,15 +39,4 @@ class Admin::ServicesController < Admin::ApplicationController
def service
@service ||= Service.where(id: params[:id], template: true).first
end
-
- def application_services_params
- application_services_params = params.permit(:id,
- service: Projects::ServicesController::ALLOWED_PARAMS)
- if application_services_params[:service].is_a?(Hash)
- Projects::ServicesController::FILTER_BLANK_PARAMS.each do |param|
- application_services_params[:service].delete(param) if application_services_params[:service][param].blank?
- end
- end
- application_services_params
- end
end
diff --git a/app/controllers/concerns/creates_commit.rb b/app/controllers/concerns/creates_commit.rb
index dacb5679dd3..f2b8f297bc2 100644
--- a/app/controllers/concerns/creates_commit.rb
+++ b/app/controllers/concerns/creates_commit.rb
@@ -7,7 +7,8 @@ module CreatesCommit
commit_params = @commit_params.merge(
source_project: @project,
source_branch: @ref,
- target_branch: @target_branch
+ target_branch: @target_branch,
+ previous_path: @previous_path
)
result = service.new(@tree_edit_project, current_user, commit_params).execute
diff --git a/app/controllers/concerns/diff_for_path.rb b/app/controllers/concerns/diff_for_path.rb
index e09b8789eb2..026d8b2e1e0 100644
--- a/app/controllers/concerns/diff_for_path.rb
+++ b/app/controllers/concerns/diff_for_path.rb
@@ -10,7 +10,6 @@ module DiffForPath
diff_commit = commit_for_diff(diff_file)
blob = diff_file.blob(diff_commit)
- @expand_all_diffs = true
locals = {
diff_file: diff_file,
diff --git a/app/controllers/concerns/service_params.rb b/app/controllers/concerns/service_params.rb
new file mode 100644
index 00000000000..471d15af913
--- /dev/null
+++ b/app/controllers/concerns/service_params.rb
@@ -0,0 +1,35 @@
+module ServiceParams
+ extend ActiveSupport::Concern
+
+ ALLOWED_PARAMS = [:title, :token, :type, :active, :api_key, :api_url, :api_version, :subdomain,
+ :room, :recipients, :project_url, :webhook,
+ :user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
+ :build_key, :server, :teamcity_url, :drone_url, :build_type,
+ :description, :issues_url, :new_issue_url, :restrict_to_branch, :channel,
+ :colorize_messages, :channels,
+ :push_events, :issues_events, :merge_requests_events, :tag_push_events,
+ :note_events, :build_events, :wiki_page_events,
+ :notify_only_broken_builds, :add_pusher,
+ :send_from_committer_email, :disable_diffs, :external_wiki_url,
+ :notify, :color,
+ :server_host, :server_port, :default_irc_uri, :enable_ssl_verification,
+ :jira_issue_transition_id]
+
+ # Parameters to ignore if no value is specified
+ FILTER_BLANK_PARAMS = [:password]
+
+ def service_params
+ dynamic_params = []
+ dynamic_params.concat(@service.event_channel_names)
+
+ service_params = params.permit(:id, service: ALLOWED_PARAMS + dynamic_params)
+
+ if service_params[:service].is_a?(Hash)
+ FILTER_BLANK_PARAMS.each do |param|
+ service_params[:service].delete(param) if service_params[:service][param].blank?
+ end
+ end
+
+ service_params
+ end
+end
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index a04bf7df722..6780a6d4d87 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -121,7 +121,7 @@ class GroupsController < Groups::ApplicationController
end
def group_params
- params.require(:group).permit(:name, :description, :path, :avatar, :public, :visibility_level, :share_with_group_lock)
+ params.require(:group).permit(:name, :description, :path, :avatar, :public, :visibility_level, :share_with_group_lock, :request_access_enabled)
end
def load_events
diff --git a/app/controllers/projects/badges_controller.rb b/app/controllers/projects/badges_controller.rb
index 824aa41db51..a9f482c8787 100644
--- a/app/controllers/projects/badges_controller.rb
+++ b/app/controllers/projects/badges_controller.rb
@@ -3,11 +3,6 @@ class Projects::BadgesController < Projects::ApplicationController
before_action :authorize_admin_project!, only: [:index]
before_action :no_cache_headers, except: [:index]
- def index
- @ref = params[:ref] || @project.default_branch || 'master'
- @build_badge = Gitlab::Badge::Build.new(@project, @ref)
- end
-
def build
badge = Gitlab::Badge::Build.new(project, params[:ref])
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index 5356fdf010d..eda3727a28d 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -38,6 +38,12 @@ class Projects::BlobController < Projects::ApplicationController
end
def update
+ if params[:file_path].present?
+ @previous_path = @path
+ @path = params[:file_path]
+ @commit_params[:file_path] = @path
+ end
+
after_edit_path =
if from_merge_request && @target_branch == @ref
diffs_namespace_project_merge_request_path(from_merge_request.target_project.namespace, from_merge_request.target_project, from_merge_request) +
diff --git a/app/controllers/projects/builds_controller.rb b/app/controllers/projects/builds_controller.rb
index d7513d75f01..553b62741a5 100644
--- a/app/controllers/projects/builds_controller.rb
+++ b/app/controllers/projects/builds_controller.rb
@@ -1,6 +1,6 @@
class Projects::BuildsController < Projects::ApplicationController
before_action :build, except: [:index, :cancel_all]
- before_action :authorize_read_build!, except: [:cancel, :cancel_all, :retry]
+ before_action :authorize_read_build!, except: [:cancel, :cancel_all, :retry, :play]
before_action :authorize_update_build!, except: [:index, :show, :status, :raw]
layout 'project'
@@ -49,14 +49,19 @@ class Projects::BuildsController < Projects::ApplicationController
end
def retry
- unless @build.retryable?
- return render_404
- end
+ return render_404 unless @build.retryable?
build = Ci::Build.retry(@build, current_user)
redirect_to build_path(build)
end
+ def play
+ return render_404 unless @build.playable?
+
+ build = @build.play(current_user)
+ redirect_to build_path(build)
+ end
+
def cancel
@build.cancel
redirect_to build_path(@build)
diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb
index 5f3ee71444d..10749d0fef8 100644
--- a/app/controllers/projects/compare_controller.rb
+++ b/app/controllers/projects/compare_controller.rb
@@ -15,6 +15,7 @@ class Projects::CompareController < Projects::ApplicationController
end
def show
+ apply_diff_view_cookie!
end
def diff_for_path
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index b6e80762e3c..fa663c9bda4 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -226,6 +226,7 @@ class Projects::IssuesController < Projects::ApplicationController
:assignee_id,
:milestone_id,
:state_event,
+ :subscription_event,
label_ids: [],
add_label_ids: [],
remove_label_ids: []
diff --git a/app/controllers/projects/pipelines_settings_controller.rb b/app/controllers/projects/pipelines_settings_controller.rb
new file mode 100644
index 00000000000..85ba706e5cd
--- /dev/null
+++ b/app/controllers/projects/pipelines_settings_controller.rb
@@ -0,0 +1,30 @@
+class Projects::PipelinesSettingsController < Projects::ApplicationController
+ before_action :authorize_admin_pipeline!
+
+ def show
+ @ref = params[:ref] || @project.default_branch || 'master'
+ @build_badge = Gitlab::Badge::Build.new(@project, @ref)
+ end
+
+ def update
+ if @project.update_attributes(update_params)
+ flash[:notice] = "CI/CD Pipelines settings for '#{@project.name}' were successfully updated."
+ redirect_to namespace_project_pipelines_settings_path(@project.namespace, @project)
+ else
+ render 'index'
+ end
+ end
+
+ private
+
+ def create_params
+ params.require(:pipeline).permit(:ref)
+ end
+
+ def update_params
+ params.require(:project).permit(
+ :runners_token, :builds_enabled, :build_allow_git_fetch, :build_timeout_in_minutes, :build_coverage_regex,
+ :public_builds
+ )
+ end
+end
diff --git a/app/controllers/projects/protected_branches_controller.rb b/app/controllers/projects/protected_branches_controller.rb
index 80dad758afa..10dca47fded 100644
--- a/app/controllers/projects/protected_branches_controller.rb
+++ b/app/controllers/projects/protected_branches_controller.rb
@@ -50,6 +50,6 @@ class Projects::ProtectedBranchesController < Projects::ApplicationController
end
def protected_branch_params
- params.require(:protected_branch).permit(:name, :developers_can_push)
+ params.require(:protected_branch).permit(:name, :developers_can_push, :developers_can_merge)
end
end
diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb
index d79f16e6a5a..3602b3d5e58 100644
--- a/app/controllers/projects/refs_controller.rb
+++ b/app/controllers/projects/refs_controller.rb
@@ -25,7 +25,7 @@ class Projects::RefsController < Projects::ApplicationController
when "graphs_commits"
commits_namespace_project_graph_path(@project.namespace, @project, @id)
when "badges"
- namespace_project_badges_path(@project.namespace, @project, ref: @id)
+ namespace_project_pipelines_settings_path(@project.namespace, @project, ref: @id)
else
namespace_project_commits_path(@project.namespace, @project, @id)
end
diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb
index 739681f4085..6a227d85f6f 100644
--- a/app/controllers/projects/services_controller.rb
+++ b/app/controllers/projects/services_controller.rb
@@ -1,20 +1,5 @@
class Projects::ServicesController < Projects::ApplicationController
- ALLOWED_PARAMS = [:title, :token, :type, :active, :api_key, :api_url, :api_version, :subdomain,
- :room, :recipients, :project_url, :webhook,
- :user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
- :build_key, :server, :teamcity_url, :drone_url, :build_type,
- :description, :issues_url, :new_issue_url, :restrict_to_branch, :channel,
- :colorize_messages, :channels,
- :push_events, :issues_events, :merge_requests_events, :tag_push_events,
- :note_events, :build_events, :wiki_page_events,
- :notify_only_broken_builds, :add_pusher,
- :send_from_committer_email, :disable_diffs, :external_wiki_url,
- :notify, :color,
- :server_host, :server_port, :default_irc_uri, :enable_ssl_verification,
- :jira_issue_transition_id]
-
- # Parameters to ignore if no value is specified
- FILTER_BLANK_PARAMS = [:password]
+ include ServiceParams
# Authorize
before_action :authorize_admin_project!
@@ -33,7 +18,7 @@ class Projects::ServicesController < Projects::ApplicationController
end
def update
- if @service.update_attributes(service_params)
+ if @service.update_attributes(service_params[:service])
redirect_to(
edit_namespace_project_service_path(@project.namespace, @project,
@service.to_param, notice:
@@ -45,8 +30,9 @@ class Projects::ServicesController < Projects::ApplicationController
end
def test
- data = Gitlab::PushDataBuilder.build_sample(project, current_user)
+ data = @service.test_data(project, current_user)
outcome = @service.test(data)
+
if outcome[:success]
message = { notice: 'We sent a request to the provided URL' }
else
@@ -63,12 +49,4 @@ class Projects::ServicesController < Projects::ApplicationController
def service
@service ||= @project.services.find { |service| service.to_param == params[:id] }
end
-
- def service_params
- service_params = params.require(:service).permit(ALLOWED_PARAMS)
- FILTER_BLANK_PARAMS.each do |param|
- service_params.delete(param) if service_params[param].blank?
- end
- service_params
- end
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 1803aa8eab4..ec7a2e63b9a 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -5,7 +5,7 @@ class ProjectsController < Projects::ApplicationController
before_action :project, except: [:new, :create]
before_action :repository, except: [:new, :create]
before_action :assign_ref_vars, only: [:show], if: :repo_exists?
- before_action :tree, only: [:show], if: :project_view_files?
+ before_action :tree, only: [:show], if: [:repo_exists?, :project_view_files?]
# Authorize
before_action :authorize_admin_project!, only: [:edit, :update, :housekeeping, :download_export, :export, :remove_export, :generate_new_export]
@@ -296,7 +296,7 @@ class ProjectsController < Projects::ApplicationController
:issues_tracker_id, :default_branch,
:wiki_enabled, :visibility_level, :import_url, :last_activity_at, :namespace_id, :avatar,
:builds_enabled, :build_allow_git_fetch, :build_timeout_in_minutes, :build_coverage_regex,
- :public_builds, :only_allow_merge_if_build_succeeds
+ :public_builds, :only_allow_merge_if_build_succeeds, :request_access_enabled
)
end
diff --git a/app/helpers/avatars_helper.rb b/app/helpers/avatars_helper.rb
new file mode 100644
index 00000000000..6ff40c6b461
--- /dev/null
+++ b/app/helpers/avatars_helper.rb
@@ -0,0 +1,30 @@
+module AvatarsHelper
+
+ def author_avatar(commit_or_event, options = {})
+ user_avatar(options.merge({
+ user: commit_or_event.author,
+ user_name: commit_or_event.author_name,
+ user_email: commit_or_event.author_email,
+ }))
+ end
+
+ private
+
+ def user_avatar(options = {})
+ avatar_size = options[:size] || 16
+ user_name = options[:user].try(:name) || options[:user_name]
+ avatar = image_tag(
+ avatar_icon(options[:user] || options[:user_email], avatar_size),
+ class: "avatar has-tooltip hidden-xs s#{avatar_size}",
+ alt: "#{user_name}'s avatar",
+ title: user_name
+ )
+
+ if options[:user]
+ link_to(avatar, user_path(options[:user]))
+ elsif options[:user_email]
+ mail_to(options[:user_email], avatar)
+ end
+ end
+
+end
diff --git a/app/helpers/branches_helper.rb b/app/helpers/branches_helper.rb
index 601df5c18df..bfd23aa4e04 100644
--- a/app/helpers/branches_helper.rb
+++ b/app/helpers/branches_helper.rb
@@ -12,7 +12,7 @@ module BranchesHelper
def can_push_branch?(project, branch_name)
return false unless project.repository.branch_exists?(branch_name)
- ::Gitlab::GitAccess.new(current_user, project, 'web').can_push_to_branch?(branch_name)
+ ::Gitlab::UserAccess.new(current_user, project: project).can_push_to_branch?(branch_name)
end
def project_branches
diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb
index e6c99c9959e..59a8365d60b 100644
--- a/app/helpers/ci_status_helper.rb
+++ b/app/helpers/ci_status_helper.rb
@@ -26,18 +26,20 @@ module CiStatusHelper
icon_name =
case status
when 'success'
- 'check'
+ 'icon_status_success'
+ when 'success_with_warnings'
+ 'icon_status_warning'
when 'failed'
- 'close'
+ 'icon_status_failed'
when 'pending'
- 'clock-o'
+ 'icon_status_pending'
when 'running'
- 'spinner'
+ 'icon_status_running'
else
- 'circle'
+ 'icon_status_cancel'
end
- icon(icon_name + ' fw')
+ custom_icon(icon_name)
end
def render_commit_status(commit, tooltip_placement: 'auto left', cssclass: '')
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 474041eccbb..052ce56809e 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -16,16 +16,6 @@ module CommitsHelper
commit_person_link(commit, options.merge(source: :committer))
end
- def commit_author_avatar(commit, options = {})
- options = options.merge(source: :author)
- user = commit.send(options[:source])
-
- source_email = clean(commit.send "#{options[:source]}_email".to_sym)
- person_email = user.try(:email) || source_email
-
- image_tag(avatar_icon(person_email, options[:size]), class: "avatar #{"s#{options[:size]}" if options[:size]} hidden-xs", width: options[:size], alt: "")
- end
-
def image_diff_class(diff)
if diff.deleted_file
"deleted"
diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index adab901700c..75b029365f9 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -9,7 +9,7 @@ module DiffHelper
end
def expand_all_diffs?
- @expand_all_diffs || params[:expand_all_diffs].present?
+ params[:expand_all_diffs].present?
end
def diff_view
@@ -23,13 +23,14 @@ module DiffHelper
end
def diff_options
- default_options = Commit.max_diff_options
+ options = { ignore_whitespace_change: hide_whitespace?, no_collapse: expand_all_diffs? }
if action_name == 'diff_for_path'
- default_options[:paths] = params.values_at(:old_path, :new_path)
+ options[:no_collapse] = true
+ options[:paths] = params.values_at(:old_path, :new_path)
end
- default_options.merge(ignore_whitespace_change: hide_whitespace?)
+ Commit.max_diff_options.merge(options)
end
def safe_diff_files(diffs, diff_refs: nil, repository: nil)
diff --git a/app/helpers/external_wiki_helper.rb b/app/helpers/external_wiki_helper.rb
index 1f3401f2906..defd87d6bbe 100644
--- a/app/helpers/external_wiki_helper.rb
+++ b/app/helpers/external_wiki_helper.rb
@@ -1,8 +1,7 @@
module ExternalWikiHelper
def get_project_wiki_path(project)
- external_wiki_service = project.services.
- find { |service| service.to_param == 'external_wiki' }
- if external_wiki_service.present? && external_wiki_service.active?
+ external_wiki_service = project.external_wiki
+ if external_wiki_service
external_wiki_service.properties['external_wiki_url']
else
namespace_project_wiki_path(project.namespace, project, :home)
diff --git a/app/helpers/services_helper.rb b/app/helpers/services_helper.rb
new file mode 100644
index 00000000000..2dd0bf5d71e
--- /dev/null
+++ b/app/helpers/services_helper.rb
@@ -0,0 +1,25 @@
+module ServicesHelper
+ def service_event_description(event)
+ case event
+ when "push"
+ "Event will be triggered by a push to the repository"
+ when "tag_push"
+ "Event will be triggered when a new tag is pushed to the repository"
+ when "note"
+ "Event will be triggered when someone adds a comment"
+ when "issue"
+ "Event will be triggered when an issue is created/updated/merged"
+ when "merge_request"
+ "Event will be triggered when a merge request is created/updated/merged"
+ when "build"
+ "Event will be triggered when a build status changes"
+ when "wiki_page"
+ "Event will be triggered when a wiki page is created/updated"
+ end
+ end
+
+ def service_event_field_name(event)
+ event = event.pluralize if %w[merge_request issue].include?(event)
+ "#{event}_events"
+ end
+end
diff --git a/app/helpers/time_helper.rb b/app/helpers/time_helper.rb
index 8cb82c2d5cc..1926f03af07 100644
--- a/app/helpers/time_helper.rb
+++ b/app/helpers/time_helper.rb
@@ -1,14 +1,4 @@
module TimeHelper
- def duration_in_words(finished_at, started_at)
- if finished_at && started_at
- interval_in_seconds = finished_at.to_i - started_at.to_i
- elsif started_at
- interval_in_seconds = Time.now.to_i - started_at.to_i
- end
-
- time_interval_in_words(interval_in_seconds)
- end
-
def time_interval_in_words(interval_in_seconds)
minutes = interval_in_seconds / 60
seconds = interval_in_seconds - minutes * 60
@@ -25,9 +15,19 @@ module TimeHelper
end
def duration_in_numbers(finished_at, started_at)
- diff_in_seconds = finished_at.to_i - started_at.to_i
- time_format = diff_in_seconds < 1.hour ? "%M:%S" : "%H:%M:%S"
+ interval = interval_in_seconds(started_at, finished_at)
+ time_format = interval < 1.hour ? "%M:%S" : "%H:%M:%S"
- Time.at(diff_in_seconds).utc.strftime(time_format)
+ Time.at(interval).utc.strftime(time_format)
+ end
+
+ private
+
+ def interval_in_seconds(started_at, finished_at = nil)
+ if started_at && finished_at
+ finished_at.to_i - started_at.to_i
+ elsif started_at
+ Time.now.to_i - started_at.to_i
+ end
end
end
diff --git a/app/mailers/emails/builds.rb b/app/mailers/emails/builds.rb
index 2f86d1be576..3853af6201a 100644
--- a/app/mailers/emails/builds.rb
+++ b/app/mailers/emails/builds.rb
@@ -6,6 +6,7 @@ module Emails
add_project_headers
add_build_headers('failed')
+
mail(to: to, subject: subject("Build failed for #{@project.name}", @build.short_sha))
end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 6fd18f2ee24..f33c8d61d3f 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -172,7 +172,7 @@ class Ability
rules << :read_build if project.public_builds?
unless owner || project.team.member?(user) || project_group_member?(project, user)
- rules << :request_access
+ rules << :request_access if project.request_access_enabled
end
end
@@ -373,7 +373,7 @@ class Ability
end
if group.public? || (group.internal? && !user.external?)
- rules << :request_access unless group.users.include?(user)
+ rules << :request_access if group.request_access_enabled && group.users.exclude?(user)
end
rules.flatten
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 65dfe4f0190..58a813f35ef 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -12,12 +12,10 @@ module Ci
scope :unstarted, ->() { where(runner_id: nil) }
scope :ignore_failures, ->() { where(allow_failure: false) }
- scope :with_artifacts, ->() { where.not(artifacts_file: nil) }
+ scope :with_artifacts, ->() { where.not(artifacts_file: [nil, '']) }
scope :with_expired_artifacts, ->() { with_artifacts.where('artifacts_expire_at < ?', Time.now) }
scope :last_month, ->() { where('created_at > ?', Date.today - 1.month) }
- scope :latest_successful_with_artifacts, ->() do
- with_artifacts.success.order(id: :desc)
- end
+ scope :manual_actions, ->() { where(when: :manual) }
mount_uploader :artifacts_file, ArtifactUploader
mount_uploader :artifacts_metadata, ArtifactUploader
@@ -94,6 +92,29 @@ module Ci
end
end
+ def manual?
+ self.when == 'manual'
+ end
+
+ def other_actions
+ pipeline.manual_actions.where.not(name: name)
+ end
+
+ def playable?
+ project.builds_enabled? && commands.present? && manual?
+ end
+
+ def play(current_user = nil)
+ # Try to queue a current build
+ if self.queue
+ self.update(user: current_user)
+ self
+ else
+ # Otherwise we need to create a duplicate
+ Ci::Build.retry(self, current_user)
+ end
+ end
+
def retryable?
project.builds_enabled? && commands.present? && complete?
end
@@ -124,11 +145,14 @@ module Ci
end
def variables
- variables = []
- variables += predefined_variables
- variables += yaml_variables if yaml_variables
- variables += project_variables
- variables += trigger_variables
+ variables = predefined_variables
+ variables += project.predefined_variables
+ variables += pipeline.predefined_variables
+ variables += runner.predefined_variables if runner
+ variables += project.container_registry_variables
+ variables += yaml_variables
+ variables += project.secret_variables
+ variables += trigger_request.user_variables if trigger_request
variables
end
@@ -388,6 +412,14 @@ module Ci
self.update(artifacts_expire_at: nil)
end
+ def when
+ read_attribute(:when) || build_attributes_from_config[:when] || 'on_success'
+ end
+
+ def yaml_variables
+ read_attribute(:yaml_variables) || build_attributes_from_config[:yaml_variables] || []
+ end
+
private
def update_artifacts_size
@@ -406,29 +438,30 @@ module Ci
self.update(erased_by: user, erased_at: Time.now, artifacts_expire_at: nil)
end
- def project_variables
- project.variables.map do |variable|
- { key: variable.key, value: variable.value, public: false }
- end
+ def predefined_variables
+ variables = [
+ { key: 'CI', value: 'true', public: true },
+ { key: 'GITLAB_CI', value: 'true', public: true },
+ { key: 'CI_BUILD_ID', value: id.to_s, public: true },
+ { key: 'CI_BUILD_TOKEN', value: token, public: false },
+ { key: 'CI_BUILD_REF', value: sha, public: true },
+ { key: 'CI_BUILD_BEFORE_SHA', value: before_sha, public: true },
+ { key: 'CI_BUILD_REF_NAME', value: ref, public: true },
+ { key: 'CI_BUILD_NAME', value: name, public: true },
+ { key: 'CI_BUILD_STAGE', value: stage, public: true },
+ { key: 'CI_SERVER_NAME', value: 'GitLab', public: true },
+ { key: 'CI_SERVER_VERSION', value: Gitlab::VERSION, public: true },
+ { key: 'CI_SERVER_REVISION', value: Gitlab::REVISION, public: true }
+ ]
+ variables << { key: 'CI_BUILD_TAG', value: ref, public: true } if tag?
+ variables << { key: 'CI_BUILD_TRIGGERED', value: 'true', public: true } if trigger_request
+ variables
end
- def trigger_variables
- if trigger_request && trigger_request.variables
- trigger_request.variables.map do |key, value|
- { key: key, value: value, public: false }
- end
- else
- []
- end
- end
+ def build_attributes_from_config
+ return {} unless pipeline.config_processor
- def predefined_variables
- variables = []
- variables << { key: :CI_BUILD_TAG, value: ref, public: true } if tag?
- variables << { key: :CI_BUILD_NAME, value: name, public: true }
- variables << { key: :CI_BUILD_STAGE, value: stage, public: true }
- variables << { key: :CI_BUILD_TRIGGERED, value: 'true', public: true } if trigger_request
- variables
+ pipeline.config_processor.build_attributes(name)
end
end
end
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 148b056789a..f0edf3e2731 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -20,6 +20,11 @@ module Ci
after_touch :update_state
after_save :keep_around_commits
+ # ref can't be HEAD or SHA, can only be branch/tag name
+ scope :latest_successful_for, ->(ref = default_branch) do
+ where(ref: ref).success.order(id: :desc).limit(1)
+ end
+
def self.truncate_sha(sha)
sha[0...8]
end
@@ -51,6 +56,10 @@ module Ci
commit.try(:message)
end
+ def git_commit_title
+ commit.try(:title)
+ end
+
def short_sha
Ci::Pipeline.truncate_sha(sha)
end
@@ -65,6 +74,10 @@ module Ci
!tag?
end
+ def manual_actions
+ builds.latest.manual_actions
+ end
+
def retryable?
builds.latest.any? do |build|
build.failed? && build.retryable?
@@ -190,6 +203,12 @@ module Ci
Note.for_commit_id(sha)
end
+ def predefined_variables
+ [
+ { key: 'CI_PIPELINE_ID', value: id.to_s, public: true }
+ ]
+ end
+
private
def build_builds_for_stages(stages, user, status, trigger_request)
@@ -198,8 +217,9 @@ module Ci
# build builds only for the first stage that has builds available.
#
stages.any? do |stage|
- CreateBuildsService.new(self)
- .execute(stage, user, status, trigger_request).present?
+ CreateBuildsService.new(self).
+ execute(stage, user, status, trigger_request).
+ any?(&:active?)
end
end
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index b64ec79ec2b..49f05f881a2 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -114,6 +114,14 @@ module Ci
tag_list.any?
end
+ def predefined_variables
+ [
+ { key: 'CI_RUNNER_ID', value: id.to_s, public: true },
+ { key: 'CI_RUNNER_DESCRIPTION', value: description, public: true },
+ { key: 'CI_RUNNER_TAGS', value: tag_list.to_s, public: true }
+ ]
+ end
+
private
def tag_constraints
diff --git a/app/models/ci/trigger_request.rb b/app/models/ci/trigger_request.rb
index fcf2b6dc5e2..fc674871743 100644
--- a/app/models/ci/trigger_request.rb
+++ b/app/models/ci/trigger_request.rb
@@ -7,5 +7,13 @@ module Ci
has_many :builds, class_name: 'Ci::Build'
serialize :variables
+
+ def user_variables
+ return [] unless variables
+
+ variables.map do |key, value|
+ { key: key, value: value, public: false }
+ end
+ end
end
end
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index 3e97fe68d4b..2d185c28809 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -17,17 +17,19 @@ class CommitStatus < ActiveRecord::Base
alias_attribute :author, :user
scope :latest, -> do
- max_id = unscope(:select).
- select("max(#{table_name}.id)").
- group(:name, :commit_id)
+ max_id = unscope(:select).select("max(#{quoted_table_name}.id)")
- where(id: max_id)
+ where(id: max_id.group(:name, :commit_id))
end
scope :retried, -> { where.not(id: latest) }
scope :ordered, -> { order(:name) }
scope :ignored, -> { where(allow_failure: true, status: [:failed, :canceled]) }
state_machine :status, initial: :pending do
+ event :queue do
+ transition skipped: :pending
+ end
+
event :run do
transition pending: :running
end
diff --git a/app/models/concerns/statuseable.rb b/app/models/concerns/statuseable.rb
index 3ef91caad47..44c6b30f278 100644
--- a/app/models/concerns/statuseable.rb
+++ b/app/models/concerns/statuseable.rb
@@ -16,10 +16,10 @@ module Statuseable
deduce_status = "(CASE
WHEN (#{builds})=0 THEN NULL
- WHEN (#{builds})=(#{success})+(#{ignored}) THEN 'success'
- WHEN (#{builds})=(#{pending}) THEN 'pending'
- WHEN (#{builds})=(#{canceled})+(#{success})+(#{ignored}) THEN 'canceled'
WHEN (#{builds})=(#{skipped}) THEN 'skipped'
+ WHEN (#{builds})=(#{success})+(#{ignored})+(#{skipped}) THEN 'success'
+ WHEN (#{builds})=(#{pending})+(#{skipped}) THEN 'pending'
+ WHEN (#{builds})=(#{canceled})+(#{success})+(#{ignored})+(#{skipped}) THEN 'canceled'
WHEN (#{running})+(#{pending})>0 THEN 'running'
ELSE 'failed'
END)"
diff --git a/app/models/deployment.rb b/app/models/deployment.rb
index 520026c18dd..1a7cd60817e 100644
--- a/app/models/deployment.rb
+++ b/app/models/deployment.rb
@@ -32,4 +32,8 @@ class Deployment < ActiveRecord::Base
def keep_around_commit
project.repository.keep_around(self.sha)
end
+
+ def manual_actions
+ deployable.try(:other_actions)
+ end
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 157901378d3..471e32f3b60 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -552,7 +552,13 @@ class MergeRequest < ActiveRecord::Base
end
def can_be_merged_by?(user)
- ::Gitlab::GitAccess.new(user, project, 'web').can_push_to_branch?(target_branch)
+ access = ::Gitlab::UserAccess.new(user, project: project)
+ access.can_push_to_branch?(target_branch) || access.can_merge_to_branch?(target_branch)
+ end
+
+ def can_be_merged_via_command_line_by?(user)
+ access = ::Gitlab::UserAccess.new(user, project: project)
+ access.can_push_to_branch?(target_branch)
end
def mergeable_ci_state?
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index feaba925bad..3f520c8f3ff 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -1,6 +1,7 @@
class MergeRequestDiff < ActiveRecord::Base
include Sortable
include Importable
+ include EncodingHelper
# Prevent store of diff if commits amount more then 500
COMMITS_SAFE_SIZE = 100
@@ -211,6 +212,14 @@ class MergeRequestDiff < ActiveRecord::Base
branch_base_commit.try(:sha)
end
+ def utf8_st_diffs
+ st_diffs.map do |diff|
+ diff.each do |k, v|
+ diff[k] = encode_utf8(v) if v.respond_to?(:encoding)
+ end
+ end
+ end
+
#
# #save or #update_attributes providing changes on serialized attributes do a lot of
# serialization and deserialization calls resulting in bad performance.
diff --git a/app/models/project.rb b/app/models/project.rb
index 60928bf9922..d14d15fdc5c 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -430,18 +430,14 @@ class Project < ActiveRecord::Base
end
# ref can't be HEAD, can only be branch/tag name or SHA
- def latest_successful_pipeline_for(ref = 'master')
- table = Ci::Pipeline.quoted_table_name
- # TODO: Use `where(ref: ref).or(sha: ref)` in Rails 5
- pipelines.where("#{table}.ref = ? OR #{table}.sha = ?", ref, ref).
- success.order(id: :desc)
- end
+ def latest_successful_builds_for(ref = default_branch)
+ latest_pipeline = pipelines.latest_successful_for(ref).first
- # ref can't be HEAD, can only be branch/tag name or SHA
- def latest_successful_builds_for(ref = 'master')
- Ci::Build.joins(:pipeline).
- merge(latest_successful_pipeline_for(ref)).
- latest_successful_with_artifacts
+ if latest_pipeline
+ latest_pipeline.builds.latest.with_artifacts
+ else
+ builds.none
+ end
end
def merge_base_commit(first_commit_id, second_commit_id)
@@ -665,6 +661,22 @@ class Project < ActiveRecord::Base
update_column(:has_external_issue_tracker, services.external_issue_trackers.any?)
end
+ def external_wiki
+ if has_external_wiki.nil?
+ cache_has_external_wiki # Populate
+ end
+
+ if has_external_wiki
+ @external_wiki ||= services.external_wikis.first
+ else
+ nil
+ end
+ end
+
+ def cache_has_external_wiki
+ update_column(:has_external_wiki, services.external_wikis.any?)
+ end
+
def build_missing_services
services_templates = Service.where(template: true)
@@ -853,6 +865,10 @@ class Project < ActiveRecord::Base
protected_branches.matching(branch_name).any?(&:developers_can_push)
end
+ def developers_can_merge_to_protected_branch?(branch_name)
+ protected_branches.matching(branch_name).any?(&:developers_can_merge)
+ end
+
def forked?
!(forked_project_link.nil? || forked_project_link.forked_from_project.nil?)
end
@@ -1175,4 +1191,34 @@ class Project < ActiveRecord::Base
def ensure_dir_exist
gitlab_shell.add_namespace(repository_storage_path, namespace.path)
end
+
+ def predefined_variables
+ [
+ { key: 'CI_PROJECT_ID', value: id.to_s, public: true },
+ { key: 'CI_PROJECT_NAME', value: path, public: true },
+ { key: 'CI_PROJECT_PATH', value: path_with_namespace, public: true },
+ { key: 'CI_PROJECT_NAMESPACE', value: namespace.path, public: true },
+ { key: 'CI_PROJECT_URL', value: web_url, public: true }
+ ]
+ end
+
+ def container_registry_variables
+ return [] unless Gitlab.config.registry.enabled
+
+ variables = [
+ { key: 'CI_REGISTRY', value: Gitlab.config.registry.host_port, public: true }
+ ]
+
+ if container_registry_enabled?
+ variables << { key: 'CI_REGISTRY_IMAGE', value: container_registry_repository_url, public: true }
+ end
+
+ variables
+ end
+
+ def secret_variables
+ variables.map do |variable|
+ { key: variable.key, value: variable.value, public: false }
+ end
+ end
end
diff --git a/app/models/project_services/builds_email_service.rb b/app/models/project_services/builds_email_service.rb
index 54da4d74fc5..5e166471077 100644
--- a/app/models/project_services/builds_email_service.rb
+++ b/app/models/project_services/builds_email_service.rb
@@ -42,6 +42,19 @@ class BuildsEmailService < Service
end
end
+ def can_test?
+ project.builds.count > 0
+ end
+
+ def disabled_title
+ "Please setup a build on your repository."
+ end
+
+ def test_data(project = nil, user = nil)
+ build = project.builds.last
+ Gitlab::BuildDataBuilder.build(build)
+ end
+
def fields
[
{ type: 'textarea', name: 'recipients', placeholder: 'Emails separated by comma' },
@@ -50,6 +63,20 @@ class BuildsEmailService < Service
]
end
+ def test(data)
+ begin
+ # bypass build status verification when testing
+ data[:build_status] = "failed"
+ data[:build_allow_failure] = false
+
+ result = execute(data)
+ rescue StandardError => error
+ return { success: false, result: error }
+ end
+
+ { success: true, result: result }
+ end
+
def should_build_be_notified?(data)
case data[:build_status]
when 'success'
diff --git a/app/models/project_services/slack_service.rb b/app/models/project_services/slack_service.rb
index cf9e4d5a8b6..abbc780dc1a 100644
--- a/app/models/project_services/slack_service.rb
+++ b/app/models/project_services/slack_service.rb
@@ -4,6 +4,9 @@ class SlackService < Service
validates :webhook, presence: true, url: true, if: :activated?
def initialize_properties
+ # Custom serialized properties initialization
+ self.supported_events.each { |event| self.class.prop_accessor(event_channel_name(event)) }
+
if properties.nil?
self.properties = {}
self.notify_only_broken_builds = true
@@ -29,13 +32,15 @@ class SlackService < Service
end
def fields
- [
- { type: 'text', name: 'webhook',
- placeholder: 'https://hooks.slack.com/services/...' },
- { type: 'text', name: 'username', placeholder: 'username' },
- { type: 'text', name: 'channel', placeholder: '#channel' },
- { type: 'checkbox', name: 'notify_only_broken_builds' },
- ]
+ default_fields =
+ [
+ { type: 'text', name: 'webhook', placeholder: 'https://hooks.slack.com/services/...' },
+ { type: 'text', name: 'username', placeholder: 'username' },
+ { type: 'text', name: 'channel', placeholder: "#general" },
+ { type: 'checkbox', name: 'notify_only_broken_builds' },
+ ]
+
+ default_fields + build_event_channels
end
def supported_events
@@ -74,7 +79,10 @@ class SlackService < Service
end
opt = {}
- opt[:channel] = channel if channel
+
+ event_channel = get_channel_field(object_kind) || channel
+
+ opt[:channel] = event_channel if event_channel
opt[:username] = username if username
if message
@@ -83,8 +91,35 @@ class SlackService < Service
end
end
+ def event_channel_names
+ supported_events.map { |event| event_channel_name(event) }
+ end
+
+ def event_field(event)
+ fields.find { |field| field[:name] == event_channel_name(event) }
+ end
+
+ def global_fields
+ fields.reject { |field| field[:name].end_with?('channel') }
+ end
+
private
+ def get_channel_field(event)
+ field_name = event_channel_name(event)
+ self.public_send(field_name)
+ end
+
+ def build_event_channels
+ supported_events.reduce([]) do |channels, event|
+ channels << { type: 'text', name: event_channel_name(event), placeholder: "#general" }
+ end
+ end
+
+ def event_channel_name(event)
+ "#{event}_channel"
+ end
+
def project_name
project.name_with_namespace.gsub(/\s/, '')
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 5b670cb4b8f..511df2d67c6 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -392,6 +392,11 @@ class Repository
expire_cache if exists?
+ # expire cache that don't depend on repository data (when expiring)
+ expire_tags_cache
+ expire_tag_count_cache
+ expire_branches_cache
+ expire_branch_count_cache
expire_root_ref_cache
expire_emptiness_caches
expire_exists_cache
@@ -704,6 +709,7 @@ class Repository
options[:commit] = {
message: message,
branch: ref,
+ update_ref: false,
}
raw_repository.mkdir(path, options)
@@ -719,6 +725,7 @@ class Repository
options[:commit] = {
message: message,
branch: ref,
+ update_ref: false,
}
options[:file] = {
@@ -731,6 +738,33 @@ class Repository
end
end
+ def update_file(user, path, content, branch:, previous_path:, message:)
+ commit_with_hooks(user, branch) do |ref|
+ committer = user_to_committer(user)
+ options = {}
+ options[:committer] = committer
+ options[:author] = committer
+ options[:commit] = {
+ message: message,
+ branch: ref,
+ update_ref: false
+ }
+
+ options[:file] = {
+ content: content,
+ path: path,
+ update: true
+ }
+
+ if previous_path
+ options[:file][:previous_path] = previous_path
+ Gitlab::Git::Blob.rename(raw_repository, options)
+ else
+ Gitlab::Git::Blob.commit(raw_repository, options)
+ end
+ end
+ end
+
def remove_file(user, path, message, branch)
commit_with_hooks(user, branch) do |ref|
committer = user_to_committer(user)
@@ -739,7 +773,8 @@ class Repository
options[:author] = committer
options[:commit] = {
message: message,
- branch: ref
+ branch: ref,
+ update_ref: false,
}
options[:file] = {
@@ -769,9 +804,9 @@ class Repository
end
end
- def merge(user, source_sha, target_branch, options = {})
- our_commit = rugged.branches[target_branch].target
- their_commit = rugged.lookup(source_sha)
+ def merge(user, merge_request, options = {})
+ our_commit = rugged.branches[merge_request.target_branch].target
+ their_commit = rugged.lookup(merge_request.diff_head_sha)
raise "Invalid merge target" if our_commit.nil?
raise "Invalid merge source" if their_commit.nil?
@@ -779,14 +814,15 @@ class Repository
merge_index = rugged.merge_commits(our_commit, their_commit)
return false if merge_index.conflicts?
- commit_with_hooks(user, target_branch) do |ref|
+ commit_with_hooks(user, merge_request.target_branch) do
actual_options = options.merge(
parents: [our_commit, their_commit],
tree: merge_index.write_tree(rugged),
- update_ref: ref
)
- Rugged::Commit.create(rugged, actual_options)
+ commit_id = Rugged::Commit.create(rugged, actual_options)
+ merge_request.update(in_progress_merge_commit_sha: commit_id)
+ commit_id
end
end
@@ -796,15 +832,14 @@ class Repository
return false unless revert_tree_id
- commit_with_hooks(user, base_branch) do |ref|
+ commit_with_hooks(user, base_branch) do
committer = user_to_committer(user)
source_sha = Rugged::Commit.create(rugged,
message: commit.revert_message,
author: committer,
committer: committer,
tree: revert_tree_id,
- parents: [rugged.lookup(source_sha)],
- update_ref: ref)
+ parents: [rugged.lookup(source_sha)])
end
end
@@ -814,7 +849,7 @@ class Repository
return false unless cherry_pick_tree_id
- commit_with_hooks(user, base_branch) do |ref|
+ commit_with_hooks(user, base_branch) do
committer = user_to_committer(user)
source_sha = Rugged::Commit.create(rugged,
message: commit.message,
@@ -825,8 +860,7 @@ class Repository
},
committer: committer,
tree: cherry_pick_tree_id,
- parents: [rugged.lookup(source_sha)],
- update_ref: ref)
+ parents: [rugged.lookup(source_sha)])
end
end
@@ -927,20 +961,6 @@ class Repository
Gitlab::Popen.popen(args, path_to_repo)
end
- def with_tmp_ref(oldrev = nil)
- random_string = SecureRandom.hex
- tmp_ref = "refs/tmp/#{random_string}/head"
-
- if oldrev && !Gitlab::Git.blank_ref?(oldrev)
- rugged.references.create(tmp_ref, oldrev)
- end
-
- # Make commit in tmp ref
- yield(tmp_ref)
- ensure
- rugged.references.delete(tmp_ref) rescue nil
- end
-
def commit_with_hooks(current_user, branch)
update_autocrlf_option
@@ -953,33 +973,31 @@ class Repository
oldrev = target_branch.target
end
- with_tmp_ref(oldrev) do |tmp_ref|
- # Make commit in tmp ref
- newrev = yield(tmp_ref)
+ # Make commit
+ newrev = yield(ref)
- unless newrev
- raise CommitError.new('Failed to create commit')
- end
+ unless newrev
+ raise CommitError.new('Failed to create commit')
+ end
- GitHooksService.new.execute(current_user, path_to_repo, oldrev, newrev, ref) do
- if was_empty || !target_branch
- # Create branch
- rugged.references.create(ref, newrev)
+ GitHooksService.new.execute(current_user, path_to_repo, oldrev, newrev, ref) do
+ if was_empty || !target_branch
+ # Create branch
+ rugged.references.create(ref, newrev)
+ else
+ # Update head
+ current_head = find_branch(branch).target
+
+ # Make sure target branch was not changed during pre-receive hook
+ if current_head == oldrev
+ rugged.references.update(ref, newrev)
else
- # Update head
- current_head = find_branch(branch).target
-
- # Make sure target branch was not changed during pre-receive hook
- if current_head == oldrev
- rugged.references.update(ref, newrev)
- else
- raise CommitError.new('Commit was rejected because branch received new push')
- end
+ raise CommitError.new('Commit was rejected because branch received new push')
end
end
-
- newrev
end
+
+ newrev
end
def ls_files(ref)
diff --git a/app/models/service.rb b/app/models/service.rb
index d7a32c28267..a8e1cc2f422 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -17,6 +17,7 @@ class Service < ActiveRecord::Base
after_commit :reset_updated_properties
after_commit :cache_project_has_external_issue_tracker
+ after_commit :cache_project_has_external_wiki
belongs_to :project, inverse_of: :services
has_one :service_hook
@@ -25,6 +26,7 @@ class Service < ActiveRecord::Base
scope :visible, -> { where.not(type: ['GitlabIssueTrackerService', 'GitlabCiService']) }
scope :issue_trackers, -> { where(category: 'issue_tracker') }
+ scope :external_wikis, -> { where(type: 'ExternalWikiService') }
scope :active, -> { where(active: true) }
scope :without_defaults, -> { where(default: false) }
@@ -76,6 +78,22 @@ class Service < ActiveRecord::Base
[]
end
+ def test_data(project, user)
+ Gitlab::PushDataBuilder.build_sample(project, user)
+ end
+
+ def event_channel_names
+ []
+ end
+
+ def event_field(event)
+ nil
+ end
+
+ def global_fields
+ fields
+ end
+
def supported_events
%w(push tag_push issue merge_request wiki_page)
end
@@ -94,6 +112,11 @@ class Service < ActiveRecord::Base
!project.empty_repo?
end
+ # reason why service cannot be tested
+ def disabled_title
+ "Please setup a project repository."
+ end
+
# Provide convenient accessor methods
# for each serialized property.
# Also keep track of updated properties in a similar way as ActiveModel::Dirty
@@ -203,4 +226,10 @@ class Service < ActiveRecord::Base
project.cache_has_external_issue_tracker
end
end
+
+ def cache_project_has_external_wiki
+ if project && !project.destroyed?
+ project.cache_has_external_wiki
+ end
+ end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 3d0a033785c..975e935fa20 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -854,7 +854,7 @@ class User < ActiveRecord::Base
groups.joins(:shared_projects).select(:project_id)]
if min_access_level
- scope = { access_level: Gitlab::Access.values.select { |access| access >= min_access_level } }
+ scope = { access_level: Gitlab::Access.all_values.select { |access| access >= min_access_level } }
relations = [relations.shift] + relations.map { |relation| relation.where(members: scope) }
end
diff --git a/app/services/ci/create_builds_service.rb b/app/services/ci/create_builds_service.rb
index 3b21f0acb96..4946f7076fd 100644
--- a/app/services/ci/create_builds_service.rb
+++ b/app/services/ci/create_builds_service.rb
@@ -15,7 +15,7 @@ module Ci
status == 'success'
when 'on_failure'
status == 'failed'
- when 'always'
+ when 'always', 'manual'
%w(success failed).include?(status)
end
end
@@ -47,6 +47,10 @@ module Ci
user: user,
project: @pipeline.project)
+ # TODO: The proper implementation for this is in
+ # https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5295
+ build_attrs[:status] = 'skipped' if build_attrs[:when] == 'manual'
+
##
# We do not persist new builds here.
# Those will be persisted when @pipeline is saved.
diff --git a/app/services/commits/change_service.rb b/app/services/commits/change_service.rb
index c578097376a..ed73d8cb8c2 100644
--- a/app/services/commits/change_service.rb
+++ b/app/services/commits/change_service.rb
@@ -23,7 +23,7 @@ module Commits
private
def check_push_permissions
- allowed = ::Gitlab::GitAccess.new(current_user, project, 'web').can_push_to_branch?(@target_branch)
+ allowed = ::Gitlab::UserAccess.new(current_user, project: project).can_push_to_branch?(@target_branch)
unless allowed
raise ValidationError.new('You are not allowed to push into this branch')
@@ -31,7 +31,7 @@ module Commits
true
end
-
+
def create_target_branch(new_branch)
# Temporary branch exists and contains the change commit
return success if repository.find_branch(new_branch)
diff --git a/app/services/create_branch_service.rb b/app/services/create_branch_service.rb
index d874582d54f..757fc35a78f 100644
--- a/app/services/create_branch_service.rb
+++ b/app/services/create_branch_service.rb
@@ -15,21 +15,19 @@ class CreateBranchService < BaseService
return error('Branch already exists')
end
- new_branch = nil
-
- if source_project != @project
- repository.with_tmp_ref do |tmp_ref|
- repository.fetch_ref(
- source_project.repository.path_to_repo,
- "refs/heads/#{ref}",
- tmp_ref
- )
-
- new_branch = repository.add_branch(current_user, branch_name, tmp_ref)
- end
- else
- new_branch = repository.add_branch(current_user, branch_name, ref)
- end
+ new_branch = if source_project != @project
+ repository.fetch_ref(
+ source_project.repository.path_to_repo,
+ "refs/heads/#{ref}",
+ "refs/heads/#{branch_name}"
+ )
+
+ repository.after_create_branch
+
+ repository.find_branch(branch_name)
+ else
+ repository.add_branch(current_user, branch_name, ref)
+ end
if new_branch
success(new_branch)
diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb
index 37c5e321b39..c4a206f785e 100644
--- a/app/services/files/base_service.rb
+++ b/app/services/files/base_service.rb
@@ -9,12 +9,14 @@ module Files
@commit_message = params[:commit_message]
@file_path = params[:file_path]
+ @previous_path = params[:previous_path]
@file_content = if params[:file_content_encoding] == 'base64'
Base64.decode64(params[:file_content])
else
params[:file_content]
end
+ # Validate parameters
validate
# Create new branch if it different from source_branch
@@ -42,7 +44,7 @@ module Files
end
def validate
- allowed = ::Gitlab::GitAccess.new(current_user, project, 'web').can_push_to_branch?(@target_branch)
+ allowed = ::Gitlab::UserAccess.new(current_user, project: project).can_push_to_branch?(@target_branch)
unless allowed
raise_error("You are not allowed to push into this branch")
diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb
index 1960dc7d949..8d2b5083179 100644
--- a/app/services/files/update_service.rb
+++ b/app/services/files/update_service.rb
@@ -3,7 +3,10 @@ require_relative "base_service"
module Files
class UpdateService < Files::BaseService
def commit
- repository.commit_file(current_user, @file_path, @file_content, @commit_message, @target_branch, true)
+ repository.update_file(current_user, @file_path, @file_content,
+ branch: @target_branch,
+ previous_path: @previous_path,
+ message: @commit_message)
end
end
end
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index a886f35981f..e02b50ff9a2 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -89,7 +89,8 @@ class GitPushService < BaseService
# Set protection on the default branch if configured
if current_application_settings.default_branch_protection != PROTECTION_NONE
developers_can_push = current_application_settings.default_branch_protection == PROTECTION_DEV_CAN_PUSH ? true : false
- @project.protected_branches.create({ name: @project.default_branch, developers_can_push: developers_can_push })
+ developers_can_merge = current_application_settings.default_branch_protection == PROTECTION_DEV_CAN_MERGE ? true : false
+ @project.protected_branches.create({ name: @project.default_branch, developers_can_push: developers_can_push, developers_can_merge: developers_can_merge })
end
end
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb
index e3dc569152c..2d96efe1042 100644
--- a/app/services/issuable_base_service.rb
+++ b/app/services/issuable_base_service.rb
@@ -101,6 +101,7 @@ class IssuableBaseService < BaseService
def update(issuable)
change_state(issuable)
+ change_subscription(issuable)
filter_params
old_labels = issuable.labels.to_a
@@ -124,6 +125,15 @@ class IssuableBaseService < BaseService
end
end
+ def change_subscription(issuable)
+ case params.delete(:subscription_event)
+ when 'subscribe'
+ issuable.subscribe(current_user)
+ when 'unsubscribe'
+ issuable.unsubscribe(current_user)
+ end
+ end
+
def has_changes?(issuable, old_labels: [])
valid_attrs = [:title, :description, :assignee_id, :milestone_id, :target_branch]
diff --git a/app/services/issues/bulk_update_service.rb b/app/services/issues/bulk_update_service.rb
index cd08c3a0cb9..7e19a73f71a 100644
--- a/app/services/issues/bulk_update_service.rb
+++ b/app/services/issues/bulk_update_service.rb
@@ -4,7 +4,7 @@ module Issues
issues_ids = params.delete(:issues_ids).split(",")
issue_params = params
- %i(state_event milestone_id assignee_id add_label_ids remove_label_ids).each do |key|
+ %i(state_event milestone_id assignee_id add_label_ids remove_label_ids subscription_event).each do |key|
issue_params.delete(key) unless issue_params[key].present?
end
diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb
index f1b1d90c457..0dac0614141 100644
--- a/app/services/merge_requests/merge_service.rb
+++ b/app/services/merge_requests/merge_service.rb
@@ -34,7 +34,7 @@ module MergeRequests
committer: committer
}
- commit_id = repository.merge(current_user, merge_request.diff_head_sha, merge_request.target_branch, options)
+ commit_id = repository.merge(current_user, merge_request, options)
merge_request.update(merge_commit_sha: commit_id)
rescue GitHooksService::PreReceiveError => e
merge_request.update(merge_error: e.message)
@@ -43,6 +43,8 @@ module MergeRequests
merge_request.update(merge_error: "Something went wrong during merge")
Rails.logger.error(e.message)
false
+ ensure
+ merge_request.update(in_progress_merge_commit_sha: nil)
end
def after_merge
diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb
index b11ecd97a57..1daf6bbf553 100644
--- a/app/services/merge_requests/refresh_service.rb
+++ b/app/services/merge_requests/refresh_service.rb
@@ -48,7 +48,7 @@ module MergeRequests
end
def force_push?
- Gitlab::ForcePushCheck.force_push?(@project, @oldrev, @newrev)
+ Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev)
end
# Refresh merge request diff if we push to source or target branch of merge request
diff --git a/app/services/projects/import_export/export_service.rb b/app/services/projects/import_export/export_service.rb
index 998789d64d2..06252c7b625 100644
--- a/app/services/projects/import_export/export_service.rb
+++ b/app/services/projects/import_export/export_service.rb
@@ -9,7 +9,7 @@ module Projects
private
def save_all
- if [version_saver, project_tree_saver, uploads_saver, repo_saver, wiki_repo_saver].all?(&:save)
+ if [version_saver, avatar_saver, project_tree_saver, uploads_saver, repo_saver, wiki_repo_saver].all?(&:save)
Gitlab::ImportExport::Saver.save(project: project, shared: @shared)
notify_success
else
@@ -21,6 +21,10 @@ module Projects
Gitlab::ImportExport::VersionSaver.new(shared: @shared)
end
+ def avatar_saver
+ Gitlab::ImportExport::AvatarSaver.new(project: project, shared: @shared)
+ end
+
def project_tree_saver
Gitlab::ImportExport::ProjectTreeSaver.new(project: project, shared: @shared)
end
diff --git a/app/uploaders/avatar_uploader.rb b/app/uploaders/avatar_uploader.rb
index 6135c3ad96f..03d9329a14e 100644
--- a/app/uploaders/avatar_uploader.rb
+++ b/app/uploaders/avatar_uploader.rb
@@ -14,4 +14,8 @@ class AvatarUploader < CarrierWave::Uploader::Base
def reset_events_cache(file)
model.reset_events_cache if model.is_a?(User)
end
+
+ def exists?
+ model.avatar.file && model.avatar.file.exists?
+ end
end
diff --git a/app/views/admin/groups/_form.html.haml b/app/views/admin/groups/_form.html.haml
index 0cc405401cf..5f7fdfdb011 100644
--- a/app/views/admin/groups/_form.html.haml
+++ b/app/views/admin/groups/_form.html.haml
@@ -9,6 +9,10 @@
= render 'shared/visibility_level', f: f, visibility_level: @group.visibility_level, can_change_visibility_level: can_change_group_visibility_level?(@group), form_model: @group
+ .form-group
+ .col-sm-offset-2.col-sm-10
+ = render 'shared/allow_request_access', form: f
+
- if @group.new_record?
.form-group
.col-sm-offset-2.col-sm-10
diff --git a/app/views/emojis/index.html.haml b/app/views/emojis/index.html.haml
index 8b38b4c2bd4..790d90ad3ee 100644
--- a/app/views/emojis/index.html.haml
+++ b/app/views/emojis/index.html.haml
@@ -1,5 +1,5 @@
.emoji-menu
- = text_field_tag :emoji_search, "", class: "emoji-search search-input form-control", placeholder: "Seach emojis"
+ = text_field_tag :emoji_search, "", class: "emoji-search search-input form-control", placeholder: "Search emoji"
.emoji-menu-content
- Gitlab::AwardEmoji.emoji_by_category.each do |category, emojis|
%h5.emoji-menu-title
diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml
index e4629bae0e6..5c318cd3b8b 100644
--- a/app/views/events/_event.html.haml
+++ b/app/views/events/_event.html.haml
@@ -4,11 +4,7 @@
#{time_ago_with_tooltip(event.created_at)}
= cache [event, current_application_settings, "v2.2"] do
- - if event.author
- = link_to user_path(event.author) do
- = image_tag avatar_icon(event.author_email, 40), class: "avatar s40", alt:''
- - else
- = image_tag avatar_icon(event.author_email, 40), class: "avatar s40", alt:''
+ = author_avatar(event, size: 40)
- if event.created_project?
= render "events/event/created_project", event: event
diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml
index 92cd4c553d0..decb89b2fd6 100644
--- a/app/views/groups/edit.html.haml
+++ b/app/views/groups/edit.html.haml
@@ -22,6 +22,10 @@
= render 'shared/visibility_level', f: f, visibility_level: @group.visibility_level, can_change_visibility_level: can_change_group_visibility_level?(@group), form_model: @group
.form-group
+ .col-sm-offset-2.col-sm-10
+ = render 'shared/allow_request_access', form: f
+
+ .form-group
%hr
= f.label :share_with_group_lock, class: 'control-label' do
Share with group lock
diff --git a/app/views/layouts/_init_auto_complete.html.haml b/app/views/layouts/_init_auto_complete.html.haml
index 12e7ed0e792..351100f3523 100644
--- a/app/views/layouts/_init_auto_complete.html.haml
+++ b/app/views/layouts/_init_auto_complete.html.haml
@@ -1,7 +1,7 @@
- project = @target_project || @project
+- noteable_class = @noteable.class if @noteable.present?
-- if @noteable
- :javascript
- GitLab.GfmAutoComplete.dataSource = "#{autocomplete_sources_namespace_project_path(project.namespace, project, type: @noteable.class, type_id: params[:id])}"
- GitLab.GfmAutoComplete.cachedData = undefined;
- GitLab.GfmAutoComplete.setup();
+:javascript
+ GitLab.GfmAutoComplete.dataSource = "#{autocomplete_sources_namespace_project_path(project.namespace, project, type: noteable_class, type_id: params[:id])}"
+ GitLab.GfmAutoComplete.cachedData = undefined;
+ GitLab.GfmAutoComplete.setup();
diff --git a/app/views/layouts/nav/_explore.html.haml b/app/views/layouts/nav/_explore.html.haml
index 3b40006a0cc..e5bda7b3a6f 100644
--- a/app/views/layouts/nav/_explore.html.haml
+++ b/app/views/layouts/nav/_explore.html.haml
@@ -1,21 +1,17 @@
%ul.nav.nav-sidebar
= nav_link(path: ['dashboard#show', 'root#show', 'projects#trending', 'projects#starred', 'projects#index'], html_options: {class: 'home'}) do
= link_to explore_root_path, title: 'Projects' do
- = icon('bookmark fw')
%span
Projects
= nav_link(controller: [:groups, 'groups/milestones', 'groups/group_members']) do
= link_to explore_groups_path, title: 'Groups' do
- = icon('group fw')
%span
Groups
= nav_link(controller: :snippets) do
= link_to explore_snippets_path, title: 'Snippets' do
- = icon('clipboard fw')
%span
Snippets
= nav_link(controller: :help) do
= link_to help_path, title: 'Help' do
- = icon('question-circle fw')
%span
Help
diff --git a/app/views/layouts/nav/_project_settings.html.haml b/app/views/layouts/nav/_project_settings.html.haml
index 51a54b4f262..52a5bdc1a1b 100644
--- a/app/views/layouts/nav/_project_settings.html.haml
+++ b/app/views/layouts/nav/_project_settings.html.haml
@@ -39,7 +39,7 @@
= link_to namespace_project_triggers_path(@project.namespace, @project), title: 'Triggers' do
%span
Triggers
- = nav_link(controller: :badges) do
- = link_to namespace_project_badges_path(@project.namespace, @project), title: 'Badges' do
+ = nav_link(controller: :pipelines_settings) do
+ = link_to namespace_project_pipelines_settings_path(@project.namespace, @project), title: 'CI/CD Pipelines' do
%span
- Badges
+ CI/CD Pipelines
diff --git a/app/views/profiles/_head.html.haml b/app/views/profiles/_head.html.haml
index 003884a5bd9..943ebdaeffe 100644
--- a/app/views/profiles/_head.html.haml
+++ b/app/views/profiles/_head.html.haml
@@ -1,3 +1,3 @@
- content_for :page_specific_javascripts do
= page_specific_javascript_tag('lib/cropper.js')
- = page_specific_javascript_tag('profile/application.js')
+ = page_specific_javascript_tag('profile/profile_bundle.js')
diff --git a/app/views/projects/_builds_settings.html.haml b/app/views/projects/_builds_settings.html.haml
deleted file mode 100644
index fff30f11d82..00000000000
--- a/app/views/projects/_builds_settings.html.haml
+++ /dev/null
@@ -1,65 +0,0 @@
-%fieldset.builds-feature
- %h5.prepend-top-0
- Builds
- - unless @repository.gitlab_ci_yml
- .form-group
- %p Builds need to be configured before you can begin using Continuous Integration.
- = link_to 'Get started with Builds', help_page_path('ci/quick_start/README'), class: 'btn btn-info'
- .form-group
- %p Get recent application code using the following command:
- .radio
- = f.label :build_allow_git_fetch_false do
- = f.radio_button :build_allow_git_fetch, 'false'
- %strong git clone
- %br
- %span.descr Slower but makes sure you have a clean dir before every build
- .radio
- = f.label :build_allow_git_fetch_true do
- = f.radio_button :build_allow_git_fetch, 'true'
- %strong git fetch
- %br
- %span.descr Faster
-
- .form-group
- = f.label :build_timeout_in_minutes, 'Timeout', class: 'label-light'
- = f.number_field :build_timeout_in_minutes, class: 'form-control', min: '0'
- %p.help-block per build in minutes
- .form-group
- = f.label :build_coverage_regex, "Test coverage parsing", class: 'label-light'
- .input-group
- %span.input-group-addon /
- = f.text_field :build_coverage_regex, class: 'form-control', placeholder: '\(\d+.\d+\%\) covered'
- %span.input-group-addon /
- %p.help-block
- We will use this regular expression to find test coverage output in build trace.
- Leave blank if you want to disable this feature
- .bs-callout.bs-callout-info
- %p Below are examples of regex for existing tools:
- %ul
- %li
- Simplecov (Ruby) -
- %code \(\d+.\d+\%\) covered
- %li
- pytest-cov (Python) -
- %code \d+\%\s*$
- %li
- phpunit --coverage-text --colors=never (PHP) -
- %code ^\s*Lines:\s*\d+.\d+\%
- %li
- gcovr (C/C++) -
- %code ^TOTAL.*\s+(\d+\%)$
- %li
- tap --coverage-report=text-summary (Node.js) -
- %code ^Statements\s*:\s*([^%]+)
-
- .form-group
- .checkbox
- = f.label :public_builds do
- = f.check_box :public_builds
- %strong Public builds
- .help-block Allow everyone to access builds for Public and Internal projects
-
- .form-group.append-bottom-0
- = f.label :runners_token, "Runners token", class: 'label-light'
- = f.text_field :runners_token, class: "form-control", placeholder: 'xEeFCaDAB89'
- %p.help-block The secure token used to checkout project.
diff --git a/app/views/projects/badges/index.html.haml b/app/views/projects/badges/index.html.haml
deleted file mode 100644
index ac80951dd4f..00000000000
--- a/app/views/projects/badges/index.html.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-- page_title 'Badges'
-- badges_path = namespace_project_badges_path(@project.namespace, @project)
-
-.prepend-top-10
- .panel.panel-default
- .panel-heading
- %b Builds badge &middot;
- = @build_badge.to_html
- .pull-right
- = render 'shared/ref_switcher', destination: 'badges', align_right: true
- .panel-body
- .row
- .col-md-2.text-center
- Markdown
- .col-md-10.code.js-syntax-highlight
- = highlight('.md', @build_badge.to_markdown)
- .row
- %hr
- .row
- .col-md-2.text-center
- HTML
- .col-md-10.code.js-syntax-highlight
- = highlight('.html', @build_badge.to_html)
diff --git a/app/views/projects/blob/_editor.html.haml b/app/views/projects/blob/_editor.html.haml
index 29c7d45074a..ff379bafb26 100644
--- a/app/views/projects/blob/_editor.html.haml
+++ b/app/views/projects/blob/_editor.html.haml
@@ -4,7 +4,9 @@
= icon('code-fork')
= ref
%span.editor-file-name
- = @path
+ - if current_action?(:edit) || current_action?(:update)
+ = text_field_tag 'file_path', (params[:file_path] || @path),
+ class: 'form-control new-file-path'
- if current_action?(:new) || current_action?(:create)
%span.editor-file-name
diff --git a/app/views/projects/branches/_branch.html.haml b/app/views/projects/branches/_branch.html.haml
index e48b78f9eef..b096516c627 100644
--- a/app/views/projects/branches/_branch.html.haml
+++ b/app/views/projects/branches/_branch.html.haml
@@ -27,9 +27,9 @@
= link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: branch.name), class: 'btn btn-default', method: :post, title: "Compare" do
Compare
- - pipeline = @project.latest_successful_pipeline_for(branch.name).first
+ - pipeline = @project.pipelines.latest_successful_for(branch.name).first
- if pipeline
- - artifacts = pipeline.builds.latest_successful_with_artifacts
+ - artifacts = pipeline.builds.latest.with_artifacts
- if artifacts.any?
.dropdown.inline.artifacts-btn
%a.btn.dropdown-toggle{ 'data-toggle' => 'dropdown' }
diff --git a/app/views/projects/builds/_sidebar.html.haml b/app/views/projects/builds/_sidebar.html.haml
index cab21f0cf19..dc57b49f27a 100644
--- a/app/views/projects/builds/_sidebar.html.haml
+++ b/app/views/projects/builds/_sidebar.html.haml
@@ -49,7 +49,7 @@
- if @build.duration
%p.build-detail-row
%span.build-light-text Duration:
- #{duration_in_words(@build.finished_at, @build.started_at)}
+ = time_interval_in_words(@build.duration)
- if @build.finished_at
%p.build-detail-row
%span.build-light-text Finished:
@@ -94,9 +94,9 @@
.block
.title
- Commit message
+ Commit title
%p.build-light-text.append-bottom-0
- #{@build.pipeline.git_commit_message}
+ #{@build.pipeline.git_commit_title}
- if @build.tags.any?
.block
diff --git a/app/views/projects/buttons/_download.html.haml b/app/views/projects/buttons/_download.html.haml
index 32f911f6b31..d135b448dd7 100644
--- a/app/views/projects/buttons/_download.html.haml
+++ b/app/views/projects/buttons/_download.html.haml
@@ -14,9 +14,9 @@
%li
= link_to archive_namespace_project_repository_path(@project.namespace, @project, ref: @ref, format: 'tar.gz'), rel: 'nofollow' do
%span Download tar.gz
- - pipeline = @project.latest_successful_pipeline_for(@ref).first
+ - pipeline = @project.pipelines.latest_successful_for(@ref).first
- if pipeline
- - artifacts = pipeline.builds.latest_successful_with_artifacts
+ - artifacts = pipeline.builds.latest.with_artifacts
- if artifacts.any?
%li.dropdown-header Artifacts
- unless pipeline.latest?
diff --git a/app/views/projects/buttons/_fork.html.haml b/app/views/projects/buttons/_fork.html.haml
index a9eaed4c5f6..a098a082854 100644
--- a/app/views/projects/buttons/_fork.html.haml
+++ b/app/views/projects/buttons/_fork.html.haml
@@ -2,7 +2,7 @@
- if current_user && can?(current_user, :fork_project, @project)
- if current_user.already_forked?(@project) && current_user.manageable_namespaces.size < 2
= link_to namespace_project_path(current_user, current_user.fork_of(@project)), title: 'Go to your fork', class: 'btn has-tooltip' do
- = icon('code-fork fw')
+ = custom_icon('icon_fork')
Fork
%div.count-with-arrow
%span.arrow
@@ -10,7 +10,7 @@
= @project.forks_count
- else
= link_to new_namespace_project_fork_path(@project.namespace, @project), title: "Fork project", class: 'btn has-tooltip' do
- = icon('code-fork fw')
+ = custom_icon('icon_fork')
Fork
%div.count-with-arrow
%span.arrow
diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml
index e1b42b2cfa5..9264289987d 100644
--- a/app/views/projects/ci/builds/_build.html.haml
+++ b/app/views/projects/ci/builds/_build.html.haml
@@ -39,6 +39,8 @@
%span.label.label-danger allowed to fail
- if defined?(retried) && retried
%span.label.label-warning retried
+ - if build.manual?
+ %span.label.label-info manual
- if defined?(runner) && runner
@@ -79,6 +81,11 @@
- if build.active?
= link_to cancel_namespace_project_build_path(build.project.namespace, build.project, build, return_to: request.original_url), method: :post, title: 'Cancel', class: 'btn btn-build' do
= icon('remove', class: 'cred')
- - elsif defined?(allow_retry) && allow_retry && build.retryable?
- = link_to retry_namespace_project_build_path(build.project.namespace, build.project, build, return_to: request.original_url), method: :post, title: 'Retry', class: 'btn btn-build' do
- = icon('repeat')
+ - elsif defined?(allow_retry) && allow_retry
+ - if build.retryable?
+ = link_to retry_namespace_project_build_path(build.project.namespace, build.project, build, return_to: request.original_url), method: :post, title: 'Retry', class: 'btn btn-build' do
+ = icon('repeat')
+ - elsif build.playable?
+ = link_to play_namespace_project_build_path(build.project.namespace, build.project, build, return_to: request.original_url), method: :post, title: 'Play', class: 'btn btn-build' do
+ = icon('play')
+
diff --git a/app/views/projects/ci/pipelines/_pipeline.html.haml b/app/views/projects/ci/pipelines/_pipeline.html.haml
index 0557d384e33..2f7d54f0bdd 100644
--- a/app/views/projects/ci/pipelines/_pipeline.html.haml
+++ b/app/views/projects/ci/pipelines/_pipeline.html.haml
@@ -10,12 +10,13 @@
= link_to namespace_project_pipeline_path(@project.namespace, @project, pipeline.id) do
%span ##{pipeline.id}
- if pipeline.ref
+ .icon-container
+ = pipeline.tag? ? icon('tag') : icon('code-fork')
= link_to pipeline.ref, namespace_project_commits_path(@project.namespace, @project, pipeline.ref), class: "monospace branch-name"
- = custom_icon("icon_commit")
+ .icon-container
+ = custom_icon("icon_commit")
= link_to pipeline.short_sha, namespace_project_commit_path(@project.namespace, @project, pipeline.sha), class: "commit-id monospace"
- - if pipeline.tag?
- %span.label.label-primary tag
- - elsif pipeline.latest?
+ - if pipeline.latest?
%span.label.label-success.has-tooltip{ title: 'Latest build for this branch' } latest
- if pipeline.triggered?
%span.label.label-primary triggered
@@ -26,7 +27,7 @@
%p.commit-title
- if commit = pipeline.commit
- = commit_author_avatar(commit, size: 20)
+ = author_avatar(commit, size: 20)
= link_to_gfm truncate(commit.title, length: 60), namespace_project_commit_path(@project.namespace, @project, commit.id), class: "commit-row-message"
- else
Cant find HEAD commit for this branch
@@ -34,7 +35,7 @@
- stages_status = pipeline.statuses.latest.stages_status
- stages.each do |stage|
- %td
+ %td.stage-cell
- status = stages_status[stage]
- tooltip = "#{stage.titleize}: #{status || 'not found'}"
- if status
@@ -57,18 +58,31 @@
%td.pipeline-actions
.controls.hidden-xs.pull-right
- artifacts = pipeline.builds.latest.select { |b| b.artifacts? }
- - if artifacts.present?
- .inline
- .btn-group
- %a.dropdown-toggle.btn.btn-default.build-artifacts{type: 'button', 'data-toggle' => 'dropdown'}
- = icon("download")
- %b.caret
- %ul.dropdown-menu.dropdown-menu-align-right
- - artifacts.each do |build|
- %li
- = link_to download_namespace_project_build_artifacts_path(@project.namespace, @project, build), rel: 'nofollow' do
- = icon("download")
- %span Download '#{build.name}' artifacts
+ - actions = pipeline.manual_actions
+ - if artifacts.present? || actions.any?
+ .btn-group.inline
+ - if actions.any?
+ .btn-group
+ %a.dropdown-toggle.btn.btn-default{type: 'button', 'data-toggle' => 'dropdown'}
+ = icon("play")
+ %b.caret
+ %ul.dropdown-menu.dropdown-menu-align-right
+ - actions.each do |build|
+ %li
+ = link_to play_namespace_project_build_path(@project.namespace, @project, build), method: :post, rel: 'nofollow' do
+ = icon("play")
+ %span= build.name.humanize
+ - if artifacts.present?
+ .btn-group
+ %a.dropdown-toggle.btn.btn-default.build-artifacts{type: 'button', 'data-toggle' => 'dropdown'}
+ = icon("download")
+ %b.caret
+ %ul.dropdown-menu.dropdown-menu-align-right
+ - artifacts.each do |build|
+ %li
+ = link_to download_namespace_project_build_artifacts_path(@project.namespace, @project, build), rel: 'nofollow' do
+ = icon("download")
+ %span Download '#{build.name}' artifacts
- if can?(current_user, :update_pipeline, @project)
.cancel-retry-btns.inline
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index c8c7b858baa..ab9afb06afb 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -9,7 +9,8 @@
= cache(cache_key) do
%li.commit.js-toggle-container{ id: "commit-#{commit.short_id}" }
- = commit_author_avatar(commit, size: 36)
+ = author_avatar(commit, size: 36)
+
.commit-info-block
.commit-row-title
%span.item-title
diff --git a/app/views/projects/deployments/_actions.haml b/app/views/projects/deployments/_actions.haml
new file mode 100644
index 00000000000..65d68aa2985
--- /dev/null
+++ b/app/views/projects/deployments/_actions.haml
@@ -0,0 +1,22 @@
+- if can?(current_user, :create_deployment, deployment) && deployment.deployable
+ .pull-right
+ - actions = deployment.manual_actions
+ - if actions.present?
+ .btn-group.inline
+ .btn-group
+ %a.dropdown-toggle.btn.btn-default{type: 'button', 'data-toggle' => 'dropdown'}
+ = icon("play")
+ %b.caret
+ %ul.dropdown-menu.dropdown-menu-align-right
+ - actions.each do |action|
+ %li
+ = link_to [:play, @project.namespace.becomes(Namespace), @project, action], method: :post, rel: 'nofollow' do
+ = icon("play")
+ %span= action.name.humanize
+
+ - if local_assigns.fetch(:allow_rollback, false)
+ = link_to [:retry, @project.namespace.becomes(Namespace), @project, deployment.deployable], method: :post, class: 'btn btn-build' do
+ - if deployment.last?
+ Retry
+ - else
+ Rollback
diff --git a/app/views/projects/deployments/_deployment.html.haml b/app/views/projects/deployments/_deployment.html.haml
index d08dd92f1f6..baf02f1e6a0 100644
--- a/app/views/projects/deployments/_deployment.html.haml
+++ b/app/views/projects/deployments/_deployment.html.haml
@@ -7,17 +7,11 @@
%td
- if deployment.deployable
- = link_to namespace_project_build_path(@project.namespace, @project, deployment.deployable) do
+ = link_to [@project.namespace.becomes(Namespace), @project, deployment.deployable] do
= "#{deployment.deployable.name} (##{deployment.deployable.id})"
%td
#{time_ago_with_tooltip(deployment.created_at)}
%td
- - if can?(current_user, :create_deployment, deployment) && deployment.deployable
- .pull-right
- = link_to retry_namespace_project_build_path(@project.namespace, @project, deployment.deployable), method: :post, class: 'btn btn-build' do
- - if deployment.last?
- Retry
- - else
- Rollback
+ = render 'projects/deployments/actions', deployment: deployment, allow_rollback: true
diff --git a/app/views/projects/diffs/_content.html.haml b/app/views/projects/diffs/_content.html.haml
index 0c0424edffd..a1b071f130c 100644
--- a/app/views/projects/diffs/_content.html.haml
+++ b/app/views/projects/diffs/_content.html.haml
@@ -8,12 +8,12 @@
- elsif blob_text_viewable?(blob)
- if !project.repository.diffable?(blob)
.nothing-here-block This diff was suppressed by a .gitattributes entry.
+ - elsif diff_file.collapsed?
+ - url = url_for(params.merge(action: :diff_for_path, old_path: diff_file.old_path, new_path: diff_file.new_path))
+ .nothing-here-block.diff-collapsed{data: { diff_for_path: url } }
+ This diff is collapsed. Click to expand it.
- elsif diff_file.diff_lines.length > 0
- - if diff_file.collapsed_by_default? && !expand_all_diffs?
- - url = url_for(params.merge(action: :diff_for_path, old_path: diff_file.old_path, new_path: diff_file.new_path))
- .nothing-here-block.diff-collapsed{data: { diff_for_path: url } }
- This diff is collapsed. Click to expand it.
- - elsif diff_view == 'parallel'
+ - if diff_view == 'parallel'
= render "projects/diffs/parallel_view", diff_file: diff_file, project: project, blob: blob
- else
= render "projects/diffs/text_file", diff_file: diff_file
diff --git a/app/views/projects/diffs/_diffs.html.haml b/app/views/projects/diffs/_diffs.html.haml
index 20aaab5accf..8ae433b4823 100644
--- a/app/views/projects/diffs/_diffs.html.haml
+++ b/app/views/projects/diffs/_diffs.html.haml
@@ -6,7 +6,7 @@
.content-block.oneline-block.files-changed
.inline-parallel-buttons
- - unless expand_all_diffs?
+ - if !expand_all_diffs? && diff_files.any? { |diff_file| diff_file.collapsed? }
= link_to 'Expand all', url_for(params.merge(expand_all_diffs: 1, format: 'html')), class: 'btn btn-default'
- if show_whitespace_toggle
- if current_controller?(:commit)
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 57af167180b..921155e970b 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -32,6 +32,10 @@
%strong
= visibility_level_label(@project.visibility_level)
.light= visibility_level_description(@project.visibility_level, @project)
+
+ .form-group
+ = render 'shared/allow_request_access', form: f
+
.form-group
= f.label :tag_list, "Tags", class: 'label-light'
= f.text_field :tag_list, value: @project.tag_list.to_s, maxlength: 2000, class: "form-control"
@@ -86,8 +90,6 @@
%hr
= render 'merge_request_settings', f: f
%hr
- = render 'builds_settings', f: f
- %hr
%fieldset.features.append-bottom-default
%h5.prepend-top-0
Project avatar
diff --git a/app/views/projects/environments/_environment.html.haml b/app/views/projects/environments/_environment.html.haml
index eafa246d05f..e2453395602 100644
--- a/app/views/projects/environments/_environment.html.haml
+++ b/app/views/projects/environments/_environment.html.haml
@@ -15,3 +15,6 @@
%td
- if last_deployment
#{time_ago_with_tooltip(last_deployment.created_at)}
+
+ %td
+ = render 'projects/deployments/actions', deployment: last_deployment
diff --git a/app/views/projects/environments/index.html.haml b/app/views/projects/environments/index.html.haml
index 303d7c23d01..a6dd34653ab 100644
--- a/app/views/projects/environments/index.html.haml
+++ b/app/views/projects/environments/index.html.haml
@@ -28,4 +28,5 @@
%th Environment
%th Last deployment
%th Date
+ %th
= render @environments
diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml
index b17aba2431f..b8b1ce52a91 100644
--- a/app/views/projects/environments/show.html.haml
+++ b/app/views/projects/environments/show.html.haml
@@ -5,7 +5,7 @@
%div{ class: container_class }
.top-area
.col-md-9
- %h3.page-title= @environment.name.titleize
+ %h3.page-title= @environment.name.capitalize
.col-md-3
.nav-controls
diff --git a/app/views/projects/forks/index.html.haml b/app/views/projects/forks/index.html.haml
index dbe9ddfde2f..a1d79bdabda 100644
--- a/app/views/projects/forks/index.html.haml
+++ b/app/views/projects/forks/index.html.haml
@@ -31,11 +31,11 @@
- if current_user && can?(current_user, :fork_project, @project)
- if current_user.already_forked?(@project) && current_user.manageable_namespaces.size < 2
= link_to namespace_project_path(current_user, current_user.fork_of(@project)), title: 'Go to your fork', class: 'btn btn-new' do
- = icon('code-fork fw')
+ = custom_icon('icon_fork')
Fork
- else
= link_to new_namespace_project_fork_path(@project.namespace, @project), title: "Fork project", class: 'btn btn-new' do
- = icon('code-fork fw')
+ = custom_icon('icon_fork')
Fork
diff --git a/app/views/projects/forks/new.html.haml b/app/views/projects/forks/new.html.haml
index 73a7fc0e1ac..5242bc72b71 100644
--- a/app/views/projects/forks/new.html.haml
+++ b/app/views/projects/forks/new.html.haml
@@ -1,45 +1,54 @@
- page_title "Fork project"
-- if @namespaces.present?
- %h3.page-title Fork project
- %p.lead
- Click to fork the project to a user or group
- %hr
- .fork-namespaces
- - @namespaces.in_groups_of(6, false) do |group|
- .row
- - group.each do |namespace|
- .col-md-2.col-sm-3
- - if fork = namespace.find_fork_of(@project)
- .fork-thumbnail
- = link_to project_path(fork), title: "Visit project fork", class: 'has-tooltip' do
- = image_tag namespace_icon(namespace, 100)
- .caption
- %strong
- = namespace.human_name
- %div.text-primary
- Already forked
-
- - else
- .fork-thumbnail
- = link_to namespace_project_forks_path(@project.namespace, @project, namespace_key: namespace.id), title: "Fork here", method: "POST", class: 'has-tooltip' do
- = image_tag namespace_icon(namespace, 100)
- .caption
- %strong
- = namespace.human_name
-
- %p.light
- Fork is a copy of a project repository.
+.row.prepend-top-default
+ .col-lg-3
+ %h4.prepend-top-0
+ Fork project
+ %p
+ A fork is a copy of a project.
%br
- Forking a repository allows you to do changes without affecting the original project.
-- else
- %h3 No available namespaces to fork the project
- %p.slead
- You must have permission to create a project in a namespace before forking.
+ Forking a repository allows you to make changes without affecting the original project.
+ .col-lg-9
+ .fork-namespaces
+ - if @namespaces.present?
+ %label.label-light
+ %span
+ Click to fork the project to a user or group
+ - @namespaces.in_groups_of(6, false) do |group|
+ .row
+ - group.each do |namespace|
+ - avatar = namespace_icon(namespace, 100)
+ - if fork = namespace.find_fork_of(@project)
+ .fork-thumbnail.forked
+ = link_to project_path(fork) do
+ - if /no_((\w*)_)*avatar/.match(avatar)
+ .no-avatar
+ = icon 'question'
+ - else
+ = image_tag avatar
+ .caption
+ = namespace.human_name
+ - else
+ .fork-thumbnail
+ = link_to namespace_project_forks_path(@project.namespace, @project, namespace_key: namespace.id), method: "POST" do
+ - if /no_((\w*)_)*avatar/.match(avatar)
+ .no-avatar
+ = icon 'question'
+ - else
+ = image_tag avatar
+ .caption
+ = namespace.human_name
+ - else
+ %label.label-light
+ %span
+ No available namespaces to fork the project.
+ %br
+ %small
+ You must have permission to create a project in a namespace before forking.
-.save-project-loader.hide
- .center
- %h2
- %i.fa.fa-spinner.fa-spin
- Forking repository
- %p Please wait a moment, this page will automatically refresh when ready.
+ .save-project-loader.hide
+ .center
+ %h2
+ %i.fa.fa-spinner.fa-spin
+ Forking repository
+ %p Please wait a moment, this page will automatically refresh when ready.
diff --git a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
index 542827b2f15..331dc1fcc29 100644
--- a/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
+++ b/app/views/projects/generic_commit_statuses/_generic_commit_status.html.haml
@@ -51,7 +51,7 @@
%td.duration
- if generic_commit_status.duration
= icon("clock-o")
- #{duration_in_words(generic_commit_status.finished_at, generic_commit_status.started_at)}
+ = time_interval_in_words(generic_commit_status.duration)
%td.timestamp
- if generic_commit_status.finished_at
diff --git a/app/views/projects/graphs/_head.html.haml b/app/views/projects/graphs/_head.html.haml
index ca347406dfe..45e51389c00 100644
--- a/app/views/projects/graphs/_head.html.haml
+++ b/app/views/projects/graphs/_head.html.haml
@@ -3,7 +3,7 @@
- content_for :page_specific_javascripts do
= page_specific_javascript_tag('lib/chart.js')
- = page_specific_javascript_tag('graphs/application.js')
+ = page_specific_javascript_tag('graphs/graphs_bundle.js')
= nav_link(action: :show) do
= link_to 'Contributors', namespace_project_graph_path
= nav_link(action: :commits) do
diff --git a/app/views/projects/merge_requests/widget/open/_conflicts.html.haml b/app/views/projects/merge_requests/widget/open/_conflicts.html.haml
index 06ab0a3fa00..f000cc38a65 100644
--- a/app/views/projects/merge_requests/widget/open/_conflicts.html.haml
+++ b/app/views/projects/merge_requests/widget/open/_conflicts.html.haml
@@ -4,7 +4,7 @@
%p
Please resolve these conflicts or
- - if @merge_request.can_be_merged_by?(current_user)
+ - if @merge_request.can_be_merged_via_command_line_by?(current_user)
#{link_to "merge this request manually", "#modal_merge_info", class: "how_to_merge_link vlink", "data-toggle" => "modal"}.
- else
ask someone with write access to this repository to merge this request manually.
diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml
index 091af4df4a1..b2ece44d966 100644
--- a/app/views/projects/network/show.html.haml
+++ b/app/views/projects/network/show.html.haml
@@ -1,7 +1,7 @@
- page_title "Network", @ref
- content_for :page_specific_javascripts do
= page_specific_javascript_tag('lib/raphael.js')
- = page_specific_javascript_tag('network/application.js')
+ = page_specific_javascript_tag('network/network_bundle.js')
= render "projects/commits/head"
= render "head"
%div{ class: container_class }
diff --git a/app/views/projects/notes/_notes_with_form.html.haml b/app/views/projects/notes/_notes_with_form.html.haml
index 56d302fab82..74538a9723e 100644
--- a/app/views/projects/notes/_notes_with_form.html.haml
+++ b/app/views/projects/notes/_notes_with_form.html.haml
@@ -14,9 +14,9 @@
.disabled-comment.text-center
.disabled-comment-text.inline
Please
- = link_to "register",new_user_session_path
+ = link_to "register", new_session_path(:user, redirect_to_referer: 'yes')
or
- = link_to "login",new_user_session_path
+ = link_to "login", new_session_path(:user, redirect_to_referer: 'yes')
to post a comment
:javascript
diff --git a/app/views/projects/pipelines_settings/show.html.haml b/app/views/projects/pipelines_settings/show.html.haml
new file mode 100644
index 00000000000..228bad36ebd
--- /dev/null
+++ b/app/views/projects/pipelines_settings/show.html.haml
@@ -0,0 +1,103 @@
+- page_title "CI/CD Pipelines"
+
+.row.prepend-top-default
+ .col-lg-3.profile-settings-sidebar
+ %h4.prepend-top-0
+ = page_title
+ .col-lg-9
+ %h5.prepend-top-0
+ Pipelines
+ = form_for @project, url: namespace_project_pipelines_settings_path(@project.namespace.becomes(Namespace), @project), remote: true, authenticity_token: true do |f|
+ %fieldset.builds-feature
+ - unless @repository.gitlab_ci_yml
+ .form-group
+ %p Pipelines need to be configured before you can begin using Continuous Integration.
+ = link_to 'Get started with CI/CD Pipelines', help_page_path('ci/quick_start/README'), class: 'btn btn-info'
+ .form-group
+ %p Get recent application code using the following command:
+ .radio
+ = f.label :build_allow_git_fetch_false do
+ = f.radio_button :build_allow_git_fetch, 'false'
+ %strong git clone
+ %br
+ %span.descr Slower but makes sure you have a clean dir before every build
+ .radio
+ = f.label :build_allow_git_fetch_true do
+ = f.radio_button :build_allow_git_fetch, 'true'
+ %strong git fetch
+ %br
+ %span.descr Faster
+
+ .form-group
+ = f.label :build_timeout_in_minutes, 'Timeout', class: 'label-light'
+ = f.number_field :build_timeout_in_minutes, class: 'form-control', min: '0'
+ %p.help-block per build in minutes
+ .form-group
+ = f.label :build_coverage_regex, "Test coverage parsing", class: 'label-light'
+ .input-group
+ %span.input-group-addon /
+ = f.text_field :build_coverage_regex, class: 'form-control', placeholder: '\(\d+.\d+\%\) covered'
+ %span.input-group-addon /
+ %p.help-block
+ We will use this regular expression to find test coverage output in build trace.
+ Leave blank if you want to disable this feature
+ .bs-callout.bs-callout-info
+ %p Below are examples of regex for existing tools:
+ %ul
+ %li
+ Simplecov (Ruby) -
+ %code \(\d+.\d+\%\) covered
+ %li
+ pytest-cov (Python) -
+ %code \d+\%\s*$
+ %li
+ phpunit --coverage-text --colors=never (PHP) -
+ %code ^\s*Lines:\s*\d+.\d+\%
+ %li
+ gcovr (C/C++) -
+ %code ^TOTAL.*\s+(\d+\%)$
+ %li
+ tap --coverage-report=text-summary (Node.js) -
+ %code ^Statements\s*:\s*([^%]+)
+
+ .form-group
+ .checkbox
+ = f.label :public_builds do
+ = f.check_box :public_builds
+ %strong Public pipelines
+ .help-block Allow everyone to access pipelines for Public and Internal projects
+
+ .form-group.append-bottom-default
+ = f.label :runners_token, "Runners token", class: 'label-light'
+ = f.text_field :runners_token, class: "form-control", placeholder: 'xEeFCaDAB89'
+ %p.help-block The secure token used to checkout project.
+
+ = f.submit 'Save changes', class: "btn btn-save"
+
+%hr
+
+.row.prepend-top-default
+ .col-lg-3.profile-settings-sidebar
+ %h4.prepend-top-0
+ Builds Badge
+ .col-lg-9
+ .prepend-top-10
+ .panel.panel-default
+ .panel-heading
+ %b Builds badge &middot;
+ = @build_badge.to_html
+ .pull-right
+ = render 'shared/ref_switcher', destination: 'badges', align_right: true
+ .panel-body
+ .row
+ .col-md-2.text-center
+ Markdown
+ .col-md-10.code.js-syntax-highlight
+ = highlight('.md', @build_badge.to_markdown)
+ .row
+ %hr
+ .row
+ .col-md-2.text-center
+ HTML
+ .col-md-10.code.js-syntax-highlight
+ = highlight('.html', @build_badge.to_html)
diff --git a/app/views/projects/protected_branches/_branches_list.html.haml b/app/views/projects/protected_branches/_branches_list.html.haml
index 97cb1a9052b..720d67dff7c 100644
--- a/app/views/projects/protected_branches/_branches_list.html.haml
+++ b/app/views/projects/protected_branches/_branches_list.html.haml
@@ -8,6 +8,7 @@
.table-responsive
%table.table.protected-branches-list
%colgroup
+ %col{ width: "20%" }
%col{ width: "30%" }
%col{ width: "25%" }
%col{ width: "25%" }
@@ -18,6 +19,7 @@
%th Protected Branch
%th Commit
%th Developers Can Push
+ %th Developers Can Merge
- if can_admin_project
%th
%tbody
diff --git a/app/views/projects/protected_branches/_protected_branch.html.haml b/app/views/projects/protected_branches/_protected_branch.html.haml
index 474aec3a97c..7fda7f96047 100644
--- a/app/views/projects/protected_branches/_protected_branch.html.haml
+++ b/app/views/projects/protected_branches/_protected_branch.html.haml
@@ -16,6 +16,8 @@
(branch was removed from repository)
%td
= check_box_tag("developers_can_push", protected_branch.id, protected_branch.developers_can_push, data: { url: url })
+ %td
+ = check_box_tag("developers_can_merge", protected_branch.id, protected_branch.developers_can_merge, data: { url: url })
- if can_admin_project
%td
= link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_branch], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: "btn btn-warning btn-sm pull-right"
diff --git a/app/views/projects/protected_branches/index.html.haml b/app/views/projects/protected_branches/index.html.haml
index 883d3e3af1e..151e1d64851 100644
--- a/app/views/projects/protected_branches/index.html.haml
+++ b/app/views/projects/protected_branches/index.html.haml
@@ -36,6 +36,14 @@
= f.label :developers_can_push, "Developers can push", class: "label-light append-bottom-0"
%p.light.append-bottom-0
Allow developers to push to this branch
+
+ .form-group
+ = f.check_box :developers_can_merge, class: "pull-left"
+ .prepend-left-20
+ = f.label :developers_can_merge, "Developers can merge", class: "label-light append-bottom-0"
+ %p.light.append-bottom-0
+ Allow developers to accept merge requests to this branch
= f.submit "Protect", class: "btn-create btn protect-branch-btn", disabled: true
+
%hr
= render "branches_list"
diff --git a/app/views/projects/repositories/_download_archive.html.haml b/app/views/projects/repositories/_download_archive.html.haml
index e29d99371c8..183daebfc3a 100644
--- a/app/views/projects/repositories/_download_archive.html.haml
+++ b/app/views/projects/repositories/_download_archive.html.haml
@@ -25,9 +25,9 @@
= link_to archive_namespace_project_repository_path(@project.namespace, @project, ref: ref, format: 'tar'), rel: 'nofollow' do
%i.fa.fa-download
%span Download tar
- - pipeline = @project.latest_successful_pipeline_for(ref).first
+ - pipeline = @project.pipelines.latest_successful_for(ref).first
- if pipeline
- - artifacts = pipeline.builds.latest_successful_with_artifacts
+ - artifacts = pipeline.builds.latest.with_artifacts
- if artifacts.any?
%li.dropdown-header Artifacts
- unless pipeline.latest?
diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml
index 1f13ea28b4e..752fbc21a11 100644
--- a/app/views/projects/services/_form.html.haml
+++ b/app/views/projects/services/_form.html.haml
@@ -8,9 +8,10 @@
.col-lg-9
= form_for(@service, as: :service, url: namespace_project_service_path(@project.namespace, @project, @service.to_param), method: :put, html: { class: 'form-horizontal' }) do |form|
= render 'shared/service_settings', form: form
+
= form.submit 'Save changes', class: 'btn btn-save'
&nbsp;
- if @service.valid? && @service.activated?
- disabled = @service.can_test? ? '':'disabled'
- = link_to 'Test settings', test_namespace_project_service_path(@project.namespace, @project, @service.to_param), class: "btn #{disabled}"
+ = link_to 'Test settings', test_namespace_project_service_path(@project.namespace, @project, @service), class: "btn #{disabled}", title: @service.disabled_title
= link_to "Cancel", namespace_project_services_path(@project.namespace, @project), class: "btn btn-cancel"
diff --git a/app/views/projects/tags/_download.html.haml b/app/views/projects/tags/_download.html.haml
index 8acf145049a..bb2e5224306 100644
--- a/app/views/projects/tags/_download.html.haml
+++ b/app/views/projects/tags/_download.html.haml
@@ -12,9 +12,9 @@
%li
= link_to archive_namespace_project_repository_path(project.namespace, project, ref: ref, format: 'tar.gz'), rel: 'nofollow' do
%span Download tar.gz
- - pipeline = project.latest_successful_pipeline_for(ref).first
+ - pipeline = project.pipelines.latest_successful_for(ref).first
- if pipeline
- - artifacts = pipeline.builds.latest_successful_with_artifacts
+ - artifacts = pipeline.builds.latest.with_artifacts
- if artifacts.any?
%li.dropdown-header Artifacts
- unless pipeline.latest?
diff --git a/app/views/projects/tags/show.html.haml b/app/views/projects/tags/show.html.haml
index b7d7d5c5382..395d7af6cbb 100644
--- a/app/views/projects/tags/show.html.haml
+++ b/app/views/projects/tags/show.html.haml
@@ -1,36 +1,39 @@
+- @no_container = true
- page_title @tag.name, "Tags"
= render "projects/commits/head"
-.row-content-block
- .pull-right
- - if can?(current_user, :push_code, @project)
- = link_to edit_namespace_project_tag_release_path(@project.namespace, @project, @tag.name), class: 'btn-grouped btn has-tooltip', title: 'Edit release notes' do
- = icon("pencil")
- = link_to namespace_project_tree_path(@project.namespace, @project, @tag.name), class: 'btn btn-grouped has-tooltip', title: 'Browse files' do
- = icon('files-o')
- = link_to namespace_project_commits_path(@project.namespace, @project, @tag.name), class: 'btn btn-grouped has-tooltip', title: 'Browse commits' do
- = icon('history')
- - if can? current_user, :download_code, @project
- = render 'projects/tags/download', ref: @tag.name, project: @project
- - if can?(current_user, :admin_project, @project)
- .pull-right
- = link_to namespace_project_tag_path(@project.namespace, @project, @tag.name), class: 'btn btn-remove remove-row grouped has-tooltip', title: "Delete tag", method: :delete, data: { confirm: "Deleting the '#{@tag.name}' tag cannot be undone. Are you sure?" } do
- %i.fa.fa-trash-o
- .title
- %span.item-title= @tag.name
- - if @commit
- = render 'projects/branches/commit', commit: @commit, project: @project
- - else
- Cant find HEAD commit for this tag
- - if @tag.message.present?
- %pre.body
- = strip_gpg_signature(@tag.message)
+%div{ class: container_class }
+ .sub-header-block
+ .pull-right.tag-buttons
+ - if can?(current_user, :push_code, @project)
+ = link_to edit_namespace_project_tag_release_path(@project.namespace, @project, @tag.name), class: 'btn has-tooltip', title: 'Edit release notes' do
+ = icon("pencil")
+ = link_to namespace_project_tree_path(@project.namespace, @project, @tag.name), class: 'btn has-tooltip', title: 'Browse files' do
+ = icon('files-o')
+ = link_to namespace_project_commits_path(@project.namespace, @project, @tag.name), class: 'btn has-tooltip', title: 'Browse commits' do
+ = icon('history')
+ - if can? current_user, :download_code, @project
+ = render 'projects/tags/download', ref: @tag.name, project: @project
+ - if can?(current_user, :admin_project, @project)
+ .pull-right
+ = link_to namespace_project_tag_path(@project.namespace, @project, @tag.name), class: 'btn btn-remove remove-row grouped has-tooltip', title: "Delete tag", method: :delete, data: { confirm: "Deleting the '#{@tag.name}' tag cannot be undone. Are you sure?" } do
+ %i.fa.fa-trash-o
+ .tag-info.append-bottom-10
+ .title
+ %span.item-title= @tag.name
+ - if @commit
+ = render 'projects/branches/commit', commit: @commit, project: @project
+ - else
+ Cant find HEAD commit for this tag
+ - if @tag.message.present?
+ %pre.body
+ = strip_gpg_signature(@tag.message)
-.append-bottom-default.prepend-top-default
- - if @release.description.present?
- .description
- .wiki
- = preserve do
- = markdown @release.description
- - else
- This tag has no release notes.
+ .append-bottom-default.prepend-top-default
+ - if @release.description.present?
+ .description
+ .wiki
+ = preserve do
+ = markdown @release.description
+ - else
+ This tag has no release notes.
diff --git a/app/views/shared/_allow_request_access.html.haml b/app/views/shared/_allow_request_access.html.haml
new file mode 100644
index 00000000000..53a99a736c0
--- /dev/null
+++ b/app/views/shared/_allow_request_access.html.haml
@@ -0,0 +1,6 @@
+.checkbox
+ = form.label :request_access_enabled do
+ = form.check_box :request_access_enabled
+ %strong Allow users to request access
+ %br
+ %span.descr Allow users to request access if visibility is public or internal.
diff --git a/app/views/shared/_service_settings.html.haml b/app/views/shared/_service_settings.html.haml
index 4eaf7c2a025..5254d265918 100644
--- a/app/views/shared/_service_settings.html.haml
+++ b/app/views/shared/_service_settings.html.haml
@@ -10,69 +10,28 @@
.col-sm-10
= form.check_box :active
-- if @service.supported_events.length > 1
- .form-group
- = form.label :url, "Trigger", class: 'control-label'
- .col-sm-10
- - if @service.supported_events.include?("push")
- %div
- = form.check_box :push_events, class: 'pull-left'
- .prepend-left-20
- = form.label :push_events, class: 'list-label' do
- %strong Push events
- %p.light
- This url will be triggered by a push to the repository
- - if @service.supported_events.include?("tag_push")
- %div
- = form.check_box :tag_push_events, class: 'pull-left'
- .prepend-left-20
- = form.label :tag_push_events, class: 'list-label' do
- %strong Tag push events
- %p.light
- This url will be triggered when a new tag is pushed to the repository
- - if @service.supported_events.include?("note")
- %div
- = form.check_box :note_events, class: 'pull-left'
- .prepend-left-20
- = form.label :note_events, class: 'list-label' do
- %strong Comments
- %p.light
- This url will be triggered when someone adds a comment
- - if @service.supported_events.include?("issue")
- %div
- = form.check_box :issues_events, class: 'pull-left'
- .prepend-left-20
- = form.label :issues_events, class: 'list-label' do
- %strong Issues events
- %p.light
- This url will be triggered when an issue is created/updated/merged
- - if @service.supported_events.include?("merge_request")
- %div
- = form.check_box :merge_requests_events, class: 'pull-left'
- .prepend-left-20
- = form.label :merge_requests_events, class: 'list-label' do
- %strong Merge Request events
- %p.light
- This url will be triggered when a merge request is created/updated/merged
- - if @service.supported_events.include?("build")
- %div
- = form.check_box :build_events, class: 'pull-left'
- .prepend-left-20
- = form.label :build_events, class: 'list-label' do
- %strong Build events
- %p.light
- This url will be triggered when a build status changes
- - if @service.supported_events.include?("wiki_page")
- %div
- = form.check_box :wiki_page_events, class: 'pull-left'
- .prepend-left-20
- = form.label :wiki_page_events, class: 'list-label' do
- %strong Wiki Page events
- %p.light
- This url will be triggered when a wiki page is created/updated
+.form-group
+ = form.label :url, "Trigger", class: 'control-label'
+
+ .col-sm-10
+ - @service.supported_events.each do |event|
+ %div
+ = form.check_box service_event_field_name(event), class: 'pull-left'
+ .prepend-left-20
+ = form.label service_event_field_name(event), class: 'list-label' do
+ %strong
+ = event.humanize
+
+ - field = @service.event_field(event)
+
+ - if field
+ %p
+ = form.text_field field[:name], class: "form-control", placeholder: field[:placeholder]
+ %p.light
+ = service_event_description(event)
-- @service.fields.each do |field|
+- @service.global_fields.each do |field|
- type = field[:type]
- if type == 'fieldset'
diff --git a/app/views/shared/icons/_icon_fork.svg b/app/views/shared/icons/_icon_fork.svg
new file mode 100644
index 00000000000..420ffe3a55b
--- /dev/null
+++ b/app/views/shared/icons/_icon_fork.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><circle id="a" cx="4" cy="4" r="4"/><mask id="d" width="8" height="8" x="0" y="0" fill="#fff"><use xlink:href="#a"/></mask><circle id="b" cx="20" cy="4" r="4"/><mask id="e" width="8" height="8" x="0" y="0" fill="#fff"><use xlink:href="#b"/></mask><circle id="c" cx="12" cy="30" r="4"/><mask id="f" width="8" height="8" x="0" y="0" fill="#fff"><use xlink:href="#c"/></mask></defs><g fill="none" fill-rule="evenodd" transform="translate(8 3)"><path fill="#7E7E7E" d="M10 19.667c-4.14-1.29-7.389-5.878-7.389-5.878C2.274 13.353 2 12.545 2 12.01V6h4v5.509c0 .276.166.65.367.831 0 0 1.136 1.028 1.746 1.574C9.617 15.261 11.048 16 12.09 16c1.028 0 2.41-.723 3.858-2.048.588-.54 1.84-1.742 1.84-1.742a.784.784 0 0 0 .211-.502V6h4v6.008c0 .548-.259 1.349-.601 1.795 0 0-3.21 4.707-7.399 5.916V27h-4v-7.333z"/><use stroke="#7E7E7E" stroke-width="4" mask="url(#d)" xlink:href="#a"/><use stroke="#7E7E7E" stroke-width="4" mask="url(#e)" xlink:href="#b"/><use stroke="#7E7E7E" stroke-width="4" mask="url(#f)" xlink:href="#c"/></g></svg> \ No newline at end of file
diff --git a/app/views/shared/icons/_icon_status_cancel.svg b/app/views/shared/icons/_icon_status_cancel.svg
new file mode 100644
index 00000000000..6a0bc1490c4
--- /dev/null
+++ b/app/views/shared/icons/_icon_status_cancel.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <circle id="a" cx="7" cy="7" r="7"/>
+ <mask id="b" width="14" height="14" x="0" y="0" fill="white">
+ <use xlink:href="#a"/>
+ </mask>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <use stroke="#5C5C5C" stroke-width="2" mask="url(#b)" xlink:href="#a"/>
+ <rect width="10" height="1" x="2" y="6.5" fill="#5C5C5C" transform="rotate(45 7 7)" rx=".3"/>
+ </g>
+</svg>
diff --git a/app/views/shared/icons/_icon_status_failed.svg b/app/views/shared/icons/_icon_status_failed.svg
new file mode 100644
index 00000000000..c41ca18cae7
--- /dev/null
+++ b/app/views/shared/icons/_icon_status_failed.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <circle id="a" cx="7" cy="7" r="7"/>
+ <mask id="b" width="14" height="14" x="0" y="0" fill="white">
+ <use xlink:href="#a"/>
+ </mask>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <use stroke="#D22852" stroke-width="2" mask="url(#b)" xlink:href="#a"/>
+ <path fill="#D22852" d="M7.5,6.5 L7.5,4.30578971 C7.5,4.12531853 7.36809219,4 7.20537567,4 L6.79462433,4 C6.63904572,4 6.5,4.13690672 6.5,4.30578971 L6.5,6.5 L4.30578971,6.5 C4.12531853,6.5 4,6.63190781 4,6.79462433 L4,7.20537567 C4,7.36095428 4.13690672,7.5 4.30578971,7.5 L6.5,7.5 L6.5,9.69421029 C6.5,9.87468147 6.63190781,10 6.79462433,10 L7.20537567,10 C7.36095428,10 7.5,9.86309328 7.5,9.69421029 L7.5,7.5 L9.69421029,7.5 C9.87468147,7.5 10,7.36809219 10,7.20537567 L10,6.79462433 C10,6.63904572 9.86309328,6.5 9.69421029,6.5 L7.5,6.5 Z" transform="rotate(45 7 7)"/>
+ </g>
+</svg>
diff --git a/app/views/shared/icons/_icon_status_pending.svg b/app/views/shared/icons/_icon_status_pending.svg
new file mode 100644
index 00000000000..035cd8b4ccc
--- /dev/null
+++ b/app/views/shared/icons/_icon_status_pending.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <circle id="a" cx="7" cy="7" r="7"/>
+ <mask id="b" width="14" height="14" x="0" y="0" fill="white">
+ <use xlink:href="#a"/>
+ </mask>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <use stroke="#E75E40" stroke-width="2" mask="url(#b)" xlink:href="#a"/>
+ <rect width="1" height="4" x="5" y="5" fill="#E75E40" rx=".3"/>
+ <rect width="1" height="4" x="8" y="5" fill="#E75E40" rx=".3"/>
+ </g>
+</svg>
diff --git a/app/views/shared/icons/_icon_status_running.svg b/app/views/shared/icons/_icon_status_running.svg
new file mode 100644
index 00000000000..a48b3a25099
--- /dev/null
+++ b/app/views/shared/icons/_icon_status_running.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <circle id="a" cx="7" cy="7" r="7"/>
+ <mask id="b" width="14" height="14" x="0" y="0" fill="white">
+ <use xlink:href="#a"/>
+ </mask>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <use stroke="#2D9FD8" stroke-width="2" mask="url(#b)" xlink:href="#a"/>
+ <path fill="#2D9FD8" d="M7,3.00800862 C9.09023405,3.13960661 10.7448145,4.87657932 10.7448145,7 C10.7448145,9.209139 8.95395346,11 6.74481446,11 C5.4560962,11 4.30972054,10.3905589 3.57817301,9.44416214 L7,7 L7,3.00800862 Z"/>
+ </g>
+</svg>
diff --git a/app/views/shared/icons/_icon_status_success.svg b/app/views/shared/icons/_icon_status_success.svg
new file mode 100644
index 00000000000..260eab013a3
--- /dev/null
+++ b/app/views/shared/icons/_icon_status_success.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <circle id="a" cx="7" cy="7" r="7"/>
+ <mask id="b" width="14" height="14" x="0" y="0" fill="white">
+ <use xlink:href="#a"/>
+ </mask>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <use stroke="#31AF64" stroke-width="2" mask="url(#b)" xlink:href="#a"/>
+ <g fill="#31AF64" transform="rotate(45 -.13 10.953)">
+ <rect width="1" height="5" x="2" rx=".3"/>
+ <rect width="3" height="1" y="4" rx=".3"/>
+ </g>
+ </g>
+</svg>
diff --git a/app/views/shared/icons/_icon_status_warning.svg b/app/views/shared/icons/_icon_status_warning.svg
new file mode 100644
index 00000000000..d47e7a1c93f
--- /dev/null
+++ b/app/views/shared/icons/_icon_status_warning.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <circle id="a" cx="7" cy="7" r="7"/>
+ <mask id="b" width="14" height="14" x="0" y="0" fill="white">
+ <use xlink:href="#a"/>
+ </mask>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <g fill="#FF8A24" transform="translate(6 3)">
+ <rect width="2" height="5" rx=".5"/>
+ <rect width="2" height="2" y="6" rx=".5"/>
+ </g>
+ <use stroke="#FF8A24" stroke-width="2" mask="url(#b)" xlink:href="#a"/>
+ </g>
+</svg>
diff --git a/app/views/shared/issuable/_filter.html.haml b/app/views/shared/issuable/_filter.html.haml
index 094d6636c66..0b7fa8c7d06 100644
--- a/app/views/shared/issuable/_filter.html.haml
+++ b/app/views/shared/issuable/_filter.html.haml
@@ -44,9 +44,15 @@
placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: "update[assignee_id]" } })
.filter-item.inline
= dropdown_tag("Milestone", options: { title: "Assign milestone", toggle_class: 'js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update', filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), use_id: true } })
-
.filter-item.inline.labels-filter
= render "shared/issuable/label_dropdown", classes: ['js-filter-bulk-update', 'js-multiselect'], show_create: false, show_footer: false, extra_options: false, filter_submit: false, show_footer: false, data_options: { persist_when_hide: "true", field_name: "update[label_ids][]", show_no: false, show_any: false, use_id: true }
+ .filter-item.inline
+ = dropdown_tag("Subscription", options: { toggle_class: "js-subscription-event", title: "Change subscription", dropdown_class: "dropdown-menu-selectable", data: { field_name: "update[subscription_event]" } } ) do
+ %ul
+ %li
+ %a{href: "#", data: {id: "subscribe"}} Subscribe
+ %li
+ %a{href: "#", data: {id: "unsubscribe"}} Unsubscribe
= hidden_field_tag 'update[issues_ids]', []
= hidden_field_tag :state_event, params[:state_event]
@@ -63,6 +69,7 @@
new LabelsSelect();
new MilestoneSelect();
new IssueStatusSelect();
+ new SubscriptionSelect();
$('form.filter-form').on('submit', function (event) {
event.preventDefault();
Turbolinks.visit(this.action + '&' + $(this).serialize());
diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml
index db2b4885861..c7f39868e71 100644
--- a/app/views/users/show.html.haml
+++ b/app/views/users/show.html.haml
@@ -2,7 +2,7 @@
- page_description @user.bio
- content_for :page_specific_javascripts do
= page_specific_javascript_tag('lib/d3.js')
- = page_specific_javascript_tag('users/application.js')
+ = page_specific_javascript_tag('users/users_bundle.js')
- header_title @user.name, user_path(@user)
- @no_container = true
diff --git a/config/application.rb b/config/application.rb
index 5f7b6a3c049..06ebb14a5fe 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -76,15 +76,15 @@ module Gitlab
# Enable the asset pipeline
config.assets.enabled = true
- config.assets.paths << Gemojione.index.images_path
+ config.assets.paths << Gemojione.images_path
config.assets.precompile << "*.png"
config.assets.precompile << "print.css"
config.assets.precompile << "notify.css"
config.assets.precompile << "mailers/*.css"
- config.assets.precompile << "graphs/application.js"
- config.assets.precompile << "users/application.js"
- config.assets.precompile << "network/application.js"
- config.assets.precompile << "profile/application.js"
+ config.assets.precompile << "graphs/graphs_bundle.js"
+ config.assets.precompile << "users/users_bundle.js"
+ config.assets.precompile << "network/network_bundle.js"
+ config.assets.precompile << "profile/profile_bundle.js"
config.assets.precompile << "lib/utils/*.js"
config.assets.precompile << "lib/*.js"
config.assets.precompile << "u2f.js"
diff --git a/config/initializers/relative_naming_ci_namespace.rb b/config/initializers/relative_naming_ci_namespace.rb
new file mode 100644
index 00000000000..59abe1b9b91
--- /dev/null
+++ b/config/initializers/relative_naming_ci_namespace.rb
@@ -0,0 +1,16 @@
+# Description: https://coderwall.com/p/heed_q/rails-routing-and-namespaced-models
+#
+# This allows us to use CI ActiveRecord objects in all routes and use it:
+# - [project.namespace, project, build]
+#
+# instead of:
+# - namespace_project_build_path(project.namespace, project, build)
+#
+# Without that, Ci:: namespace is used for resolving routes:
+# - namespace_project_ci_build_path(project.namespace, project, build)
+
+module Ci
+ def self.use_relative_model_naming?
+ true
+ end
+end
diff --git a/config/initializers/secure_headers.rb b/config/initializers/secure_headers.rb
new file mode 100644
index 00000000000..253e3cf7410
--- /dev/null
+++ b/config/initializers/secure_headers.rb
@@ -0,0 +1,99 @@
+# CSP headers have to have single quotes, so failures relating to quotes
+# inside Ruby string arrays are irrelevant.
+# rubocop:disable Lint/PercentStringArray
+require 'gitlab/current_settings'
+include Gitlab::CurrentSettings
+
+CSP_REPORT_URI = ''
+
+# Content Security Policy Headers
+# For more information on CSP see:
+# - https://gitlab.com/gitlab-org/gitlab-ce/issues/18231
+# - https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives
+SecureHeaders::Configuration.default do |config|
+ # Mark all cookies as "Secure", "HttpOnly", and "SameSite=Strict".
+ config.cookies = {
+ secure: true,
+ httponly: true,
+ samesite: {
+ strict: true
+ }
+ }
+ config.x_content_type_options = "nosniff"
+ config.x_xss_protection = "1; mode=block"
+ config.x_download_options = "noopen"
+ config.x_permitted_cross_domain_policies = "none"
+ config.referrer_policy = "origin-when-cross-origin"
+ config.csp = {
+ # "Meta" values.
+ report_only: true,
+ preserve_schemes: true,
+
+ # "Directive" values.
+ # Default source allows nothing, more permissive values are set per-policy.
+ default_src: %w('none'),
+ # (Deprecated) Don't allow iframes.
+ frame_src: %w('none'),
+ # Only allow XMLHTTPRequests from the GitLab instance itself.
+ connect_src: %w('self'),
+ # Only load local fonts.
+ font_src: %w('self'),
+ # Load local images, any external image available over HTTPS.
+ img_src: %w(* 'self' data:),
+ # Audio and video can't be played on GitLab currently, so it's disabled.
+ media_src: %w('none'),
+ # Don't allow <object>, <embed>, or <applet> elements.
+ object_src: %w('none'),
+ # Allow local scripts and inline scripts.
+ script_src: %w('unsafe-inline' 'unsafe-eval' 'self'),
+ # Allow local stylesheets and inline styles.
+ style_src: %w('unsafe-inline' 'self'),
+ # The URIs that a user agent may use as the document base URL.
+ base_uri: %w('self'),
+ # Only allow local iframes and service workers
+ child_src: %w('self'),
+ # Only submit form information to the GitLab instance.
+ form_action: %w('self'),
+ # Disallow any parents from embedding a page in an iframe.
+ frame_ancestors: %w('none'),
+ # Don't allow any plugins (Flash, Shockwave, etc.)
+ plugin_types: %w(),
+ # Blocks all mixed (HTTP) content.
+ block_all_mixed_content: true,
+ # Upgrades insecure requests to HTTPS when possible.
+ upgrade_insecure_requests: true
+ }
+
+ config.csp[:report_uri] = %W(#{CSP_REPORT_URI})
+
+ # Allow Bootstrap Linter in development mode.
+ if Rails.env.development?
+ config.csp[:script_src] << "maxcdn.bootstrapcdn.com"
+ end
+
+ # reCAPTCHA
+ if current_application_settings.recaptcha_enabled
+ config.csp[:script_src] << "https://www.google.com/recaptcha/"
+ config.csp[:script_src] << "https://www.gstatic.com/recaptcha/"
+ config.csp[:frame_src] << "https://www.google.com/recaptcha/"
+ config.x_frame_options = "SAMEORIGIN"
+ end
+
+ # Gravatar
+ if current_application_settings.gravatar_enabled?
+ config.csp[:img_src] << "www.gravatar.com"
+ config.csp[:img_src] << "secure.gravatar.com"
+ config.csp[:img_src] << Gitlab.config.gravatar.host
+ end
+
+ # Piwik
+ if Gitlab.config.extra.has_key?('piwik_url') && Gitlab.config.extra.has_key?('piwik_site_id')
+ config.csp[:script_src] << Gitlab.config.extra.piwik_url
+ config.csp[:img_src] << Gitlab.config.extra.piwik_url
+ end
+
+ # Google Analytics
+ if Gitlab.config.extra.has_key?('google_analytics_id')
+ config.csp[:script_src] << "https://www.google-analytics.com"
+ end
+end
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index 593c14a289f..5e839327e7a 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -13,7 +13,15 @@ Sidekiq.configure_server do |config|
# UGLY Hack to get nested hash from settingslogic
cron_jobs = JSON.parse(Gitlab.config.cron_jobs.to_json)
# UGLY hack: Settingslogic doesn't allow 'class' key
- cron_jobs.each { |k, v| cron_jobs[k]['class'] = cron_jobs[k].delete('job_class') }
+ cron_jobs_required_keys = %w(job_class cron)
+ cron_jobs.each do |k, v|
+ if cron_jobs[k] && cron_jobs_required_keys.all? { |s| cron_jobs[k].key?(s) }
+ cron_jobs[k]['class'] = cron_jobs[k].delete('job_class')
+ else
+ cron_jobs.delete(k)
+ Rails.logger.error("Invalid cron_jobs config key: '#{k}'. Check your gitlab config file.")
+ end
+ end
Sidekiq::Cron::Job.load_from_hash! cron_jobs
# Database pool should be at least `sidekiq_concurrency` + 2
diff --git a/config/routes.rb b/config/routes.rb
index 97c1e8d2154..ccc50f5cd08 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -89,11 +89,10 @@ Rails.application.routes.draw do
mount Grack::AuthSpawner, at: '/', constraints: lambda { |request| /[-\/\w\.]+\.git\/(info\/lfs|gitlab-lfs)/.match(request.path_info) }, via: [:get, :post, :put]
# Help
-
- get 'help' => 'help#index'
- get 'help/*path' => 'help#show', as: :help_page
- get 'help/shortcuts'
- get 'help/ui' => 'help#ui'
+ get 'help' => 'help#index'
+ get 'help/shortcuts' => 'help#shortcuts'
+ get 'help/ui' => 'help#ui'
+ get 'help/*path' => 'help#show', as: :help_page
#
# Global snippets
@@ -733,6 +732,10 @@ Rails.application.routes.draw do
resources :triggers, only: [:index, :create, :destroy]
resources :pipelines, only: [:index, :new, :create, :show] do
+ collection do
+ resource :pipelines_settings, path: 'settings', only: [:show, :update]
+ end
+
member do
post :cancel
post :retry
@@ -758,6 +761,7 @@ Rails.application.routes.draw do
get :status
post :cancel
post :retry
+ post :play
post :erase
get :trace
get :raw
diff --git a/db/fixtures/development/14_builds.rb b/db/fixtures/development/14_builds.rb
index 51ff451eb4c..124704cb451 100644
--- a/db/fixtures/development/14_builds.rb
+++ b/db/fixtures/development/14_builds.rb
@@ -1,13 +1,34 @@
class Gitlab::Seeder::Builds
+ STAGES = %w[build notify_build test notify_test deploy notify_deploy]
+
def initialize(project)
@project = project
end
def seed!
- ci_commits.each do |ci_commit|
+ pipelines.each do |pipeline|
begin
- build_create!(ci_commit, name: 'test build 1')
- build_create!(ci_commit, status: 'success', name: 'test build 2')
+ build_create!(pipeline, name: 'build:linux', stage: 'build')
+ build_create!(pipeline, name: 'build:osx', stage: 'build')
+
+ build_create!(pipeline, name: 'slack post build', stage: 'notify_build')
+
+ build_create!(pipeline, name: 'rspec:linux', stage: 'test')
+ build_create!(pipeline, name: 'rspec:windows', stage: 'test')
+ build_create!(pipeline, name: 'rspec:windows', stage: 'test')
+ build_create!(pipeline, name: 'rspec:osx', stage: 'test')
+ build_create!(pipeline, name: 'spinach:linux', stage: 'test')
+ build_create!(pipeline, name: 'spinach:osx', stage: 'test')
+ build_create!(pipeline, name: 'cucumber:linux', stage: 'test')
+ build_create!(pipeline, name: 'cucumber:osx', stage: 'test')
+
+ build_create!(pipeline, name: 'slack post test', stage: 'notify_test')
+
+ build_create!(pipeline, name: 'staging', stage: 'deploy', environment: 'staging')
+ build_create!(pipeline, name: 'production', stage: 'deploy', environment: 'production', when: 'manual')
+
+ commit_status_create!(pipeline, name: 'jenkins')
+
print '.'
rescue ActiveRecord::RecordInvalid
print 'F'
@@ -15,8 +36,8 @@ class Gitlab::Seeder::Builds
end
end
- def ci_commits
- commits = @project.repository.commits('master', nil, 5)
+ def pipelines
+ commits = @project.repository.commits('master', limit: 5)
commits_sha = commits.map { |commit| commit.raw.id }
commits_sha.map do |sha|
@project.ensure_pipeline(sha, 'master')
@@ -25,11 +46,11 @@ class Gitlab::Seeder::Builds
[]
end
- def build_create!(ci_commit, opts = {})
- attributes = build_attributes_for(ci_commit).merge(opts)
+ def build_create!(pipeline, opts = {})
+ attributes = build_attributes_for(pipeline, opts)
build = Ci::Build.new(attributes)
- if %w(success failed).include?(build.status)
+ if opts[:name].start_with?('build')
artifacts_cache_file(artifacts_archive_path) do |file|
build.artifacts_file = file
end
@@ -40,19 +61,28 @@ class Gitlab::Seeder::Builds
end
build.save!
+ build.update(status: build_status)
if %w(running success failed).include?(build.status)
# We need to set build trace after saving a build (id required)
build.trace = FFaker::Lorem.paragraphs(6).join("\n\n")
end
end
+
+ def commit_status_create!(pipeline, opts = {})
+ attributes = commit_status_attributes_for(pipeline, opts)
+ GenericCommitStatus.create(attributes)
+ end
+
+ def commit_status_attributes_for(pipeline, opts)
+ { name: 'test build', stage: 'test', stage_idx: stage_index(opts[:stage]),
+ ref: 'master', user: build_user, project: @project, pipeline: pipeline,
+ created_at: Time.now, updated_at: Time.now
+ }.merge(opts)
+ end
- def build_attributes_for(ci_commit)
- { name: 'test build', commands: "$ build command",
- stage: 'test', stage_idx: 1, ref: 'master',
- user_id: build_user, gl_project_id: @project.id,
- status: build_status, commit_id: ci_commit.id,
- created_at: Time.now, updated_at: Time.now }
+ def build_attributes_for(pipeline, opts)
+ commit_status_attributes_for(pipeline, opts).merge(commands: '$ build command')
end
def build_user
@@ -63,13 +93,16 @@ class Gitlab::Seeder::Builds
Ci::Build::AVAILABLE_STATUSES.sample
end
+ def stage_index(stage)
+ STAGES.index(stage) || 0
+ end
+
def artifacts_archive_path
Rails.root + 'spec/fixtures/ci_build_artifacts.zip'
end
def artifacts_metadata_path
Rails.root + 'spec/fixtures/ci_build_artifacts_metadata.gz'
-
end
def artifacts_cache_file(file_path)
diff --git a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
index ac7eac0ea7c..611767ac7fe 100644
--- a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
+++ b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
@@ -7,7 +7,13 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration
class ProjectImportDataFake
extend AttrEncrypted
attr_accessor :credentials
- attr_encrypted :credentials, key: Gitlab::Application.secrets.db_key_base, marshal: true, encode: true, :mode => :per_attribute_iv_and_salt
+ attr_encrypted :credentials,
+ key: Gitlab::Application.secrets.db_key_base,
+ marshal: true,
+ encode: true,
+ :mode => :per_attribute_iv_and_salt,
+ insecure_mode: true,
+ algorithm: 'aes-256-cbc'
end
def up
diff --git a/db/migrate/20160519203051_add_developers_can_merge_to_protected_branches.rb b/db/migrate/20160519203051_add_developers_can_merge_to_protected_branches.rb
new file mode 100644
index 00000000000..15ad8e8bcbb
--- /dev/null
+++ b/db/migrate/20160519203051_add_developers_can_merge_to_protected_branches.rb
@@ -0,0 +1,9 @@
+class AddDevelopersCanMergeToProtectedBranches < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def change
+ add_column_with_default :protected_branches, :developers_can_merge, :boolean, default: false, allow_null: false
+ end
+end
diff --git a/db/migrate/20160629025435_add_column_in_progress_merge_commit_sha_to_merge_requests.rb b/db/migrate/20160629025435_add_column_in_progress_merge_commit_sha_to_merge_requests.rb
new file mode 100644
index 00000000000..7c5f76572ef
--- /dev/null
+++ b/db/migrate/20160629025435_add_column_in_progress_merge_commit_sha_to_merge_requests.rb
@@ -0,0 +1,8 @@
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddColumnInProgressMergeCommitShaToMergeRequests < ActiveRecord::Migration
+ def change
+ add_column :merge_requests, :in_progress_merge_commit_sha, :string
+ end
+end
diff --git a/db/migrate/20160715154212_add_request_access_enabled_to_projects.rb b/db/migrate/20160715154212_add_request_access_enabled_to_projects.rb
new file mode 100644
index 00000000000..bf0131c6d76
--- /dev/null
+++ b/db/migrate/20160715154212_add_request_access_enabled_to_projects.rb
@@ -0,0 +1,12 @@
+class AddRequestAccessEnabledToProjects < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default :projects, :request_access_enabled, :boolean, default: true
+ end
+
+ def down
+ remove_column :projects, :request_access_enabled
+ end
+end
diff --git a/db/migrate/20160715204316_add_request_access_enabled_to_groups.rb b/db/migrate/20160715204316_add_request_access_enabled_to_groups.rb
new file mode 100644
index 00000000000..e7b14cd3ee2
--- /dev/null
+++ b/db/migrate/20160715204316_add_request_access_enabled_to_groups.rb
@@ -0,0 +1,12 @@
+class AddRequestAccessEnabledToGroups < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+ disable_ddl_transaction!
+
+ def up
+ add_column_with_default :namespaces, :request_access_enabled, :boolean, default: true
+ end
+
+ def down
+ remove_column :namespaces, :request_access_enabled
+ end
+end
diff --git a/db/migrate/20160718153603_add_has_external_wiki_to_projects.rb b/db/migrate/20160718153603_add_has_external_wiki_to_projects.rb
new file mode 100644
index 00000000000..55a3e954292
--- /dev/null
+++ b/db/migrate/20160718153603_add_has_external_wiki_to_projects.rb
@@ -0,0 +1,7 @@
+class AddHasExternalWikiToProjects < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ def change
+ add_column :projects, :has_external_wiki, :boolean
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index d250d65fe21..72780fb8d03 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20160716115710) do
+ActiveRecord::Schema.define(version: 20160718153603) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -628,8 +628,8 @@ ActiveRecord::Schema.define(version: 20160716115710) do
t.integer "merge_user_id"
t.string "merge_commit_sha"
t.datetime "deleted_at"
+ t.string "in_progress_merge_commit_sha"
end
-
add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree
add_index "merge_requests", ["author_id"], name: "index_merge_requests_on_author_id", using: :btree
add_index "merge_requests", ["created_at", "id"], name: "index_merge_requests_on_created_at_and_id", using: :btree
@@ -664,16 +664,17 @@ ActiveRecord::Schema.define(version: 20160716115710) do
add_index "milestones", ["title"], name: "index_milestones_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"}
create_table "namespaces", force: :cascade do |t|
- t.string "name", null: false
- t.string "path", null: false
+ t.string "name", null: false
+ t.string "path", null: false
t.integer "owner_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "type"
- t.string "description", default: "", null: false
+ t.string "description", default: "", null: false
t.string "avatar"
- t.boolean "share_with_group_lock", default: false
- t.integer "visibility_level", default: 20, null: false
+ t.boolean "share_with_group_lock", default: false
+ t.integer "visibility_level", default: 20, null: false
+ t.boolean "request_access_enabled", default: true, null: false
end
add_index "namespaces", ["created_at", "id"], name: "index_namespaces_on_created_at_and_id", using: :btree
@@ -842,6 +843,8 @@ ActiveRecord::Schema.define(version: 20160716115710) do
t.boolean "only_allow_merge_if_build_succeeds", default: false, null: false
t.boolean "has_external_issue_tracker"
t.string "repository_storage", default: "default", null: false
+ t.boolean "has_external_wiki"
+ t.boolean "request_access_enabled", default: true, null: false
end
add_index "projects", ["builds_enabled", "shared_runners_enabled"], name: "index_projects_on_builds_enabled_and_shared_runners_enabled", using: :btree
@@ -862,11 +865,12 @@ ActiveRecord::Schema.define(version: 20160716115710) do
add_index "projects", ["visibility_level"], name: "index_projects_on_visibility_level", using: :btree
create_table "protected_branches", force: :cascade do |t|
- t.integer "project_id", null: false
- t.string "name", null: false
+ t.integer "project_id", null: false
+ t.string "name", null: false
t.datetime "created_at"
t.datetime "updated_at"
- t.boolean "developers_can_push", default: false, null: false
+ t.boolean "developers_can_push", default: false, null: false
+ t.boolean "developers_can_merge", default: false, null: false
end
add_index "protected_branches", ["project_id"], name: "index_protected_branches_on_project_id", using: :btree
diff --git a/doc/api/branches.md b/doc/api/branches.md
index abc4732c395..dbe8306c66f 100644
--- a/doc/api/branches.md
+++ b/doc/api/branches.md
@@ -23,6 +23,8 @@ Example response:
{
"name": "master",
"protected": true,
+ "developers_can_push": false,
+ "developers_can_merge": false,
"commit": {
"author_email": "john@example.com",
"author_name": "John Smith",
@@ -64,6 +66,8 @@ Example response:
{
"name": "master",
"protected": true,
+ "developers_can_push": false,
+ "developers_can_merge": false,
"commit": {
"author_email": "john@example.com",
"author_name": "John Smith",
@@ -91,13 +95,15 @@ PUT /projects/:id/repository/branches/:branch/protect
```
```bash
-curl -X PUT -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/repository/branches/master/protect
+curl -X PUT -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/5/repository/branches/master/protect?developers_can_push=true&developers_can_merge=true
```
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id` | integer | yes | The ID of a project |
| `branch` | string | yes | The name of the branch |
+| `developers_can_push` | boolean | no | Flag if developers can push to the branch |
+| `developers_can_merge` | boolean | no | Flag if developers can merge to the branch |
Example response:
@@ -117,7 +123,9 @@ Example response:
]
},
"name": "master",
- "protected": true
+ "protected": true,
+ "developers_can_push": true,
+ "developers_can_merge": true
}
```
@@ -158,7 +166,9 @@ Example response:
]
},
"name": "master",
- "protected": false
+ "protected": false,
+ "developers_can_push": false,
+ "developers_can_merge": false
}
```
@@ -196,7 +206,9 @@ Example response:
]
},
"name": "newbranch",
- "protected": false
+ "protected": false,
+ "developers_can_push": false,
+ "developers_can_merge": false
}
```
diff --git a/doc/api/builds.md b/doc/api/builds.md
index 2adea11247e..443739ff845 100644
--- a/doc/api/builds.md
+++ b/doc/api/builds.md
@@ -283,6 +283,40 @@ Response:
[ce-2893]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/2893
+## Download the artifacts file
+
+> [Introduced][ce-5347] in GitLab 8.10.
+
+Download the artifacts file from the given reference name and job provided the
+build finished successfully.
+
+```
+GET /projects/:id/artifacts/:ref_name/download?job=name
+```
+
+Parameters
+
+| Attribute | Type | Required | Description |
+|-------------|---------|----------|-------------------------- |
+| `id` | integer | yes | The ID of a project |
+| `ref_name` | string | yes | The ref from a repository |
+| `job` | string | yes | The name of the job |
+
+Example request:
+
+```
+curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v3/projects/1/artifacts/master/download?job=test"
+```
+
+Example response:
+
+| Status | Description |
+|-----------|---------------------------------|
+| 200 | Serves the artifacts file |
+| 404 | Build not found or no artifacts |
+
+[ce-5347]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5347
+
## Get a trace file
Get a trace of a specific build of a project
@@ -409,7 +443,7 @@ POST /projects/:id/builds/:build_id/erase
Parameters
-| Attribute | Type | required | Description |
+| Attribute | Type | Required | Description |
|-------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
@@ -459,7 +493,7 @@ POST /projects/:id/builds/:build_id/artifacts/keep
Parameters
-| Attribute | Type | required | Description |
+| Attribute | Type | Required | Description |
|-------------|---------|----------|---------------------|
| `id` | integer | yes | The ID of a project |
| `build_id` | integer | yes | The ID of a build |
diff --git a/doc/api/todos.md b/doc/api/todos.md
index 23f6e35f2a4..937c71de386 100644
--- a/doc/api/todos.md
+++ b/doc/api/todos.md
@@ -277,8 +277,7 @@ Example Response:
## Mark all todos as done
-Marks all pending todos for the current user as done. All todos marked as done
-are returned in the response.
+Marks all pending todos for the current user as done. It returns the number of marked todos.
```
DELETE /todos
@@ -291,154 +290,7 @@ curl -X DELETE -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.c
Example Response:
```json
-[
- {
- "id": 102,
- "project": {
- "id": 2,
- "name": "Gitlab Ce",
- "name_with_namespace": "Gitlab Org / Gitlab Ce",
- "path": "gitlab-ce",
- "path_with_namespace": "gitlab-org/gitlab-ce"
- },
- "author": {
- "name": "Administrator",
- "username": "root",
- "id": 1,
- "state": "active",
- "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
- "web_url": "https://gitlab.example.com/u/root"
- },
- "action_name": "marked",
- "target_type": "MergeRequest",
- "target": {
- "id": 34,
- "iid": 7,
- "project_id": 2,
- "title": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
- "description": "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",
- "state": "opened",
- "created_at": "2016-06-17T07:49:24.419Z",
- "updated_at": "2016-06-17T07:52:43.484Z",
- "target_branch": "tutorials_git_tricks",
- "source_branch": "DNSBL_docs",
- "upvotes": 0,
- "downvotes": 0,
- "author": {
- "name": "Maxie Medhurst",
- "username": "craig_rutherford",
- "id": 12,
- "state": "active",
- "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
- "web_url": "https://gitlab.example.com/u/craig_rutherford"
- },
- "assignee": {
- "name": "Administrator",
- "username": "root",
- "id": 1,
- "state": "active",
- "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
- "web_url": "https://gitlab.example.com/u/root"
- },
- "source_project_id": 2,
- "target_project_id": 2,
- "labels": [],
- "work_in_progress": false,
- "milestone": {
- "id": 32,
- "iid": 2,
- "project_id": 2,
- "title": "v1.0",
- "description": "Assumenda placeat ea voluptatem voluptate qui.",
- "state": "active",
- "created_at": "2016-06-17T07:47:34.163Z",
- "updated_at": "2016-06-17T07:47:34.163Z",
- "due_date": null
- },
- "merge_when_build_succeeds": false,
- "merge_status": "cannot_be_merged",
- "subscribed": true,
- "user_notes_count": 7
- },
- "target_url": "https://gitlab.example.com/gitlab-org/gitlab-ce/merge_requests/7",
- "body": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
- "state": "done",
- "created_at": "2016-06-17T07:52:35.225Z"
- },
- {
- "id": 98,
- "project": {
- "id": 2,
- "name": "Gitlab Ce",
- "name_with_namespace": "Gitlab Org / Gitlab Ce",
- "path": "gitlab-ce",
- "path_with_namespace": "gitlab-org/gitlab-ce"
- },
- "author": {
- "name": "Maxie Medhurst",
- "username": "craig_rutherford",
- "id": 12,
- "state": "active",
- "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
- "web_url": "https://gitlab.example.com/u/craig_rutherford"
- },
- "action_name": "assigned",
- "target_type": "MergeRequest",
- "target": {
- "id": 34,
- "iid": 7,
- "project_id": 2,
- "title": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
- "description": "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",
- "state": "opened",
- "created_at": "2016-06-17T07:49:24.419Z",
- "updated_at": "2016-06-17T07:52:43.484Z",
- "target_branch": "tutorials_git_tricks",
- "source_branch": "DNSBL_docs",
- "upvotes": 0,
- "downvotes": 0,
- "author": {
- "name": "Maxie Medhurst",
- "username": "craig_rutherford",
- "id": 12,
- "state": "active",
- "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
- "web_url": "https://gitlab.example.com/u/craig_rutherford"
- },
- "assignee": {
- "name": "Administrator",
- "username": "root",
- "id": 1,
- "state": "active",
- "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
- "web_url": "https://gitlab.example.com/u/root"
- },
- "source_project_id": 2,
- "target_project_id": 2,
- "labels": [],
- "work_in_progress": false,
- "milestone": {
- "id": 32,
- "iid": 2,
- "project_id": 2,
- "title": "v1.0",
- "description": "Assumenda placeat ea voluptatem voluptate qui.",
- "state": "active",
- "created_at": "2016-06-17T07:47:34.163Z",
- "updated_at": "2016-06-17T07:47:34.163Z",
- "due_date": null
- },
- "merge_when_build_succeeds": false,
- "merge_status": "cannot_be_merged",
- "subscribed": true,
- "user_notes_count": 7
- },
- "target_url": "https://gitlab.example.com/gitlab-org/gitlab-ce/merge_requests/7",
- "body": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
- "state": "done",
- "created_at": "2016-06-17T07:49:24.624Z"
- },
-]
+3
```
[ce-3188]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3188
diff --git a/doc/ci/variables/README.md b/doc/ci/variables/README.md
index 137b080a8f7..4bf610f0e9a 100644
--- a/doc/ci/variables/README.md
+++ b/doc/ci/variables/README.md
@@ -18,25 +18,35 @@ The `API_TOKEN` will take the Secure Variable value: `SECURE`.
### Predefined variables (Environment Variables)
-| Variable | Runner | Description |
-|-------------------------|-----|--------|
-| **CI** | 0.4 | Mark that build is executed in CI environment |
-| **GITLAB_CI** | all | Mark that build is executed in GitLab CI environment |
-| **CI_SERVER** | all | Mark that build is executed in CI environment |
-| **CI_SERVER_NAME** | all | CI server that is used to coordinate builds |
-| **CI_SERVER_VERSION** | all | Not yet defined |
-| **CI_SERVER_REVISION** | all | Not yet defined |
-| **CI_BUILD_REF** | all | The commit revision for which project is built |
-| **CI_BUILD_TAG** | 0.5 | The commit tag name. Present only when building tags. |
-| **CI_BUILD_NAME** | 0.5 | The name of the build as defined in `.gitlab-ci.yml` |
-| **CI_BUILD_STAGE** | 0.5 | The name of the stage as defined in `.gitlab-ci.yml` |
-| **CI_BUILD_REF_NAME** | all | The branch or tag name for which project is built |
-| **CI_BUILD_ID** | all | The unique id of the current build that GitLab CI uses internally |
-| **CI_BUILD_REPO** | all | The URL to clone the Git repository |
-| **CI_BUILD_TRIGGERED** | 0.5 | The flag to indicate that build was [triggered] |
-| **CI_BUILD_TOKEN** | 1.2 | Token used for authenticating with the GitLab Container Registry |
-| **CI_PROJECT_ID** | all | The unique id of the current project that GitLab CI uses internally |
-| **CI_PROJECT_DIR** | all | The full path where the repository is cloned and where the build is ran |
+| Variable | GitLab | Runner | Description |
+|-------------------------|--------|--------|-------------|
+| **CI** | all | 0.4 | Mark that build is executed in CI environment |
+| **GITLAB_CI** | all | all | Mark that build is executed in GitLab CI environment |
+| **CI_SERVER** | all | all | Mark that build is executed in CI environment |
+| **CI_SERVER_NAME** | all | all | The name of CI server that is used to coordinate builds |
+| **CI_SERVER_VERSION** | all | all | GitLab version that is used to schedule builds |
+| **CI_SERVER_REVISION** | all | all | GitLab revision that is used to schedule builds |
+| **CI_BUILD_ID** | all | all | The unique id of the current build that GitLab CI uses internally |
+| **CI_BUILD_REF** | all | all | The commit revision for which project is built |
+| **CI_BUILD_TAG** | all | 0.5 | The commit tag name. Present only when building tags. |
+| **CI_BUILD_NAME** | all | 0.5 | The name of the build as defined in `.gitlab-ci.yml` |
+| **CI_BUILD_STAGE** | all | 0.5 | The name of the stage as defined in `.gitlab-ci.yml` |
+| **CI_BUILD_REF_NAME** | all | all | The branch or tag name for which project is built |
+| **CI_BUILD_REPO** | all | all | The URL to clone the Git repository |
+| **CI_BUILD_TRIGGERED** | all | 0.5 | The flag to indicate that build was [triggered] |
+| **CI_BUILD_TOKEN** | all | 1.2 | Token used for authenticating with the GitLab Container Registry |
+| **CI_PIPELINE_ID** | 8.10 | 0.5 | The unique id of the current pipeline that GitLab CI uses internally |
+| **CI_PROJECT_ID** | all | all | The unique id of the current project that GitLab CI uses internally |
+| **CI_PROJECT_NAME** | 8.10 | 0.5 | The project name that is currently being built |
+| **CI_PROJECT_NAMESPACE**| 8.10 | 0.5 | The project namespace that is currently being built |
+| **CI_PROJECT_PATH** | 8.10 | 0.5 | The namespace with project name |
+| **CI_PROJECT_URL** | 8.10 | 0.5 | The HTTP address to access project |
+| **CI_PROJECT_DIR** | all | all | The full path where the repository is cloned and where the build is run |
+| **CI_REGISTRY** | 8.10 | 0.5 | If the Container Registry is enabled it returns the address of GitLab's Container Registry |
+| **CI_REGISTRY_IMAGE** | 8.10 | 0.5 | If the Container Registry is enabled for the project it returnes the address of the registry tied to the specific project |
+| **CI_RUNNER_ID** | 8.10 | 0.5 | The unique id of runner being used |
+| **CI_RUNNER_DESCRIPTION** | 8.10 | 0.5 | The description of the runner as saved in GitLab |
+| **CI_RUNNER_TAGS** | 8.10 | 0.5 | The defined runner tags |
**Some of the variables are only available when using runner with at least defined version.**
@@ -46,18 +56,28 @@ Example values:
export CI_BUILD_ID="50"
export CI_BUILD_REF="1ecfd275763eff1d6b4844ea3168962458c9f27a"
export CI_BUILD_REF_NAME="master"
-export CI_BUILD_REPO="https://gitlab.com/gitlab-org/gitlab-ce.git"
+export CI_BUILD_REPO="https://gitab-ci-token:abcde-1234ABCD5678ef@gitlab.com/gitlab-org/gitlab-ce.git"
export CI_BUILD_TAG="1.0.0"
export CI_BUILD_NAME="spec:other"
export CI_BUILD_STAGE="test"
export CI_BUILD_TRIGGERED="true"
export CI_BUILD_TOKEN="abcde-1234ABCD5678ef"
-export CI_PROJECT_DIR="/builds/gitlab-org/gitlab-ce"
+export CI_PIPELINE_ID="1000"
export CI_PROJECT_ID="34"
+export CI_PROJECT_DIR="/builds/gitlab-org/gitlab-ce"
+export CI_PROJECT_NAME="gitlab-ce"
+export CI_PROJECT_NAMESPACE="gitlab-org"
+export CI_PROJECT_PATH="gitlab-org/gitlab-ce"
+export CI_PROJECT_URL="https://gitlab.com/gitlab-org/gitlab-ce"
+export CI_REGISTRY="registry.gitlab.com"
+export CI_REGISTRY_IMAGE="registry.gitlab.com/gitlab-org/gitlab-ce"
+export CI_RUNNER_ID="10"
+export CI_RUNNER_DESCRIPTION="my runner"
+export CI_RUNNER_TAGS="docker, linux"
export CI_SERVER="yes"
-export CI_SERVER_NAME="GitLab CI"
-export CI_SERVER_REVISION=""
-export CI_SERVER_VERSION=""
+export CI_SERVER_NAME="GitLab"
+export CI_SERVER_REVISION="8.9.0"
+export CI_SERVER_VERSION="70606bf"
```
### YAML-defined variables
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md
index 50fa263f693..31b4fd2669e 100644
--- a/doc/ci/yaml/README.md
+++ b/doc/ci/yaml/README.md
@@ -485,6 +485,7 @@ failure.
1. `on_failure` - execute build only when at least one build from prior stages
fails.
1. `always` - execute build regardless of the status of builds from prior stages.
+1. `manual` - execute build manually.
For example:
@@ -516,6 +517,7 @@ deploy_job:
stage: deploy
script:
- make deploy
+ when: manual
cleanup_job:
stage: cleanup
@@ -527,7 +529,20 @@ cleanup_job:
The above script will:
1. Execute `cleanup_build_job` only when `build_job` fails
-2. Always execute `cleanup_job` as the last step in pipeline.
+2. Always execute `cleanup_job` as the last step in pipeline
+3. Allow you to manually execute `deploy_job` from GitLab
+
+#### Manual actions
+
+>**Note:**
+Introduced in GitLab 8.10.
+
+Manual actions are special type of jobs that are not executed automatically in pipeline.
+They need to be explicitly started by the user.
+Manual actions can be started from pipelines, builds, environments and deployments views.
+You can execute the same manual action multiple times.
+
+Example usage of manual actions is deployment, ex. promote a staging environment to production.
### environment
@@ -757,12 +772,13 @@ Introduced in GitLab 8.6 and GitLab Runner v1.1.1.
This feature should be used in conjunction with [`artifacts`](#artifacts) and
allows you to define the artifacts to pass between different builds.
-Note that `artifacts` from previous [stages](#stages) are passed by default.
+Note that `artifacts` from all previous [stages](#stages) are passed by default.
To use this feature, define `dependencies` in context of the job and pass
a list of all previous builds from which the artifacts should be downloaded.
You can only define builds from stages that are executed before the current one.
An error will be shown if you define builds from the current stage or next ones.
+Defining an empty array will skip downloading any artifacts for that job.
---
diff --git a/doc/development/migration_style_guide.md b/doc/development/migration_style_guide.md
index e2ca46504e7..b8fab3aaff7 100644
--- a/doc/development/migration_style_guide.md
+++ b/doc/development/migration_style_guide.md
@@ -11,7 +11,8 @@ migrations are written carefully, can be applied online and adhere to the style
Migrations should not require GitLab installations to be taken offline unless
_absolutely_ necessary. If a migration requires downtime this should be
clearly mentioned during the review process as well as being documented in the
-monthly release post.
+monthly release post. For more information see the "Downtime Tagging" section
+below.
When writing your migrations, also consider that databases might have stale data
or inconsistencies and guard for that. Try to make as little assumptions as possible
@@ -20,35 +21,34 @@ about the state of the database.
Please don't depend on GitLab specific code since it can change in future versions.
If needed copy-paste GitLab code into the migration to make it forward compatible.
-## Comments in the migration
+## Downtime Tagging
-Each migration you write needs to have the two following pieces of information
-as comments.
+Every migration must specify if it requires downtime or not, and if it should
+require downtime it must also specify a reason for this. To do so, add the
+following two constants to the migration class' body:
-### Online, Offline, errors?
+* `DOWNTIME`: a boolean that when set to `true` indicates the migration requires
+ downtime.
+* `DOWNTIME_REASON`: a String containing the reason for the migration requiring
+ downtime. This constant **must** be set when `DOWNTIME` is set to `true`.
-First, you need to provide information on whether the migration can be applied:
+For example:
-1. online without errors (works on previous version and new one)
-2. online with errors on old instances after migrating
-3. online with errors on new instances while migrating
-4. offline (needs to happen without app servers to prevent db corruption)
-
-For example:
-
-```
-# Migration type: online without errors (works on previous version and new one)
+```ruby
class MyMigration < ActiveRecord::Migration
-...
-```
+ DOWNTIME = true
+ DOWNTIME_REASON = 'This migration requires downtime because ...'
-It is always preferable to have a migration run online. If you expect the migration
-to take particularly long (for instance, if it loops through all notes),
-this is valuable information to add.
+ def change
+ ...
+ end
+end
+```
-If you don't provide the information it means that a migration is safe to run online.
+It is an error (that is, CI will fail) if the `DOWNTIME` constant is missing
+from a migration class.
-### Reversibility
+## Reversibility
Your migration should be reversible. This is very important, as it should
be possible to downgrade in case of a vulnerability or bugs.
@@ -100,7 +100,7 @@ value of `10` you'd write the following:
class MyMigration < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
disable_ddl_transaction!
-
+
def up
add_column_with_default(:projects, :foo, :integer, default: 10)
end
diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md
index 41685c7ee41..8852dbcb19e 100644
--- a/doc/development/rake_tasks.md
+++ b/doc/development/rake_tasks.md
@@ -53,3 +53,8 @@ Generating a sprite file containing all the Emoji can be done by running:
```
bundle exec rake gemojione:sprite
```
+
+If new emoji are added, the spritesheet may change size. To compensate for
+such changes, first generate the `emoji.png` spritesheet with the above Rake
+task, then check the dimensions of the new spritesheet and update the
+`SPRITESHEET_WIDTH` and `SPRITESHEET_HEIGHT` constants accordingly.
diff --git a/doc/integration/slack.md b/doc/integration/slack.md
index f6ba80f46d5..11f956fed3e 100644
--- a/doc/integration/slack.md
+++ b/doc/integration/slack.md
@@ -26,14 +26,13 @@ After Slack is ready we need to setup GitLab. Here are the steps to achieve this
1. Navigate to Settings -> Services -> Slack
-1. Pick the triggers you want to activate
+1. Pick the triggers you want to activate and respective channel (`#general` by default).
1. Fill in your Slack details
- Webhook: Paste the Webhook URL from the step above
- Username: Fill this in if you want to change the username of the bot
- - Channel: Fill this in if you want to change the channel where the messages will be posted
- Mark it as active
-
+
1. Save your settings
Have fun :)
diff --git a/doc/project_services/img/slack_configuration.png b/doc/project_services/img/slack_configuration.png
new file mode 100644
index 00000000000..d3ebe5969af
--- /dev/null
+++ b/doc/project_services/img/slack_configuration.png
Binary files differ
diff --git a/doc/project_services/project_services.md b/doc/project_services/project_services.md
index e15d5db3253..4442b7c1742 100644
--- a/doc/project_services/project_services.md
+++ b/doc/project_services/project_services.md
@@ -45,7 +45,7 @@ further configuration instructions and details. Contributions are welcome.
| PivotalTracker | Project Management Software (Source Commits Endpoint) |
| Pushover | Pushover makes it easy to get real-time notifications on your Android device, iPhone, iPad, and Desktop |
| [Redmine](redmine.md) | Redmine issue tracker |
-| Slack | A team communication tool for the 21st century |
+| [Slack](slack.md) | A team communication tool for the 21st century |
## Services Templates
diff --git a/doc/project_services/slack.md b/doc/project_services/slack.md
new file mode 100644
index 00000000000..4ed33838f7c
--- /dev/null
+++ b/doc/project_services/slack.md
@@ -0,0 +1,26 @@
+# Slack Service
+
+Go to your project's **Settings > Services > Slack** and you will see a checkbox with the following events that can be triggered:
+
+* Push
+* Issue
+* Merge request
+* Note
+* Tag push
+* Build
+* Wiki page
+
+Below each of these event checkboxes you will have an input to insert which Slack channel do you want to send that event message,
+`#general` channel is default.
+
+
+![Slack configuration](img/slack_configuration.png)
+
+
+| Field | Description |
+| ----- | ----------- |
+| `Webhook` | The incoming webhook url which you have to setup on slack. (https://my.slack.com/services/new/incoming-webhook/) |
+| `Username` | Optional username which can be on messages sent to slack. |
+| `notify only broken builds` | Notify only about broken builds, when build events are marked to be sent.|
+
+
diff --git a/doc/raketasks/maintenance.md b/doc/raketasks/maintenance.md
index d9dce2af480..315cb56a089 100644
--- a/doc/raketasks/maintenance.md
+++ b/doc/raketasks/maintenance.md
@@ -167,3 +167,22 @@ of those assets. Unless you are modifying the JavaScript / CSS code on your
production machine after installing the package, there should be no reason to redo
rake assets:precompile on the production machine. If you suspect that assets
have been corrupted, you should reinstall the omnibus package.
+
+## Tracking Deployments
+
+GitLab provides a Rake task that lets you track deployments in GitLab
+Performance Monitoring. This Rake task simply stores the current GitLab version
+in the GitLab Performance Monitoring database.
+
+For Omnibus-packages:
+
+```
+sudo gitlab-rake gitlab:track_deployment
+```
+
+For installations from source:
+
+```
+cd /home/git/gitlab
+sudo -u git -H bundle exec rake gitlab:track_deployment RAILS_ENV=production
+```
diff --git a/doc/workflow/add-user/add-user.md b/doc/workflow/add-user/add-user.md
index 0537ce0bcd4..e541111d7b3 100644
--- a/doc/workflow/add-user/add-user.md
+++ b/doc/workflow/add-user/add-user.md
@@ -90,6 +90,9 @@ GitLab account using the same e-mail address the invitation was sent to.
## Request access to a project
+As a project owner you can enable or disable non members to request access to
+your project. Go to the project settings and click on **Allow users to request access**.
+
As a user, you can request to be a member of a project. Go to the project you'd
like to be a member of, and click the **Request Access** button on the right
side of your screen.
diff --git a/doc/workflow/groups.md b/doc/workflow/groups.md
index 9b50286b179..a693cc3d0fd 100644
--- a/doc/workflow/groups.md
+++ b/doc/workflow/groups.md
@@ -53,6 +53,9 @@ If necessary, you can increase the access level of an individual user for a spec
## Requesting access to a group
+As a group owner you can enable or disable non members to request access to
+your group. Go to the group settings and click on **Allow users to request access**.
+
As a user, you can request to be a member of a group. Go to the group you'd
like to be a member of, and click the **Request Access** button on the right
side of your screen.
diff --git a/features/steps/admin/settings.rb b/features/steps/admin/settings.rb
index 037f7494a77..03f87df7a60 100644
--- a/features/steps/admin/settings.rb
+++ b/features/steps/admin/settings.rb
@@ -27,19 +27,19 @@ class Spinach::Features::AdminSettings < Spinach::FeatureSteps
step 'I check all events and submit form' do
page.check('Active')
- page.check('Push events')
- page.check('Tag push events')
- page.check('Comments')
- page.check('Issues events')
- page.check('Merge Request events')
- page.check('Build events')
+ page.check('Push')
+ page.check('Tag push')
+ page.check('Note')
+ page.check('Issue')
+ page.check('Merge request')
+ page.check('Build')
click_on 'Save'
end
step 'I fill out Slack settings' do
fill_in 'Webhook', with: 'http://localhost'
fill_in 'Username', with: 'test_user'
- fill_in 'Channel', with: '#test_channel'
+ fill_in 'service_push_channel', with: '#test_channel'
page.check('Notify only broken builds')
end
@@ -56,6 +56,6 @@ class Spinach::Features::AdminSettings < Spinach::FeatureSteps
step 'I should see Slack settings saved' do
expect(find_field('Webhook').value).to eq 'http://localhost'
expect(find_field('Username').value).to eq 'test_user'
- expect(find_field('Channel').value).to eq '#test_channel'
+ expect(find('#service_push_channel').value).to eq '#test_channel'
end
end
diff --git a/fixtures/emojis/aliases.json b/fixtures/emojis/aliases.json
index d3831d8045b..e2f47db0de2 100644
--- a/fixtures/emojis/aliases.json
+++ b/fixtures/emojis/aliases.json
@@ -1,16 +1,9 @@
{
- "northeast_pointing_airplane":"airplane_northeast",
"small_airplane":"airplane_small",
- "up_pointing_small_airplane":"airplane_small_up",
- "up_pointing_airplane":"airplane_up",
- "left_anger_bubble":"anger_left",
"right_anger_bubble":"anger_right",
"keycap_asterisk":"asterisk",
"atom_symbol":"atom",
"ballot_box_with_ballot":"ballot_box",
- "ballot_box_with_bold_check":"ballot_box_check",
- "ballot_box_with_script_x":"ballot_box_x",
- "ballot_script_x":"ballot_x",
"person_with_ball":"basketball_player",
"person_with_ball_tone1":"basketball_player_tone1",
"person_with_ball_tone2":"basketball_player_tone2",
@@ -21,51 +14,65 @@
"umbrella_on_ground":"beach_umbrella",
"bellhop_bell":"bellhop",
"biohazard_sign":"biohazard",
- "bouquet_of_flowers":"bouquet2",
"archery":"bow_and_arrow",
- "bullhorn_with_sound_waves":"bullhorn_waves",
- "pocket calculator":"calculator",
+ "boxing_gloves":"boxing_glove",
"spiral_calendar_pad":"calendar_spiral",
+ "call_me_hand":"call_me",
+ "call_me_hand_tone1":"call_me_tone1",
+ "call_me_hand_tone2":"call_me_tone2",
+ "call_me_hand_tone3":"call_me_tone3",
+ "call_me_hand_tone4":"call_me_tone4",
+ "call_me_hand_tone5":"call_me_tone5",
+ "kayak":"canoe",
"card_file_box":"card_box",
- "tape_cartridge":"cartridge",
+ "person_doing_cartwheel":"cartwheel",
+ "person_doing_cartwheel_tone1":"cartwheel_tone1",
+ "person_doing_cartwheel_tone2":"cartwheel_tone2",
+ "person_doing_cartwheel_tone3":"cartwheel_tone3",
+ "person_doing_cartwheel_tone4":"cartwheel_tone4",
+ "person_doing_cartwheel_tone5":"cartwheel_tone5",
"bottle_with_popping_cork":"champagne",
+ "clinking_glass":"champagne_glass",
"cheese_wedge":"cheese",
"city_sunrise":"city_sunset",
"mantlepiece_clock":"clock",
- "clockwise_right_and_left_semicircle_arrows":"clockwise_arrows",
"cloud_with_lightning":"cloud_lightning",
"cloud_with_rain":"cloud_rain",
"cloud_with_snow":"cloud_snow",
"cloud_with_tornado":"cloud_tornado",
- "old_personal_computer":"computer_old",
- "building_construction":"contruction_site",
+ "clown_face":"clown",
+ "building_construction":"construction_site",
"couch_and_lamp":"couch",
"couple_with_heart_mm":"couple_mm",
"couple_with_heart_ww":"couple_ww",
+ "face_with_cowboy_hat":"cowboy",
"lower_left_crayon":"crayon",
"cricket_bat_ball":"cricket",
"latin_cross":"cross",
- "heavy_latin_cross":"cross_heavy",
- "white_latin_cross":"cross_white",
- "black_skull_and_crossbones":"crossbones",
"passenger_ship":"cruise_ship",
"dagger_knife":"dagger",
"desktop_computer":"desktop",
"card_index_dividers":"dividers",
- "document_with_text":"document_text",
"dove_of_peace":"dove",
+ "drool":"drooling_face",
+ "drum_with_drumsticks":"drum",
"email":"e-mail",
- "back_of_envelope":"envelope_back",
- "flying_envelope":"envelope_flying",
- "stamped_envelope":"envelope_stamped",
- "pen_over_stamped_envelope":"envelope_stamped_pen",
- "white_down_pointing_left_hand_index":"finger_pointing_down",
- "sideways_white_down_pointing_index":"finger_pointing_down2",
- "sideways_white_left_pointing_index":"finger_pointing_left",
- "sideways_white_right_pointing_index":"finger_pointing_right",
- "sideways_white_up_pointing_index":"finger_pointing_up",
+ "eject_symbol":"eject",
+ "facepalm":"face_palm",
+ "facepalm_tone1":"face_palm_tone1",
+ "facepalm_tone2":"face_palm_tone2",
+ "facepalm_tone3":"face_palm_tone3",
+ "facepalm_tone4":"face_palm_tone4",
+ "facepalm_tone5":"face_palm_tone5",
+ "fencing":"fencer",
+ "hand_with_index_and_middle_finger_crossed":"fingers_crossed",
+ "hand_with_index_and_middle_fingers_crossed_tone1":"fingers_crossed_tone1",
+ "hand_with_index_and_middle_fingers_crossed_tone2":"fingers_crossed_tone2",
+ "hand_with_index_and_middle_fingers_crossed_tone3":"fingers_crossed_tone3",
+ "hand_with_index_and_middle_fingers_crossed_tone4":"fingers_crossed_tone4",
+ "hand_with_index_and_middle_fingers_crossed_tone5":"fingers_crossed_tone5",
"flame":"fire",
- "oncoming_fire_engine":"fire_engine_oncoming",
+ "first_place_medal":"first_place",
"ac":"flag_ac",
"ad":"flag_ad",
"ae":"flag_ae",
@@ -326,44 +333,51 @@
"za":"flag_za",
"zm":"flag_zm",
"zw":"flag_zw",
- "clamshell_mobile_phone":"flip_phone",
- "black_hard_shell_floppy_disk":"floppy_black",
- "white_hard_shell_floppy_disk":"floppy_white",
- "open_folder":"folder_open",
"fork_and_knife_with_plate":"fork_knife_plate",
+ "fox_face":"fox",
"frame_with_picture":"frame_photo",
- "frame_with_tiles":"frame_tiles",
- "frame_with_an_x":"frame_x",
+ "baguette_bread":"french_bread",
"anguished":"frowning",
"white_frowning_face":"frowning2",
+ "goal_net":"goal",
"hammer_and_pick":"hammer_pick",
"raised_hand_with_fingers_splayed":"hand_splayed",
- "reversed_raised_hand_with_fingers_splayed":"hand_splayed_reverse",
"raised_hand_with_fingers_splayed_tone1":"hand_splayed_tone1",
"raised_hand_with_fingers_splayed_tone2":"hand_splayed_tone2",
"raised_hand_with_fingers_splayed_tone3":"hand_splayed_tone3",
"raised_hand_with_fingers_splayed_tone4":"hand_splayed_tone4",
"raised_hand_with_fingers_splayed_tone5":"hand_splayed_tone5",
- "reversed_victory_hand":"hand_victory",
+ "shaking_hands":"handshake",
+ "shaking_hands_tone1":"handshake_tone1",
+ "shaking_hands_tone2":"handshake_tone2",
+ "shaking_hands_tone3":"handshake_tone3",
+ "shaking_hands_tone4":"handshake_tone4",
+ "shaking_hands_tone5":"handshake_tone5",
"face_with_head_bandage":"head_bandage",
"heavy_heart_exclamation_mark_ornament":"heart_exclamation",
- "heart_with_tip_on_the_left":"heart_tip",
"helmet_with_white_cross":"helmet_with_cross",
"house_buildings":"homes",
"hot_dog":"hotdog",
"derelict_house_building":"house_abandoned",
"hugging_face":"hugging",
- "circled_information_source":"info",
"desert_island":"island",
- "up_pointing_military_airplane":"jet_up",
+ "juggler":"juggling",
+ "juggler_tone1":"juggling_tone1",
+ "juggler_tone2":"juggling_tone2",
+ "juggler_tone3":"juggling_tone3",
+ "juggler_tone4":"juggling_tone4",
+ "juggler_tone5":"juggling_tone5",
"old_key":"key2",
- "wired_keyboard":"keyboard",
- "keyboard_and_mouse":"keyboard_mouse",
- "musical_keyboard_with_jacks":"keyboard_with_jacks",
"couplekiss_mm":"kiss_mm",
"couplekiss_ww":"kiss_ww",
+ "kiwifruit":"kiwi",
"satisfied":"laughing",
- "left_hand_telephone_receiver":"left_receiver",
+ "left_fist":"left_facing_fist",
+ "left_fist_tone1":"left_facing_fist_tone1",
+ "left_fist_tone2":"left_facing_fist_tone2",
+ "left_fist_tone3":"left_facing_fist_tone3",
+ "left_fist_tone4":"left_facing_fist_tone4",
+ "left_fist_tone5":"left_facing_fist_tone5",
"man_in_business_suit_levitating":"levitate",
"weight_lifter":"lifter",
"weight_lifter_tone1":"lifter_tone1",
@@ -371,9 +385,21 @@
"weight_lifter_tone3":"lifter_tone3",
"weight_lifter_tone4":"lifter_tone4",
"weight_lifter_tone5":"lifter_tone5",
- "light_mark":"light_check_mark",
"lion":"lion_face",
+ "liar":"lying_face",
+ "male_dancer":"man_dancing",
+ "male_dancer_tone1":"man_dancing_tone1",
+ "male_dancer_tone2":"man_dancing_tone2",
+ "male_dancer_tone3":"man_dancing_tone3",
+ "male_dancer_tone4":"man_dancing_tone4",
+ "male_dancer_tone5":"man_dancing_tone5",
+ "tuxedo_tone1":"man_in_tuxedo_tone1",
+ "tuxedo_tone2":"man_in_tuxedo_tone2",
+ "tuxedo_tone3":"man_in_tuxedo_tone3",
+ "tuxedo_tone4":"man_in_tuxedo_tone4",
+ "tuxedo_tone5":"man_in_tuxedo_tone5",
"world_map":"map",
+ "karate_uniform":"martial_arts_uniform",
"sports_medal":"medal",
"sign_of_the_horns":"metal",
"sign_of_the_horns_tone1":"metal_tone1",
@@ -388,21 +414,23 @@
"reversed_hand_with_middle_finger_extended_tone3":"middle_finger_tone3",
"reversed_hand_with_middle_finger_extended_tone4":"middle_finger_tone4",
"reversed_hand_with_middle_finger_extended_tone5":"middle_finger_tone5",
+ "glass_of_milk":"milk",
"money_mouth_face":"money_mouth",
- "lightning_mood_bubble":"mood_bubble_lightning",
- "lightning_mood":"mood_lightning",
+ "motorbike":"motor_scooter",
"racing_motorcycle":"motorcycle",
"snow_capped_mountain":"mountain_snow",
- "one_button_mouse":"mouse_one",
"three_button_mouse":"mouse_three_button",
+ "mother_christmas":"mrs_claus",
+ "mother_christmas_tone1":"mrs_claus_tone1",
+ "mother_christmas_tone2":"mrs_claus_tone2",
+ "mother_christmas_tone3":"mrs_claus_tone3",
+ "mother_christmas_tone4":"mrs_claus_tone4",
+ "mother_christmas_tone5":"mrs_claus_tone5",
+ "sick":"nauseated_face",
"nerd_face":"nerd",
- "three_networked_computers":"network",
"rolled_up_newspaper":"newspaper2",
- "note_page":"note",
- "empty_note_page":"note_empty",
- "note_pad":"notepad",
- "empty_note_pad":"notepad_empty",
"spiral_note_pad":"notepad_spiral",
+ "stop_sign":"octagonal_sign",
"oil_drum":"oil",
"grandma":"older_woman",
"grandma_tone1":"older_woman_tone1",
@@ -410,57 +438,66 @@
"grandma_tone3":"older_woman_tone3",
"grandma_tone4":"older_woman_tone4",
"grandma_tone5":"older_woman_tone5",
- "optical_disc_icon":"optical_disk",
"lower_left_paintbrush":"paintbrush",
"linked_paperclips":"paperclips",
"national_park":"park",
"double_vertical_bar":"pause_button",
"peace_symbol":"peace",
+ "shelled_peanut":"peanuts",
"lower_left_ballpoint_pen":"pen_ballpoint",
"lower_left_fountain_pen":"pen_fountain",
"memo":"pencil",
- "lower_left_pencil":"pencil3",
- "black_pennant":"pennant_black",
- "white_pennant":"pennant_white",
"table_tennis":"ping_pong",
- "no_piracy":"piracy",
"worship_symbol":"place_of_worship",
"shit":"poop",
"hankey":"poop",
"poo":"poop",
- "prohibited_sign":"prohibited",
+ "expecting_woman":"pregnant_woman",
+ "expecting_woman_tone1":"pregnant_woman_tone1",
+ "expecting_woman_tone2":"pregnant_woman_tone2",
+ "expecting_woman_tone3":"pregnant_woman_tone3",
+ "expecting_woman_tone4":"pregnant_woman_tone4",
+ "expecting_woman_tone5":"pregnant_woman_tone5",
"film_projector":"projector",
"racing_car":"race_car",
"radioactive_sign":"radioactive",
"railroad_track":"railway_track",
- "right_speaker_with_one_sound_wave":"right_speaker_one",
- "right_speaker_with_three_sound_waves":"right_speaker_three",
+ "back_of_hand":"raised_back_of_hand",
+ "back_of_hand_tone1":"raised_back_of_hand_tone1",
+ "back_of_hand_tone2":"raised_back_of_hand_tone2",
+ "back_of_hand_tone3":"raised_back_of_hand_tone3",
+ "back_of_hand_tone4":"raised_back_of_hand_tone4",
+ "back_of_hand_tone5":"raised_back_of_hand_tone5",
+ "rhinoceros":"rhino",
+ "right_fist":"right_facing_fist",
+ "right_fist_tone1":"right_facing_fist_tone1",
+ "right_fist_tone2":"right_facing_fist_tone2",
+ "right_fist_tone3":"right_facing_fist_tone3",
+ "right_fist_tone4":"right_facing_fist_tone4",
+ "right_fist_tone5":"right_facing_fist_tone5",
"robot_face":"robot",
+ "rolling_on_the_floor_laughing":"rofl",
"face_with_rolling_eyes":"rolling_eyes",
+ "green_salad":"salad",
+ "second_place_medal":"second_place",
+ "paella":"shallow_pan_of_food",
+ "shopping_trolley":"shopping_cart",
"skeleton":"skull",
"skull_and_crossbones":"skull_crossbones",
"slightly_frowning_face":"slight_frown",
"slightly_smiling_face":"slight_smile",
+ "sneeze":"sneezing_face",
"speaking_head_in_silhouette":"speaking_head",
- "left_speech_bubble":"speech_left",
- "right_speech_bubble":"speech_right",
- "three_speech_bubbles":"speech_three",
- "two_speech_bubbles":"speech_two",
"sleuth_or_spy":"spy",
"sleuth_or_spy_tone1":"spy_tone1",
"sleuth_or_spy_tone2":"spy_tone2",
"sleuth_or_spy_tone3":"spy_tone3",
"sleuth_or_spy_tone4":"spy_tone4",
"sleuth_or_spy_tone5":"spy_tone5",
- "portable_stereo":"stereo",
- "black_touchtone_telephone":"telephone_black",
- "white_touchtone_telephone":"telephone_white",
+ "stuffed_pita":"stuffed_flatbread",
"face_with_thermometer":"thermometer_face",
"thinking_face":"thinking",
- "left_thought_bubble":"thought_left",
- "right_thought_bubble":"thought_right",
- "reversed_thumbs_down_sign":"thumbs_down_reverse",
- "reversed_thumbs_up_sign":"thumbs_up_reverse",
+ "third_place_medal":"third_place",
"-1":"thumbsdown",
"-1_tone1":"thumbsdown_tone1",
"-1_tone2":"thumbsdown_tone2",
@@ -479,9 +516,7 @@
"hammer_and_wrench":"tools",
"next_track":"track_next",
"previous_track":"track_previous",
- "diesel_locomotive":"train_diesel",
- "triangle_with_rounded_corners":"triangle_round",
- "turned_ok_hand_sign":"turned_ok_hand",
+ "whisky":"tumbler_glass",
"unicorn_face":"unicorn",
"upside_down_face":"upside_down",
"funeral_urn":"urn",
@@ -494,6 +529,12 @@
"white_sun_behind_cloud":"white_sun_cloud",
"white_sun_behind_cloud_with_rain":"white_sun_rain_cloud",
"white_sun_with_small_cloud":"white_sun_small_cloud",
- "left_writing_hand":"writing_hand",
+ "wilted_flower":"wilted_rose",
+ "wrestling":"wrestlers",
+ "wrestling_tone1":"wrestlers_tone1",
+ "wrestling_tone2":"wrestlers_tone2",
+ "wrestling_tone3":"wrestlers_tone3",
+ "wrestling_tone4":"wrestlers_tone4",
+ "wrestling_tone5":"wrestlers_tone5",
"zipper_mouth_face":"zipper_mouth"
}
diff --git a/fixtures/emojis/digests.json b/fixtures/emojis/digests.json
index 50ee5089d8f..078d3413f33 100644
--- a/fixtures/emojis/digests.json
+++ b/fixtures/emojis/digests.json
@@ -60,16 +60,6 @@
"digest": "5544eace06b8e1b6ea91940e893e013d33d6b166e14e6d128a87f2cd2de88332"
},
{
- "name": "airplane_northeast",
- "unicode": "1F6EA",
- "digest": "fdddc2cd3618ec6661612581b8b93553cb086b0bb197e96aedf1bee8055e7bb4"
- },
- {
- "name": "northeast_pointing_airplane",
- "unicode": "1F6EA",
- "digest": "fdddc2cd3618ec6661612581b8b93553cb086b0bb197e96aedf1bee8055e7bb4"
- },
- {
"name": "airplane_small",
"unicode": "1F6E9",
"digest": "1a2e07abbbe90d05cee7ff8dd52f443d595ccb38959f3089fe016b77e5d6de7d"
@@ -80,26 +70,6 @@
"digest": "1a2e07abbbe90d05cee7ff8dd52f443d595ccb38959f3089fe016b77e5d6de7d"
},
{
- "name": "airplane_small_up",
- "unicode": "1F6E8",
- "digest": "029752b29a757c087dec60f45ea242e974fc181129e20390d5d4a2f90442091a"
- },
- {
- "name": "up_pointing_small_airplane",
- "unicode": "1F6E8",
- "digest": "029752b29a757c087dec60f45ea242e974fc181129e20390d5d4a2f90442091a"
- },
- {
- "name": "airplane_up",
- "unicode": "1F6E7",
- "digest": "ec45d4dbfce1f75dc59339417b1dcf5f1e1359cd9d04ff233babf359a3330e77"
- },
- {
- "name": "up_pointing_airplane",
- "unicode": "1F6E7",
- "digest": "ec45d4dbfce1f75dc59339417b1dcf5f1e1359cd9d04ff233babf359a3330e77"
- },
- {
"name": "alarm_clock",
"unicode": "23F0",
"digest": "fef05a3cd1cddbeca4de8091b94bddb93790b03fa213da86c0eec420f8c49599"
@@ -165,16 +135,6 @@
"digest": "332493913891aa0eda2743b4bb16c4682400f249998bf34eb292246c9009e17f"
},
{
- "name": "anger_left",
- "unicode": "1F5EE",
- "digest": "f2711991e8b386b2d5b12f296ce20a9b4b00ef91d6d67af2cf4e06abf2faa1dc"
- },
- {
- "name": "left_anger_bubble",
- "unicode": "1F5EE",
- "digest": "f2711991e8b386b2d5b12f296ce20a9b4b00ef91d6d67af2cf4e06abf2faa1dc"
- },
- {
"name": "anger_right",
"unicode": "1F5EF",
"digest": "8b049511ef3b1b28325841e2f87c60773eaf2f65cabba58d8b0ec3de9b10c0ae"
@@ -325,11 +285,6 @@
"digest": "c115e6613ebd718268aa31d265e017138b9fb58bbb8201eb3f40de2380e460aa"
},
{
- "name": "ascending_notes",
- "unicode": "1F39C",
- "digest": "33432042771d456338dda5d98e49322d3600f2cc9049963480c7c38d9de1ef0a"
- },
- {
"name": "asterisk",
"unicode": "002A-20E3",
"digest": "33d92093f2914448d5a939cf62e8ee3e32931923abdef5f0210e8a8150fa312d"
@@ -365,6 +320,11 @@
"digest": "6b6bb83b00707a314e46ff8eefbda40978a291ec7881caba1b1ee273f49c1368"
},
{
+ "name": "avocado",
+ "unicode": "1F951",
+ "digest": "bc1fb203d63b18985598400925de24050bb192afda1cbf0813f85cb139869eff"
+ },
+ {
"name": "b",
"unicode": "1F171",
"digest": "722f9db9442e7c0fc0d0ac0f5291fbf47c6a0ac4d8abd42e97957da705fb82bf"
@@ -420,6 +380,11 @@
"digest": "083e4e48b51092c28efb4532e840e1091b5d4b685c6e0f221aa0228f061cd91e"
},
{
+ "name": "bacon",
+ "unicode": "1F953",
+ "digest": "18ad3817f1f88a69706db5727a58e763dde6c21a2d4f184c3d728c32dc5fa05a"
+ },
+ {
"name": "badminton",
"unicode": "1F3F8",
"digest": "353eb7ee93decd9fe0072e4d78a5618d5e2d9e77a6e4de9fe171870d75e02a66"
@@ -445,41 +410,11 @@
"digest": "4175a56eca5c6458574a681e109b1403fbb143cf27f69ae6c1917650f3e08892"
},
{
- "name": "ballot_box_check",
- "unicode": "1F5F9",
- "digest": "fc3ba16c009d963a4a0ea20a348ac98eee3c4c18c481df19a5ada0d1de7fcc15"
- },
- {
- "name": "ballot_box_with_bold_check",
- "unicode": "1F5F9",
- "digest": "fc3ba16c009d963a4a0ea20a348ac98eee3c4c18c481df19a5ada0d1de7fcc15"
- },
- {
"name": "ballot_box_with_check",
"unicode": "2611",
"digest": "c98d6f3588dd87e2f318bbfe6c646399a905450edfd814edae4e5b1bddef2134"
},
{
- "name": "ballot_box_x",
- "unicode": "1F5F5",
- "digest": "861dcfc2361298262587b5d0e163fed96a55c44636361f5b4a9ab1d6502b8928"
- },
- {
- "name": "ballot_box_with_script_x",
- "unicode": "1F5F5",
- "digest": "861dcfc2361298262587b5d0e163fed96a55c44636361f5b4a9ab1d6502b8928"
- },
- {
- "name": "ballot_x",
- "unicode": "1F5F4",
- "digest": "0b73b89847eb82bcad5664644c8af237e0aef6c3d8c94b7a5df94e05d0ebf4e1"
- },
- {
- "name": "ballot_script_x",
- "unicode": "1F5F4",
- "digest": "0b73b89847eb82bcad5664644c8af237e0aef6c3d8c94b7a5df94e05d0ebf4e1"
- },
- {
"name": "bamboo",
"unicode": "1F38D",
"digest": "e4ee65088df43d7081b1ce6fd996f66f3e0accd88840855c47a98a22997823dd"
@@ -580,6 +515,11 @@
"digest": "c631cefc5d2a0a31bdb9f0a0d97ea68b1c6928e565468998403034644572a0b0"
},
{
+ "name": "bat",
+ "unicode": "1F987",
+ "digest": "8fc19e0d7d6f80906bdbc06d616a810de66180d96cf28070a53fa61b88904535"
+ },
+ {
"name": "bath",
"unicode": "1F6C0",
"digest": "33b371832f90aad50baf5296f3ad4cc081c319b279f989c74409903d8568e917"
@@ -760,6 +700,11 @@
"digest": "c2ba672994ad0f99d7fdc449f3fee45a2dca68a58f9fe95825b38465a30ef44e"
},
{
+ "name": "black_heart",
+ "unicode": "1F5A4",
+ "digest": "f334679168d6dd7328c28e9ae3cb2b1fca0e9c2777938d586bfe623db2a688b9"
+ },
+ {
"name": "black_joker",
"unicode": "1F0CF",
"digest": "d004b25f186494d5b2c65204caa9daecd749c840a0bea5718735e18109e5394d"
@@ -840,11 +785,6 @@
"digest": "9d912a9d1bb10dc7f2645b345ed09e90461e83df0de275acb806f1f75cef1fcf"
},
{
- "name": "book2",
- "unicode": "1F56E",
- "digest": "26d6b66a1957e7750b3e22eb2e46d0cc85932977bbb81d3d8482ec1ec58ee12b"
- },
- {
"name": "bookmark",
"unicode": "1F516",
"digest": "5705e3108259d6900649157843c50e22d0086c3630b291d3f942da1a736e3e3d"
@@ -875,16 +815,6 @@
"digest": "b93751a27b40f6185a22b3e8b413f0fe09b6010d1057c672e1a23088e0b8286f"
},
{
- "name": "bouquet2",
- "unicode": "1F395",
- "digest": "1643ec51ff26fc1ac0c67859e202386398650bf2a996c82b68e1b73fa52abf7d"
- },
- {
- "name": "bouquet_of_flowers",
- "unicode": "1F395",
- "digest": "1643ec51ff26fc1ac0c67859e202386398650bf2a996c82b68e1b73fa52abf7d"
- },
- {
"name": "bow",
"unicode": "1F647",
"digest": "33cd6da4d408f18d98bebc6a277dea8b914150e32ee472586ce3f1eb814462bd"
@@ -930,6 +860,16 @@
"digest": "737f2cdfa4ac964baade585a39771b18080bd5e9b55c8661d3518f468f344662"
},
{
+ "name": "boxing_glove",
+ "unicode": "1F94A",
+ "digest": "c914b2ce45f20afad66ad6f0d1b0750c4469e4f48b686dfc4aad1ec8d289c563"
+ },
+ {
+ "name": "boxing_gloves",
+ "unicode": "1F94A",
+ "digest": "c914b2ce45f20afad66ad6f0d1b0750c4469e4f48b686dfc4aad1ec8d289c563"
+ },
+ {
"name": "boy",
"unicode": "1F466",
"digest": "7bc0173d8c88f3f12d41f213f7a3a9f5ebf65efad610fd5a2a31935128a6a6c1"
@@ -960,11 +900,6 @@
"digest": "0f76e97237203950da36c737dcc6f56dcd6c123401a8c817a0636376c7f38ef5"
},
{
- "name": "boys_symbol",
- "unicode": "1F6C9",
- "digest": "47fadbcb876ca436264ce2f3ebd1472bd68f55cc2b4833bf054335be9dc7a0f2"
- },
- {
"name": "bread",
"unicode": "1F35E",
"digest": "81739830f16f33e6a1dd7cc17c25df207846062bb5167bb8abed7fdd49268b86"
@@ -1035,21 +970,6 @@
"digest": "96e74842e919716b7bbbab57339bfd70f099a9bcb4710dffd7c80cf38a7bbff7"
},
{
- "name": "bullhorn",
- "unicode": "1F56B",
- "digest": "a4ca5cbfe299e8ccd148d17055d2d395cf8515e416bf771044c9a670509a8254"
- },
- {
- "name": "bullhorn_waves",
- "unicode": "1F56C",
- "digest": "92493636cf086205d1e12cc19e613b84152ef10b8cd0215619a0fc813bfc9a7c"
- },
- {
- "name": "bullhorn_with_sound_waves",
- "unicode": "1F56C",
- "digest": "92493636cf086205d1e12cc19e613b84152ef10b8cd0215619a0fc813bfc9a7c"
- },
- {
"name": "burrito",
"unicode": "1F32F",
"digest": "b2cf81f1efdf87e674461f73f67cd4b58a5f695e65598d0dd3899f2597da43cf"
@@ -1075,6 +995,11 @@
"digest": "7fee96f1b68bb2c6002e47f2ed13c06baa6a3168441b9aca572db7ec45612f7b"
},
{
+ "name": "butterfly",
+ "unicode": "1F98B",
+ "digest": "a91b6598c17b44a8dc8935a1d99e25f4483ea41470cdd2da343039a9eec29ef1"
+ },
+ {
"name": "cactus",
"unicode": "1F335",
"digest": "2c5c4c35f26c7046fdc002b337e0d939729b33a26980e675950f9934c91e40fd"
@@ -1085,16 +1010,6 @@
"digest": "b928902df8084210d51c1da36f9119164a325393c391b28cd8ea914e0b95c17b"
},
{
- "name": "calculator",
- "unicode": "1F5A9",
- "digest": "01b47b5c69c12b65fa4f4c0d580f2a98280d6116f4ad2cf8be378759008bcc3c"
- },
- {
- "name": "pocket calculator",
- "unicode": "1F5A9",
- "digest": "01b47b5c69c12b65fa4f4c0d580f2a98280d6116f4ad2cf8be378759008bcc3c"
- },
- {
"name": "calendar",
"unicode": "1F4C6",
"digest": "9d990be27778daab041a3583edbd8f83fc8957e42a3aec729c0e2e224a8d05e3"
@@ -1110,6 +1025,66 @@
"digest": "441a0750eade7ce33e28e58bec76958990c412b68409fcdde59ebad1f25361bb"
},
{
+ "name": "call_me",
+ "unicode": "1F919",
+ "digest": "83d2ed96dcb8b4adf4f4d030ffd07e25ca16351e1a4fbefdf9f46f5ca496a55f"
+ },
+ {
+ "name": "call_me_hand",
+ "unicode": "1F919",
+ "digest": "83d2ed96dcb8b4adf4f4d030ffd07e25ca16351e1a4fbefdf9f46f5ca496a55f"
+ },
+ {
+ "name": "call_me_tone1",
+ "unicode": "1F919-1F3FB",
+ "digest": "4a5748efa83e7294e8338b8795d4d315ff1cd31ead6759004d0eb330e50de8cd"
+ },
+ {
+ "name": "call_me_hand_tone1",
+ "unicode": "1F919-1F3FB",
+ "digest": "4a5748efa83e7294e8338b8795d4d315ff1cd31ead6759004d0eb330e50de8cd"
+ },
+ {
+ "name": "call_me_tone2",
+ "unicode": "1F919-1F3FC",
+ "digest": "54feaa6e3c5789ae6e15622127f0e0213234b4b886e1588ce95814348b1f1519"
+ },
+ {
+ "name": "call_me_hand_tone2",
+ "unicode": "1F919-1F3FC",
+ "digest": "54feaa6e3c5789ae6e15622127f0e0213234b4b886e1588ce95814348b1f1519"
+ },
+ {
+ "name": "call_me_tone3",
+ "unicode": "1F919-1F3FD",
+ "digest": "57e949b951e14843b712dab5a828f915ee255f5bb973db33946aab4057427419"
+ },
+ {
+ "name": "call_me_hand_tone3",
+ "unicode": "1F919-1F3FD",
+ "digest": "57e949b951e14843b712dab5a828f915ee255f5bb973db33946aab4057427419"
+ },
+ {
+ "name": "call_me_tone4",
+ "unicode": "1F919-1F3FE",
+ "digest": "f7787e933978a09c7b8ab8d3b1e1ab395aaae998c455e93bb3db24a4c8a60fe0"
+ },
+ {
+ "name": "call_me_hand_tone4",
+ "unicode": "1F919-1F3FE",
+ "digest": "f7787e933978a09c7b8ab8d3b1e1ab395aaae998c455e93bb3db24a4c8a60fe0"
+ },
+ {
+ "name": "call_me_tone5",
+ "unicode": "1F919-1F3FF",
+ "digest": "1fdb7d833d000b117d20d48142d3026a61cc9c8b712ebb498fa66bf75c74d7a5"
+ },
+ {
+ "name": "call_me_hand_tone5",
+ "unicode": "1F919-1F3FF",
+ "digest": "1fdb7d833d000b117d20d48142d3026a61cc9c8b712ebb498fa66bf75c74d7a5"
+ },
+ {
"name": "calling",
"unicode": "1F4F2",
"digest": "acf668c75c11c36686005788266524a972fa1c5bcf666ff3403d909edc5cee91"
@@ -1135,11 +1110,6 @@
"digest": "a42a4ff9521affa72db7b0f01da169b4cb6afb9db1c5dfad47dd4c507bfc30d9"
},
{
- "name": "cancellation_x",
- "unicode": "1F5D9",
- "digest": "cea2f7a48543207615ee06755ded62c2a95a7eaf7d7b68a3fc25e74d94e2c92c"
- },
- {
"name": "cancer",
"unicode": "264B",
"digest": "528c6f21df99a756b553d93a7f395b0f662b30a323affd05f0cedee8ff7b41d6"
@@ -1155,6 +1125,16 @@
"digest": "9cff4538918f60f770fceb96e964f5dc3ce31fd08ddd2ab3bfdf2981bfa74100"
},
{
+ "name": "canoe",
+ "unicode": "1F6F6",
+ "digest": "56ca308cc2ad4827468cf58c4ccf6ef6b3382835a91e935540a2b973e01d2572"
+ },
+ {
+ "name": "kayak",
+ "unicode": "1F6F6",
+ "digest": "56ca308cc2ad4827468cf58c4ccf6ef6b3382835a91e935540a2b973e01d2572"
+ },
+ {
"name": "capital_abcd",
"unicode": "1F520",
"digest": "a416d0b3f564037b680f801fb773b6eaf67225e2cbbfd2cb8a5db0de044321fa"
@@ -1185,14 +1165,69 @@
"digest": "c0e7059efc39a64233f774c02ddb1ab51888fff180f906ce13a6e4f9509672fe"
},
{
- "name": "cartridge",
- "unicode": "1F5AD",
- "digest": "0b1625eea118060b51a70905c1eb3313ed632e989f70943eca16aa29fe8a34f2"
+ "name": "carrot",
+ "unicode": "1F955",
+ "digest": "3a6fd98b63ee73d982a9cdacb08cf7b4014368cde8ffce6056b7df25a5a472b1"
+ },
+ {
+ "name": "cartwheel",
+ "unicode": "1F938",
+ "digest": "d78de3435e0b04a9b1a1048ae12e63e3248f9ace3a0db4d3bda584f22af18863"
+ },
+ {
+ "name": "person_doing_cartwheel",
+ "unicode": "1F938",
+ "digest": "d78de3435e0b04a9b1a1048ae12e63e3248f9ace3a0db4d3bda584f22af18863"
+ },
+ {
+ "name": "cartwheel_tone1",
+ "unicode": "1F938-1F3FB",
+ "digest": "39a49781a269bb40d8efc8fd73c973b00fb2e192850ea6073062b5dea0cd5b74"
+ },
+ {
+ "name": "person_doing_cartwheel_tone1",
+ "unicode": "1F938-1F3FB",
+ "digest": "39a49781a269bb40d8efc8fd73c973b00fb2e192850ea6073062b5dea0cd5b74"
+ },
+ {
+ "name": "cartwheel_tone2",
+ "unicode": "1F938-1F3FC",
+ "digest": "6231eb35be45457fd648f8f4b79983f03705c9d983a18067f7e6d9ae47bc1958"
+ },
+ {
+ "name": "person_doing_cartwheel_tone2",
+ "unicode": "1F938-1F3FC",
+ "digest": "6231eb35be45457fd648f8f4b79983f03705c9d983a18067f7e6d9ae47bc1958"
+ },
+ {
+ "name": "cartwheel_tone3",
+ "unicode": "1F938-1F3FD",
+ "digest": "ca483c78cc823811a8c279c501d9b283e4c990dafc5995ad40e68ecb0af554df"
+ },
+ {
+ "name": "person_doing_cartwheel_tone3",
+ "unicode": "1F938-1F3FD",
+ "digest": "ca483c78cc823811a8c279c501d9b283e4c990dafc5995ad40e68ecb0af554df"
+ },
+ {
+ "name": "cartwheel_tone4",
+ "unicode": "1F938-1F3FE",
+ "digest": "8253afb672431c84e498014c30babb00b9284bec773009e79f7f06aa7108643e"
},
{
- "name": "tape_cartridge",
- "unicode": "1F5AD",
- "digest": "0b1625eea118060b51a70905c1eb3313ed632e989f70943eca16aa29fe8a34f2"
+ "name": "person_doing_cartwheel_tone4",
+ "unicode": "1F938-1F3FE",
+ "digest": "8253afb672431c84e498014c30babb00b9284bec773009e79f7f06aa7108643e"
+ },
+ {
+ "name": "cartwheel_tone5",
+ "unicode": "1F938-1F3FF",
+ "digest": "6fd92baff57c38b3adb6753d9e7e547e762971a8872fd3f1e71c6aaf0b1d3ab9"
+ },
+ {
+ "name": "person_doing_cartwheel_tone5",
+ "unicode": "1F938-1F3FF",
+ "digest": "6fd92baff57c38b3adb6753d9e7e547e762971a8872fd3f1e71c6aaf0b1d3ab9"
},
{
"name": "cat",
@@ -1210,11 +1245,6 @@
"digest": "16363d8a34b873c12df6354b99f575cae3d80e0d27100ed7eea70f0310953c7b"
},
{
- "name": "celtic_cross",
- "unicode": "1F548",
- "digest": "187aac988d7e02085a15f31c4cc0ff25127be5b088e354e65c7b1152bffb40ff"
- },
- {
"name": "chains",
"unicode": "26D3",
"digest": "3884cdbc6f2b433062af06f942552e563231c24727a2f10fa280b3bb7aa614e2"
@@ -1230,6 +1260,16 @@
"digest": "9e6e8987f30a37ae0f3d7dab2f5eeb50aa32b4f31402b29315eb2994afc72457"
},
{
+ "name": "champagne_glass",
+ "unicode": "1F942",
+ "digest": "5a2e4773f7eb126a00122cbfa4dc535da51ce00e0bf0d8d6ff8bab8b3365f8d2"
+ },
+ {
+ "name": "clinking_glass",
+ "unicode": "1F942",
+ "digest": "5a2e4773f7eb126a00122cbfa4dc535da51ce00e0bf0d8d6ff8bab8b3365f8d2"
+ },
+ {
"name": "chart",
"unicode": "1F4B9",
"digest": "a092dbc08f925b028286b2b495a5f59033b8537a586a694f46f4c1e7c3a1e27f"
@@ -1515,16 +1555,6 @@
"digest": "9fdef6a4939315c017b165e1dbac7710fb335df8c309be3fe2a011ef7fc28d74"
},
{
- "name": "clockwise_arrows",
- "unicode": "1F5D8",
- "digest": "67027b7e1a4d800a3ce7d731c21c098d1109d217159a27665eebb7e080fc2622"
- },
- {
- "name": "clockwise_right_and_left_semicircle_arrows",
- "unicode": "1F5D8",
- "digest": "67027b7e1a4d800a3ce7d731c21c098d1109d217159a27665eebb7e080fc2622"
- },
- {
"name": "closed_book",
"unicode": "1F4D5",
"digest": "b18288629d201bfdfc5d66ec47df89809d00642b15732757e6a04789f36a7d9f"
@@ -1585,6 +1615,16 @@
"digest": "7cbed2343c280ba3996082b3d0fb9d8cd57d6e62fe6c9ecb159f46b4a2e49151"
},
{
+ "name": "clown",
+ "unicode": "1F921",
+ "digest": "eea95687caabc9e808514c2450ba599e5e24ef47923dbec86f5297a64438e2e5"
+ },
+ {
+ "name": "clown_face",
+ "unicode": "1F921",
+ "digest": "eea95687caabc9e808514c2450ba599e5e24ef47923dbec86f5297a64438e2e5"
+ },
+ {
"name": "clubs",
"unicode": "2663",
"digest": "b8cf72ecd8568ced077b475d94788fb282bdb06d25031b5d54dd63e25effb138"
@@ -1625,16 +1665,6 @@
"digest": "c970ce76b5607434895b0407bdaa93140f887930781a17dd7dcf16f711451d93"
},
{
- "name": "computer_old",
- "unicode": "1F5B3",
- "digest": "b27c30d74f205a8a3bd00a55ca17da7cf6ae3b65ae33e949755a4c6bd69a9fd3"
- },
- {
- "name": "old_personal_computer",
- "unicode": "1F5B3",
- "digest": "b27c30d74f205a8a3bd00a55ca17da7cf6ae3b65ae33e949755a4c6bd69a9fd3"
- },
- {
"name": "confetti_ball",
"unicode": "1F38A",
"digest": "a638b16f1acdbcf69edf760161b1bd7ff1fd5426c5b1203ad9d294dcc0701f10"
@@ -1665,6 +1695,11 @@
"digest": "c611f0a5de10f000a0756935f226845c7292f19ff5581d1f7a7554316338bbcb"
},
{
+ "name": "building_construction",
+ "unicode": "1F3D7",
+ "digest": "c611f0a5de10f000a0756935f226845c7292f19ff5581d1f7a7554316338bbcb"
+ },
+ {
"name": "construction_worker",
"unicode": "1F477",
"digest": "8c094733987e7c4da8d3aa4588b530ae07042bd70cf337b1fd412a70ee8f0ed6"
@@ -1700,16 +1735,6 @@
"digest": "0d7f33ff7acc1cc3a81e6a786ff007df20da145e3070f338505dfed5100e9fcb"
},
{
- "name": "contruction_site",
- "unicode": "1F3D7",
- "digest": "c611f0a5de10f000a0756935f226845c7292f19ff5581d1f7a7554316338bbcb"
- },
- {
- "name": "building_construction",
- "unicode": "1F3D7",
- "digest": "c611f0a5de10f000a0756935f226845c7292f19ff5581d1f7a7554316338bbcb"
- },
- {
"name": "convenience_store",
"unicode": "1F3EA",
"digest": "975dcf9b8e9e3fb1e29574b41300b9d96fd64703b3c18ff52f9f1875d1cf1b52"
@@ -1720,6 +1745,11 @@
"digest": "4bed3522bd50091ac5b68ca760661eb484d7f1b9c9d564d2097bd812b7f28ae4"
},
{
+ "name": "cooking",
+ "unicode": "1F373",
+ "digest": "563ffd6cae381ce1e318cdacc54e70040d6a01a50d0db8aeb50edbbe413eac58"
+ },
+ {
"name": "cool",
"unicode": "1F192",
"digest": "5739a37341c782a4736adfce804e12776ae33081098a3d052d8ae9a64b4d22d1"
@@ -1820,6 +1850,16 @@
"digest": "e7a5131d7dee0f3356814b0ac1ea8ff280b12a7b580181e20ddb0b7eeb7e7339"
},
{
+ "name": "cowboy",
+ "unicode": "1F920",
+ "digest": "1aabf23f6b95a9b772fdb8eb45b8ec93584a5357f9131c6eabc9d1b83fe67e89"
+ },
+ {
+ "name": "face_with_cowboy_hat",
+ "unicode": "1F920",
+ "digest": "1aabf23f6b95a9b772fdb8eb45b8ec93584a5357f9131c6eabc9d1b83fe67e89"
+ },
+ {
"name": "crab",
"unicode": "1F980",
"digest": "e6be16699fdb5d87f42f28f6cc141a44b7ffd834ecdd536813c4b5b86d3fc4a5"
@@ -1860,6 +1900,11 @@
"digest": "59cb4164c50b6bc9ae311ce6f7610467c1aaafa848b5fff7614f064715f91992"
},
{
+ "name": "croissant",
+ "unicode": "1F950",
+ "digest": "b751e287157a1e276617a841a5b5f7f1208ca226cfd8fa947f144390b65a5e16"
+ },
+ {
"name": "cross",
"unicode": "271D",
"digest": "a6b07c838fb75ef2ebefa2df6005e8d784753239ec03c37695a13e3b1954d653"
@@ -1870,36 +1915,6 @@
"digest": "a6b07c838fb75ef2ebefa2df6005e8d784753239ec03c37695a13e3b1954d653"
},
{
- "name": "cross_heavy",
- "unicode": "1F547",
- "digest": "2e37c26b9bad0beb019c7f3e7a3892352d0ad9ca1b90c4333d42e8d56680be70"
- },
- {
- "name": "heavy_latin_cross",
- "unicode": "1F547",
- "digest": "2e37c26b9bad0beb019c7f3e7a3892352d0ad9ca1b90c4333d42e8d56680be70"
- },
- {
- "name": "cross_white",
- "unicode": "1F546",
- "digest": "3452e667010d7e49a51d7e1f4ba8ed4f303e33ed43255a051e9a18832a1efba6"
- },
- {
- "name": "white_latin_cross",
- "unicode": "1F546",
- "digest": "3452e667010d7e49a51d7e1f4ba8ed4f303e33ed43255a051e9a18832a1efba6"
- },
- {
- "name": "crossbones",
- "unicode": "1F571",
- "digest": "f5e7ce293c1a3282711073e68f033a3876e8428d1218cb2f8294630f9124e584"
- },
- {
- "name": "black_skull_and_crossbones",
- "unicode": "1F571",
- "digest": "f5e7ce293c1a3282711073e68f033a3876e8428d1218cb2f8294630f9124e584"
- },
- {
"name": "crossed_flags",
"unicode": "1F38C",
"digest": "2841c671075e6f1a79c61c2d716423159fb0bc0786e3fb0049697766533bf262"
@@ -1940,6 +1955,11 @@
"digest": "05f73b30b1e5b0fc66fb5dc6caddd2d547ee7b9d2f97513dc908ba1a2e352e30"
},
{
+ "name": "cucumber",
+ "unicode": "1F952",
+ "digest": "d1196e23f2f155ef5c1330f8497f40957a7357cb177127f457c5c471f0a23727"
+ },
+ {
"name": "cupid",
"unicode": "1F498",
"digest": "246e71f44c6ebc2e4f887e25438e4f894e8cc92e06069e711b893ff391abb658"
@@ -2050,16 +2070,16 @@
"digest": "3c70f1a77f2754f41c830e88d43b7d53c14311d64626ded164aa9ac7d2695790"
},
{
+ "name": "deer",
+ "unicode": "1F98C",
+ "digest": "7f4302ca68fd121ee73be48d0a0a0fb9e7e2741071a491ad2b7b0eab9f11ad25"
+ },
+ {
"name": "department_store",
"unicode": "1F3EC",
"digest": "4be910d2efe74d8ce2c1f41d7753c8873579faca83fcf779a4887d8ab9e5923b"
},
{
- "name": "descending_notes",
- "unicode": "1F39D",
- "digest": "f09c6a2e094b13bf91cc07b7b776e43348ccef9f91247ca36cc02e7d91098af0"
- },
- {
"name": "desert",
"unicode": "1F3DC",
"digest": "d4b1a11c5130debe042df6cc2b3389f15c68a5cb32dc1b3a82b78f733d0c9e4e"
@@ -2075,11 +2095,6 @@
"digest": "cde5bfb6c71bb7d663808a3561b24cb5b5560f95f510b40f81250cac1b21933e"
},
{
- "name": "desktop_window",
- "unicode": "1F5D4",
- "digest": "d5b6c4a847e2a96f97f50fd353a22cb121915cb1d7bbc0f02df38769819b6b7e"
- },
- {
"name": "diamond_shape_with_a_dot_inside",
"unicode": "1F4A0",
"digest": "e91323577ab89e95b0fa0b9272ea0c797b76908f24d36992630e9325273a4ce3"
@@ -2125,21 +2140,6 @@
"digest": "98b07fbbcdb438d1b8a755869fa2de8e180a77fce359ec830eb46d38ec3e67cb"
},
{
- "name": "document",
- "unicode": "1F5CE",
- "digest": "2cbca96cc69306a10f1a9b6505723e027239439d899f6b395dc43f3c37d2d777"
- },
- {
- "name": "document_text",
- "unicode": "1F5B9",
- "digest": "29407b12409c9673f3d89ef1f86ee50cbc7ed53b1870e33b4a29bbc609017f72"
- },
- {
- "name": "document_with_text",
- "unicode": "1F5B9",
- "digest": "29407b12409c9673f3d89ef1f86ee50cbc7ed53b1870e33b4a29bbc609017f72"
- },
- {
"name": "dog",
"unicode": "1F436",
"digest": "3b31ce067b13e463284ce85536512cb1f8cd8b52fe73659f69971d0d6c1dfc11"
@@ -2205,11 +2205,36 @@
"digest": "e06ef69c29f0fb12481727c0b4124e700572d3d7955e173279320f43f286518d"
},
{
+ "name": "drooling_face",
+ "unicode": "1F924",
+ "digest": "5203cb05cd266d7a7c929ab40364ad68571d380d9c7ff93a8d6d55261abaa1ba"
+ },
+ {
+ "name": "drool",
+ "unicode": "1F924",
+ "digest": "5203cb05cd266d7a7c929ab40364ad68571d380d9c7ff93a8d6d55261abaa1ba"
+ },
+ {
"name": "droplet",
"unicode": "1F4A7",
"digest": "6475b4a4460a672c436a68f282ac97fb31e2934db4b80620063ee816159aa7c3"
},
{
+ "name": "drum",
+ "unicode": "1F941",
+ "digest": "0d0639980b1a5dcbf1c3e7ef47263fb6543b871242c58452a8c2f642525d9dd8"
+ },
+ {
+ "name": "drum_with_drumsticks",
+ "unicode": "1F941",
+ "digest": "0d0639980b1a5dcbf1c3e7ef47263fb6543b871242c58452a8c2f642525d9dd8"
+ },
+ {
+ "name": "duck",
+ "unicode": "1F986",
+ "digest": "8f8373798a7727368b32328e7a9a349727a949e7391ddd243b6456141a4f7e94"
+ },
+ {
"name": "dvd",
"unicode": "1F4C0",
"digest": "3b7903285d91277181c26fdc9df857761bbac509d352e320c2519ea3b132704f"
@@ -2225,6 +2250,11 @@
"digest": "39b5a57a2376e4a1137e381be02a1775bd580e0371438f5297a401ea634f1830"
},
{
+ "name": "eagle",
+ "unicode": "1F985",
+ "digest": "b44fd4f61b83c5114358a272343ac9b0eabbc70847f739bbdbf8aae3ade5bc1d"
+ },
+ {
"name": "ear",
"unicode": "1F442",
"digest": "4fdeb5a46e69311ecfd09c5b45c9018c24b625e28475cca8fa516b086ef952f8"
@@ -2276,8 +2306,8 @@
},
{
"name": "egg",
- "unicode": "1F373",
- "digest": "563ffd6cae381ce1e318cdacc54e70040d6a01a50d0db8aeb50edbbe413eac58"
+ "unicode": "1F95A",
+ "digest": "72b9c841af784e7cbccbbe48ba833df5cecdd284397c199cab079872e879d92f"
},
{
"name": "eggplant",
@@ -2300,6 +2330,16 @@
"digest": "bb0758e7cc0e357285937671a91489bd32ce9d248eecdcc9c275a53a66325b26"
},
{
+ "name": "eject",
+ "unicode": "23CF",
+ "digest": "eeb0cd23ead0c965e307de517a6805265f0c780c3e454e64bc4c1425dfe7548e"
+ },
+ {
+ "name": "eject_symbol",
+ "unicode": "23CF",
+ "digest": "eeb0cd23ead0c965e307de517a6805265f0c780c3e454e64bc4c1425dfe7548e"
+ },
+ {
"name": "electric_plug",
"unicode": "1F50C",
"digest": "b10ce87af86fa4f4022572ceb5ecd73bea867347a86832a7ea248364b0aad8d0"
@@ -2320,46 +2360,6 @@
"digest": "f5a512022a2f5280f372ff39c22cbda815f698710ca66f8f8c4d08418f98ca78"
},
{
- "name": "envelope_back",
- "unicode": "1F582",
- "digest": "bc60b6d375feee00758a94a05b42eeb165f4084b20eb3e6012b72faa221f7e75"
- },
- {
- "name": "back_of_envelope",
- "unicode": "1F582",
- "digest": "bc60b6d375feee00758a94a05b42eeb165f4084b20eb3e6012b72faa221f7e75"
- },
- {
- "name": "envelope_flying",
- "unicode": "1F585",
- "digest": "9d6b6ca4c08006062a6f11948de3e15b13cf5c458967e39a9358665a8e13e214"
- },
- {
- "name": "flying_envelope",
- "unicode": "1F585",
- "digest": "9d6b6ca4c08006062a6f11948de3e15b13cf5c458967e39a9358665a8e13e214"
- },
- {
- "name": "envelope_stamped",
- "unicode": "1F583",
- "digest": "f6102aea7283ddc136bfeb09589573420b9279105045fc6b965c1633c1297468"
- },
- {
- "name": "stamped_envelope",
- "unicode": "1F583",
- "digest": "f6102aea7283ddc136bfeb09589573420b9279105045fc6b965c1633c1297468"
- },
- {
- "name": "envelope_stamped_pen",
- "unicode": "1F586",
- "digest": "80ea471318d1e04f8e525ff236b3cd4a4c864e66c6246b6aad77d92f56895f33"
- },
- {
- "name": "pen_over_stamped_envelope",
- "unicode": "1F586",
- "digest": "80ea471318d1e04f8e525ff236b3cd4a4c864e66c6246b6aad77d92f56895f33"
- },
- {
"name": "envelope_with_arrow",
"unicode": "1F4E9",
"digest": "f8643212e6a94f58ccf2bcedc54c5fda8ebeab274f4a8803f253de5f50ddb1d6"
@@ -2415,6 +2415,36 @@
"digest": "1d5cae0b9b2e51e1de54295685d7f0c72ee794e2e6335a95b1d056c7e77260e8"
},
{
+ "name": "face_palm",
+ "unicode": "1F926",
+ "digest": "4ec873048b34b1bb34430724cf28e4bee6c0a9eee88ce39b9d1565047dc92420"
+ },
+ {
+ "name": "face_palm_tone1",
+ "unicode": "1F926-1F3FB",
+ "digest": "e93ef92b4c01dbea6c400e708e23dd36da92ccfbf5eb4f177b3b20c3a46bdc19"
+ },
+ {
+ "name": "face_palm_tone2",
+ "unicode": "1F926-1F3FC",
+ "digest": "22c8bf9fd9fa2ed9dca7a6397ed00ba6cfe9aeef2b0fb7b516ee4dda0df050ea"
+ },
+ {
+ "name": "face_palm_tone3",
+ "unicode": "1F926-1F3FD",
+ "digest": "c0b8bb9d2423e6787b6bdf1ca5a13f52853e4f48a9a1af0f2d4af1364fff022e"
+ },
+ {
+ "name": "face_palm_tone4",
+ "unicode": "1F926-1F3FE",
+ "digest": "f522ab186adcbb4549ea2c03500cdd7a86add548e43ebf7a54d58cc24deea072"
+ },
+ {
+ "name": "face_palm_tone5",
+ "unicode": "1F926-1F3FF",
+ "digest": "363507ae7178b5ec583635f47bcab10c897346f48b85d8759b1004c32cd8ad65"
+ },
+ {
"name": "factory",
"unicode": "1F3ED",
"digest": "c7aeb61ed8b0ac5c91d5197c73f1e2bb801921c22a76bb82c7659d990680dcb0"
@@ -2520,6 +2550,16 @@
"digest": "45aca538d3a9831a0c7de491e5656c17705c07b8f4ac8e85254656b608976016"
},
{
+ "name": "fencer",
+ "unicode": "1F93A",
+ "digest": "5db00fa456af9f6c7cb88d300579dd63e426bcb97ad25486b664aff25c688e21"
+ },
+ {
+ "name": "fencing",
+ "unicode": "1F93A",
+ "digest": "5db00fa456af9f6c7cb88d300579dd63e426bcb97ad25486b664aff25c688e21"
+ },
+ {
"name": "ferris_wheel",
"unicode": "1F3A1",
"digest": "24b4551b7b79a2a5fd73de61542f2b444f896a52030c5f29791c8fcfcc28b95c"
@@ -2550,54 +2590,64 @@
"digest": "4da212148cadb9c4ea91e60d2d8316e38cea99ef4f14afc023711dd7c54ade5a"
},
{
- "name": "finger_pointing_down",
- "unicode": "1F597",
- "digest": "0c542ac3141e8f2e74767acd0eb399c2d68c779cb78bf16d437ad3b1f8134ad9"
+ "name": "fingers_crossed",
+ "unicode": "1F91E",
+ "digest": "a5c797ead191b9712e185083266b455cdf09f6a34c10f8c51aa145e6073427e1"
},
{
- "name": "white_down_pointing_left_hand_index",
- "unicode": "1F597",
- "digest": "0c542ac3141e8f2e74767acd0eb399c2d68c779cb78bf16d437ad3b1f8134ad9"
+ "name": "hand_with_index_and_middle_finger_crossed",
+ "unicode": "1F91E",
+ "digest": "a5c797ead191b9712e185083266b455cdf09f6a34c10f8c51aa145e6073427e1"
},
{
- "name": "finger_pointing_down2",
- "unicode": "1F59F",
- "digest": "c5b128a232cbf518544802a2ae1459368274297163721fa05d0103cf95b2b1ee"
+ "name": "fingers_crossed_tone1",
+ "unicode": "1F91E-1F3FB",
+ "digest": "db56d47bf887f2d8459a3aaba23f15c0087234ae5a54125052e7046e034a4988"
},
{
- "name": "sideways_white_down_pointing_index",
- "unicode": "1F59F",
- "digest": "c5b128a232cbf518544802a2ae1459368274297163721fa05d0103cf95b2b1ee"
+ "name": "hand_with_index_and_middle_fingers_crossed_tone1",
+ "unicode": "1F91E-1F3FB",
+ "digest": "db56d47bf887f2d8459a3aaba23f15c0087234ae5a54125052e7046e034a4988"
},
{
- "name": "finger_pointing_left",
- "unicode": "1F598",
- "digest": "d178ece691e2091be08db77fda9cf05462934628557358a8cb6222587b291f7e"
+ "name": "fingers_crossed_tone2",
+ "unicode": "1F91E-1F3FC",
+ "digest": "19f1bcca3991db7ed2037278c0baab6cd7f12aeaf2e0074de402c4d9e45c1899"
},
{
- "name": "sideways_white_left_pointing_index",
- "unicode": "1F598",
- "digest": "d178ece691e2091be08db77fda9cf05462934628557358a8cb6222587b291f7e"
+ "name": "hand_with_index_and_middle_fingers_crossed_tone2",
+ "unicode": "1F91E-1F3FC",
+ "digest": "19f1bcca3991db7ed2037278c0baab6cd7f12aeaf2e0074de402c4d9e45c1899"
},
{
- "name": "finger_pointing_right",
- "unicode": "1F599",
- "digest": "a412a47544d8f401f9181f8826c5fa3d6b42a1d76f6926963c2d9cd2a01be06d"
+ "name": "fingers_crossed_tone3",
+ "unicode": "1F91E-1F3FD",
+ "digest": "895a3314f6a310f31f7e728bcca20ff834fbfac62ce00e27e3ea5ad0dfc1ba35"
},
{
- "name": "sideways_white_right_pointing_index",
- "unicode": "1F599",
- "digest": "a412a47544d8f401f9181f8826c5fa3d6b42a1d76f6926963c2d9cd2a01be06d"
+ "name": "hand_with_index_and_middle_fingers_crossed_tone3",
+ "unicode": "1F91E-1F3FD",
+ "digest": "895a3314f6a310f31f7e728bcca20ff834fbfac62ce00e27e3ea5ad0dfc1ba35"
},
{
- "name": "finger_pointing_up",
- "unicode": "1F59E",
- "digest": "32c2ccab52aa318a47c816d1bcf9c076e667c9ef3e64ce37d7ba7e827238690d"
+ "name": "fingers_crossed_tone4",
+ "unicode": "1F91E-1F3FE",
+ "digest": "fcb5c4de2001d23a5df1b8702624d134b7f94e93e2dcc8adf6c1033c77722b0e"
},
{
- "name": "sideways_white_up_pointing_index",
- "unicode": "1F59E",
- "digest": "32c2ccab52aa318a47c816d1bcf9c076e667c9ef3e64ce37d7ba7e827238690d"
+ "name": "hand_with_index_and_middle_fingers_crossed_tone4",
+ "unicode": "1F91E-1F3FE",
+ "digest": "fcb5c4de2001d23a5df1b8702624d134b7f94e93e2dcc8adf6c1033c77722b0e"
+ },
+ {
+ "name": "fingers_crossed_tone5",
+ "unicode": "1F91E-1F3FF",
+ "digest": "50132c78d530b048c21be4e788b446872a79b3b3a91009db12f4021c44c8469d"
+ },
+ {
+ "name": "hand_with_index_and_middle_fingers_crossed_tone5",
+ "unicode": "1F91E-1F3FF",
+ "digest": "50132c78d530b048c21be4e788b446872a79b3b3a91009db12f4021c44c8469d"
},
{
"name": "fire",
@@ -2615,19 +2665,19 @@
"digest": "c3a518f27d625e3b62dffa227eb82764bf0a147f10ec0e7f4f43f3f96751af20"
},
{
- "name": "fire_engine_oncoming",
- "unicode": "1F6F1",
- "digest": "e2482c450136d373f74dfafddf502e0b675eb5d2e1e1c645f163db0e4d15fbb6"
+ "name": "fireworks",
+ "unicode": "1F386",
+ "digest": "b62ae08a00c0cc6eba8f9666c8fd9946ce57c3cfc01fe99542a8690a4a566a65"
},
{
- "name": "oncoming_fire_engine",
- "unicode": "1F6F1",
- "digest": "e2482c450136d373f74dfafddf502e0b675eb5d2e1e1c645f163db0e4d15fbb6"
+ "name": "first_place",
+ "unicode": "1F947",
+ "digest": "e3de5d9f14f05544dbee5965cc2baa20e7b417a488c8a18598979038860fd901"
},
{
- "name": "fireworks",
- "unicode": "1F386",
- "digest": "b62ae08a00c0cc6eba8f9666c8fd9946ce57c3cfc01fe99542a8690a4a566a65"
+ "name": "first_place_medal",
+ "unicode": "1F947",
+ "digest": "e3de5d9f14f05544dbee5965cc2baa20e7b417a488c8a18598979038860fd901"
},
{
"name": "first_quarter_moon",
@@ -5300,41 +5350,11 @@
"digest": "ebf49007f367dc05580e9dab942e93e9dda12fa1dc2caa410ac7f8d8cd55d2a3"
},
{
- "name": "flip_phone",
- "unicode": "1F581",
- "digest": "be59efba4bc0759af5a726c06619090ef5071bf2541611d71691dedecee6c697"
- },
- {
- "name": "clamshell_mobile_phone",
- "unicode": "1F581",
- "digest": "be59efba4bc0759af5a726c06619090ef5071bf2541611d71691dedecee6c697"
- },
- {
- "name": "floppy_black",
- "unicode": "1F5AA",
- "digest": "9022f51bb09c5130c6d46bb2accb159bed6f54d6fbffda6ecad62965ebc958ea"
- },
- {
- "name": "black_hard_shell_floppy_disk",
- "unicode": "1F5AA",
- "digest": "9022f51bb09c5130c6d46bb2accb159bed6f54d6fbffda6ecad62965ebc958ea"
- },
- {
"name": "floppy_disk",
"unicode": "1F4BE",
"digest": "4ee0b5bba41b9e301ed125d3ee1c263bef171ca499e6e1b89276b09af2bc03a0"
},
{
- "name": "floppy_white",
- "unicode": "1F5AB",
- "digest": "ec79c400117c4506ef8cf3eebef6c42dd37e60b3079d3e98b6ccd06e517e2af0"
- },
- {
- "name": "white_hard_shell_floppy_disk",
- "unicode": "1F5AB",
- "digest": "ec79c400117c4506ef8cf3eebef6c42dd37e60b3079d3e98b6ccd06e517e2af0"
- },
- {
"name": "flower_playing_cards",
"unicode": "1F3B4",
"digest": "edba47c2e3051b2c7effd98794ec977174052782edcb491daec82a2b0d853869"
@@ -5355,21 +5375,6 @@
"digest": "bc3631a4e9e8473b92e842008937add2cd9ffad5b7d772ce759fb5ff6c0e3dca"
},
{
- "name": "folder",
- "unicode": "1F5C0",
- "digest": "8932141321911032ce8469ba85fe309b78384545c3b9946978b383670b956644"
- },
- {
- "name": "folder_open",
- "unicode": "1F5C1",
- "digest": "74f3b484771c3d6ef61cf003de25c1a59b875afa46c057b5b1d92d9f99460685"
- },
- {
- "name": "open_folder",
- "unicode": "1F5C1",
- "digest": "74f3b484771c3d6ef61cf003de25c1a59b875afa46c057b5b1d92d9f99460685"
- },
- {
"name": "football",
"unicode": "1F3C8",
"digest": "ebd790471c3a28d3077818e3b31d915ffe443e06e299bc5cf0dd2534d080634c"
@@ -5410,6 +5415,16 @@
"digest": "ebee16e86bc9be843dfc72ab5372fb462f06be4486b5b25d7d4cac9b2c8b01c8"
},
{
+ "name": "fox",
+ "unicode": "1F98A",
+ "digest": "e9903cb0396f7e49bdd2c384b38e614c13bfa576b3ecc1ec7b9819e4a40d91d1"
+ },
+ {
+ "name": "fox_face",
+ "unicode": "1F98A",
+ "digest": "e9903cb0396f7e49bdd2c384b38e614c13bfa576b3ecc1ec7b9819e4a40d91d1"
+ },
+ {
"name": "frame_photo",
"unicode": "1F5BC",
"digest": "d5074f748a15055ec1fb812c1e5e169e6e3cc73c522c54be1359b0e26c0fc75c"
@@ -5420,29 +5435,19 @@
"digest": "d5074f748a15055ec1fb812c1e5e169e6e3cc73c522c54be1359b0e26c0fc75c"
},
{
- "name": "frame_tiles",
- "unicode": "1F5BD",
- "digest": "34a5bb044b4b3ad94b116ad106f7b6747fb8612dc0e9f8ccd4313c2920508df0"
- },
- {
- "name": "frame_with_tiles",
- "unicode": "1F5BD",
- "digest": "34a5bb044b4b3ad94b116ad106f7b6747fb8612dc0e9f8ccd4313c2920508df0"
- },
- {
- "name": "frame_x",
- "unicode": "1F5BE",
- "digest": "2e427688fd70361c8c59787d0722ad68abe1c3f968258ee99c0c77ce4b8a8e15"
+ "name": "free",
+ "unicode": "1F193",
+ "digest": "9973522457158362fc5bdd7da858e6371e28a8403d1ef9e4b6427195c7f72cfa"
},
{
- "name": "frame_with_an_x",
- "unicode": "1F5BE",
- "digest": "2e427688fd70361c8c59787d0722ad68abe1c3f968258ee99c0c77ce4b8a8e15"
+ "name": "french_bread",
+ "unicode": "1F956",
+ "digest": "47518a4312f57207b8e8c38188d4a2bd8b16830a885cfcf2d281cfab50c1bc6e"
},
{
- "name": "free",
- "unicode": "1F193",
- "digest": "9973522457158362fc5bdd7da858e6371e28a8403d1ef9e4b6427195c7f72cfa"
+ "name": "baguette_bread",
+ "unicode": "1F956",
+ "digest": "47518a4312f57207b8e8c38188d4a2bd8b16830a885cfcf2d281cfab50c1bc6e"
},
{
"name": "fried_shrimp",
@@ -5560,16 +5565,21 @@
"digest": "f55e4b16a41b6f5e3c817a301420360ba4486e4e82e1092a56a3e3cc4069087d"
},
{
- "name": "girls_symbol",
- "unicode": "1F6CA",
- "digest": "2c55aee81defd7a1620ffeaad8d9bcc1835f19237c72c79633aec45671ddb9ff"
- },
- {
"name": "globe_with_meridians",
"unicode": "1F310",
"digest": "725bebeb3c09a9e3701ebe49e672dcfbf2b73575e05f0821263511577b013b75"
},
{
+ "name": "goal",
+ "unicode": "1F945",
+ "digest": "7088c432f276ff6f447dc0d431b9062b394fb401de1072fe59ca56267bfd6717"
+ },
+ {
+ "name": "goal_net",
+ "unicode": "1F945",
+ "digest": "7088c432f276ff6f447dc0d431b9062b394fb401de1072fe59ca56267bfd6717"
+ },
+ {
"name": "goat",
"unicode": "1F410",
"digest": "d07e384d08529ddcaddd2710f2ad913e5665dc15d5f99c28e16dadd245a111e8"
@@ -5585,6 +5595,11 @@
"digest": "7d7ecc6e226596f646030a4109c2b0001ef0cc690e4863e450bf5d29e7a90344"
},
{
+ "name": "gorilla",
+ "unicode": "1F98D",
+ "digest": "4a564dc14f8ae5450d094f6410ec7f099a7f07dc5254b6395f44a35527bdb4b7"
+ },
+ {
"name": "grapes",
"unicode": "1F347",
"digest": "74d1a09ab411234a84d025a2e717e7ec5791bc02aad29853896d21c0f0283c50"
@@ -5735,16 +5750,6 @@
"digest": "c51a30cb7e575d29ffed16780a6c95ae3f300b8ac523012f4a6e116d68c1fd15"
},
{
- "name": "hand_splayed_reverse",
- "unicode": "1F591",
- "digest": "ff0af0fe9def7388adca6836e5958492282b1afae99f1b6e1e65d11ba68b96db"
- },
- {
- "name": "reversed_raised_hand_with_fingers_splayed",
- "unicode": "1F591",
- "digest": "ff0af0fe9def7388adca6836e5958492282b1afae99f1b6e1e65d11ba68b96db"
- },
- {
"name": "hand_splayed_tone1",
"unicode": "1F590-1F3FB",
"digest": "c31fb44a982ed8808e1c311ec1b0b9c5afcb47f16bb1fc731dc483adf8f0d049"
@@ -5795,24 +5800,99 @@
"digest": "4b3a0aba7829772fec09f26d6facc19a2f822d2998015297b18b5cab85190ee2"
},
{
- "name": "hand_victory",
- "unicode": "1F594",
- "digest": "2d512ced4e8a438f2a346aed67310d3080f9828c748ade1be95943c32ba1c735"
+ "name": "handbag",
+ "unicode": "1F45C",
+ "digest": "45410a3eed0c2e3f68748d7649fa9e33a90f4e80d5291206bdd0b40380c6da45"
},
{
- "name": "reversed_victory_hand",
- "unicode": "1F594",
- "digest": "2d512ced4e8a438f2a346aed67310d3080f9828c748ade1be95943c32ba1c735"
+ "name": "handball",
+ "unicode": "1F93E",
+ "digest": "94ceb28024eb3259d8b137cafd7438773e717fbc04f5da810f85e43ca0fa9e00"
},
{
- "name": "handbag",
- "unicode": "1F45C",
- "digest": "45410a3eed0c2e3f68748d7649fa9e33a90f4e80d5291206bdd0b40380c6da45"
+ "name": "handball_tone1",
+ "unicode": "1F93E-1F3FB",
+ "digest": "8bec4de0d05c80e335e44d65598d186ca92696977353c9fd9c2a5efa122cb842"
+ },
+ {
+ "name": "handball_tone2",
+ "unicode": "1F93E-1F3FC",
+ "digest": "2ff4131e1e2f089b315d8e176c9348877c26c2bd03706fb75d41bc61bc99bf93"
+ },
+ {
+ "name": "handball_tone3",
+ "unicode": "1F93E-1F3FD",
+ "digest": "224a71f94dd37d3729325d11412334667a81422e21f6d7c008730ff350f51a80"
+ },
+ {
+ "name": "handball_tone4",
+ "unicode": "1F93E-1F3FE",
+ "digest": "a5f7a9db790565981bad2d0d9e09554c8c509a8179b4705a418300d58a7894b4"
+ },
+ {
+ "name": "handball_tone5",
+ "unicode": "1F93E-1F3FF",
+ "digest": "00404572d4683f2e8e8a494aa733e96fbec1723634d0a8cb8d75f2829a789d27"
+ },
+ {
+ "name": "handshake",
+ "unicode": "1F91D",
+ "digest": "cb4b08b70560908f96bda0aecd2f4c966bea180f9b7200e4c81d342dc8d36087"
+ },
+ {
+ "name": "shaking_hands",
+ "unicode": "1F91D",
+ "digest": "cb4b08b70560908f96bda0aecd2f4c966bea180f9b7200e4c81d342dc8d36087"
+ },
+ {
+ "name": "handshake_tone1",
+ "unicode": "1F91D-1F3FB",
+ "digest": "40470e224683ba375ed8698c0cbd560556be5a8898237ddf504377a3a7e89ff0"
+ },
+ {
+ "name": "shaking_hands_tone1",
+ "unicode": "1F91D-1F3FB",
+ "digest": "40470e224683ba375ed8698c0cbd560556be5a8898237ddf504377a3a7e89ff0"
+ },
+ {
+ "name": "handshake_tone2",
+ "unicode": "1F91D-1F3FC",
+ "digest": "77ed378243bf682f1f4f1a8caeabcbedf772f54631cc40ea46c099e46a499b18"
+ },
+ {
+ "name": "shaking_hands_tone2",
+ "unicode": "1F91D-1F3FC",
+ "digest": "77ed378243bf682f1f4f1a8caeabcbedf772f54631cc40ea46c099e46a499b18"
+ },
+ {
+ "name": "handshake_tone3",
+ "unicode": "1F91D-1F3FD",
+ "digest": "81b95050f0878b617f5d2640e34031c26a0072e46ca5a688eb4356e48bc74c92"
+ },
+ {
+ "name": "shaking_hands_tone3",
+ "unicode": "1F91D-1F3FD",
+ "digest": "81b95050f0878b617f5d2640e34031c26a0072e46ca5a688eb4356e48bc74c92"
+ },
+ {
+ "name": "handshake_tone4",
+ "unicode": "1F91D-1F3FE",
+ "digest": "74919a6f026fbbd0ccdbdbd4288d1b2ef3bda8930e9142c07736db4a7f3ef345"
+ },
+ {
+ "name": "shaking_hands_tone4",
+ "unicode": "1F91D-1F3FE",
+ "digest": "74919a6f026fbbd0ccdbdbd4288d1b2ef3bda8930e9142c07736db4a7f3ef345"
+ },
+ {
+ "name": "handshake_tone5",
+ "unicode": "1F91D-1F3FF",
+ "digest": "a30d662bfad0074ca7e32cf6f7229b643b636c4beaec496777eb7e1d5b6fc470"
},
{
- "name": "hard_disk",
- "unicode": "1F5B4",
- "digest": "df8549d4281f5ae70fb6792a02c078e651764b0276aa43b7407236bd38fc21b4"
+ "name": "shaking_hands_tone5",
+ "unicode": "1F91D-1F3FF",
+ "digest": "a30d662bfad0074ca7e32cf6f7229b643b636c4beaec496777eb7e1d5b6fc470"
},
{
"name": "hash",
@@ -5880,16 +5960,6 @@
"digest": "8a1f28b97d661ca4cff5ee13889ca61b5fa745ccb590e80832b7d7701df101d6"
},
{
- "name": "heart_tip",
- "unicode": "1F394",
- "digest": "2178829e2c85accda55d2f685544587f6de5c8398a127ae1e08ff1c4ab282204"
- },
- {
- "name": "heart_with_tip_on_the_left",
- "unicode": "1F394",
- "digest": "2178829e2c85accda55d2f685544587f6de5c8398a127ae1e08ff1c4ab282204"
- },
- {
"name": "heartbeat",
"unicode": "1F493",
"digest": "c9ec024943439d476df6f5ec3a6b30508365a7af3427671a80de3ef2f4f95ffe"
@@ -6145,16 +6215,6 @@
"digest": "310b7bdcca93452fe10c72c03d0aafa12b98e5d3408896d275d06d3693812c7a"
},
{
- "name": "info",
- "unicode": "1F6C8",
- "digest": "59c35e77d5ee663c5d56f7d8af845ce8aeb9935e526ae4a06e02ae70e71212ca"
- },
- {
- "name": "circled_information_source",
- "unicode": "1F6C8",
- "digest": "59c35e77d5ee663c5d56f7d8af845ce8aeb9935e526ae4a06e02ae70e71212ca"
- },
- {
"name": "information_desk_person",
"unicode": "1F481",
"digest": "9f12a4a58a650e8e1d3836ef857003c3ccd42ad4203a2479eb95100bf6559064"
@@ -6250,16 +6310,6 @@
"digest": "f986ad32e419cca81c995f8371f0189d1490172a97ebbeac60054a1af08949c5"
},
{
- "name": "jet_up",
- "unicode": "1F6E6",
- "digest": "3708e5e034b1c64d1268d66527e13c369aa0f8903bce9172bef773b2d1940948"
- },
- {
- "name": "up_pointing_military_airplane",
- "unicode": "1F6E6",
- "digest": "3708e5e034b1c64d1268d66527e13c369aa0f8903bce9172bef773b2d1940948"
- },
- {
"name": "joy",
"unicode": "1F602",
"digest": "75d7a05043523d290c46d3b313b19ed3c95271f1110bcf234cf13d4273625b08"
@@ -6275,6 +6325,66 @@
"digest": "671ee588f397a96f27056a67e6a06d6e8d22c2109ec57b2859badb5fec9cf8dd"
},
{
+ "name": "juggling",
+ "unicode": "1F939",
+ "digest": "1f5dafa78de8b37f3df88fdf3084d2380666bd74ab2f449754d8724f6f8dbfa5"
+ },
+ {
+ "name": "juggler",
+ "unicode": "1F939",
+ "digest": "1f5dafa78de8b37f3df88fdf3084d2380666bd74ab2f449754d8724f6f8dbfa5"
+ },
+ {
+ "name": "juggling_tone1",
+ "unicode": "1F939-1F3FB",
+ "digest": "b0b4d020148c896be69c28b08e3c486f6db270d138c7ccf4be362b29eb99878d"
+ },
+ {
+ "name": "juggler_tone1",
+ "unicode": "1F939-1F3FB",
+ "digest": "b0b4d020148c896be69c28b08e3c486f6db270d138c7ccf4be362b29eb99878d"
+ },
+ {
+ "name": "juggling_tone2",
+ "unicode": "1F939-1F3FC",
+ "digest": "cfe0c1649b2fdca03673e0e64f3a7d06d4bd49b8954c769aeb7eb88b70ec99f4"
+ },
+ {
+ "name": "juggler_tone2",
+ "unicode": "1F939-1F3FC",
+ "digest": "cfe0c1649b2fdca03673e0e64f3a7d06d4bd49b8954c769aeb7eb88b70ec99f4"
+ },
+ {
+ "name": "juggling_tone3",
+ "unicode": "1F939-1F3FD",
+ "digest": "7f87022722008bb265abe245e8157dc7a61944f5da62b3cf86f26ee1b3bdef63"
+ },
+ {
+ "name": "juggler_tone3",
+ "unicode": "1F939-1F3FD",
+ "digest": "7f87022722008bb265abe245e8157dc7a61944f5da62b3cf86f26ee1b3bdef63"
+ },
+ {
+ "name": "juggling_tone4",
+ "unicode": "1F939-1F3FE",
+ "digest": "1f00da8c05582c95501cc6c3fe5ce0f9bfbc16789dcee59844a8fe7831198583"
+ },
+ {
+ "name": "juggler_tone4",
+ "unicode": "1F939-1F3FE",
+ "digest": "1f00da8c05582c95501cc6c3fe5ce0f9bfbc16789dcee59844a8fe7831198583"
+ },
+ {
+ "name": "juggling_tone5",
+ "unicode": "1F939-1F3FF",
+ "digest": "a195bf734788eb7961c00dbc05255a49da8b9d5042fada29b26cc20393d3ce52"
+ },
+ {
+ "name": "juggler_tone5",
+ "unicode": "1F939-1F3FF",
+ "digest": "a195bf734788eb7961c00dbc05255a49da8b9d5042fada29b26cc20393d3ce52"
+ },
+ {
"name": "kaaba",
"unicode": "1F54B",
"digest": "a4618782f9583f077bd383965f1c91b9985a949bb7b6cec7af22914e7f5e9ab6"
@@ -6296,38 +6406,8 @@
},
{
"name": "keyboard",
- "unicode": "1F5AE",
- "digest": "3b254cbf19946df3af05e501d11653d89fcda91684b7248d86186f842b83bf16"
- },
- {
- "name": "wired_keyboard",
- "unicode": "1F5AE",
- "digest": "3b254cbf19946df3af05e501d11653d89fcda91684b7248d86186f842b83bf16"
- },
- {
- "name": "keyboard_mouse",
- "unicode": "1F5A6",
- "digest": "95b523e55d8afeaeb06442bbe20e47f49643bb0c32d89a8cdbbccdead20532b3"
- },
- {
- "name": "keyboard_and_mouse",
- "unicode": "1F5A6",
- "digest": "95b523e55d8afeaeb06442bbe20e47f49643bb0c32d89a8cdbbccdead20532b3"
- },
- {
- "name": "keyboard_with_jacks",
- "unicode": "1F398",
- "digest": "e29a0d0b8018d13458469edca13c60a882a2817957c1aa11b050684c995a47ee"
- },
- {
- "name": "musical_keyboard_with_jacks",
- "unicode": "1F398",
- "digest": "e29a0d0b8018d13458469edca13c60a882a2817957c1aa11b050684c995a47ee"
- },
- {
- "name": "keycap_ten",
- "unicode": "1F51F",
- "digest": "c7c9491021740d2c17edddb856f79579b0b943d8dc85a2f48dbaac84f35b8a40"
+ "unicode": "2328",
+ "digest": "34da8ff62ca964142f9281b80123dbba74deaac8d77fa61758c30cfb36c31386"
},
{
"name": "kimono",
@@ -6385,6 +6465,16 @@
"digest": "f0f8636cb1a02b93cc72ce1b194b890fca823d91e35926b889be3ecfae79207f"
},
{
+ "name": "kiwi",
+ "unicode": "1F95D",
+ "digest": "70a3a05f333d9455d2da12eed970bc3baae416286848fed8e5dd31b5be0819be"
+ },
+ {
+ "name": "kiwifruit",
+ "unicode": "1F95D",
+ "digest": "70a3a05f333d9455d2da12eed970bc3baae416286848fed8e5dd31b5be0819be"
+ },
+ {
"name": "knife",
"unicode": "1F52A",
"digest": "e6189e4843c6e80875b4952fcddb0c858f7c6039b9214bbec6a261a1358425df"
@@ -6450,19 +6540,69 @@
"digest": "e58cb714353e96a2891a5d97910ff79660e637af909b81c49c919d3735db55b4"
},
{
- "name": "left_luggage",
- "unicode": "1F6C5",
- "digest": "6625077767a51163ea20cbc299f3c13fd5ccf1b5ce365ee702ef1fef6be3dadf"
+ "name": "left_facing_fist",
+ "unicode": "1F91B",
+ "digest": "7861be485beefae0de341df2f21576666e22f63511a033e785752f30c07291da"
+ },
+ {
+ "name": "left_fist",
+ "unicode": "1F91B",
+ "digest": "7861be485beefae0de341df2f21576666e22f63511a033e785752f30c07291da"
+ },
+ {
+ "name": "left_facing_fist_tone1",
+ "unicode": "1F91B-1F3FB",
+ "digest": "2e4c4dd96b0e4b46fe0f9ce5666344d266d0f17a8544cbae73d96638d1955296"
+ },
+ {
+ "name": "left_fist_tone1",
+ "unicode": "1F91B-1F3FB",
+ "digest": "2e4c4dd96b0e4b46fe0f9ce5666344d266d0f17a8544cbae73d96638d1955296"
+ },
+ {
+ "name": "left_facing_fist_tone2",
+ "unicode": "1F91B-1F3FC",
+ "digest": "b96a63a801175ce98a75f0edad7b5574251a3fbbd894d8ab3f21aeeda366cc13"
},
{
- "name": "left_receiver",
- "unicode": "1F57B",
- "digest": "8052e44951afee04c87296128744b5019ec783c9ed1a231f659af6c8ddaa50f3"
+ "name": "left_fist_tone2",
+ "unicode": "1F91B-1F3FC",
+ "digest": "b96a63a801175ce98a75f0edad7b5574251a3fbbd894d8ab3f21aeeda366cc13"
},
{
- "name": "left_hand_telephone_receiver",
- "unicode": "1F57B",
- "digest": "8052e44951afee04c87296128744b5019ec783c9ed1a231f659af6c8ddaa50f3"
+ "name": "left_facing_fist_tone3",
+ "unicode": "1F91B-1F3FD",
+ "digest": "99df84635513c2ebfef24df1bd3705233e02149eef788c7b82ca0548df6f6ea5"
+ },
+ {
+ "name": "left_fist_tone3",
+ "unicode": "1F91B-1F3FD",
+ "digest": "99df84635513c2ebfef24df1bd3705233e02149eef788c7b82ca0548df6f6ea5"
+ },
+ {
+ "name": "left_facing_fist_tone4",
+ "unicode": "1F91B-1F3FE",
+ "digest": "68954842ca725aec0aa39bce4aa81aad17ac30f5f298561dfa411feb07414cd3"
+ },
+ {
+ "name": "left_fist_tone4",
+ "unicode": "1F91B-1F3FE",
+ "digest": "68954842ca725aec0aa39bce4aa81aad17ac30f5f298561dfa411feb07414cd3"
+ },
+ {
+ "name": "left_facing_fist_tone5",
+ "unicode": "1F91B-1F3FF",
+ "digest": "a419b33fae82612dc860ff48950c0547a1642d4f0c94b6547324440837d3bb21"
+ },
+ {
+ "name": "left_fist_tone5",
+ "unicode": "1F91B-1F3FF",
+ "digest": "a419b33fae82612dc860ff48950c0547a1642d4f0c94b6547324440837d3bb21"
+ },
+ {
+ "name": "left_luggage",
+ "unicode": "1F6C5",
+ "digest": "6625077767a51163ea20cbc299f3c13fd5ccf1b5ce365ee702ef1fef6be3dadf"
},
{
"name": "left_right_arrow",
@@ -6570,16 +6710,6 @@
"digest": "79b0edf6ce1fd024dd7f458e322ad8588af0b789a04cc1cf38380dc8b9c76f55"
},
{
- "name": "light_check_mark",
- "unicode": "1F5F8",
- "digest": "7842b0df8c2b6703bed0cce5d2790d394eec7120b2a245a76f375528f2729a7b"
- },
- {
- "name": "light_mark",
- "unicode": "1F5F8",
- "digest": "7842b0df8c2b6703bed0cce5d2790d394eec7120b2a245a76f375528f2729a7b"
- },
- {
"name": "light_rail",
"unicode": "1F688",
"digest": "2f30b23a738371690b2f00d96ddb5ceb90a1442b5478754626a3dfa263ed2fc1"
@@ -6605,16 +6735,16 @@
"digest": "8740d8086525c7a836d64625a6915cc1c59af69ba143456dbb59e0179276895e"
},
{
- "name": "lips2",
- "unicode": "1F5E2",
- "digest": "c6ba915982ac47d8aaf14ad3605949df95588acfb4e147bf608f8c1714cdf19b"
- },
- {
"name": "lipstick",
"unicode": "1F484",
"digest": "751dcb22706a796033b13a2ccb94304236ec13207ad4d011e02d230ae33ab5c1"
},
{
+ "name": "lizard",
+ "unicode": "1F98E",
+ "digest": "fb9191f9eab58b8403d4c4626ccbb14ba05c1f6944011751a8edcc4dd03c66e6"
+ },
+ {
"name": "lock",
"unicode": "1F512",
"digest": "043b4fc0b8c79d47a07d91308e628e1ac262aea6c1ec05e6b84bf7bcdf89dc83"
@@ -6660,6 +6790,16 @@
"digest": "a065d00a416e297c168b0a675cafcf492fedf94865cb21801a1be5a3914593d4"
},
{
+ "name": "lying_face",
+ "unicode": "1F925",
+ "digest": "ce836170165e1b70938273f289c02c2106873cd9ab5472dbcd487c2f9f53f13d"
+ },
+ {
+ "name": "liar",
+ "unicode": "1F925",
+ "digest": "ce836170165e1b70938273f289c02c2106873cd9ab5472dbcd487c2f9f53f13d"
+ },
+ {
"name": "m",
"unicode": "24C2",
"digest": "54588ac2b7fcd53a96f17124e9de69b617613fcd5af9ad2930a094cb795bb9f4"
@@ -6705,6 +6845,121 @@
"digest": "42b882d2c6aa095f1afcf901203838d95c1908bdc725519779186b9c33c728d7"
},
{
+ "name": "man_dancing",
+ "unicode": "1F57A",
+ "digest": "9f632ee0c886d5f03c61e5f3a27668262c0cc2693b857a91c23c1e5ea3785b9e"
+ },
+ {
+ "name": "male_dancer",
+ "unicode": "1F57A",
+ "digest": "9f632ee0c886d5f03c61e5f3a27668262c0cc2693b857a91c23c1e5ea3785b9e"
+ },
+ {
+ "name": "man_dancing_tone1",
+ "unicode": "1F57A-1F3FB",
+ "digest": "6c56a16cb105bcdd97472645b3a351cebdbb1132cbfd18b0118f289db5fbe741"
+ },
+ {
+ "name": "male_dancer_tone1",
+ "unicode": "1F57A-1F3FB",
+ "digest": "6c56a16cb105bcdd97472645b3a351cebdbb1132cbfd18b0118f289db5fbe741"
+ },
+ {
+ "name": "man_dancing_tone2",
+ "unicode": "1F57A-1F3FC",
+ "digest": "ed7e78c14d205a03fdd5581e5213add69a55e13b4cbaf76a6d5a0d6c80f53327"
+ },
+ {
+ "name": "male_dancer_tone2",
+ "unicode": "1F57A-1F3FC",
+ "digest": "ed7e78c14d205a03fdd5581e5213add69a55e13b4cbaf76a6d5a0d6c80f53327"
+ },
+ {
+ "name": "man_dancing_tone3",
+ "unicode": "1F57A-1F3FD",
+ "digest": "13b45403e11800163406206eedeb8b579cc83eca2f60246be97e099164387bc8"
+ },
+ {
+ "name": "male_dancer_tone3",
+ "unicode": "1F57A-1F3FD",
+ "digest": "13b45403e11800163406206eedeb8b579cc83eca2f60246be97e099164387bc8"
+ },
+ {
+ "name": "man_dancing_tone4",
+ "unicode": "1F57A-1F3FE",
+ "digest": "f6feb1b0b83565fadcdd1a8737d3daa08893e919547d2a06de899160162d9c4a"
+ },
+ {
+ "name": "male_dancer_tone4",
+ "unicode": "1F57A-1F3FE",
+ "digest": "f6feb1b0b83565fadcdd1a8737d3daa08893e919547d2a06de899160162d9c4a"
+ },
+ {
+ "name": "man_dancing_tone5",
+ "unicode": "1F57A-1F3FF",
+ "digest": "fe20a9ed9ba991653b4d0683de347ed7c226a5d75610307584a2ddd6fcd1e3f2"
+ },
+ {
+ "name": "male_dancer_tone5",
+ "unicode": "1F57A-1F3FF",
+ "digest": "fe20a9ed9ba991653b4d0683de347ed7c226a5d75610307584a2ddd6fcd1e3f2"
+ },
+ {
+ "name": "man_in_tuxedo",
+ "unicode": "1F935",
+ "digest": "4d451a971dfefedc4830ba78e19b123f250e09ae65baddccdc56c0f8aa3a9b50"
+ },
+ {
+ "name": "man_in_tuxedo_tone1",
+ "unicode": "1F935-1F3FB",
+ "digest": "2814833334fb211ae2ecb1fb5964e9752282d0fb4d7f3477de5dd2a4f812a793"
+ },
+ {
+ "name": "tuxedo_tone1",
+ "unicode": "1F935-1F3FB",
+ "digest": "2814833334fb211ae2ecb1fb5964e9752282d0fb4d7f3477de5dd2a4f812a793"
+ },
+ {
+ "name": "man_in_tuxedo_tone2",
+ "unicode": "1F935-1F3FC",
+ "digest": "cd1bab9ee0e2335d3cd99d51216cccdc4fc3c2cf20129b8b7e11a51a77258f68"
+ },
+ {
+ "name": "tuxedo_tone2",
+ "unicode": "1F935-1F3FC",
+ "digest": "cd1bab9ee0e2335d3cd99d51216cccdc4fc3c2cf20129b8b7e11a51a77258f68"
+ },
+ {
+ "name": "man_in_tuxedo_tone3",
+ "unicode": "1F935-1F3FD",
+ "digest": "f387775f925fe60b9f3e7cad63a55d4d196ddd41658029a70440d14c17cb99f9"
+ },
+ {
+ "name": "tuxedo_tone3",
+ "unicode": "1F935-1F3FD",
+ "digest": "f387775f925fe60b9f3e7cad63a55d4d196ddd41658029a70440d14c17cb99f9"
+ },
+ {
+ "name": "man_in_tuxedo_tone4",
+ "unicode": "1F935-1F3FE",
+ "digest": "08debd7a573d1201aee8a2f281ef7cb638d4a2a096222150391f36963f07c622"
+ },
+ {
+ "name": "tuxedo_tone4",
+ "unicode": "1F935-1F3FE",
+ "digest": "08debd7a573d1201aee8a2f281ef7cb638d4a2a096222150391f36963f07c622"
+ },
+ {
+ "name": "man_in_tuxedo_tone5",
+ "unicode": "1F935-1F3FF",
+ "digest": "e3b10e0619f0911cf9b665a265f4ef829b8f6ba6e9c3a021d0539a27e315f8fe"
+ },
+ {
+ "name": "tuxedo_tone5",
+ "unicode": "1F935-1F3FF",
+ "digest": "e3b10e0619f0911cf9b665a265f4ef829b8f6ba6e9c3a021d0539a27e315f8fe"
+ },
+ {
"name": "man_tone1",
"unicode": "1F468-1F3FB",
"digest": "7053e265fa7d2594de54a6c5d06c21795b9a7dfb36a1c5594ca43c4c6cc56504"
@@ -6810,6 +7065,16 @@
"digest": "72629a205e33f89337815ad7e51bb5c73947d1a9f98afe5072bdf4846827ae72"
},
{
+ "name": "martial_arts_uniform",
+ "unicode": "1F94B",
+ "digest": "a1ae797b31081425b388ab31efc635d8eb73a40980fd0fae4708aa5313e2a964"
+ },
+ {
+ "name": "karate_uniform",
+ "unicode": "1F94B",
+ "digest": "a1ae797b31081425b388ab31efc635d8eb73a40980fd0fae4708aa5313e2a964"
+ },
+ {
"name": "mask",
"unicode": "1F637",
"digest": "1b58af9ae599308aabf41bbd38f599fa896bd9fe5df7a40be9f2dc7e0e230600"
@@ -7030,6 +7295,16 @@
"digest": "5da18351dc14b66cfc070148c83b7c8e67e6b1e3f515ae501133c38ee5c28d3d"
},
{
+ "name": "milk",
+ "unicode": "1F95B",
+ "digest": "38b28ea40399601fabc95bac5eaaf5a9e4e25548ec80325bd5069395ea884f85"
+ },
+ {
+ "name": "glass_of_milk",
+ "unicode": "1F95B",
+ "digest": "38b28ea40399601fabc95bac5eaaf5a9e4e25548ec80325bd5069395ea884f85"
+ },
+ {
"name": "milky_way",
"unicode": "1F30C",
"digest": "17405ff31d94b13a1fb0adcda204b8adb95ca340bc3980d9ad9f42ba1e366e7d"
@@ -7085,31 +7360,6 @@
"digest": "2c9f185babcb4001fcef2b8dfc4a32126729843084d0076c3e3ccdc845ab23ad"
},
{
- "name": "mood_bubble",
- "unicode": "1F5F0",
- "digest": "1df7061217e478d43ab9a87d4f351c4ca56705acd6b4e0b0bedfdece77635f1b"
- },
- {
- "name": "mood_bubble_lightning",
- "unicode": "1F5F1",
- "digest": "4af3e4e53eaa328b0d20542ab31705a74bf9fd368cd0673b706838ce1681d3c9"
- },
- {
- "name": "lightning_mood_bubble",
- "unicode": "1F5F1",
- "digest": "4af3e4e53eaa328b0d20542ab31705a74bf9fd368cd0673b706838ce1681d3c9"
- },
- {
- "name": "mood_lightning",
- "unicode": "1F5F2",
- "digest": "6784635e81ec722fd50a1c2a23b0f9679e4bf1b5ae2b5a01eeb995bc1f7a426f"
- },
- {
- "name": "lightning_mood",
- "unicode": "1F5F2",
- "digest": "6784635e81ec722fd50a1c2a23b0f9679e4bf1b5ae2b5a01eeb995bc1f7a426f"
- },
- {
"name": "mortar_board",
"unicode": "1F393",
"digest": "d7fbe41d4b340d3564e484aec46a22c9613521414b2ba6eece2180db4d23e410"
@@ -7120,6 +7370,16 @@
"digest": "5f3d3de7feac953a70a318113531c2857d760a516c3d8d6f42d2a3b3b67ed196"
},
{
+ "name": "motor_scooter",
+ "unicode": "1F6F5",
+ "digest": "e2dc7c981744a71f46858bd0858ff91af704ac06425ed80377bc3b119e57c872"
+ },
+ {
+ "name": "motorbike",
+ "unicode": "1F6F5",
+ "digest": "e2dc7c981744a71f46858bd0858ff91af704ac06425ed80377bc3b119e57c872"
+ },
+ {
"name": "motorboat",
"unicode": "1F6E5",
"digest": "81c156643528c5a94a12d6d478e52a019f5a4e3eb58ee365cdd9d2361a7fdb01"
@@ -7210,16 +7470,6 @@
"digest": "f3ed37b639b7c16aae49502bd423f9fdeabaf15bc6f0f74063954b189e176b5d"
},
{
- "name": "mouse_one",
- "unicode": "1F5AF",
- "digest": "e0d2055ccba489d24e0c0b6d2f22793efe48a734b0fd50f5af88f721b40665c0"
- },
- {
- "name": "one_button_mouse",
- "unicode": "1F5AF",
- "digest": "e0d2055ccba489d24e0c0b6d2f22793efe48a734b0fd50f5af88f721b40665c0"
- },
- {
"name": "mouse_three_button",
"unicode": "1F5B1",
"digest": "3724341ac5ad0d01027ef1575db64f1db7619f590ca6ada960d1f2c18dc7fc6a"
@@ -7240,6 +7490,66 @@
"digest": "2c1d0662c95928936e6b9ab5a40c6110ff1cea5339f2803c7b63aabc76115afb"
},
{
+ "name": "mrs_claus",
+ "unicode": "1F936",
+ "digest": "1f72f586ca75bd7ebb4150cdcc8199a930c32fa4b81510cb8d200f1b3ddd4076"
+ },
+ {
+ "name": "mother_christmas",
+ "unicode": "1F936",
+ "digest": "1f72f586ca75bd7ebb4150cdcc8199a930c32fa4b81510cb8d200f1b3ddd4076"
+ },
+ {
+ "name": "mrs_claus_tone1",
+ "unicode": "1F936-1F3FB",
+ "digest": "244596919e0fed050203cf9e040899de323d7821235929f175852439927bd129"
+ },
+ {
+ "name": "mother_christmas_tone1",
+ "unicode": "1F936-1F3FB",
+ "digest": "244596919e0fed050203cf9e040899de323d7821235929f175852439927bd129"
+ },
+ {
+ "name": "mrs_claus_tone2",
+ "unicode": "1F936-1F3FC",
+ "digest": "8cde96e8521f3a90262a7f5f8a2989a9590d9a02cda2c37e92335dc05975c18d"
+ },
+ {
+ "name": "mother_christmas_tone2",
+ "unicode": "1F936-1F3FC",
+ "digest": "8cde96e8521f3a90262a7f5f8a2989a9590d9a02cda2c37e92335dc05975c18d"
+ },
+ {
+ "name": "mrs_claus_tone3",
+ "unicode": "1F936-1F3FD",
+ "digest": "c39cd4346d4581799dd0e9a6447c91a954a75747bf2682c8e4d79c3b0fcf7405"
+ },
+ {
+ "name": "mother_christmas_tone3",
+ "unicode": "1F936-1F3FD",
+ "digest": "c39cd4346d4581799dd0e9a6447c91a954a75747bf2682c8e4d79c3b0fcf7405"
+ },
+ {
+ "name": "mrs_claus_tone4",
+ "unicode": "1F936-1F3FE",
+ "digest": "84c85cf54559ea2d78d196fee96149a249af4f959b78e223a0ec4fb72abdbcab"
+ },
+ {
+ "name": "mother_christmas_tone4",
+ "unicode": "1F936-1F3FE",
+ "digest": "84c85cf54559ea2d78d196fee96149a249af4f959b78e223a0ec4fb72abdbcab"
+ },
+ {
+ "name": "mrs_claus_tone5",
+ "unicode": "1F936-1F3FF",
+ "digest": "ce26c0e0645713b17e7497d9f2d0484cc5477564dae99320cabf04d160d3b2ff"
+ },
+ {
+ "name": "mother_christmas_tone5",
+ "unicode": "1F936-1F3FF",
+ "digest": "ce26c0e0645713b17e7497d9f2d0484cc5477564dae99320cabf04d160d3b2ff"
+ },
+ {
"name": "muscle",
"unicode": "1F4AA",
"digest": "e4ce52757b2b7982e2516e0e8bf2e2253617cc9f3e6178f1887c61c9039461ba"
@@ -7330,6 +7640,16 @@
"digest": "f9f6a4895ff0be8fb2ccc7ad195b94e9650f742f66ead999e90724cfb77af628"
},
{
+ "name": "nauseated_face",
+ "unicode": "1F922",
+ "digest": "f8471cf4720948d8246ec9d30e29783e819f90e3cfe8b1ba628671a1aad1a91c"
+ },
+ {
+ "name": "sick",
+ "unicode": "1F922",
+ "digest": "f8471cf4720948d8246ec9d30e29783e819f90e3cfe8b1ba628671a1aad1a91c"
+ },
+ {
"name": "necktie",
"unicode": "1F454",
"digest": "01bb18dc8bfe787daa9613b5d09988cd5a065449ef906099ce3cb308c8a7da68"
@@ -7350,16 +7670,6 @@
"digest": "9e5f3c93db25cf1d0f9d6e6bd2993161afec6c30573ba3fe85e13b8c84483d66"
},
{
- "name": "network",
- "unicode": "1F5A7",
- "digest": "1dbaa54deeb2328fd8a3f044e450c97ac3ff39627c598bb2f4312d677482ee06"
- },
- {
- "name": "three_networked_computers",
- "unicode": "1F5A7",
- "digest": "1dbaa54deeb2328fd8a3f044e450c97ac3ff39627c598bb2f4312d677482ee06"
- },
- {
"name": "neutral_face",
"unicode": "1F610",
"digest": "7449430a60619956573e9dc80834045296f2b99853737b6c7794c785ff53d64e"
@@ -7515,26 +7825,6 @@
"digest": "1e0f9842e0f8ad5805eabd3f35a6038b7a2e49d566a1f5c17271f9cdf467ca60"
},
{
- "name": "note",
- "unicode": "1F5C9",
- "digest": "073660fdaa02ecf98d04f61f8d65d6cc447ccae3825fccaff19a2c99ebba52af"
- },
- {
- "name": "note_page",
- "unicode": "1F5C9",
- "digest": "073660fdaa02ecf98d04f61f8d65d6cc447ccae3825fccaff19a2c99ebba52af"
- },
- {
- "name": "note_empty",
- "unicode": "1F5C6",
- "digest": "06b56eeaca6349bbcf1020bea98f937450a7e086db65cd5d7497748e0fb607be"
- },
- {
- "name": "empty_note_page",
- "unicode": "1F5C6",
- "digest": "06b56eeaca6349bbcf1020bea98f937450a7e086db65cd5d7497748e0fb607be"
- },
- {
"name": "notebook",
"unicode": "1F4D3",
"digest": "fc679d3728f86073d1607a926885dd8b0261132f5c4a0322f1e46ea9f95c8cb8"
@@ -7545,26 +7835,6 @@
"digest": "d822eda4b49cbfa399b36f134c1a0b8dcfdd27ed89f12c50bc18f6f0a9aa56ef"
},
{
- "name": "notepad",
- "unicode": "1F5CA",
- "digest": "85069e2d13540886457368a57295072aec44c7137d9223bfcf908ce1f0e5124e"
- },
- {
- "name": "note_pad",
- "unicode": "1F5CA",
- "digest": "85069e2d13540886457368a57295072aec44c7137d9223bfcf908ce1f0e5124e"
- },
- {
- "name": "notepad_empty",
- "unicode": "1F5C7",
- "digest": "8be5053e74c13d8220917c5aee1f4afdecb001612886438f283b0c2a0fecf6af"
- },
- {
- "name": "empty_note_pad",
- "unicode": "1F5C7",
- "digest": "8be5053e74c13d8220917c5aee1f4afdecb001612886438f283b0c2a0fecf6af"
- },
- {
"name": "notepad_spiral",
"unicode": "1F5D2",
"digest": "c6a8e16aa62474cef13e5659fddb4afc57e3f79635e32e6020edbee2b5b50f18"
@@ -7600,6 +7870,16 @@
"digest": "1a9ca9848d4fb75852addfc10bf84eccf7caa5339714b90e3de4cb6f2518465e"
},
{
+ "name": "octagonal_sign",
+ "unicode": "1F6D1",
+ "digest": "9f6927048e1f9da57f89d1ae1eb86fa4ab7abdbabca756a738a799e948d0b3f9"
+ },
+ {
+ "name": "stop_sign",
+ "unicode": "1F6D1",
+ "digest": "9f6927048e1f9da57f89d1ae1eb86fa4ab7abdbabca756a738a799e948d0b3f9"
+ },
+ {
"name": "octopus",
"unicode": "1F419",
"digest": "0fcc65c12f4b29ea75a8c4823d20838a7e6db6978fdcb536943072aa1460bc59"
@@ -7860,16 +8140,6 @@
"digest": "6112e2a1656b1cb8bd9a8b0dfa6cbf66d30cae671710a9ef75c821de344aab2b"
},
{
- "name": "optical_disk",
- "unicode": "1F5B8",
- "digest": "df8c10028d29d65f144a6b789d1c3294e7b3293554c4c30d28d72dc7ba8d9a5d"
- },
- {
- "name": "optical_disc_icon",
- "unicode": "1F5B8",
- "digest": "df8c10028d29d65f144a6b789d1c3294e7b3293554c4c30d28d72dc7ba8d9a5d"
- },
- {
"name": "orange_book",
"unicode": "1F4D9",
"digest": "41141b08d2beceded21a94795431603c47fd7d42a3a472a2aa8b2bb25fa87ebf"
@@ -7885,6 +8155,11 @@
"digest": "e47cb481a0ffcb39996f32fd313e19b362a91d8dda15ffca48ac23a3b5bb5baf"
},
{
+ "name": "owl",
+ "unicode": "1F989",
+ "digest": "f62ec1ad23ad9038966eea8d8b79660ac212f291af2e89bcdb0fdc683caf41e5"
+ },
+ {
"name": "ox",
"unicode": "1F402",
"digest": "d13bc60552190bb9936bf32d681bdc742439b702a09cfc62137ea09a98624aed"
@@ -7895,11 +8170,6 @@
"digest": "e82bf5accebb65136e897c15607eef635fb79fd7b2d8c8e19a9eb00b6786918c"
},
{
- "name": "page",
- "unicode": "1F5CF",
- "digest": "cc745056525f59d9128d1d03b14770376bb09ab64b8ef4ac994ab7f38efd4783"
- },
- {
"name": "page_facing_up",
"unicode": "1F4C4",
"digest": "3884868bdcb2f29615b09a13a30385cbc5269379094a54b5a7e8a5f4e8ce905a"
@@ -7915,11 +8185,6 @@
"digest": "e21c756cc1c58ebc1b37ebcd38e22a25b31e2e81306c6f18285d6a7671f9eb12"
},
{
- "name": "pages",
- "unicode": "1F5D0",
- "digest": "05bd47b78f089389356d9d839c736843f56b959ab4277056606ffcbb013390bc"
- },
- {
"name": "paintbrush",
"unicode": "1F58C",
"digest": "fc0da7a25b726b8be9dd6467953e27293d2313a21eeff21424c2a19be614fff2"
@@ -7935,6 +8200,11 @@
"digest": "90fedafd62fe0abf51325174d0f293ebb9a4794913b9ba93b12f2d0119056df1"
},
{
+ "name": "pancakes",
+ "unicode": "1F95E",
+ "digest": "5256b4832431e8a88555796b1a9726f12d909a26fb2bdc3a0abff76412c45903"
+ },
+ {
"name": "panda_face",
"unicode": "1F43C",
"digest": "56a4b84abe983bd6569be1b81ac5e43071015fd308389a16b92231310ae56a5b"
@@ -8010,6 +8280,16 @@
"digest": "768d1f4f29e1e06aff5abb29043be83087ded16427ce6a2d0f682814e665e311"
},
{
+ "name": "peanuts",
+ "unicode": "1F95C",
+ "digest": "e2384846b6e4a6c3a56e991ebb749cb68b330ac00a9e9d888b2c39105ff7ff5d"
+ },
+ {
+ "name": "shelled_peanut",
+ "unicode": "1F95C",
+ "digest": "e2384846b6e4a6c3a56e991ebb749cb68b330ac00a9e9d888b2c39105ff7ff5d"
+ },
+ {
"name": "pear",
"unicode": "1F350",
"digest": "b7c9cf90bb979649b863d2f4132f1b51f6f8107d42e08fb8b4033fea32844948"
@@ -8050,41 +8330,11 @@
"digest": "9ca1b56b5726f472b1f1b23050ed163e213916dac379d22e38e4c8358fe871e0"
},
{
- "name": "pencil3",
- "unicode": "1F589",
- "digest": "52c1ba1228917eb491ac1745a495e0fdafba6b985a81caba250f71d1f94c725c"
- },
- {
- "name": "lower_left_pencil",
- "unicode": "1F589",
- "digest": "52c1ba1228917eb491ac1745a495e0fdafba6b985a81caba250f71d1f94c725c"
- },
- {
"name": "penguin",
"unicode": "1F427",
"digest": "a1800ab931d6dc84a9c89bfab2c815198025c276d952509c55b18dd20bd9d316"
},
{
- "name": "pennant_black",
- "unicode": "1F3F2",
- "digest": "cd3c33bfc3c7fbe84b98d2d481d56a7bf5488ff94afadd8b5a0e454768b80269"
- },
- {
- "name": "black_pennant",
- "unicode": "1F3F2",
- "digest": "cd3c33bfc3c7fbe84b98d2d481d56a7bf5488ff94afadd8b5a0e454768b80269"
- },
- {
- "name": "pennant_white",
- "unicode": "1F3F1",
- "digest": "818b1be73540f2cfeb1c514e1ee75d18715af317f0db817d9ae081b9ea33d4b0"
- },
- {
- "name": "white_pennant",
- "unicode": "1F3F1",
- "digest": "818b1be73540f2cfeb1c514e1ee75d18715af317f0db817d9ae081b9ea33d4b0"
- },
- {
"name": "pensive",
"unicode": "1F614",
"digest": "d237deff9f5ead8a0b281b7e5c6f4b82e98cc30c80c86c22c3fdc6160090b2f2"
@@ -8230,16 +8480,6 @@
"digest": "943a858bd054c81a08a08951f8351c27c8009b85a9359729c7362868298b58e1"
},
{
- "name": "piracy",
- "unicode": "1F572",
- "digest": "f42955ba75c598392e5e258be49968d858c876e0d6e7aa9dc795f7e8cff42be9"
- },
- {
- "name": "no_piracy",
- "unicode": "1F572",
- "digest": "f42955ba75c598392e5e258be49968d858c876e0d6e7aa9dc795f7e8cff42be9"
- },
- {
"name": "pisces",
"unicode": "2653",
"digest": "453c3915122a4b6b32867056d2447be48675a84469145c88d52f8007fcb0861a"
@@ -8470,6 +8710,11 @@
"digest": "dbe80d9637837377cc2a290da2e895f81a3108cc18b049e3d87212402c1c2098"
},
{
+ "name": "potato",
+ "unicode": "1F954",
+ "digest": "a56a69f36f3a0793f278726d92c0cea2960554f3062ef1a0904526a04511d8e1"
+ },
+ {
"name": "pouch",
"unicode": "1F45D",
"digest": "9f012b90310b4a072b6a8fa2c64def087b5f7ffffaafc36e1856ba943a170351"
@@ -8525,6 +8770,96 @@
"digest": "80177091264430cbcf7c994fbe5ee17319d1a58d933636cc752a54dafcf98a05"
},
{
+ "name": "pregnant_woman",
+ "unicode": "1F930",
+ "digest": "49abb86409103338bdb6ae43c13a78ca2dc9cd158a26df35eadd0da3c84a4352"
+ },
+ {
+ "name": "expecting_woman",
+ "unicode": "1F930",
+ "digest": "49abb86409103338bdb6ae43c13a78ca2dc9cd158a26df35eadd0da3c84a4352"
+ },
+ {
+ "name": "pregnant_woman_tone1",
+ "unicode": "1F930-1F3FB",
+ "digest": "5a9f8ed2b631ecf8af111803a5c11f4c156435a5293cb50329c7b98697c8da25"
+ },
+ {
+ "name": "expecting_woman_tone1",
+ "unicode": "1F930-1F3FB",
+ "digest": "5a9f8ed2b631ecf8af111803a5c11f4c156435a5293cb50329c7b98697c8da25"
+ },
+ {
+ "name": "pregnant_woman_tone2",
+ "unicode": "1F930-1F3FC",
+ "digest": "279a2eafff603b11629c955b05f5bd3d7da9a271d4fb3f02e9ccd457b8d2d815"
+ },
+ {
+ "name": "expecting_woman_tone2",
+ "unicode": "1F930-1F3FC",
+ "digest": "279a2eafff603b11629c955b05f5bd3d7da9a271d4fb3f02e9ccd457b8d2d815"
+ },
+ {
+ "name": "pregnant_woman_tone3",
+ "unicode": "1F930-1F3FD",
+ "digest": "93bb63ec2312db315e3f0065520b715cc413ac0fd65538ec9b5cd97df2a42b20"
+ },
+ {
+ "name": "expecting_woman_tone3",
+ "unicode": "1F930-1F3FD",
+ "digest": "93bb63ec2312db315e3f0065520b715cc413ac0fd65538ec9b5cd97df2a42b20"
+ },
+ {
+ "name": "pregnant_woman_tone4",
+ "unicode": "1F930-1F3FE",
+ "digest": "b8dc3dcec894bfd832a249459b10850f8786b6778d8887a677d1291865623da2"
+ },
+ {
+ "name": "expecting_woman_tone4",
+ "unicode": "1F930-1F3FE",
+ "digest": "b8dc3dcec894bfd832a249459b10850f8786b6778d8887a677d1291865623da2"
+ },
+ {
+ "name": "pregnant_woman_tone5",
+ "unicode": "1F930-1F3FF",
+ "digest": "73ee432752f81980f353a7f9b9f7a5ece62512dca08e15c1876b89227face21c"
+ },
+ {
+ "name": "expecting_woman_tone5",
+ "unicode": "1F930-1F3FF",
+ "digest": "73ee432752f81980f353a7f9b9f7a5ece62512dca08e15c1876b89227face21c"
+ },
+ {
+ "name": "prince",
+ "unicode": "1F934",
+ "digest": "34a0e0625f0a9825d3674192d6233b6cae4d8130451293df09f91a6a4165869c"
+ },
+ {
+ "name": "prince_tone1",
+ "unicode": "1F934-1F3FB",
+ "digest": "ccecdfeccb2ab1fceceae14f3fba875c8c7099785a4c40131c08a697b5b675fc"
+ },
+ {
+ "name": "prince_tone2",
+ "unicode": "1F934-1F3FC",
+ "digest": "c373fd3e0c1798415e3d8d88fab6c98c1bbdedcbe6f52f3a3899f6e2124a768d"
+ },
+ {
+ "name": "prince_tone3",
+ "unicode": "1F934-1F3FD",
+ "digest": "71d15695ca954d55aa69d3c753c7d31a8ba5329713a8ddbc90dafc11e524c4ef"
+ },
+ {
+ "name": "prince_tone4",
+ "unicode": "1F934-1F3FE",
+ "digest": "08f6cb32424f15cc3aaf83c31a5dac7c01a6be2f37ea8f13aed579ce6fb4db19"
+ },
+ {
+ "name": "prince_tone5",
+ "unicode": "1F934-1F3FF",
+ "digest": "77d521148efa33fa4d3409693d050fecfd948411e807327484f174e289834649"
+ },
+ {
"name": "princess",
"unicode": "1F478",
"digest": "efabd28480a843c735f0868734da2f9ce28133933b02ab07b645498f494f3f80"
@@ -8560,16 +8895,6 @@
"digest": "5e5307e3dc7ec4e16c9978fb00934c99c4adefca7d32732a244d1f2de71ce6f8"
},
{
- "name": "prohibited",
- "unicode": "1F6C7",
- "digest": "bc6cdea2269a0ec39576d98dc4cda2bd9efa4dc330dde870148c6a85ad9cc63f"
- },
- {
- "name": "prohibited_sign",
- "unicode": "1F6C7",
- "digest": "bc6cdea2269a0ec39576d98dc4cda2bd9efa4dc330dde870148c6a85ad9cc63f"
- },
- {
"name": "projector",
"unicode": "1F4FD",
"digest": "7f8e1fdb89584849a56ee34c62cab808af48b7bd4823467d090af4657a2e0420"
@@ -8625,11 +8950,6 @@
"digest": "c3f7d7008be6bab8dc02284d4d759abf7aafbb3dbbe3a53f0f5b2ff685af88f8"
},
{
- "name": "pushpin_black",
- "unicode": "1F588",
- "digest": "80ebac74edb9e8e1f8a219b32a676d318ed73b359cd8193b91b493d775307f63"
- },
- {
"name": "put_litter_in_its_place",
"unicode": "1F6AE",
"digest": "f52a57d6f1bada7b6e6b9a6458597d70cb701c01e1120d8cb1d7ff65e01d405c"
@@ -8710,6 +9030,66 @@
"digest": "a93aceb54e965f35e397e8c8716b1831614933308d026012d5464ee42783ed4d"
},
{
+ "name": "raised_back_of_hand",
+ "unicode": "1F91A",
+ "digest": "20973a697e826625deba5ee3c4f25eb5e1737f2e860ac6fe4ee4d0e0c84b5e12"
+ },
+ {
+ "name": "back_of_hand",
+ "unicode": "1F91A",
+ "digest": "20973a697e826625deba5ee3c4f25eb5e1737f2e860ac6fe4ee4d0e0c84b5e12"
+ },
+ {
+ "name": "raised_back_of_hand_tone1",
+ "unicode": "1F91A-1F3FB",
+ "digest": "06af5941255ca69d10d99d0a512bbda6141a296453835dbccf259ce0afe1dd3d"
+ },
+ {
+ "name": "back_of_hand_tone1",
+ "unicode": "1F91A-1F3FB",
+ "digest": "06af5941255ca69d10d99d0a512bbda6141a296453835dbccf259ce0afe1dd3d"
+ },
+ {
+ "name": "raised_back_of_hand_tone2",
+ "unicode": "1F91A-1F3FC",
+ "digest": "429ed19555c9e5197b729b3e7bd8013346551051cb0b3fbc8a4372717c9a027d"
+ },
+ {
+ "name": "back_of_hand_tone2",
+ "unicode": "1F91A-1F3FC",
+ "digest": "429ed19555c9e5197b729b3e7bd8013346551051cb0b3fbc8a4372717c9a027d"
+ },
+ {
+ "name": "raised_back_of_hand_tone3",
+ "unicode": "1F91A-1F3FD",
+ "digest": "487a1c3f19e77c99b520ec073de2acc4a9e585b739a84b3989f7de85d2c2045c"
+ },
+ {
+ "name": "back_of_hand_tone3",
+ "unicode": "1F91A-1F3FD",
+ "digest": "487a1c3f19e77c99b520ec073de2acc4a9e585b739a84b3989f7de85d2c2045c"
+ },
+ {
+ "name": "raised_back_of_hand_tone4",
+ "unicode": "1F91A-1F3FE",
+ "digest": "154254d8500c55ec3de698be4a352f9bcf06e2950cabc4eabaccad0f39a1e1e9"
+ },
+ {
+ "name": "back_of_hand_tone4",
+ "unicode": "1F91A-1F3FE",
+ "digest": "154254d8500c55ec3de698be4a352f9bcf06e2950cabc4eabaccad0f39a1e1e9"
+ },
+ {
+ "name": "raised_back_of_hand_tone5",
+ "unicode": "1F91A-1F3FF",
+ "digest": "6e9c0855ecd5f14adca5e5862427c3d39ffcf86f7ddd3aaa1fefc3cefc7483c8"
+ },
+ {
+ "name": "back_of_hand_tone5",
+ "unicode": "1F91A-1F3FF",
+ "digest": "6e9c0855ecd5f14adca5e5862427c3d39ffcf86f7ddd3aaa1fefc3cefc7483c8"
+ },
+ {
"name": "raised_hand",
"unicode": "270B",
"digest": "5cf11be683aea985d5ba51fbd44722c2327311bfe26b61c3d441c90f5d5a195a"
@@ -8880,6 +9260,16 @@
"digest": "d20c918c1e528ff0947312738501ca9a6fb6ff4016aad07db7a8125d00fd65cd"
},
{
+ "name": "rhino",
+ "unicode": "1F98F",
+ "digest": "163fa3acd78eead72c431a1f48b8465a6d45272a9169560e456d30b4df93dc6b"
+ },
+ {
+ "name": "rhinoceros",
+ "unicode": "1F98F",
+ "digest": "163fa3acd78eead72c431a1f48b8465a6d45272a9169560e456d30b4df93dc6b"
+ },
+ {
"name": "ribbon",
"unicode": "1F380",
"digest": "74315fe907f9f0203afe139cd4552aa442eecfa2a64fac12db3e1292fc5a8828"
@@ -8905,29 +9295,64 @@
"digest": "b942a06d3da0570aca59bab0af57cd8c16863934f12a38f70339fd0a36f675f5"
},
{
- "name": "right_speaker",
- "unicode": "1F568",
- "digest": "d268bb84be863c0884620dfc6d2a764b0c7466d2f9810549b138e21ac70add4e"
+ "name": "right_facing_fist",
+ "unicode": "1F91C",
+ "digest": "f815d1cc0c0345ddcc8886ae9c133582d7dc779732ac9b93dde1ab4fdd3b251d"
+ },
+ {
+ "name": "right_fist",
+ "unicode": "1F91C",
+ "digest": "f815d1cc0c0345ddcc8886ae9c133582d7dc779732ac9b93dde1ab4fdd3b251d"
},
{
- "name": "right_speaker_one",
- "unicode": "1F569",
- "digest": "5b92daa87bdf6ee15e798bec382a2ee885f4e6e77a68a3f626adcfe4c782b375"
+ "name": "right_facing_fist_tone1",
+ "unicode": "1F91C-1F3FB",
+ "digest": "0f9269b70cf68071d97389e059a2bdacffd73f2afd2ce6cfd7447bb1a4e9abbb"
},
{
- "name": "right_speaker_with_one_sound_wave",
- "unicode": "1F569",
- "digest": "5b92daa87bdf6ee15e798bec382a2ee885f4e6e77a68a3f626adcfe4c782b375"
+ "name": "right_fist_tone1",
+ "unicode": "1F91C-1F3FB",
+ "digest": "0f9269b70cf68071d97389e059a2bdacffd73f2afd2ce6cfd7447bb1a4e9abbb"
},
{
- "name": "right_speaker_three",
- "unicode": "1F56A",
- "digest": "4d00b720a65bd0f4c3682b290b1976ec2388d6ae61225398f4e70556ae9e5f80"
+ "name": "right_facing_fist_tone2",
+ "unicode": "1F91C-1F3FC",
+ "digest": "32a9833db853972e49e65aa227fb0512c57362da190aa1cc40e1d64f238e837e"
},
{
- "name": "right_speaker_with_three_sound_waves",
- "unicode": "1F56A",
- "digest": "4d00b720a65bd0f4c3682b290b1976ec2388d6ae61225398f4e70556ae9e5f80"
+ "name": "right_fist_tone2",
+ "unicode": "1F91C-1F3FC",
+ "digest": "32a9833db853972e49e65aa227fb0512c57362da190aa1cc40e1d64f238e837e"
+ },
+ {
+ "name": "right_facing_fist_tone3",
+ "unicode": "1F91C-1F3FD",
+ "digest": "be4706f8bb088411f5cbbf9065a0ae5b773c97456bd975c2b6789765657847b9"
+ },
+ {
+ "name": "right_fist_tone3",
+ "unicode": "1F91C-1F3FD",
+ "digest": "be4706f8bb088411f5cbbf9065a0ae5b773c97456bd975c2b6789765657847b9"
+ },
+ {
+ "name": "right_facing_fist_tone4",
+ "unicode": "1F91C-1F3FE",
+ "digest": "1680862891a9d85c4b6f76232a80e2ef7428bcec93087c86eae2efaba9c6a3f7"
+ },
+ {
+ "name": "right_fist_tone4",
+ "unicode": "1F91C-1F3FE",
+ "digest": "1680862891a9d85c4b6f76232a80e2ef7428bcec93087c86eae2efaba9c6a3f7"
+ },
+ {
+ "name": "right_facing_fist_tone5",
+ "unicode": "1F91C-1F3FF",
+ "digest": "388715a4bc2178c52bbb3bc2729f57be50acab5d751784c9f3220e86c6b1fbcc"
+ },
+ {
+ "name": "right_fist_tone5",
+ "unicode": "1F91C-1F3FF",
+ "digest": "388715a4bc2178c52bbb3bc2729f57be50acab5d751784c9f3220e86c6b1fbcc"
},
{
"name": "ring",
@@ -8935,11 +9360,6 @@
"digest": "b5322907222797b5e1786209cda88513e76cd397a40f0a7da24847245c95ef9d"
},
{
- "name": "ringing_bell",
- "unicode": "1F56D",
- "digest": "d71ab7fa937fc4af507b5b07ea58a4f31e875d9e8304ef2b850d7cebe0e9cd66"
- },
- {
"name": "robot",
"unicode": "1F916",
"digest": "4d788e6ec89279588b036fca6b17f5a981291681df8f90306ecf5c039de40848"
@@ -8955,6 +9375,16 @@
"digest": "b82e68a95aa89a6de344d6e256fef86a848ebc91de560b043b3e1f7fd072d57d"
},
{
+ "name": "rofl",
+ "unicode": "1F923",
+ "digest": "f4f99ba2ac67b97338f904f9384ff03fb832a2e427bf6e74611bf5fee45f1f48"
+ },
+ {
+ "name": "rolling_on_the_floor_laughing",
+ "unicode": "1F923",
+ "digest": "f4f99ba2ac67b97338f904f9384ff03fb832a2e427bf6e74611bf5fee45f1f48"
+ },
+ {
"name": "roller_coaster",
"unicode": "1F3A2",
"digest": "a65e9ace1d7900499777af1225995f17af90a398bb414764c20b6e09a8c23a2c"
@@ -8985,11 +9415,6 @@
"digest": "2537def4deef422d4e669b28b1a0675259306ab38601019df3ec3482b14e52d5"
},
{
- "name": "rosette_black",
- "unicode": "1F3F6",
- "digest": "ae8675891c88f9d98463d35178445950c39b0deb0f0e8b3f341228a6e0d0e477"
- },
- {
"name": "rotating_light",
"unicode": "1F6A8",
"digest": "91fcdb85a752ae904d335a978c7e7936aed4c75d414b35219b5a74430e51555f"
@@ -9090,6 +9515,16 @@
"digest": "0a786075f3d9da48ae91afccf6ae0d097888da9509d354ee1d3cb99afcc88fe4"
},
{
+ "name": "salad",
+ "unicode": "1F957",
+ "digest": "fe321487ab847abe670e68a83f1d9e096129741c689c769ee7de4a65aeac29f8"
+ },
+ {
+ "name": "green_salad",
+ "unicode": "1F957",
+ "digest": "fe321487ab847abe670e68a83f1d9e096129741c689c769ee7de4a65aeac29f8"
+ },
+ {
"name": "sandal",
"unicode": "1F461",
"digest": "03c3077cb4bd900934f9bdf921165b465e5cc9a6bee53e45a091411bceb8892d"
@@ -9160,6 +9595,11 @@
"digest": "95225be28f05d8b5a6b6e6bf58d973f61f183ad4fef55a558dc1b810796b85c8"
},
{
+ "name": "scooter",
+ "unicode": "1F6F4",
+ "digest": "4a7db148880398db75e059711cb53edefb6b8fa9d442009f52856b887ab1dde4"
+ },
+ {
"name": "scorpion",
"unicode": "1F982",
"digest": "d41119d1ea5daf727c17dbea7dadec1718c72fc9f98ae88252161df5fde0938a"
@@ -9190,6 +9630,16 @@
"digest": "ae68d86fc2a07cae332451b23bd1ceba3f6526a6c56d8c1089777fa4632850e1"
},
{
+ "name": "second_place",
+ "unicode": "1F948",
+ "digest": "9e2336fc16e532829b55380252f94655b58817d47c909fc2570002c5b06b9c40"
+ },
+ {
+ "name": "second_place_medal",
+ "unicode": "1F948",
+ "digest": "9e2336fc16e532829b55380252f94655b58817d47c909fc2570002c5b06b9c40"
+ },
+ {
"name": "secret",
"unicode": "3299",
"digest": "1d0b9adde2657f41421b135962de20820cf4b4eb0204044f9859522ab9d211b0"
@@ -9205,16 +9655,61 @@
"digest": "c0ec5e6d20e1afdc4e78eeddb1301c8b708ad6278e7287a4e4e825417c858e75"
},
{
+ "name": "selfie",
+ "unicode": "1F933",
+ "digest": "2a1bc9f18ad4d6fb893d91c88ef1b2d9bd063dc2bb1a4b08c248c30f52545d4e"
+ },
+ {
+ "name": "selfie_tone1",
+ "unicode": "1F933-1F3FB",
+ "digest": "26dc212ffed30c276bd6a66a72bc4513e68098a2205fb4ca5b51ccfa1de5b544"
+ },
+ {
+ "name": "selfie_tone2",
+ "unicode": "1F933-1F3FC",
+ "digest": "71eceaefda46e3521f374f76693e7fa8f215067498067900080e2925ca94d7de"
+ },
+ {
+ "name": "selfie_tone3",
+ "unicode": "1F933-1F3FD",
+ "digest": "53eabbd4f6b8ebbd2f7af7bf5cd64309c4039ac1c5b2180290a547deaafcebdf"
+ },
+ {
+ "name": "selfie_tone4",
+ "unicode": "1F933-1F3FE",
+ "digest": "0baad378b09652b99c5d458db2e03b4db14a1557db4ea0969806a0ca1d33d40c"
+ },
+ {
+ "name": "selfie_tone5",
+ "unicode": "1F933-1F3FF",
+ "digest": "9a07608f34ec4dad48764a855f83f3965709d7b2fd2342e6dc9ed61f23f4adfd"
+ },
+ {
"name": "seven",
"unicode": "0037-20E3",
"digest": "ae85172d2c76c44afb4e3b45d277d400abb2dc895244b9abfbd1dac1cd7c53c2"
},
{
+ "name": "shallow_pan_of_food",
+ "unicode": "1F958",
+ "digest": "7c7ad9d5d3f7226427d310b5853e8257fad899febe58dcbc5adb4677964f5c6d"
+ },
+ {
+ "name": "paella",
+ "unicode": "1F958",
+ "digest": "7c7ad9d5d3f7226427d310b5853e8257fad899febe58dcbc5adb4677964f5c6d"
+ },
+ {
"name": "shamrock",
"unicode": "2618",
"digest": "68ed70c26e04a818439a1742d2da6bc169edd02db86b6e6f8014b651f3235488"
},
{
+ "name": "shark",
+ "unicode": "1F988",
+ "digest": "23a2364b6356e7bbb84c138e9cf58e2c68cd8caabb337a0c4d365ce87bf5d2da"
+ },
+ {
"name": "shaved_ice",
"unicode": "1F367",
"digest": "54048e77268b7548d03088517bf8558d11324db901ca57f9bec93f1873663a74"
@@ -9255,11 +9750,56 @@
"digest": "95a3f03c675207bb1354270d02a630c204455c47b3edca23c48523a40cf3ea3b"
},
{
+ "name": "shopping_cart",
+ "unicode": "1F6D2",
+ "digest": "4599b63f6861cdb4d8272cac84435c24c1d4d6a73c66d51e04a1cd14a1d333e6"
+ },
+ {
+ "name": "shopping_trolley",
+ "unicode": "1F6D2",
+ "digest": "4599b63f6861cdb4d8272cac84435c24c1d4d6a73c66d51e04a1cd14a1d333e6"
+ },
+ {
"name": "shower",
"unicode": "1F6BF",
"digest": "6b3c767c0eb472d4861c6c3cc2735a5e2c09681872ef42a11dc89f3c80b9da01"
},
{
+ "name": "shrimp",
+ "unicode": "1F990",
+ "digest": "b3651f3be3767125076a013fe903854f5b456a8afae865cb219cf528e0f44caa"
+ },
+ {
+ "name": "shrug",
+ "unicode": "1F937",
+ "digest": "6e264243cc3b6e396069dea4357a958bdcd4081cb1af0ed6aa47235bef88cf27"
+ },
+ {
+ "name": "shrug_tone1",
+ "unicode": "1F937-1F3FB",
+ "digest": "0567b9fd95c8a857914003a5465a500ca79c8111811d45b865021b1b1d92d0b1"
+ },
+ {
+ "name": "shrug_tone2",
+ "unicode": "1F937-1F3FC",
+ "digest": "1557c2f5e3d4599c806d74c0b78afcca940678787534b6862bb89a20601bac8a"
+ },
+ {
+ "name": "shrug_tone3",
+ "unicode": "1F937-1F3FD",
+ "digest": "f02754541a7bf74ba7eebe6c27daf1e3e1dac25172c35b8ba45641e278dfda3d"
+ },
+ {
+ "name": "shrug_tone4",
+ "unicode": "1F937-1F3FE",
+ "digest": "2b5121164cb5f4e253d8fb31f6445cf8afaf30dba41732edc511440cdb78d15c"
+ },
+ {
+ "name": "shrug_tone5",
+ "unicode": "1F937-1F3FF",
+ "digest": "62d99a26bbad479f574f66208c41b9960cd41fb9d79d3a13fbdaa44682077115"
+ },
+ {
"name": "signal_strength",
"unicode": "1F4F6",
"digest": "2c6f04ba4ecd2d2d423e19eb52cfbfd253f4db6e0908d91c1af4ea6192597447"
@@ -9415,6 +9955,16 @@
"digest": "18da2d97c771149ef5454dd23470e900903a62ab93f9e2ce301aad5a8181d773"
},
{
+ "name": "sneezing_face",
+ "unicode": "1F927",
+ "digest": "c20ef571dc7e35572fe3c18b7845aefc89af083ea925c48a29de3b7387af6e17"
+ },
+ {
+ "name": "sneeze",
+ "unicode": "1F927",
+ "digest": "c20ef571dc7e35572fe3c18b7845aefc89af083ea925c48a29de3b7387af6e17"
+ },
+ {
"name": "snowboarder",
"unicode": "1F3C2",
"digest": "c6e074139b851aa53b1ba6464d84da14b3da7412fc44c6c196a8469d76915c19"
@@ -9520,46 +10070,6 @@
"digest": "817100d9979456e7d2f253ac22e13b7a2302dc1590566214915b003e403c53ca"
},
{
- "name": "speech_left",
- "unicode": "1F5E8",
- "digest": "912797107d574f5665411498b6e349dbdec69846f085b6dc356548c4155e90b0"
- },
- {
- "name": "left_speech_bubble",
- "unicode": "1F5E8",
- "digest": "912797107d574f5665411498b6e349dbdec69846f085b6dc356548c4155e90b0"
- },
- {
- "name": "speech_right",
- "unicode": "1F5E9",
- "digest": "8439b13779163c15e678a78b08ebeeb7d131632df21d2a7868de7fed38ca9d8a"
- },
- {
- "name": "right_speech_bubble",
- "unicode": "1F5E9",
- "digest": "8439b13779163c15e678a78b08ebeeb7d131632df21d2a7868de7fed38ca9d8a"
- },
- {
- "name": "speech_three",
- "unicode": "1F5EB",
- "digest": "55a934f3659b6e75fdce0d0c4e2ea56dd34a43892c85a6666bd1882a0bfb92a9"
- },
- {
- "name": "three_speech_bubbles",
- "unicode": "1F5EB",
- "digest": "55a934f3659b6e75fdce0d0c4e2ea56dd34a43892c85a6666bd1882a0bfb92a9"
- },
- {
- "name": "speech_two",
- "unicode": "1F5EA",
- "digest": "0563ef0591da243673cf877462acc5d8e1d980a56e81668ac627de74d0c33983"
- },
- {
- "name": "two_speech_bubbles",
- "unicode": "1F5EA",
- "digest": "0563ef0591da243673cf877462acc5d8e1d980a56e81668ac627de74d0c33983"
- },
- {
"name": "speedboat",
"unicode": "1F6A4",
"digest": "a523b2320f0b24be1e9fdbc1ff828e28d8fd9a64d51e5888ab453ef0bc9f0576"
@@ -9575,6 +10085,11 @@
"digest": "2434bdfbe56dcc4a43699dd59b638af431486b52fb1d6d685451f3b231b2be23"
},
{
+ "name": "spoon",
+ "unicode": "1F944",
+ "digest": "4fa31d59e5bffd2c45a8e01fcd5652e78a5691cbfa744e69882bc67173ddea05"
+ },
+ {
"name": "spy",
"unicode": "1F575",
"digest": "99fe3cdeff934726ee5855b0e401bf32570084aaad4eb10df837fd410ca742aa"
@@ -9635,6 +10150,11 @@
"digest": "ffc6fefd9a537124ebf0a9ddf387414dce1291335026064644f6cf9315591129"
},
{
+ "name": "squid",
+ "unicode": "1F991",
+ "digest": "65a1b318c2c506b9d26cfd8282a5cf9922109595c8d12e92c3f7481ac7c08c49"
+ },
+ {
"name": "stadium",
"unicode": "1F3DF",
"digest": "73bf955e767ba1518c9c92b2ba59a2aa1ec4b018652dffd97bcd74832a33789f"
@@ -9680,26 +10200,11 @@
"digest": "52ad0073f37b978faf3884fb193046f2b0614e1557bbcc9de1b020e42aff2dba"
},
{
- "name": "stereo",
- "unicode": "1F4FE",
- "digest": "1ce1f9a83867514b8351ad4fd80c46bba04ad67dfb9874e63d7296e1a21161a5"
- },
- {
- "name": "portable_stereo",
- "unicode": "1F4FE",
- "digest": "1ce1f9a83867514b8351ad4fd80c46bba04ad67dfb9874e63d7296e1a21161a5"
- },
- {
"name": "stew",
"unicode": "1F372",
"digest": "c16f61236db314ad8d9f2dd241ec1e15c8d64e5872cce93ec4d0996490dd39df"
},
{
- "name": "stock_chart",
- "unicode": "1F5E0",
- "digest": "4a0fbf54d19b0b5626f91c932a24e6ac12a65b4fc276d852ff4356c8c579d28a"
- },
- {
"name": "stop_button",
"unicode": "23F9",
"digest": "83f9d0da3ad845fef41b4e8336815d30e9c8f042ab2a8340894ade2f428fc98a"
@@ -9735,6 +10240,16 @@
"digest": "dbacd6428a2a2933212e6a4dc0c7f302177fb23b963626ccb26f27f91737f03d"
},
{
+ "name": "stuffed_flatbread",
+ "unicode": "1F959",
+ "digest": "9f841f2520640d69be4f20a3199023d5811842b28556b5e1152e5ec11f0fda07"
+ },
+ {
+ "name": "stuffed_pita",
+ "unicode": "1F959",
+ "digest": "9f841f2520640d69be4f20a3199023d5811842b28556b5e1152e5ec11f0fda07"
+ },
+ {
"name": "sun_with_face",
"unicode": "1F31E",
"digest": "7256ff5263006c64c03f1eb66e3ddb56d67d785d65dacc37aa886d0cd4be63be"
@@ -9910,31 +10425,11 @@
"digest": "3a53851e641f8ad938ce3597b1afca2ea63c9314ff81f62563b99937496a13d7"
},
{
- "name": "telephone_black",
- "unicode": "1F57F",
- "digest": "c3a42a653a91d90c6b668f678419d5438f2e546050914b841623e57107e805db"
- },
- {
- "name": "black_touchtone_telephone",
- "unicode": "1F57F",
- "digest": "c3a42a653a91d90c6b668f678419d5438f2e546050914b841623e57107e805db"
- },
- {
"name": "telephone_receiver",
"unicode": "1F4DE",
"digest": "1614d67f3d8814b0d75f39d55f9149e4d28ef57b343498625e62fcfff8365046"
},
{
- "name": "telephone_white",
- "unicode": "1F57E",
- "digest": "62a7e0e50c53e9f85eba51a92882e6064be05997910d3f7700e1e957dbaf0581"
- },
- {
- "name": "white_touchtone_telephone",
- "unicode": "1F57E",
- "digest": "62a7e0e50c53e9f85eba51a92882e6064be05997910d3f7700e1e957dbaf0581"
- },
- {
"name": "telescope",
"unicode": "1F52D",
"digest": "4adf40387870276c4f59fb050d441023e8dac784365b6a8c0282fb519780b495"
@@ -9980,29 +10475,19 @@
"digest": "4f0b84e5ab8a650cafb166e93688f0e9b31b9ade22a91035261ac90490edb9d3"
},
{
- "name": "thought_balloon",
- "unicode": "1F4AD",
- "digest": "bf59624560c333561d636aedf2c8827089e275895cf434974daaabb3d5cea46e"
- },
- {
- "name": "thought_left",
- "unicode": "1F5EC",
- "digest": "4fd591bf4318df73d1b17f434a449d8e95f49cca53a3d8f4d1ca983f3809ef46"
+ "name": "third_place",
+ "unicode": "1F949",
+ "digest": "27c9bcba44ad95bee30882cc0722e8b0a798206306655dd648e884447ed26808"
},
{
- "name": "left_thought_bubble",
- "unicode": "1F5EC",
- "digest": "4fd591bf4318df73d1b17f434a449d8e95f49cca53a3d8f4d1ca983f3809ef46"
+ "name": "third_place_medal",
+ "unicode": "1F949",
+ "digest": "27c9bcba44ad95bee30882cc0722e8b0a798206306655dd648e884447ed26808"
},
{
- "name": "thought_right",
- "unicode": "1F5ED",
- "digest": "0e8c0ce26e2d0e30894f5394b0736456e8268f775e0e7eda4c7dc3c2ff9231ae"
- },
- {
- "name": "right_thought_bubble",
- "unicode": "1F5ED",
- "digest": "0e8c0ce26e2d0e30894f5394b0736456e8268f775e0e7eda4c7dc3c2ff9231ae"
+ "name": "thought_balloon",
+ "unicode": "1F4AD",
+ "digest": "bf59624560c333561d636aedf2c8827089e275895cf434974daaabb3d5cea46e"
},
{
"name": "three",
@@ -10010,26 +10495,6 @@
"digest": "d3f85828787799c769655c38a519cad0743ab799ab276c7606e6e6894cc442e6"
},
{
- "name": "thumbs_down_reverse",
- "unicode": "1F593",
- "digest": "a8b561e389bc4e4b07fba70994f6445e5ddc6afe68922fcb6e9e7282d19ad958"
- },
- {
- "name": "reversed_thumbs_down_sign",
- "unicode": "1F593",
- "digest": "a8b561e389bc4e4b07fba70994f6445e5ddc6afe68922fcb6e9e7282d19ad958"
- },
- {
- "name": "thumbs_up_reverse",
- "unicode": "1F592",
- "digest": "b6e52715c5ce590bfd08f6e05058ec3765ea2da341b11f9825d100608b173837"
- },
- {
- "name": "reversed_thumbs_up_sign",
- "unicode": "1F592",
- "digest": "b6e52715c5ce590bfd08f6e05058ec3765ea2da341b11f9825d100608b173837"
- },
- {
"name": "thumbsdown",
"unicode": "1F44E",
"digest": "5954334e2dae5357312b3d629f10a496c728029e02216f8c8b887f9b51561c61"
@@ -10315,31 +10780,11 @@
"digest": "06e65d549e771632f3c64287a38ba67236f9800ccb6a23c3b592bc010e24e122"
},
{
- "name": "train_diesel",
- "unicode": "1F6F2",
- "digest": "621bb967cd93fa9f8fd4b155965cc7572d3f91f88d94938ba10c8626718b623c"
- },
- {
- "name": "diesel_locomotive",
- "unicode": "1F6F2",
- "digest": "621bb967cd93fa9f8fd4b155965cc7572d3f91f88d94938ba10c8626718b623c"
- },
- {
"name": "tram",
"unicode": "1F68A",
"digest": "21a7699f1a94f06dcb4d1e896448b98a4205f8efe902a8ac169a5005d11ab100"
},
{
- "name": "triangle_round",
- "unicode": "1F6C6",
- "digest": "e24bb39ecfaaa746b03dc8418697d09ef327d5b077db39014f39d5fb87e23bd5"
- },
- {
- "name": "triangle_with_rounded_corners",
- "unicode": "1F6C6",
- "digest": "e24bb39ecfaaa746b03dc8418697d09ef327d5b077db39014f39d5fb87e23bd5"
- },
- {
"name": "triangular_flag_on_post",
"unicode": "1F6A9",
"digest": "1f5ce3828a42f5b1717bac1521d0502cf7081ad9f15e8ed292c1a65f0d1386da"
@@ -10395,19 +10840,19 @@
"digest": "e744e8dbbdc6b126bd5b15aad56b524191de5a604189f4ab6d96730dfef4d086"
},
{
- "name": "turkey",
- "unicode": "1F983",
- "digest": "bf5daef15716b66636a5fdb6d059420521443c0603e2d56bd7c99c791a7285f4"
+ "name": "tumbler_glass",
+ "unicode": "1F943",
+ "digest": "7a38658274b9ff28836725a1dbfad49b8fa3af5ec8385e629db6bfdc7d93907a"
},
{
- "name": "turned_ok_hand",
- "unicode": "1F58F",
- "digest": "8a6c5b7d4c737866e7e32c6d9f7f447a48a0ac57a8909d43f87367d4a9b59246"
+ "name": "whisky",
+ "unicode": "1F943",
+ "digest": "7a38658274b9ff28836725a1dbfad49b8fa3af5ec8385e629db6bfdc7d93907a"
},
{
- "name": "turned_ok_hand_sign",
- "unicode": "1F58F",
- "digest": "8a6c5b7d4c737866e7e32c6d9f7f447a48a0ac57a8909d43f87367d4a9b59246"
+ "name": "turkey",
+ "unicode": "1F983",
+ "digest": "bf5daef15716b66636a5fdb6d059420521443c0603e2d56bd7c99c791a7285f4"
},
{
"name": "turtle",
@@ -10760,6 +11205,36 @@
"digest": "ba6a840d4f57f8f9f3e9f29b8a030faf02a3a3d912e3e31b067616b2ac48a3d1"
},
{
+ "name": "water_polo",
+ "unicode": "1F93D",
+ "digest": "fc77e1d2a84a9f4cf0cf19c1ea10cf137cf0940b9103a523121eda87677ad148"
+ },
+ {
+ "name": "water_polo_tone1",
+ "unicode": "1F93D-1F3FB",
+ "digest": "3be28384edd29ada8109f07720d601a9d5866ed63e6234efe9ee1a194ed5d0c5"
+ },
+ {
+ "name": "water_polo_tone2",
+ "unicode": "1F93D-1F3FC",
+ "digest": "afcd3f28c6719f869ca79a6fd1ccade2ea976ade844fbc1081fc72865bcb652f"
+ },
+ {
+ "name": "water_polo_tone3",
+ "unicode": "1F93D-1F3FD",
+ "digest": "d19481c9b82d9413e99c2652e020fd763f2b54408dedaffec8dfe80973ded407"
+ },
+ {
+ "name": "water_polo_tone4",
+ "unicode": "1F93D-1F3FE",
+ "digest": "375972d882b627e8d525e632e58b30346fc3e01858d7d08d62a9d3bf8132bbc7"
+ },
+ {
+ "name": "water_polo_tone5",
+ "unicode": "1F93D-1F3FF",
+ "digest": "a8e1ced1c5382a8147a1d1801a133cada9a0e52e41de6272e56c3c1f426f6048"
+ },
+ {
"name": "watermelon",
"unicode": "1F349",
"digest": "42a3821d2e4dd595c93f5db7a5c70b7af486b8f0ddd3b9d26bc4e743a88e699a"
@@ -10915,6 +11390,16 @@
"digest": "0a6164cdadf2413555b7ef47b95f823f5a010f36d2dacfb1a38335a0f59e9601"
},
{
+ "name": "wilted_rose",
+ "unicode": "1F940",
+ "digest": "2c9e01ab9a61d057c71478b09ba7d82ae08f4a5a1c2212b7ad562b74f616677f"
+ },
+ {
+ "name": "wilted_flower",
+ "unicode": "1F940",
+ "digest": "2c9e01ab9a61d057c71478b09ba7d82ae08f4a5a1c2212b7ad562b74f616677f"
+ },
+ {
"name": "wind_blowing_face",
"unicode": "1F32C",
"digest": "e4f63149cbc8829118571f6a93487b96d26665fc15d17d578cca4e5c752cd54f"
@@ -10995,14 +11480,69 @@
"digest": "81aae53bc892035b905bf3ec5b442a8ecc95027c5fa9eb51b7c3e7d8fad3f3f4"
},
{
- "name": "writing_hand",
- "unicode": "1F58E",
- "digest": "c4fc18ece6778339ebe14438aaf570e22385c3010c2d341824fa72ac6068cfeb"
+ "name": "wrestlers",
+ "unicode": "1F93C",
+ "digest": "9be983f3f9438f3ab8f6b643a958371d1e710c6d78e728f3465141811f05c2d5"
+ },
+ {
+ "name": "wrestling",
+ "unicode": "1F93C",
+ "digest": "9be983f3f9438f3ab8f6b643a958371d1e710c6d78e728f3465141811f05c2d5"
},
{
- "name": "left_writing_hand",
- "unicode": "1F58E",
- "digest": "c4fc18ece6778339ebe14438aaf570e22385c3010c2d341824fa72ac6068cfeb"
+ "name": "wrestlers_tone1",
+ "unicode": "1F93C-1F3FB",
+ "digest": "60461f83bfc93ce59dd027eab4782b7f206a7b142719fa72f301e047dc83a5d9"
+ },
+ {
+ "name": "wrestling_tone1",
+ "unicode": "1F93C-1F3FB",
+ "digest": "60461f83bfc93ce59dd027eab4782b7f206a7b142719fa72f301e047dc83a5d9"
+ },
+ {
+ "name": "wrestlers_tone2",
+ "unicode": "1F93C-1F3FC",
+ "digest": "67ad93c86e6c58d552c18e7a0105cc81fd9bb0474da51f788eba2e4c14b4a636"
+ },
+ {
+ "name": "wrestling_tone2",
+ "unicode": "1F93C-1F3FC",
+ "digest": "67ad93c86e6c58d552c18e7a0105cc81fd9bb0474da51f788eba2e4c14b4a636"
+ },
+ {
+ "name": "wrestlers_tone3",
+ "unicode": "1F93C-1F3FD",
+ "digest": "6bfd06c4435cabf2def153912040e05bf8db424fa383148ddda6d0ce8a8a3349"
+ },
+ {
+ "name": "wrestling_tone3",
+ "unicode": "1F93C-1F3FD",
+ "digest": "6bfd06c4435cabf2def153912040e05bf8db424fa383148ddda6d0ce8a8a3349"
+ },
+ {
+ "name": "wrestlers_tone4",
+ "unicode": "1F93C-1F3FE",
+ "digest": "597312678834c4d288c238482879856d5eba4620deb1eaef495f428e2ba5f2a5"
+ },
+ {
+ "name": "wrestling_tone4",
+ "unicode": "1F93C-1F3FE",
+ "digest": "597312678834c4d288c238482879856d5eba4620deb1eaef495f428e2ba5f2a5"
+ },
+ {
+ "name": "wrestlers_tone5",
+ "unicode": "1F93C-1F3FF",
+ "digest": "d6aebdf1e44fd825b9a5b3716aefbc53f4b4dbb73cb2a628c0f2994ebfd34614"
+ },
+ {
+ "name": "wrestling_tone5",
+ "unicode": "1F93C-1F3FF",
+ "digest": "d6aebdf1e44fd825b9a5b3716aefbc53f4b4dbb73cb2a628c0f2994ebfd34614"
+ },
+ {
+ "name": "writing_hand",
+ "unicode": "270D",
+ "digest": "110517ae4da5587e8b0662881658e27da4120bfacec54734fd6657831d4d782f"
},
{
"name": "writing_hand_tone1",
diff --git a/fixtures/emojis/index.json b/fixtures/emojis/index.json
index 7f204c1a8e0..2a990913b9c 100644
--- a/fixtures/emojis/index.json
+++ b/fixtures/emojis/index.json
@@ -4,7 +4,7 @@
"unicode_alternates": [],
"name": "hundred points symbol",
"shortname": ":100:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15,12 +15,14 @@
"percent",
"a",
"plus",
- "perfect",
"school",
"quiz",
- "score",
"test",
- "exam"
+ "exam",
+ "symbol",
+ "wow",
+ "win",
+ "parties"
],
"moji": "💯"
},
@@ -29,12 +31,13 @@
"unicode_alternates": [],
"name": "input symbol for numbers",
"shortname": ":1234:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "numbers"
+ "numbers",
+ "symbol"
],
"moji": "🔢"
},
@@ -43,16 +46,20 @@
"unicode_alternates": [],
"name": "billiards",
"shortname": ":8ball:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"pool",
"billiards",
"eight ball",
- "pool",
"pocket ball",
- "cue"
+ "cue",
+ "game",
+ "ball",
+ "sport",
+ "luck",
+ "boys night"
],
"moji": "🎱"
},
@@ -61,13 +68,14 @@
"unicode_alternates": [],
"name": "negative squared latin capital letter a",
"shortname": ":a:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"letter",
- "red-square"
+ "red-square",
+ "symbol"
],
"moji": "🅰"
},
@@ -76,12 +84,13 @@
"unicode_alternates": [],
"name": "negative squared ab",
"shortname": ":ab:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
- "red-square"
+ "red-square",
+ "symbol"
],
"moji": "🆎"
},
@@ -90,12 +99,13 @@
"unicode_alternates": [],
"name": "input symbol for latin letters",
"shortname": ":abc:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "🔤"
},
@@ -104,12 +114,13 @@
"unicode_alternates": [],
"name": "input symbol for latin small letters",
"shortname": ":abcd:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "🔡"
},
@@ -118,7 +129,7 @@
"unicode_alternates": [],
"name": "circled ideograph accept",
"shortname": ":accept:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -127,7 +138,8 @@
"good",
"kanji",
"ok",
- "yes"
+ "yes",
+ "symbol"
],
"moji": "🉑"
},
@@ -136,7 +148,7 @@
"unicode_alternates": [],
"name": "aerial tramway",
"shortname": ":aerial_tramway:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -146,7 +158,9 @@
"tram",
"tramway",
"cable",
- "transport"
+ "transport",
+ "travel",
+ "train"
],
"moji": "🚡"
},
@@ -157,7 +171,7 @@
],
"name": "airplane",
"shortname": ":airplane:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -173,7 +187,8 @@
"jet",
"jumbo",
"boeing",
- "airbus"
+ "airbus",
+ "vacation"
],
"moji": "✈"
},
@@ -182,7 +197,7 @@
"unicode_alternates": [],
"name": "airplane arriving",
"shortname": ":airplane_arriving:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -197,15 +212,17 @@
"jet",
"jumbo",
"boeing",
- "airbus"
- ]
+ "airbus",
+ "vacation"
+ ],
+ "moji": "🛬"
},
"airplane_departure": {
"unicode": "1F6EB",
"unicode_alternates": [],
"name": "airplane departure",
"shortname": ":airplane_departure:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -221,30 +238,17 @@
"jumbo",
"boeing",
"airbus",
- "leaving"
- ]
- },
- "airplane_northeast": {
- "unicode": "1F6EA",
- "unicode_alternates": [],
- "name": "northeast-pointing airplane",
- "shortname": ":airplane_northeast:",
- "category": "travel_places",
- "aliases": [
- ":northeast_pointing_airplane:"
+ "leaving",
+ "vacation"
],
- "aliases_ascii": [],
- "keywords": [
- "plane",
- "travel"
- ]
+ "moji": "🛫"
},
"airplane_small": {
"unicode": "1F6E9",
"unicode_alternates": [],
"name": "small airplane",
"shortname": ":airplane_small:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":small_airplane:"
],
@@ -261,38 +265,10 @@
"jet",
"jumbo",
"boeing",
- "airbus"
- ]
- },
- "airplane_small_up": {
- "unicode": "1F6E8",
- "unicode_alternates": [],
- "name": "up-pointing small airplane",
- "shortname": ":airplane_small_up:",
- "category": "travel_places",
- "aliases": [
- ":up_pointing_small_airplane:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "plane",
- "travel"
- ]
- },
- "airplane_up": {
- "unicode": "1F6E7",
- "unicode_alternates": [],
- "name": "up-pointing airplane",
- "shortname": ":airplane_up:",
- "category": "travel_places",
- "aliases": [
- ":up_pointing_airplane:"
+ "airbus",
+ "vacation"
],
- "aliases_ascii": [],
- "keywords": [
- "plane",
- "travel"
- ]
+ "moji": "🛩"
},
"alarm_clock": {
"unicode": "23F0",
@@ -304,13 +280,14 @@
"aliases_ascii": [],
"keywords": [
"time",
- "wake"
+ "wake",
+ "object"
],
"moji": "⏰"
},
"alembic": {
"unicode": "2697",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "alembic",
"shortname": ":alembic:",
"category": "objects",
@@ -319,22 +296,27 @@
"keywords": [
"chemistry",
"object",
- "tool"
- ]
+ "tool",
+ "science"
+ ],
+ "moji": "⚗"
},
"alien": {
"unicode": "1F47D",
"unicode_alternates": [],
"name": "extraterrestrial alien",
"shortname": ":alien:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"UFO",
"paul",
"alien",
- "ufo"
+ "ufo",
+ "space",
+ "monster",
+ "scientology"
],
"moji": "👽"
},
@@ -343,7 +325,7 @@
"unicode_alternates": [],
"name": "ambulance",
"shortname": ":ambulance:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -353,19 +335,23 @@
"emergency",
"medical",
"help",
- "assistance"
+ "assistance",
+ "transportation"
],
"moji": "🚑"
},
"amphora": {
"unicode": "1F3FA",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "amphora",
"shortname": ":amphora:",
"category": "objects",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "object"
+ ],
+ "moji": "🏺"
},
"anchor": {
"unicode": "2693",
@@ -374,21 +360,23 @@
],
"name": "anchor",
"shortname": ":anchor:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"ferry",
"ship",
"anchor",
- "ship",
"boat",
"ocean",
"harbor",
"marina",
"shipyard",
"sailor",
- "tattoo"
+ "tattoo",
+ "object",
+ "travel",
+ "vacation"
],
"moji": "⚓"
},
@@ -397,7 +385,7 @@
"unicode_alternates": [],
"name": "baby angel",
"shortname": ":angel:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -406,16 +394,17 @@
"halo",
"cupid",
"wings",
- "halo",
"heaven",
- "wings",
- "jesus"
+ "jesus",
+ "people",
+ "diversity",
+ "omg"
],
"moji": "👼"
},
"angel_tone1": {
"unicode": "1F47C-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby angel tone 1",
"shortname": ":angel_tone1:",
"category": "people",
@@ -427,11 +416,12 @@
"heaven",
"wings",
"jesus"
- ]
+ ],
+ "moji": "👼🏻"
},
"angel_tone2": {
"unicode": "1F47C-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby angel tone 2",
"shortname": ":angel_tone2:",
"category": "people",
@@ -443,11 +433,12 @@
"heaven",
"wings",
"jesus"
- ]
+ ],
+ "moji": "👼🏼"
},
"angel_tone3": {
"unicode": "1F47C-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby angel tone 3",
"shortname": ":angel_tone3:",
"category": "people",
@@ -459,11 +450,12 @@
"heaven",
"wings",
"jesus"
- ]
+ ],
+ "moji": "👼🏽"
},
"angel_tone4": {
"unicode": "1F47C-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby angel tone 4",
"shortname": ":angel_tone4:",
"category": "people",
@@ -475,11 +467,12 @@
"heaven",
"wings",
"jesus"
- ]
+ ],
+ "moji": "👼🏾"
},
"angel_tone5": {
"unicode": "1F47C-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby angel tone 5",
"shortname": ":angel_tone5:",
"category": "people",
@@ -491,50 +484,31 @@
"heaven",
"wings",
"jesus"
- ]
+ ],
+ "moji": "👼🏿"
},
"anger": {
"unicode": "1F4A2",
"unicode_alternates": [],
"name": "anger symbol",
"shortname": ":anger:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"anger",
"angry",
- "mad"
+ "mad",
+ "symbol"
],
"moji": "💢"
},
- "anger_left": {
- "unicode": "1F5EE",
- "unicode_alternates": [],
- "name": "left anger bubble",
- "shortname": ":anger_left:",
- "category": "objects_symbols",
- "aliases": [
- ":left_anger_bubble:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "speech",
- "balloon",
- "talk",
- "mood",
- "conversation",
- "communication",
- "comic",
- "angry"
- ]
- },
"anger_right": {
"unicode": "1F5EF",
"unicode_alternates": [],
"name": "right anger bubble",
"shortname": ":anger_right:",
- "category": "objects_symbols",
+ "category": "symbols",
"aliases": [
":right_anger_bubble:"
],
@@ -547,15 +521,17 @@
"conversation",
"communication",
"comic",
- "angry"
- ]
+ "angry",
+ "symbol"
+ ],
+ "moji": "🗯"
},
"angry": {
"unicode": "1F620",
"unicode_alternates": [],
"name": "angry face",
"shortname": ":angry:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
">:(",
@@ -571,7 +547,8 @@
"annoyed",
"face",
"frustrated",
- "mad"
+ "smiley",
+ "emotion"
],
"moji": "😠"
},
@@ -580,7 +557,7 @@
"unicode_alternates": [],
"name": "anguished face",
"shortname": ":anguished:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -592,7 +569,11 @@
"ouch",
"misery",
"distress",
- "grief"
+ "grief",
+ "sad",
+ "smiley",
+ "surprised",
+ "emotion"
],
"moji": "😧"
},
@@ -609,8 +590,8 @@
"insect",
"ant",
"queen",
- "insect",
- "team"
+ "team",
+ "insects"
],
"moji": "🐜"
},
@@ -619,20 +600,21 @@
"unicode_alternates": [],
"name": "red apple",
"shortname": ":apple:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fruit",
"mac",
"apple",
- "fruit",
"electronics",
"red",
"doctor",
"teacher",
"school",
- "core"
+ "core",
+ "food",
+ "creationism"
],
"moji": "🍎"
},
@@ -643,7 +625,7 @@
],
"name": "aquarius",
"shortname": ":aquarius:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -657,9 +639,8 @@
"zodiac",
"sign",
"purple-square",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♒"
},
@@ -670,7 +651,7 @@
],
"name": "aries",
"shortname": ":aries:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -683,9 +664,8 @@
"zodiac",
"sign",
"purple-square",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♈"
},
@@ -696,12 +676,14 @@
],
"name": "black left-pointing triangle",
"shortname": ":arrow_backward:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol",
+ "triangle"
],
"moji": "◀"
},
@@ -710,12 +692,13 @@
"unicode_alternates": [],
"name": "black down-pointing double triangle",
"shortname": ":arrow_double_down:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "⏬"
},
@@ -724,12 +707,13 @@
"unicode_alternates": [],
"name": "black up-pointing double triangle",
"shortname": ":arrow_double_up:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "⏫"
},
@@ -740,12 +724,13 @@
],
"name": "downwards black arrow",
"shortname": ":arrow_down:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "⬇"
},
@@ -754,12 +739,14 @@
"unicode_alternates": [],
"name": "down-pointing small red triangle",
"shortname": ":arrow_down_small:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol",
+ "triangle"
],
"moji": "🔽"
},
@@ -770,12 +757,14 @@
],
"name": "black right-pointing triangle",
"shortname": ":arrow_forward:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol",
+ "triangle"
],
"moji": "▶"
},
@@ -786,12 +775,13 @@
],
"name": "arrow pointing rightwards then curving downwards",
"shortname": ":arrow_heading_down:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "⤵"
},
@@ -802,12 +792,13 @@
],
"name": "arrow pointing rightwards then curving upwards",
"shortname": ":arrow_heading_up:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "⤴"
},
@@ -818,13 +809,14 @@
],
"name": "leftwards black arrow",
"shortname": ":arrow_left:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
"blue-square",
- "previous"
+ "previous",
+ "symbol"
],
"moji": "⬅"
},
@@ -835,12 +827,13 @@
],
"name": "south west arrow",
"shortname": ":arrow_lower_left:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "↙"
},
@@ -851,12 +844,13 @@
],
"name": "south east arrow",
"shortname": ":arrow_lower_right:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "↘"
},
@@ -867,12 +861,14 @@
],
"name": "black rightwards arrow",
"shortname": ":arrow_right:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "next"
+ "next",
+ "arrow",
+ "symbol"
],
"moji": "➡"
},
@@ -883,11 +879,13 @@
],
"name": "rightwards arrow with hook",
"shortname": ":arrow_right_hook:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "↪"
},
@@ -898,11 +896,13 @@
],
"name": "upwards black arrow",
"shortname": ":arrow_up:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "⬆"
},
@@ -913,11 +913,13 @@
],
"name": "up down arrow",
"shortname": ":arrow_up_down:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "↕"
},
@@ -926,11 +928,14 @@
"unicode_alternates": [],
"name": "up-pointing small red triangle",
"shortname": ":arrow_up_small:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol",
+ "triangle"
],
"moji": "🔼"
},
@@ -941,11 +946,13 @@
],
"name": "north west arrow",
"shortname": ":arrow_upper_left:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "↖"
},
@@ -956,11 +963,13 @@
],
"name": "north east arrow",
"shortname": ":arrow_upper_right:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "↗"
},
@@ -969,11 +978,13 @@
"unicode_alternates": [],
"name": "clockwise downwards and upwards open circle arrows",
"shortname": ":arrows_clockwise:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "sync"
+ "sync",
+ "arrow",
+ "symbol"
],
"moji": "🔃"
},
@@ -982,12 +993,14 @@
"unicode_alternates": [],
"name": "anticlockwise downwards and upwards open circle ar",
"shortname": ":arrows_counterclockwise:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "sync"
+ "sync",
+ "arrow",
+ "symbol"
],
"moji": "🔄"
},
@@ -996,7 +1009,7 @@
"unicode_alternates": [],
"name": "artist palette",
"shortname": ":art:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1007,8 +1020,6 @@
"palette",
"art",
"colors",
- "paint",
- "draw",
"brush",
"pastels",
"oils"
@@ -1020,7 +1031,7 @@
"unicode_alternates": [],
"name": "articulated lorry",
"shortname": ":articulated_lorry:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1035,24 +1046,11 @@
],
"moji": "🚛"
},
- "ascending_notes": {
- "unicode": "1F39C",
- "unicode_alternates": [],
- "name": "beamed ascending musical notes",
- "shortname": ":ascending_notes:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "score",
- "music",
- "sound",
- "tone"
- ]
- },
"asterisk": {
"unicode": "002A-20E3",
- "unicode_alternates": "002a-fe0f-20e3",
+ "unicode_alternates": [
+ "002A-FE0F-20E3"
+ ],
"name": "keycap asterisk",
"shortname": ":asterisk:",
"category": "symbols",
@@ -1064,14 +1062,15 @@
"*",
"star",
"symbol"
- ]
+ ],
+ "moji": "*⃣"
},
"astonished": {
"unicode": "1F632",
"unicode_alternates": [],
"name": "astonished face",
"shortname": ":astonished:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1079,7 +1078,12 @@
"xox",
"shocked",
"surprise",
- "astonished"
+ "astonished",
+ "smiley",
+ "surprised",
+ "wow",
+ "emotion",
+ "omg"
],
"moji": "😲"
},
@@ -1088,12 +1092,16 @@
"unicode_alternates": [],
"name": "athletic shoe",
"shortname": ":athletic_shoe:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"shoes",
- "sports"
+ "sports",
+ "fashion",
+ "shoe",
+ "accessories",
+ "boys night"
],
"moji": "👟"
},
@@ -1102,7 +1110,7 @@
"unicode_alternates": [],
"name": "automated teller machine",
"shortname": ":atm:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1115,17 +1123,16 @@
"bank",
"adam",
"payday",
- "bank",
"blue-square",
- "cash",
- "money",
- "payment"
+ "payment",
+ "electronics",
+ "symbol"
],
"moji": "🏧"
},
"atom": {
"unicode": "269B",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "atom symbol",
"shortname": ":atom:",
"category": "symbols",
@@ -1134,21 +1141,36 @@
],
"aliases_ascii": [],
"keywords": [
- "atheist"
- ]
+ "atheist",
+ "symbol",
+ "science"
+ ],
+ "moji": "⚛"
+ },
+ "avocado": {
+ "unicode": "1F951",
+ "unicode_alternates": [],
+ "name": "avocado",
+ "shortname": ":avocado:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥑"
},
"b": {
"unicode": "1F171",
"unicode_alternates": [],
"name": "negative squared latin capital letter b",
"shortname": ":b:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"letter",
- "red-square"
+ "red-square",
+ "symbol"
],
"moji": "🅱"
},
@@ -1157,13 +1179,16 @@
"unicode_alternates": [],
"name": "baby",
"shortname": ":baby:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"boy",
"child",
- "infant"
+ "infant",
+ "people",
+ "baby",
+ "diversity"
],
"moji": "👶"
},
@@ -1172,7 +1197,7 @@
"unicode_alternates": [],
"name": "baby bottle",
"shortname": ":baby_bottle:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1184,7 +1209,9 @@
"mother",
"nipple",
"newborn",
- "formula"
+ "formula",
+ "drink",
+ "object"
],
"moji": "🍼"
},
@@ -1202,7 +1229,6 @@
"chick",
"baby",
"bird",
- "chicken",
"young",
"woman",
"cute"
@@ -1214,7 +1240,7 @@
"unicode_alternates": [],
"name": "baby symbol",
"shortname": ":baby_symbol:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1226,13 +1252,14 @@
"human",
"diaper",
"small",
- "babe"
+ "babe",
+ "symbol"
],
"moji": "🚼"
},
"baby_tone1": {
"unicode": "1F476-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby tone 1",
"shortname": ":baby_tone1:",
"category": "people",
@@ -1242,11 +1269,12 @@
"child",
"infant",
"toddler"
- ]
+ ],
+ "moji": "👶🏻"
},
"baby_tone2": {
"unicode": "1F476-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby tone 2",
"shortname": ":baby_tone2:",
"category": "people",
@@ -1256,11 +1284,12 @@
"child",
"infant",
"toddler"
- ]
+ ],
+ "moji": "👶🏼"
},
"baby_tone3": {
"unicode": "1F476-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby tone 3",
"shortname": ":baby_tone3:",
"category": "people",
@@ -1270,11 +1299,12 @@
"child",
"infant",
"toddler"
- ]
+ ],
+ "moji": "👶🏽"
},
"baby_tone4": {
"unicode": "1F476-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby tone 4",
"shortname": ":baby_tone4:",
"category": "people",
@@ -1284,11 +1314,12 @@
"child",
"infant",
"toddler"
- ]
+ ],
+ "moji": "👶🏾"
},
"baby_tone5": {
"unicode": "1F476-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "baby tone 5",
"shortname": ":baby_tone5:",
"category": "people",
@@ -1298,37 +1329,57 @@
"child",
"infant",
"toddler"
- ]
+ ],
+ "moji": "👶🏿"
},
"back": {
"unicode": "1F519",
"unicode_alternates": [],
"name": "back with leftwards arrow above",
"shortname": ":back:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "arrow"
+ "arrow",
+ "symbol"
],
"moji": "🔙"
},
+ "bacon": {
+ "unicode": "1F953",
+ "unicode_alternates": [],
+ "name": "bacon",
+ "shortname": ":bacon:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [
+ "pig"
+ ],
+ "moji": "🥓"
+ },
"badminton": {
"unicode": "1F3F8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "badminton racquet",
"shortname": ":badminton:",
"category": "activity",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "game",
+ "sport",
+ "badminton"
+ ],
+ "moji": "🏸"
},
"baggage_claim": {
"unicode": "1F6C4",
"unicode_alternates": [],
"name": "baggage claim",
"shortname": ":baggage_claim:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1338,7 +1389,8 @@
"bag",
"baggage",
"luggage",
- "travel"
+ "travel",
+ "symbol"
],
"moji": "🛄"
},
@@ -1355,11 +1407,13 @@
"party",
"balloon",
"birthday",
- "celebration",
"helium",
"gas",
"children",
- "float"
+ "float",
+ "object",
+ "good",
+ "parties"
],
"moji": "🎈"
},
@@ -1368,29 +1422,17 @@
"unicode_alternates": [],
"name": "ballot box with ballot",
"shortname": ":ballot_box:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":ballot_box_with_ballot:"
],
"aliases_ascii": [],
"keywords": [
- "vote"
- ]
- },
- "ballot_box_check": {
- "unicode": "1F5F9",
- "unicode_alternates": [],
- "name": "ballot box with bold check",
- "shortname": ":ballot_box_check:",
- "category": "objects_symbols",
- "aliases": [
- ":ballot_box_with_bold_check:"
+ "vote",
+ "object",
+ "office"
],
- "aliases_ascii": [],
- "keywords": [
- "mark",
- "vote"
- ]
+ "moji": "🗳"
},
"ballot_box_with_check": {
"unicode": "2611",
@@ -1399,51 +1441,22 @@
],
"name": "ballot box with check",
"shortname": ":ballot_box_with_check:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"agree",
- "ok"
+ "ok",
+ "symbol"
],
"moji": "☑"
},
- "ballot_box_x": {
- "unicode": "1F5F5",
- "unicode_alternates": [],
- "name": "ballot box with script x",
- "shortname": ":ballot_box_x:",
- "category": "objects_symbols",
- "aliases": [
- ":ballot_box_with_script_x:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "mark",
- "vote"
- ]
- },
- "ballot_x": {
- "unicode": "1F5F4",
- "unicode_alternates": [],
- "name": "ballot script x",
- "shortname": ":ballot_x:",
- "category": "objects_symbols",
- "aliases": [
- ":ballot_script_x:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "mark",
- "vote"
- ]
- },
"bamboo": {
"unicode": "1F38D",
"unicode_alternates": [],
"name": "pine decoration",
"shortname": ":bamboo:",
- "category": "objects",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1472,7 +1485,7 @@
"unicode_alternates": [],
"name": "banana",
"shortname": ":banana:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1480,7 +1493,8 @@
"fruit",
"banana",
"peel",
- "bunch"
+ "bunch",
+ "penis"
],
"moji": "🍌"
},
@@ -1491,12 +1505,14 @@
],
"name": "double exclamation mark",
"shortname": ":bangbang:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"exclamation",
- "surprise"
+ "surprise",
+ "symbol",
+ "punctuation"
],
"moji": "‼"
},
@@ -1505,11 +1521,12 @@
"unicode_alternates": [],
"name": "bank",
"shortname": ":bank:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "building"
+ "building",
+ "places"
],
"moji": "🏦"
},
@@ -1524,7 +1541,9 @@
"keywords": [
"graph",
"presentation",
- "stats"
+ "stats",
+ "work",
+ "office"
],
"moji": "📊"
},
@@ -1533,13 +1552,14 @@
"unicode_alternates": [],
"name": "barber pole",
"shortname": ":barber:",
- "category": "places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"hair",
"salon",
- "style"
+ "style",
+ "object"
],
"moji": "💈"
},
@@ -1550,13 +1570,17 @@
],
"name": "baseball",
"shortname": ":baseball:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"MLB",
"balls",
- "sports"
+ "sports",
+ "game",
+ "ball",
+ "sport",
+ "baseball"
],
"moji": "⚾"
},
@@ -1565,7 +1589,7 @@
"unicode_alternates": [],
"name": "basketball and hoop",
"shortname": ":basketball:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1578,13 +1602,16 @@
"hoop",
"net",
"swish",
- "rip city"
+ "rip city",
+ "game",
+ "ball",
+ "sport"
],
"moji": "🏀"
},
"basketball_player": {
"unicode": "26F9",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with ball",
"shortname": ":basketball_player:",
"category": "activity",
@@ -1594,12 +1621,18 @@
"aliases_ascii": [],
"keywords": [
"sport",
- "travel"
- ]
+ "travel",
+ "men",
+ "game",
+ "ball",
+ "basketball",
+ "diversity"
+ ],
+ "moji": "⛹"
},
"basketball_player_tone1": {
"unicode": "26F9-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with ball tone 1",
"shortname": ":basketball_player_tone1:",
"category": "activity",
@@ -1607,11 +1640,19 @@
":person_with_ball_tone1:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "sport",
+ "travel",
+ "men",
+ "game",
+ "ball",
+ "basketball"
+ ],
+ "moji": "⛹🏻"
},
"basketball_player_tone2": {
"unicode": "26F9-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with ball tone 2",
"shortname": ":basketball_player_tone2:",
"category": "activity",
@@ -1619,11 +1660,19 @@
":person_with_ball_tone2:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "sport",
+ "travel",
+ "men",
+ "game",
+ "ball",
+ "basketball"
+ ],
+ "moji": "⛹🏼"
},
"basketball_player_tone3": {
"unicode": "26F9-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with ball tone 3",
"shortname": ":basketball_player_tone3:",
"category": "activity",
@@ -1631,11 +1680,19 @@
":person_with_ball_tone3:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "sport",
+ "travel",
+ "men",
+ "game",
+ "ball",
+ "basketball"
+ ],
+ "moji": "⛹🏽"
},
"basketball_player_tone4": {
"unicode": "26F9-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with ball tone 4",
"shortname": ":basketball_player_tone4:",
"category": "activity",
@@ -1643,11 +1700,19 @@
":person_with_ball_tone4:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "sport",
+ "travel",
+ "men",
+ "game",
+ "ball",
+ "basketball"
+ ],
+ "moji": "⛹🏾"
},
"basketball_player_tone5": {
"unicode": "26F9-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with ball tone 5",
"shortname": ":basketball_player_tone5:",
"category": "activity",
@@ -1655,14 +1720,33 @@
":person_with_ball_tone5:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "sport",
+ "travel",
+ "men",
+ "game",
+ "ball",
+ "basketball"
+ ],
+ "moji": "⛹🏿"
+ },
+ "bat": {
+ "unicode": "1F987",
+ "unicode_alternates": [],
+ "name": "bat",
+ "shortname": ":bat:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦇"
},
"bath": {
"unicode": "1F6C0",
"unicode_alternates": [],
"name": "bath",
"shortname": ":bath:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1677,16 +1761,17 @@
"bathroom",
"soap",
"water",
- "clean",
"shampoo",
"lather",
- "water"
+ "tired",
+ "diversity",
+ "steam"
],
"moji": "🛀"
},
"bath_tone1": {
"unicode": "1F6C0-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bath tone 1",
"shortname": ":bath_tone1:",
"category": "activity",
@@ -1705,11 +1790,12 @@
"clean",
"shampoo",
"lather"
- ]
+ ],
+ "moji": "🛀🏻"
},
"bath_tone2": {
"unicode": "1F6C0-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bath tone 2",
"shortname": ":bath_tone2:",
"category": "activity",
@@ -1728,11 +1814,12 @@
"clean",
"shampoo",
"lather"
- ]
+ ],
+ "moji": "🛀🏼"
},
"bath_tone3": {
"unicode": "1F6C0-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bath tone 3",
"shortname": ":bath_tone3:",
"category": "activity",
@@ -1751,11 +1838,12 @@
"clean",
"shampoo",
"lather"
- ]
+ ],
+ "moji": "🛀🏽"
},
"bath_tone4": {
"unicode": "1F6C0-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bath tone 4",
"shortname": ":bath_tone4:",
"category": "activity",
@@ -1774,11 +1862,12 @@
"clean",
"shampoo",
"lather"
- ]
+ ],
+ "moji": "🛀🏾"
},
"bath_tone5": {
"unicode": "1F6C0-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bath tone 5",
"shortname": ":bath_tone5:",
"category": "activity",
@@ -1797,7 +1886,8 @@
"clean",
"shampoo",
"lather"
- ]
+ ],
+ "moji": "🛀🏿"
},
"bathtub": {
"unicode": "1F6C1",
@@ -1819,10 +1909,11 @@
"bathroom",
"soap",
"water",
- "clean",
"shampoo",
"lather",
- "water"
+ "object",
+ "tired",
+ "steam"
],
"moji": "🛁"
},
@@ -1837,7 +1928,8 @@
"keywords": [
"energy",
"power",
- "sustain"
+ "sustain",
+ "object"
],
"moji": "🔋"
},
@@ -1846,7 +1938,7 @@
"unicode_alternates": [],
"name": "beach with umbrella",
"shortname": ":beach:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":beach_with_umbrella:"
],
@@ -1859,12 +1951,18 @@
"relaxation",
"tanning",
"tan",
- "swimming"
- ]
+ "swimming",
+ "places",
+ "travel",
+ "tropical",
+ "beach",
+ "swim"
+ ],
+ "moji": "🏖"
},
"beach_umbrella": {
"unicode": "26F1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "umbrella on ground",
"shortname": ":beach_umbrella:",
"category": "objects",
@@ -1877,8 +1975,11 @@
"rain",
"sun",
"travel",
- "weather"
- ]
+ "weather",
+ "vacation",
+ "tropical"
+ ],
+ "moji": "⛱"
},
"bear": {
"unicode": "1F43B",
@@ -1890,7 +1991,9 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife",
+ "roar"
],
"moji": "🐻"
},
@@ -1899,7 +2002,7 @@
"unicode_alternates": [],
"name": "bed",
"shortname": ":bed:",
- "category": "travel_places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1909,8 +2012,11 @@
"full",
"twin",
"king",
- "mattress"
- ]
+ "mattress",
+ "object",
+ "tired"
+ ],
+ "moji": "🛏"
},
"bee": {
"unicode": "1F41D",
@@ -1932,7 +2038,8 @@
"honey",
"hive",
"bumble",
- "pollination"
+ "pollination",
+ "insects"
],
"moji": "🐝"
},
@@ -1941,7 +2048,7 @@
"unicode_alternates": [],
"name": "beer mug",
"shortname": ":beer:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1962,7 +2069,9 @@
"brewery",
"micro",
"pint",
- "boot"
+ "boot",
+ "alcohol",
+ "parties"
],
"moji": "🍺"
},
@@ -1971,7 +2080,7 @@
"unicode_alternates": [],
"name": "clinking beer mugs",
"shortname": ":beers:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -1987,11 +2096,14 @@
"mug",
"toast",
"celebrate",
- "pub",
"bar",
"jolly",
"hops",
- "clink"
+ "clink",
+ "alcohol",
+ "thank you",
+ "boys night",
+ "parties"
],
"moji": "🍻"
},
@@ -2013,8 +2125,9 @@
"beetle",
"cow",
"lady cow",
- "insect",
- "endearment"
+ "endearment",
+ "insects",
+ "animal"
],
"moji": "🐞"
},
@@ -2023,12 +2136,13 @@
"unicode_alternates": [],
"name": "japanese symbol for beginner",
"shortname": ":beginner:",
- "category": "places",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"badge",
- "shield"
+ "shield",
+ "symbol"
],
"moji": "🔰"
},
@@ -2037,7 +2151,7 @@
"unicode_alternates": [],
"name": "bell",
"shortname": ":bell:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2045,7 +2159,10 @@
"christmas",
"notification",
"sound",
- "xmas"
+ "xmas",
+ "object",
+ "alarm",
+ "symbol"
],
"moji": "🔔"
},
@@ -2054,7 +2171,7 @@
"unicode_alternates": [],
"name": "bellhop bell",
"shortname": ":bellhop:",
- "category": "travel_places",
+ "category": "objects",
"aliases": [
":bellhop_bell:"
],
@@ -2062,15 +2179,17 @@
"keywords": [
"hotel",
"porter",
- "ding"
- ]
+ "ding",
+ "object"
+ ],
+ "moji": "🛎"
},
"bento": {
"unicode": "1F371",
"unicode_alternates": [],
"name": "bento box",
"shortname": ":bento:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2078,13 +2197,14 @@
"food",
"japanese",
"bento",
- "japanese",
"rice",
"meal",
- "box",
"obento",
"convenient",
- "lunchbox"
+ "lunchbox",
+ "object",
+ "sushi",
+ "japan"
],
"moji": "🍱"
},
@@ -2093,7 +2213,7 @@
"unicode_alternates": [],
"name": "bicyclist",
"shortname": ":bicyclist:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2103,16 +2223,19 @@
"sports",
"bicyclist",
"road",
- "bike",
"pedal",
"bicycle",
- "transportation"
+ "transportation",
+ "men",
+ "workout",
+ "sport",
+ "diversity"
],
"moji": "🚴"
},
"bicyclist_tone1": {
"unicode": "1F6B4-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bicyclist tone 1",
"shortname": ":bicyclist_tone1:",
"category": "activity",
@@ -2127,11 +2250,12 @@
"pedal",
"bicycle",
"transportation"
- ]
+ ],
+ "moji": "🚴🏻"
},
"bicyclist_tone2": {
"unicode": "1F6B4-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bicyclist tone 2",
"shortname": ":bicyclist_tone2:",
"category": "activity",
@@ -2146,11 +2270,12 @@
"pedal",
"bicycle",
"transportation"
- ]
+ ],
+ "moji": "🚴🏼"
},
"bicyclist_tone3": {
"unicode": "1F6B4-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bicyclist tone 3",
"shortname": ":bicyclist_tone3:",
"category": "activity",
@@ -2165,11 +2290,12 @@
"pedal",
"bicycle",
"transportation"
- ]
+ ],
+ "moji": "🚴🏽"
},
"bicyclist_tone4": {
"unicode": "1F6B4-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bicyclist tone 4",
"shortname": ":bicyclist_tone4:",
"category": "activity",
@@ -2184,11 +2310,12 @@
"pedal",
"bicycle",
"transportation"
- ]
+ ],
+ "moji": "🚴🏾"
},
"bicyclist_tone5": {
"unicode": "1F6B4-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bicyclist tone 5",
"shortname": ":bicyclist_tone5:",
"category": "activity",
@@ -2203,14 +2330,15 @@
"pedal",
"bicycle",
"transportation"
- ]
+ ],
+ "moji": "🚴🏿"
},
"bike": {
"unicode": "1F6B2",
"unicode_alternates": [],
"name": "bicycle",
"shortname": ":bike:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2220,8 +2348,8 @@
"sports",
"bike",
"pedal",
- "bicycle",
- "transportation"
+ "transportation",
+ "travel"
],
"moji": "🚲"
},
@@ -2230,7 +2358,7 @@
"unicode_alternates": [],
"name": "bikini",
"shortname": ":bikini:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2239,13 +2367,18 @@
"female",
"girl",
"swimming",
- "woman"
+ "woman",
+ "women",
+ "sexy",
+ "vacation",
+ "tropical",
+ "swim"
],
"moji": "👙"
},
"biohazard": {
"unicode": "2623",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "biohazard sign",
"shortname": ":biohazard:",
"category": "symbols",
@@ -2254,8 +2387,10 @@
],
"aliases_ascii": [],
"keywords": [
- "symbol"
- ]
+ "symbol",
+ "science"
+ ],
+ "moji": "☣"
},
"bird": {
"unicode": "1F426",
@@ -2269,7 +2404,8 @@
"animal",
"fly",
"nature",
- "tweet"
+ "tweet",
+ "wildlife"
],
"moji": "🐦"
},
@@ -2278,7 +2414,7 @@
"unicode_alternates": [],
"name": "birthday cake",
"shortname": ":birthday:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2286,10 +2422,11 @@
"party",
"birthday",
"birth",
- "cake",
"dessert",
"wish",
- "celebrate"
+ "celebrate",
+ "food",
+ "parties"
],
"moji": "🎂"
},
@@ -2300,26 +2437,42 @@
],
"name": "medium black circle",
"shortname": ":black_circle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "circle"
],
"moji": "⚫"
},
+ "black_heart": {
+ "unicode": "1F5A4",
+ "unicode_alternates": [],
+ "name": "black heart",
+ "shortname": ":black_heart:",
+ "category": "symbols",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🖤"
+ },
"black_joker": {
"unicode": "1F0CF",
"unicode_alternates": [],
"name": "playing card black joker",
"shortname": ":black_joker:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cards",
"game",
- "poker"
+ "poker",
+ "object",
+ "symbol"
],
"moji": "🃏"
},
@@ -2330,11 +2483,14 @@
],
"name": "black large square",
"shortname": ":black_large_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "⬛"
},
@@ -2345,10 +2501,14 @@
],
"name": "black medium small square",
"shortname": ":black_medium_small_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "shapes",
+ "symbol",
+ "square"
+ ],
"moji": "◾"
},
"black_medium_square": {
@@ -2358,11 +2518,14 @@
],
"name": "black medium square",
"shortname": ":black_medium_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "◼"
},
@@ -2378,7 +2541,10 @@
"aliases_ascii": [],
"keywords": [
"pen",
- "stationery"
+ "stationery",
+ "object",
+ "office",
+ "write"
],
"moji": "✒"
},
@@ -2389,10 +2555,14 @@
],
"name": "black small square",
"shortname": ":black_small_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "shapes",
+ "symbol",
+ "square"
+ ],
"moji": "▪"
},
"black_square_button": {
@@ -2400,11 +2570,14 @@
"unicode_alternates": [],
"name": "black square button",
"shortname": ":black_square_button:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "frame"
+ "frame",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "🔲"
},
@@ -2422,7 +2595,8 @@
"yellow",
"blossom",
"daisy",
- "flower"
+ "flower",
+ "plant"
],
"moji": "🌼"
},
@@ -2445,7 +2619,9 @@
"ballonfish",
"toadfish",
"fugu fish",
- "sushi"
+ "sushi",
+ "wildlife",
+ "animal"
],
"moji": "🐡"
},
@@ -2460,7 +2636,11 @@
"keywords": [
"knowledge",
"library",
- "read"
+ "read",
+ "object",
+ "office",
+ "write",
+ "book"
],
"moji": "📘"
},
@@ -2469,15 +2649,16 @@
"unicode_alternates": [],
"name": "recreational vehicle",
"shortname": ":blue_car:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"car",
"suv",
- "car",
"wagon",
- "automobile"
+ "automobile",
+ "transportation",
+ "travel"
],
"moji": "🚙"
},
@@ -2486,7 +2667,7 @@
"unicode_alternates": [],
"name": "blue heart",
"shortname": ":blue_heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2496,11 +2677,11 @@
"valentines",
"blue",
"heart",
- "love",
"stability",
"truth",
"loyalty",
- "trust"
+ "trust",
+ "symbol"
],
"moji": "💙"
},
@@ -2509,7 +2690,7 @@
"unicode_alternates": [],
"name": "smiling face with smiling eyes",
"shortname": ":blush:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2521,8 +2702,10 @@
"shy",
"smile",
"smiling",
- "smile",
- "smiley"
+ "smiley",
+ "emotion",
+ "good",
+ "beautiful"
],
"moji": "😊"
},
@@ -2536,7 +2719,8 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife"
],
"moji": "🐗"
},
@@ -2550,7 +2734,11 @@
"aliases_ascii": [],
"keywords": [
"boom",
- "explode"
+ "explode",
+ "object",
+ "weapon",
+ "dead",
+ "blast"
],
"moji": "💣"
},
@@ -2564,26 +2752,14 @@
"aliases_ascii": [],
"keywords": [
"library",
- "literature"
+ "literature",
+ "object",
+ "office",
+ "write",
+ "book"
],
"moji": "📖"
},
- "book2": {
- "unicode": "1F56E",
- "unicode_alternates": [],
- "name": "book",
- "shortname": ":book2:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "library",
- "literature",
- "novel",
- "reading",
- "story"
- ]
- },
"bookmark": {
"unicode": "1F516",
"unicode_alternates": [],
@@ -2593,7 +2769,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "favorite"
+ "favorite",
+ "object",
+ "book"
],
"moji": "🔖"
},
@@ -2606,7 +2784,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "favorite"
+ "favorite",
+ "office",
+ "write"
],
"moji": "📑"
},
@@ -2620,7 +2800,11 @@
"aliases_ascii": [],
"keywords": [
"library",
- "literature"
+ "literature",
+ "object",
+ "office",
+ "write",
+ "book"
],
"moji": "📚"
},
@@ -2629,7 +2813,7 @@
"unicode_alternates": [],
"name": "collision symbol",
"shortname": ":boom:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2642,7 +2826,9 @@
"fire",
"emphasis",
"wow",
- "bam"
+ "bam",
+ "symbol",
+ "blast"
],
"moji": "💥"
},
@@ -2651,12 +2837,16 @@
"unicode_alternates": [],
"name": "womans boots",
"shortname": ":boot:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fashion",
- "shoes"
+ "shoes",
+ "women",
+ "shoe",
+ "sexy",
+ "accessories"
],
"moji": "👢"
},
@@ -2670,33 +2860,20 @@
"aliases_ascii": [],
"keywords": [
"flowers",
- "nature"
+ "nature",
+ "flower",
+ "plant",
+ "rip",
+ "condolence"
],
"moji": "💐"
},
- "bouquet2": {
- "unicode": "1F395",
- "unicode_alternates": [],
- "name": "bouquet of flowers",
- "shortname": ":bouquet2:",
- "category": "celebration",
- "aliases": [
- ":bouquet_of_flowers:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "nature",
- "marriage",
- "wedding",
- "bride"
- ]
- },
"bow": {
"unicode": "1F647",
"unicode_alternates": [],
"name": "person bowing deeply",
"shortname": ":bow:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2707,13 +2884,16 @@
"bow",
"respect",
"curtsy",
- "bend"
+ "bend",
+ "people",
+ "pray",
+ "diversity"
],
"moji": "🙇"
},
"bow_and_arrow": {
"unicode": "1F3F9",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bow and arrow",
"shortname": ":bow_and_arrow:",
"category": "activity",
@@ -2721,11 +2901,15 @@
":archery:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "weapon",
+ "sport"
+ ],
+ "moji": "🏹"
},
"bow_tone1": {
"unicode": "1F647-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person bowing deeply tone 1",
"shortname": ":bow_tone1:",
"category": "people",
@@ -2739,11 +2923,12 @@
"bow",
"respect",
"bend"
- ]
+ ],
+ "moji": "🙇🏻"
},
"bow_tone2": {
"unicode": "1F647-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person bowing deeply tone 2",
"shortname": ":bow_tone2:",
"category": "people",
@@ -2757,11 +2942,12 @@
"bow",
"respect",
"bend"
- ]
+ ],
+ "moji": "🙇🏼"
},
"bow_tone3": {
"unicode": "1F647-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person bowing deeply tone 3",
"shortname": ":bow_tone3:",
"category": "people",
@@ -2775,11 +2961,12 @@
"bow",
"respect",
"bend"
- ]
+ ],
+ "moji": "🙇🏽"
},
"bow_tone4": {
"unicode": "1F647-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person bowing deeply tone 4",
"shortname": ":bow_tone4:",
"category": "people",
@@ -2793,11 +2980,12 @@
"bow",
"respect",
"bend"
- ]
+ ],
+ "moji": "🙇🏾"
},
"bow_tone5": {
"unicode": "1F647-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person bowing deeply tone 5",
"shortname": ":bow_tone5:",
"category": "people",
@@ -2811,14 +2999,15 @@
"bow",
"respect",
"bend"
- ]
+ ],
+ "moji": "🙇🏿"
},
"bowling": {
"unicode": "1F3B3",
"unicode_alternates": [],
"name": "bowling",
"shortname": ":bowling:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2831,28 +3020,46 @@
"pin",
"strike",
"spare",
- "game"
+ "game",
+ "sport",
+ "boys night"
],
"moji": "🎳"
},
+ "boxing_glove": {
+ "unicode": "1F94A",
+ "unicode_alternates": [],
+ "name": "boxing glove",
+ "shortname": ":boxing_glove:",
+ "category": "activity",
+ "aliases": [
+ ":boxing_gloves:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥊"
+ },
"boy": {
"unicode": "1F466",
"unicode_alternates": [],
"name": "boy",
"shortname": ":boy:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"guy",
"male",
- "man"
+ "man",
+ "people",
+ "baby",
+ "diversity"
],
"moji": "👦"
},
"boy_tone1": {
"unicode": "1F466-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "boy tone 1",
"shortname": ":boy_tone1:",
"category": "people",
@@ -2862,11 +3069,12 @@
"male",
"kid",
"child"
- ]
+ ],
+ "moji": "👦🏻"
},
"boy_tone2": {
"unicode": "1F466-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "boy tone 2",
"shortname": ":boy_tone2:",
"category": "people",
@@ -2876,11 +3084,12 @@
"male",
"kid",
"child"
- ]
+ ],
+ "moji": "👦🏼"
},
"boy_tone3": {
"unicode": "1F466-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "boy tone 3",
"shortname": ":boy_tone3:",
"category": "people",
@@ -2890,11 +3099,12 @@
"male",
"kid",
"child"
- ]
+ ],
+ "moji": "👦🏽"
},
"boy_tone4": {
"unicode": "1F466-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "boy tone 4",
"shortname": ":boy_tone4:",
"category": "people",
@@ -2904,11 +3114,12 @@
"male",
"kid",
"child"
- ]
+ ],
+ "moji": "👦🏾"
},
"boy_tone5": {
"unicode": "1F466-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "boy tone 5",
"shortname": ":boy_tone5:",
"category": "people",
@@ -2918,27 +3129,15 @@
"male",
"kid",
"child"
- ]
- },
- "boys_symbol": {
- "unicode": "1F6C9",
- "unicode_alternates": [],
- "name": "boys symbol",
- "shortname": ":boys_symbol:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "male",
- "child"
- ]
+ ],
+ "moji": "👦🏿"
},
"bread": {
"unicode": "1F35E",
"unicode_alternates": [],
"name": "bread",
"shortname": ":bread:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2957,7 +3156,7 @@
"unicode_alternates": [],
"name": "bride with veil",
"shortname": ":bride_with_veil:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -2965,19 +3164,21 @@
"marriage",
"wedding",
"bride",
- "wedding",
"planning",
"veil",
"gown",
"dress",
"engagement",
- "white"
+ "white",
+ "people",
+ "women",
+ "diversity"
],
"moji": "👰"
},
"bride_with_veil_tone1": {
"unicode": "1F470-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bride with veil tone 1",
"shortname": ":bride_with_veil_tone1:",
"category": "people",
@@ -2987,17 +3188,17 @@
"couple",
"marriage",
"wedding",
- "wedding",
"planning",
"gown",
"dress",
"engagement",
"white"
- ]
+ ],
+ "moji": "👰🏻"
},
"bride_with_veil_tone2": {
"unicode": "1F470-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bride with veil tone 2",
"shortname": ":bride_with_veil_tone2:",
"category": "people",
@@ -3007,17 +3208,17 @@
"couple",
"marriage",
"wedding",
- "wedding",
"planning",
"gown",
"dress",
"engagement",
"white"
- ]
+ ],
+ "moji": "👰🏼"
},
"bride_with_veil_tone3": {
"unicode": "1F470-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bride with veil tone 3",
"shortname": ":bride_with_veil_tone3:",
"category": "people",
@@ -3027,17 +3228,17 @@
"couple",
"marriage",
"wedding",
- "wedding",
"planning",
"gown",
"dress",
"engagement",
"white"
- ]
+ ],
+ "moji": "👰🏽"
},
"bride_with_veil_tone4": {
"unicode": "1F470-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bride with veil tone 4",
"shortname": ":bride_with_veil_tone4:",
"category": "people",
@@ -3047,17 +3248,17 @@
"couple",
"marriage",
"wedding",
- "wedding",
"planning",
"gown",
"dress",
"engagement",
"white"
- ]
+ ],
+ "moji": "👰🏾"
},
"bride_with_veil_tone5": {
"unicode": "1F470-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bride with veil tone 5",
"shortname": ":bride_with_veil_tone5:",
"category": "people",
@@ -3067,20 +3268,20 @@
"couple",
"marriage",
"wedding",
- "wedding",
"planning",
"gown",
"dress",
"engagement",
"white"
- ]
+ ],
+ "moji": "👰🏿"
},
"bridge_at_night": {
"unicode": "1F309",
"unicode_alternates": [],
"name": "bridge at night",
"shortname": ":bridge_at_night:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3093,7 +3294,11 @@
"evening",
"suspension",
"golden",
- "gate"
+ "gate",
+ "places",
+ "travel",
+ "vacation",
+ "goodnight"
],
"moji": "🌉"
},
@@ -3102,13 +3307,17 @@
"unicode_alternates": [],
"name": "briefcase",
"shortname": ":briefcase:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"business",
"documents",
- "work"
+ "work",
+ "bag",
+ "accessories",
+ "nutcase",
+ "job"
],
"moji": "💼"
},
@@ -3117,14 +3326,17 @@
"unicode_alternates": [],
"name": "broken heart",
"shortname": ":broken_heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [
"</3"
],
"keywords": [
"sad",
- "sorry"
+ "sorry",
+ "love",
+ "symbol",
+ "heartbreak"
],
"moji": "💔"
},
@@ -3140,9 +3352,10 @@
"insect",
"nature",
"bug",
- "insect",
"virus",
- "error"
+ "error",
+ "insects",
+ "animal"
],
"moji": "🐛"
},
@@ -3159,7 +3372,8 @@
"light",
"idea",
"bulb",
- "light"
+ "object",
+ "science"
],
"moji": "💡"
},
@@ -3168,14 +3382,15 @@
"unicode_alternates": [],
"name": "high-speed train with bullet nose",
"shortname": ":bullettrain_front:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"transportation",
"train",
"bullet",
- "rail"
+ "rail",
+ "travel"
],
"moji": "🚅"
},
@@ -3184,7 +3399,7 @@
"unicode_alternates": [],
"name": "high-speed train",
"shortname": ":bullettrain_side:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3192,58 +3407,31 @@
"vehicle",
"train",
"bullet",
- "rail"
+ "rail",
+ "travel"
],
"moji": "🚄"
},
- "bullhorn": {
- "unicode": "1F56B",
- "unicode_alternates": [],
- "name": "bullhorn",
- "shortname": ":bullhorn:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "sound",
- "noise",
- "announcement",
- "megaphone"
- ]
- },
- "bullhorn_waves": {
- "unicode": "1F56C",
- "unicode_alternates": [],
- "name": "bullhorn with sound waves",
- "shortname": ":bullhorn_waves:",
- "category": "objects_symbols",
- "aliases": [
- ":bullhorn_with_sound_waves:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "sound",
- "noise",
- "announcement",
- "megaphone"
- ]
- },
"burrito": {
"unicode": "1F32F",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "burrito",
"shortname": ":burrito:",
- "category": "foods",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "food",
+ "mexican"
+ ],
+ "moji": "🌯"
},
"bus": {
"unicode": "1F68C",
"unicode_alternates": [],
"name": "bus",
"shortname": ":bus:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3253,8 +3441,8 @@
"bus",
"school",
"city",
- "transportation",
- "public"
+ "public",
+ "office"
],
"moji": "🚌"
},
@@ -3263,7 +3451,7 @@
"unicode_alternates": [],
"name": "bus stop",
"shortname": ":busstop:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3272,7 +3460,7 @@
"stop",
"city",
"transport",
- "transportation"
+ "object"
],
"moji": "🚏"
},
@@ -3281,7 +3469,7 @@
"unicode_alternates": [],
"name": "bust in silhouette",
"shortname": ":bust_in_silhouette:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3290,8 +3478,6 @@
"person",
"user",
"silhouette",
- "person",
- "user",
"member",
"account",
"guest",
@@ -3300,7 +3486,8 @@
"profile",
"me",
"myself",
- "i"
+ "i",
+ "people"
],
"moji": "👤"
},
@@ -3309,7 +3496,7 @@
"unicode_alternates": [],
"name": "busts in silhouette",
"shortname": ":busts_in_silhouette:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3322,7 +3509,6 @@
"silhouette",
"silhouettes",
"people",
- "user",
"members",
"accounts",
"relationship",
@@ -3330,6 +3516,17 @@
],
"moji": "👥"
},
+ "butterfly": {
+ "unicode": "1F98B",
+ "unicode_alternates": [],
+ "name": "butterfly",
+ "shortname": ":butterfly:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦋"
+ },
"cactus": {
"unicode": "1F335",
"unicode_alternates": [],
@@ -3346,7 +3543,8 @@
"desert",
"drought",
"spike",
- "poke"
+ "poke",
+ "trees"
],
"moji": "🌵"
},
@@ -3355,7 +3553,7 @@
"unicode_alternates": [],
"name": "shortcake",
"shortname": ":cake:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3368,24 +3566,6 @@
],
"moji": "🍰"
},
- "calculator": {
- "unicode": "1F5A9",
- "unicode_alternates": [],
- "name": "pocket calculator",
- "shortname": ":calculator:",
- "category": "objects_symbols",
- "aliases": [
- ":pocket calculator:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "add",
- "subtract",
- "multiple",
- "divide",
- "scientific"
- ]
- },
"calendar": {
"unicode": "1F4C6",
"unicode_alternates": [],
@@ -3395,7 +3575,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "schedule"
+ "schedule",
+ "object",
+ "office"
],
"moji": "📆"
},
@@ -3404,7 +3586,7 @@
"unicode_alternates": [],
"name": "spiral calendar pad",
"shortname": ":calendar_spiral:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":spiral_calendar_pad:"
],
@@ -3412,8 +3594,89 @@
"keywords": [
"schedule",
"date",
- "day"
- ]
+ "day",
+ "object",
+ "office"
+ ],
+ "moji": "🗓"
+ },
+ "call_me": {
+ "unicode": "1F919",
+ "unicode_alternates": [],
+ "name": "call me hand",
+ "shortname": ":call_me:",
+ "category": "people",
+ "aliases": [
+ ":call_me_hand:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤙"
+ },
+ "call_me_tone1": {
+ "unicode": "1F919-1F3FB",
+ "unicode_alternates": [],
+ "name": "call me hand tone 1",
+ "shortname": ":call_me_tone1:",
+ "category": "people",
+ "aliases": [
+ ":call_me_hand_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤙🏻"
+ },
+ "call_me_tone2": {
+ "unicode": "1F919-1F3FC",
+ "unicode_alternates": [],
+ "name": "call me hand tone 2",
+ "shortname": ":call_me_tone2:",
+ "category": "people",
+ "aliases": [
+ ":call_me_hand_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤙🏼"
+ },
+ "call_me_tone3": {
+ "unicode": "1F919-1F3FD",
+ "unicode_alternates": [],
+ "name": "call me hand tone 3",
+ "shortname": ":call_me_tone3:",
+ "category": "people",
+ "aliases": [
+ ":call_me_hand_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤙🏽"
+ },
+ "call_me_tone4": {
+ "unicode": "1F919-1F3FE",
+ "unicode_alternates": [],
+ "name": "call me hand tone 4",
+ "shortname": ":call_me_tone4:",
+ "category": "people",
+ "aliases": [
+ ":call_me_hand_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤙🏾"
+ },
+ "call_me_tone5": {
+ "unicode": "1F919-1F3FF",
+ "unicode_alternates": [],
+ "name": "call me hand tone 5",
+ "shortname": ":call_me_tone5:",
+ "category": "people",
+ "aliases": [
+ ":call_me_hand_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤙🏿"
},
"calling": {
"unicode": "1F4F2",
@@ -3425,7 +3688,10 @@
"aliases_ascii": [],
"keywords": [
"incoming",
- "iphone"
+ "iphone",
+ "electronics",
+ "phone",
+ "selfie"
],
"moji": "📲"
},
@@ -3447,11 +3713,11 @@
"desert",
"central asia",
"heat",
- "hot",
"water",
"hump day",
"wednesday",
- "sex"
+ "sex",
+ "wildlife"
],
"moji": "🐫"
},
@@ -3465,7 +3731,10 @@
"aliases_ascii": [],
"keywords": [
"gadgets",
- "photo"
+ "photo",
+ "electronics",
+ "camera",
+ "selfie"
],
"moji": "📷"
},
@@ -3474,20 +3743,23 @@
"unicode_alternates": [],
"name": "camera with flash",
"shortname": ":camera_with_flash:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"photo",
- "picture"
- ]
+ "picture",
+ "electronics",
+ "camera"
+ ],
+ "moji": "📸"
},
"camping": {
"unicode": "1F3D5",
"unicode_alternates": [],
"name": "camping",
"shortname": ":camping:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3495,22 +3767,13 @@
"nature",
"wilderness",
"roughing",
- "activity"
- ]
- },
- "cancellation_x": {
- "unicode": "1F5D9",
- "unicode_alternates": [],
- "name": "cancellation x",
- "shortname": ":cancellation_x:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "cancel",
- "stop",
- "delete"
- ]
+ "activity",
+ "places",
+ "travel",
+ "vacation",
+ "camp"
+ ],
+ "moji": "🏕"
},
"cancer": {
"unicode": "264B",
@@ -3519,7 +3782,7 @@
],
"name": "cancer",
"shortname": ":cancer:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3531,9 +3794,8 @@
"stars",
"zodiac",
"sign",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♋"
},
@@ -3542,20 +3804,22 @@
"unicode_alternates": [],
"name": "candle",
"shortname": ":candle:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"light",
- "wax"
- ]
+ "wax",
+ "object"
+ ],
+ "moji": "🕯"
},
"candy": {
"unicode": "1F36C",
"unicode_alternates": [],
"name": "candy",
"shortname": ":candy:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3564,22 +3828,38 @@
"candy",
"sugar",
"sweet",
- "hard"
+ "hard",
+ "food",
+ "halloween"
],
"moji": "🍬"
},
+ "canoe": {
+ "unicode": "1F6F6",
+ "unicode_alternates": [],
+ "name": "canoe",
+ "shortname": ":canoe:",
+ "category": "travel",
+ "aliases": [
+ ":kayak:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🛶"
+ },
"capital_abcd": {
"unicode": "1F520",
"unicode_alternates": [],
"name": "input symbol for latin capital letters",
"shortname": ":capital_abcd:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"blue-square",
- "words"
+ "words",
+ "symbol"
],
"moji": "🔠"
},
@@ -3590,7 +3870,7 @@
],
"name": "capricorn",
"shortname": ":capricorn:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3603,9 +3883,8 @@
"stars",
"zodiac",
"sign",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♑"
},
@@ -3614,15 +3893,19 @@
"unicode_alternates": [],
"name": "card file box",
"shortname": ":card_box:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":card_file_box:"
],
"aliases_ascii": [],
"keywords": [
"index",
- "organization"
- ]
+ "organization",
+ "object",
+ "work",
+ "office"
+ ],
+ "moji": "🗃"
},
"card_index": {
"unicode": "1F4C7",
@@ -3634,7 +3917,10 @@
"aliases_ascii": [],
"keywords": [
"business",
- "stationery"
+ "stationery",
+ "object",
+ "work",
+ "office"
],
"moji": "📇"
},
@@ -3643,7 +3929,7 @@
"unicode_alternates": [],
"name": "carousel horse",
"shortname": ":carousel_horse:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3651,37 +3937,106 @@
"horse",
"photo",
"carousel",
- "horse",
"amusement",
"park",
"ride",
"entertainment",
- "park",
- "fair"
+ "fair",
+ "places",
+ "object",
+ "vacation",
+ "roller coaster"
],
"moji": "🎠"
},
- "cartridge": {
- "unicode": "1F5AD",
+ "carrot": {
+ "unicode": "1F955",
"unicode_alternates": [],
- "name": "tape cartridge",
- "shortname": ":cartridge:",
- "category": "objects_symbols",
+ "name": "carrot",
+ "shortname": ":carrot:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥕"
+ },
+ "cartwheel": {
+ "unicode": "1F938",
+ "unicode_alternates": [],
+ "name": "person doing cartwheel",
+ "shortname": ":cartwheel:",
+ "category": "activity",
"aliases": [
- ":tape_cartridge:"
+ ":person_doing_cartwheel:"
],
"aliases_ascii": [],
- "keywords": [
- "oldschool",
- "save",
- "technology",
- "disk",
- "storage",
- "information",
- "computer",
- "drive",
- "megabyte"
- ]
+ "keywords": [],
+ "moji": "🤸"
+ },
+ "cartwheel_tone1": {
+ "unicode": "1F938-1F3FB",
+ "unicode_alternates": [],
+ "name": "person doing cartwheel tone 1",
+ "shortname": ":cartwheel_tone1:",
+ "category": "activity",
+ "aliases": [
+ ":person_doing_cartwheel_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤸🏻"
+ },
+ "cartwheel_tone2": {
+ "unicode": "1F938-1F3FC",
+ "unicode_alternates": [],
+ "name": "person doing cartwheel tone 2",
+ "shortname": ":cartwheel_tone2:",
+ "category": "activity",
+ "aliases": [
+ ":person_doing_cartwheel_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤸🏼"
+ },
+ "cartwheel_tone3": {
+ "unicode": "1F938-1F3FD",
+ "unicode_alternates": [],
+ "name": "person doing cartwheel tone 3",
+ "shortname": ":cartwheel_tone3:",
+ "category": "activity",
+ "aliases": [
+ ":person_doing_cartwheel_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤸🏽"
+ },
+ "cartwheel_tone4": {
+ "unicode": "1F938-1F3FE",
+ "unicode_alternates": [],
+ "name": "person doing cartwheel tone 4",
+ "shortname": ":cartwheel_tone4:",
+ "category": "activity",
+ "aliases": [
+ ":person_doing_cartwheel_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤸🏾,"
+ },
+ "cartwheel_tone5": {
+ "unicode": "1F938-1F3FF",
+ "unicode_alternates": [],
+ "name": "person doing cartwheel tone 5",
+ "shortname": ":cartwheel_tone5:",
+ "category": "activity",
+ "aliases": [
+ ":person_doing_cartwheel_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤸🏿"
},
"cat": {
"unicode": "1F431",
@@ -3693,7 +4048,10 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "meow"
+ "meow",
+ "halloween",
+ "vagina",
+ "cat"
],
"moji": "🐱"
},
@@ -3711,13 +4069,13 @@
"pet",
"cat",
"kitten",
- "meow"
+ "halloween"
],
"moji": "🐈"
},
"cd": {
"unicode": "1F4BF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "optical disc",
"shortname": ":cd:",
"category": "objects",
@@ -3732,25 +4090,14 @@
"cd",
"computer",
"object",
- "office"
- ]
- },
- "celtic_cross": {
- "unicode": "1F548",
- "unicode_alternates": [],
- "name": "celtic cross",
- "shortname": ":celtic_cross:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "religion",
- "symbol"
- ]
+ "office",
+ "electronics"
+ ],
+ "moji": "💿"
},
"chains": {
"unicode": "26D3",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "chains",
"shortname": ":chains:",
"category": "objects",
@@ -3758,32 +4105,55 @@
"aliases_ascii": [],
"keywords": [
"chain",
- "object"
- ]
+ "object",
+ "tool"
+ ],
+ "moji": "⛓"
},
"champagne": {
"unicode": "1F37E",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bottle with popping cork",
"shortname": ":champagne:",
- "category": "foods",
+ "category": "food",
"aliases": [
":bottle_with_popping_cork:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "drink",
+ "cheers",
+ "alcohol",
+ "parties"
+ ],
+ "moji": "🍾"
+ },
+ "champagne_glass": {
+ "unicode": "1F942",
+ "unicode_alternates": [],
+ "name": "clinking glasses",
+ "shortname": ":champagne_glass:",
+ "category": "food",
+ "aliases": [
+ ":clinking_glass:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥂"
},
"chart": {
"unicode": "1F4B9",
"unicode_alternates": [],
"name": "chart with upwards trend and yen sign",
"shortname": ":chart:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"graph",
- "green-square"
+ "green-square",
+ "symbol",
+ "money"
],
"moji": "💹"
},
@@ -3796,7 +4166,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "graph"
+ "graph",
+ "work",
+ "office"
],
"moji": "📉"
},
@@ -3809,7 +4181,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "graph"
+ "graph",
+ "work",
+ "office"
],
"moji": "📈"
},
@@ -3818,7 +4192,7 @@
"unicode_alternates": [],
"name": "chequered flag",
"shortname": ":checkered_flag:",
- "category": "objects",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3832,28 +4206,32 @@
"flag",
"finish",
"complete",
- "end"
+ "end",
+ "object"
],
"moji": "🏁"
},
"cheese": {
"unicode": "1F9C0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "cheese wedge",
"shortname": ":cheese:",
- "category": "foods",
+ "category": "food",
"aliases": [
":cheese_wedge:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "food"
+ ],
+ "moji": "🧀"
},
"cherries": {
"unicode": "1F352",
"unicode_alternates": [],
"name": "cherries",
"shortname": ":cherries:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3862,7 +4240,6 @@
"cherry",
"cherries",
"tree",
- "fruit",
"pit"
],
"moji": "🍒"
@@ -3882,7 +4259,7 @@
"cherry",
"blossom",
"tree",
- "flower"
+ "tropical"
],
"moji": "🌸"
},
@@ -3899,8 +4276,9 @@
"squirrel",
"chestnut",
"roasted",
- "food",
- "tree"
+ "tree",
+ "nature",
+ "plant"
],
"moji": "🌰"
},
@@ -3927,7 +4305,7 @@
"unicode_alternates": [],
"name": "children crossing",
"shortname": ":children_crossing:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3938,7 +4316,8 @@
"crossing",
"street",
"crosswalk",
- "slow"
+ "slow",
+ "symbol"
],
"moji": "🚸"
},
@@ -3952,15 +4331,17 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
- ]
+ "nature",
+ "wildlife"
+ ],
+ "moji": "🐿"
},
"chocolate_bar": {
"unicode": "1F36B",
"unicode_alternates": [],
"name": "chocolate bar",
"shortname": ":chocolate_bar:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3971,7 +4352,8 @@
"bar",
"candy",
"coca",
- "hershey&#039;s"
+ "hershey&#039;s",
+ "halloween"
],
"moji": "🍫"
},
@@ -3980,7 +4362,7 @@
"unicode_alternates": [],
"name": "christmas tree",
"shortname": ":christmas_tree:",
- "category": "objects",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -3990,17 +4372,17 @@
"vacation",
"xmas",
"christmas",
- "xmas",
"santa",
"holiday",
"winter",
- "december",
- "santa",
"evergreen",
"ornaments",
"jesus",
"gifts",
- "presents"
+ "presents",
+ "plant",
+ "holidays",
+ "trees"
],
"moji": "🎄"
},
@@ -4011,13 +4393,16 @@
],
"name": "church",
"shortname": ":church:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"building",
"christ",
- "religion"
+ "religion",
+ "places",
+ "wedding",
+ "condolence"
],
"moji": "⛪"
},
@@ -4026,7 +4411,7 @@
"unicode_alternates": [],
"name": "cinema",
"shortname": ":cinema:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4035,10 +4420,11 @@
"movie",
"record",
"cinema",
- "movie",
"theater",
"motion",
- "picture"
+ "picture",
+ "symbol",
+ "camera"
],
"moji": "🎦"
},
@@ -4047,7 +4433,7 @@
"unicode_alternates": [],
"name": "circus tent",
"shortname": ":circus_tent:",
- "category": "places",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4057,10 +4443,10 @@
"circus",
"tent",
"event",
- "carnival",
"big",
"top",
- "canvas"
+ "canvas",
+ "circus tent"
],
"moji": "🎪"
},
@@ -4069,7 +4455,7 @@
"unicode_alternates": [],
"name": "cityscape at dusk",
"shortname": ":city_dusk:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4082,7 +4468,9 @@
"evening",
"metropolitan",
"night",
- "dark"
+ "dark",
+ "places",
+ "building"
],
"moji": "🌆"
},
@@ -4091,7 +4479,7 @@
"unicode_alternates": [],
"name": "sunset over buildings",
"shortname": ":city_sunset:",
- "category": "places",
+ "category": "travel",
"aliases": [
":city_sunrise:"
],
@@ -4106,7 +4494,11 @@
"morning",
"metropolitan",
"rise",
- "sun"
+ "sun",
+ "places",
+ "building",
+ "sky",
+ "vacation"
],
"moji": "🌇"
},
@@ -4115,7 +4507,7 @@
"unicode_alternates": [],
"name": "cityscape",
"shortname": ":cityscape:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4124,12 +4516,16 @@
"view",
"lights",
"buiildings",
- "metropolis"
- ]
+ "metropolis",
+ "places",
+ "building",
+ "vacation"
+ ],
+ "moji": "🏙"
},
"cl": {
"unicode": "1F191",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "squared cl",
"shortname": ":cl:",
"category": "symbols",
@@ -4143,14 +4539,15 @@
"clear",
"symbol",
"word"
- ]
+ ],
+ "moji": "🆑"
},
"clap": {
"unicode": "1F44F",
"unicode_alternates": [],
"name": "clapping hands sign",
"shortname": ":clap:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4163,13 +4560,18 @@
"approval",
"sound",
"encouragement",
- "enthusiasm"
+ "enthusiasm",
+ "body",
+ "win",
+ "diversity",
+ "good",
+ "beautiful"
],
"moji": "👏"
},
"clap_tone1": {
"unicode": "1F44F-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "clapping hands sign tone 1",
"shortname": ":clap_tone1:",
"category": "people",
@@ -4185,11 +4587,12 @@
"sound",
"encouragement",
"enthusiasm"
- ]
+ ],
+ "moji": "👏🏻"
},
"clap_tone2": {
"unicode": "1F44F-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "clapping hands sign tone 2",
"shortname": ":clap_tone2:",
"category": "people",
@@ -4205,11 +4608,12 @@
"sound",
"encouragement",
"enthusiasm"
- ]
+ ],
+ "moji": "👏🏼"
},
"clap_tone3": {
"unicode": "1F44F-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "clapping hands sign tone 3",
"shortname": ":clap_tone3:",
"category": "people",
@@ -4225,11 +4629,12 @@
"sound",
"encouragement",
"enthusiasm"
- ]
+ ],
+ "moji": "👏🏽"
},
"clap_tone4": {
"unicode": "1F44F-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "clapping hands sign tone 4",
"shortname": ":clap_tone4:",
"category": "people",
@@ -4245,11 +4650,12 @@
"sound",
"encouragement",
"enthusiasm"
- ]
+ ],
+ "moji": "👏🏾"
},
"clap_tone5": {
"unicode": "1F44F-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "clapping hands sign tone 5",
"shortname": ":clap_tone5:",
"category": "people",
@@ -4265,14 +4671,15 @@
"sound",
"encouragement",
"enthusiasm"
- ]
+ ],
+ "moji": "👏🏿"
},
"clapper": {
"unicode": "1F3AC",
"unicode_alternates": [],
"name": "clapper board",
"shortname": ":clapper:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4282,8 +4689,6 @@
"clapper",
"board",
"clapboard",
- "movie",
- "film",
"take"
],
"moji": "🎬"
@@ -4293,7 +4698,7 @@
"unicode_alternates": [],
"name": "classical building",
"shortname": ":classical_building:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4301,8 +4706,13 @@
"architecture",
"history",
"iconic",
- "genre"
- ]
+ "genre",
+ "places",
+ "building",
+ "travel",
+ "vacation"
+ ],
+ "moji": "🏛"
},
"clipboard": {
"unicode": "1F4CB",
@@ -4314,7 +4724,11 @@
"aliases_ascii": [],
"keywords": [
"documents",
- "stationery"
+ "stationery",
+ "object",
+ "work",
+ "office",
+ "write"
],
"moji": "📋"
},
@@ -4323,26 +4737,29 @@
"unicode_alternates": [],
"name": "mantlepiece clock",
"shortname": ":clock:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":mantlepiece_clock:"
],
"aliases_ascii": [],
"keywords": [
- "time"
- ]
+ "time",
+ "object"
+ ],
+ "moji": "🕰"
},
"clock1": {
"unicode": "1F550",
"unicode_alternates": [],
"name": "clock face one oclock",
"shortname": ":clock1:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕐"
},
@@ -4351,12 +4768,13 @@
"unicode_alternates": [],
"name": "clock face ten oclock",
"shortname": ":clock10:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕙"
},
@@ -4365,12 +4783,13 @@
"unicode_alternates": [],
"name": "clock face ten-thirty",
"shortname": ":clock1030:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕥"
},
@@ -4379,12 +4798,13 @@
"unicode_alternates": [],
"name": "clock face eleven oclock",
"shortname": ":clock11:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕚"
},
@@ -4393,12 +4813,13 @@
"unicode_alternates": [],
"name": "clock face eleven-thirty",
"shortname": ":clock1130:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕦"
},
@@ -4407,12 +4828,13 @@
"unicode_alternates": [],
"name": "clock face twelve oclock",
"shortname": ":clock12:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕛"
},
@@ -4421,25 +4843,28 @@
"unicode_alternates": [],
"name": "clock face twelve-thirty",
"shortname": ":clock1230:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
- ]
+ "time",
+ "symbol"
+ ],
+ "moji": "🕧"
},
"clock130": {
"unicode": "1F55C",
"unicode_alternates": [],
"name": "clock face one-thirty",
"shortname": ":clock130:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕜"
},
@@ -4448,12 +4873,13 @@
"unicode_alternates": [],
"name": "clock face two oclock",
"shortname": ":clock2:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕑"
},
@@ -4462,12 +4888,13 @@
"unicode_alternates": [],
"name": "clock face two-thirty",
"shortname": ":clock230:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕝"
},
@@ -4476,12 +4903,13 @@
"unicode_alternates": [],
"name": "clock face three oclock",
"shortname": ":clock3:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕒"
},
@@ -4490,12 +4918,13 @@
"unicode_alternates": [],
"name": "clock face three-thirty",
"shortname": ":clock330:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕞"
},
@@ -4504,12 +4933,13 @@
"unicode_alternates": [],
"name": "clock face four oclock",
"shortname": ":clock4:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕓"
},
@@ -4518,12 +4948,13 @@
"unicode_alternates": [],
"name": "clock face four-thirty",
"shortname": ":clock430:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕟"
},
@@ -4532,12 +4963,13 @@
"unicode_alternates": [],
"name": "clock face five oclock",
"shortname": ":clock5:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕔"
},
@@ -4546,12 +4978,13 @@
"unicode_alternates": [],
"name": "clock face five-thirty",
"shortname": ":clock530:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕠"
},
@@ -4560,12 +4993,13 @@
"unicode_alternates": [],
"name": "clock face six oclock",
"shortname": ":clock6:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕕"
},
@@ -4574,12 +5008,13 @@
"unicode_alternates": [],
"name": "clock face six-thirty",
"shortname": ":clock630:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕡"
},
@@ -4588,12 +5023,13 @@
"unicode_alternates": [],
"name": "clock face seven oclock",
"shortname": ":clock7:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕖"
},
@@ -4602,12 +5038,13 @@
"unicode_alternates": [],
"name": "clock face seven-thirty",
"shortname": ":clock730:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕢"
},
@@ -4616,12 +5053,13 @@
"unicode_alternates": [],
"name": "clock face eight oclock",
"shortname": ":clock8:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕗"
},
@@ -4630,12 +5068,13 @@
"unicode_alternates": [],
"name": "clock face eight-thirty",
"shortname": ":clock830:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕣"
},
@@ -4644,12 +5083,13 @@
"unicode_alternates": [],
"name": "clock face nine oclock",
"shortname": ":clock9:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕘"
},
@@ -4658,29 +5098,16 @@
"unicode_alternates": [],
"name": "clock face nine-thirty",
"shortname": ":clock930:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clock",
- "time"
+ "time",
+ "symbol"
],
"moji": "🕤"
},
- "clockwise_arrows": {
- "unicode": "1F5D8",
- "unicode_alternates": [],
- "name": "clockwise right and left semicircle arrows",
- "shortname": ":clockwise_arrows:",
- "category": "objects_symbols",
- "aliases": [
- ":clockwise_right_and_left_semicircle_arrows:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "sync"
- ]
- },
"closed_book": {
"unicode": "1F4D5",
"unicode_alternates": [],
@@ -4692,7 +5119,11 @@
"keywords": [
"knowledge",
"library",
- "read"
+ "read",
+ "object",
+ "office",
+ "write",
+ "book"
],
"moji": "📕"
},
@@ -4706,7 +5137,9 @@
"aliases_ascii": [],
"keywords": [
"privacy",
- "security"
+ "security",
+ "object",
+ "lock"
],
"moji": "🔐"
},
@@ -4715,7 +5148,7 @@
"unicode_alternates": [],
"name": "closed umbrella",
"shortname": ":closed_umbrella:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4724,12 +5157,14 @@
"weather",
"umbrella",
"closed",
- "rain",
"moisture",
"protection",
"sun",
"ultraviolet",
- "uv"
+ "uv",
+ "object",
+ "sky",
+ "accessories"
],
"moji": "🌂"
},
@@ -4745,7 +5180,10 @@
"aliases_ascii": [],
"keywords": [
"sky",
- "weather"
+ "weather",
+ "cloud",
+ "cold",
+ "rain"
],
"moji": "☁"
},
@@ -4761,8 +5199,13 @@
"aliases_ascii": [],
"keywords": [
"weather",
- "thunder"
- ]
+ "thunder",
+ "sky",
+ "cloud",
+ "cold",
+ "rain"
+ ],
+ "moji": "🌩"
},
"cloud_rain": {
"unicode": "1F327",
@@ -4776,8 +5219,14 @@
"aliases_ascii": [],
"keywords": [
"weather",
- "wet"
- ]
+ "wet",
+ "winter",
+ "sky",
+ "cloud",
+ "cold",
+ "rain"
+ ],
+ "moji": "🌧"
},
"cloud_snow": {
"unicode": "1F328",
@@ -4791,8 +5240,13 @@
"aliases_ascii": [],
"keywords": [
"weather",
- "cold"
- ]
+ "cold",
+ "winter",
+ "sky",
+ "cloud",
+ "snow"
+ ],
+ "moji": "🌨"
},
"cloud_tornado": {
"unicode": "1F32A",
@@ -4807,8 +5261,24 @@
"keywords": [
"weather",
"destruction",
- "funnel"
- ]
+ "funnel",
+ "sky",
+ "cold"
+ ],
+ "moji": "🌪"
+ },
+ "clown": {
+ "unicode": "1F921",
+ "unicode_alternates": [],
+ "name": "clown face",
+ "shortname": ":clown:",
+ "category": "people",
+ "aliases": [
+ ":clown_face:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤡"
},
"clubs": {
"unicode": "2663",
@@ -4817,12 +5287,14 @@
],
"name": "black club suit",
"shortname": ":clubs:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cards",
- "poker"
+ "poker",
+ "symbol",
+ "game"
],
"moji": "♣"
},
@@ -4831,7 +5303,7 @@
"unicode_alternates": [],
"name": "cocktail glass",
"shortname": ":cocktail:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4841,11 +5313,11 @@
"drunk",
"cocktail",
"mixed",
- "drink",
- "alcohol",
"glass",
"martini",
- "bar"
+ "bar",
+ "girls night",
+ "parties"
],
"moji": "🍸"
},
@@ -4856,20 +5328,23 @@
],
"name": "hot beverage",
"shortname": ":coffee:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"beverage",
"cafe",
"drink",
- "espresso"
+ "espresso",
+ "caffeine",
+ "steam",
+ "morning"
],
"moji": "☕"
},
"coffin": {
"unicode": "26B0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "coffin",
"shortname": ":coffin:",
"category": "objects",
@@ -4877,15 +5352,18 @@
"aliases_ascii": [],
"keywords": [
"death",
- "object"
- ]
+ "object",
+ "dead",
+ "rip"
+ ],
+ "moji": "⚰"
},
"cold_sweat": {
"unicode": "1F630",
"unicode_alternates": [],
"name": "face with open mouth and cold sweat",
"shortname": ":cold_sweat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4893,13 +5371,15 @@
"nervous",
"sweat",
"exasperated",
- "frustrated"
+ "frustrated",
+ "smiley",
+ "emotion"
],
"moji": "😰"
},
"comet": {
"unicode": "2604",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "comet",
"shortname": ":comet:",
"category": "nature",
@@ -4907,20 +5387,23 @@
"aliases_ascii": [],
"keywords": [
"object",
- "space"
- ]
+ "space",
+ "sky"
+ ],
+ "moji": "☄"
},
"compression": {
"unicode": "1F5DC",
"unicode_alternates": [],
"name": "compression",
"shortname": ":compression:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"reduce"
- ]
+ ],
+ "moji": "🗜"
},
"computer": {
"unicode": "1F4BB",
@@ -4932,25 +5415,13 @@
"aliases_ascii": [],
"keywords": [
"laptop",
- "tech"
+ "tech",
+ "electronics",
+ "work",
+ "office"
],
"moji": "💻"
},
- "computer_old": {
- "unicode": "1F5B3",
- "unicode_alternates": [],
- "name": "old personal computer",
- "shortname": ":computer_old:",
- "category": "objects_symbols",
- "aliases": [
- ":old_personal_computer:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "cpu",
- "terminal"
- ]
- },
"confetti_ball": {
"unicode": "1F38A",
"unicode_alternates": [],
@@ -4962,7 +5433,6 @@
"keywords": [
"festival",
"party",
- "party",
"congratulations",
"confetti",
"ball",
@@ -4970,7 +5440,13 @@
"win",
"birthday",
"new years",
- "wedding"
+ "wedding",
+ "object",
+ "holidays",
+ "cheers",
+ "girls night",
+ "boys night",
+ "parties"
],
"moji": "🎊"
},
@@ -4979,7 +5455,7 @@
"unicode_alternates": [],
"name": "confounded face",
"shortname": ":confounded:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -4991,7 +5467,11 @@
"amaze",
"perplex",
"puzzle",
- "mystify"
+ "mystify",
+ "sad",
+ "smiley",
+ "angry",
+ "emotion"
],
"moji": "😖"
},
@@ -5000,7 +5480,7 @@
"unicode_alternates": [],
"name": "confused face",
"shortname": ":confused:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
">:\\",
@@ -5024,7 +5504,10 @@
"skeptical",
"undecided",
"uneasy",
- "hesitant"
+ "hesitant",
+ "smiley",
+ "surprised",
+ "emotion"
],
"moji": "😕"
},
@@ -5035,13 +5518,15 @@
],
"name": "circled ideograph congratulation",
"shortname": ":congratulations:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"japanese",
- "kanji"
+ "kanji",
+ "japan",
+ "symbol"
],
"moji": "㊗"
},
@@ -5050,19 +5535,20 @@
"unicode_alternates": [],
"name": "construction sign",
"shortname": ":construction:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"caution",
"progress",
- "wip"
+ "wip",
+ "object"
],
"moji": "🚧"
},
"construction_site": {
"unicode": "1F3D7",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "building construction",
"shortname": ":construction_site:",
"category": "travel",
@@ -5073,28 +5559,36 @@
"keywords": [
"site",
"work",
- "place"
- ]
+ "place",
+ "building",
+ "crane"
+ ],
+ "moji": "🏗"
},
"construction_worker": {
"unicode": "1F477",
"unicode_alternates": [],
"name": "construction worker",
"shortname": ":construction_worker:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"human",
"male",
"man",
- "wip"
+ "wip",
+ "people",
+ "hat",
+ "men",
+ "diversity",
+ "job"
],
"moji": "👷"
},
"construction_worker_tone1": {
"unicode": "1F477-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "construction worker tone 1",
"shortname": ":construction_worker_tone1:",
"category": "people",
@@ -5105,11 +5599,12 @@
"male",
"man",
"wip"
- ]
+ ],
+ "moji": "👷🏻"
},
"construction_worker_tone2": {
"unicode": "1F477-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "construction worker tone 2",
"shortname": ":construction_worker_tone2:",
"category": "people",
@@ -5120,11 +5615,12 @@
"male",
"man",
"wip"
- ]
+ ],
+ "moji": "👷🏼"
},
"construction_worker_tone3": {
"unicode": "1F477-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "construction worker tone 3",
"shortname": ":construction_worker_tone3:",
"category": "people",
@@ -5135,11 +5631,12 @@
"male",
"man",
"wip"
- ]
+ ],
+ "moji": "👷🏽"
},
"construction_worker_tone4": {
"unicode": "1F477-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "construction worker tone 4",
"shortname": ":construction_worker_tone4:",
"category": "people",
@@ -5150,11 +5647,12 @@
"male",
"man",
"wip"
- ]
+ ],
+ "moji": "👷🏾"
},
"construction_worker_tone5": {
"unicode": "1F477-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "construction worker tone 5",
"shortname": ":construction_worker_tone5:",
"category": "people",
@@ -5165,45 +5663,34 @@
"male",
"man",
"wip"
- ]
+ ],
+ "moji": "👷🏿"
},
"control_knobs": {
"unicode": "1F39B",
"unicode_alternates": [],
"name": "control knobs",
"shortname": ":control_knobs:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "dial"
- ]
- },
- "contruction_site": {
- "unicode": "1F3D7",
- "unicode_alternates": [],
- "name": "building construction",
- "shortname": ":contruction_site:",
- "category": "travel_places",
- "aliases": [
- ":building_construction:"
+ "dial",
+ "time"
],
- "aliases_ascii": [],
- "keywords": [
- "site",
- "work"
- ]
+ "moji": "🎛"
},
"convenience_store": {
"unicode": "1F3EA",
"unicode_alternates": [],
"name": "convenience store",
"shortname": ":convenience_store:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "building"
+ "building",
+ "places"
],
"moji": "🏪"
},
@@ -5212,7 +5699,7 @@
"unicode_alternates": [],
"name": "cookie",
"shortname": ":cookie:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5224,21 +5711,44 @@
"dessert",
"biscuit",
"sweet",
- "chocolate"
+ "vagina"
],
"moji": "🍪"
},
+ "cooking": {
+ "unicode": "1F373",
+ "unicode_alternates": [],
+ "name": "cooking",
+ "shortname": ":cooking:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [
+ "breakfast",
+ "food",
+ "egg",
+ "fry",
+ "pan",
+ "flat",
+ "cook",
+ "frying",
+ "cooking",
+ "utensil"
+ ],
+ "moji": "🍳"
+ },
"cool": {
"unicode": "1F192",
"unicode_alternates": [],
"name": "squared cool",
"shortname": ":cool:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "words"
+ "words",
+ "symbol"
],
"moji": "🆒"
},
@@ -5247,7 +5757,7 @@
"unicode_alternates": [],
"name": "police officer",
"shortname": ":cop:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5255,13 +5765,19 @@
"enforcement",
"law",
"man",
- "police"
+ "police",
+ "people",
+ "hat",
+ "men",
+ "diversity",
+ "job",
+ "911"
],
"moji": "👮"
},
"cop_tone1": {
"unicode": "1F46E-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "police officer tone 1",
"shortname": ":cop_tone1:",
"category": "people",
@@ -5273,11 +5789,12 @@
"law",
"man",
"cop"
- ]
+ ],
+ "moji": "👮🏻"
},
"cop_tone2": {
"unicode": "1F46E-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "police officer tone 2",
"shortname": ":cop_tone2:",
"category": "people",
@@ -5289,11 +5806,12 @@
"law",
"man",
"cop"
- ]
+ ],
+ "moji": "👮🏼"
},
"cop_tone3": {
"unicode": "1F46E-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "police officer tone 3",
"shortname": ":cop_tone3:",
"category": "people",
@@ -5305,11 +5823,12 @@
"law",
"man",
"cop"
- ]
+ ],
+ "moji": "👮🏽"
},
"cop_tone4": {
"unicode": "1F46E-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "police officer tone 4",
"shortname": ":cop_tone4:",
"category": "people",
@@ -5321,11 +5840,12 @@
"law",
"man",
"cop"
- ]
+ ],
+ "moji": "👮🏾"
},
"cop_tone5": {
"unicode": "1F46E-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "police officer tone 5",
"shortname": ":cop_tone5:",
"category": "people",
@@ -5337,7 +5857,8 @@
"law",
"man",
"cop"
- ]
+ ],
+ "moji": "👮🏿"
},
"copyright": {
"moji": "©",
@@ -5345,12 +5866,13 @@
"unicode_alternates": [],
"name": "copyright sign",
"shortname": ":copyright:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"ip",
- "license"
+ "license",
+ "symbol"
]
},
"corn": {
@@ -5358,7 +5880,7 @@
"unicode_alternates": [],
"name": "ear of maize",
"shortname": ":corn:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5367,7 +5889,6 @@
"vegetable",
"corn",
"maize",
- "food",
"iowa",
"kernel",
"popcorn",
@@ -5375,7 +5896,8 @@
"yellow",
"stalk",
"cob",
- "ear"
+ "ear",
+ "vegetables"
],
"moji": "🌽"
},
@@ -5384,7 +5906,7 @@
"unicode_alternates": [],
"name": "couch and lamp",
"shortname": ":couch:",
- "category": "travel_places",
+ "category": "objects",
"aliases": [
":couch_and_lamp:"
],
@@ -5397,15 +5919,17 @@
"leather",
"microfiber",
"sit",
- "relax"
- ]
+ "relax",
+ "object"
+ ],
+ "moji": "🛋"
},
"couple": {
"unicode": "1F46B",
"unicode_alternates": [],
"name": "man and woman holding hands",
"shortname": ":couple:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5417,7 +5941,9 @@
"love",
"marriage",
"people",
- "valentines"
+ "valentines",
+ "sex",
+ "creationism"
],
"moji": "👫"
},
@@ -5440,15 +5966,21 @@
"like",
"love",
"marriage",
- "valentines"
- ]
+ "valentines",
+ "people",
+ "gay",
+ "men",
+ "sex",
+ "lgbt"
+ ],
+ "moji": "👨‍❤️‍👨"
},
"couple_with_heart": {
"unicode": "1F491",
"unicode_alternates": [],
"name": "couple with heart",
"shortname": ":couple_with_heart:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5458,7 +5990,9 @@
"like",
"love",
"marriage",
- "valentines"
+ "valentines",
+ "people",
+ "sex"
],
"moji": "💑"
},
@@ -5481,15 +6015,20 @@
"like",
"love",
"marriage",
- "valentines"
- ]
+ "valentines",
+ "people",
+ "women",
+ "sex",
+ "lgbt"
+ ],
+ "moji": "👩‍❤️‍👩"
},
"couplekiss": {
"unicode": "1F48F",
"unicode_alternates": [],
"name": "kiss",
"shortname": ":couplekiss:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5497,7 +6036,9 @@
"like",
"love",
"marriage",
- "valentines"
+ "valentines",
+ "people",
+ "sex"
],
"moji": "💏"
},
@@ -5532,28 +6073,44 @@
"cow",
"milk",
"dairy",
- "beef",
"bessie",
"moo"
],
"moji": "🐄"
},
+ "cowboy": {
+ "unicode": "1F920",
+ "unicode_alternates": [],
+ "name": "face with cowboy hat",
+ "shortname": ":cowboy:",
+ "category": "people",
+ "aliases": [
+ ":face_with_cowboy_hat:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤠"
+ },
"crab": {
"unicode": "1F980",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "crab",
"shortname": ":crab:",
"category": "nature",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "tropical",
+ "animal"
+ ],
+ "moji": "🦀"
},
"crayon": {
"unicode": "1F58D",
"unicode_alternates": [],
"name": "lower left crayon",
"shortname": ":crayon:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":lower_left_crayon:"
],
@@ -5562,8 +6119,11 @@
"write",
"draw",
"color",
- "wax"
- ]
+ "wax",
+ "object",
+ "office"
+ ],
+ "moji": "🖍"
},
"credit_card": {
"unicode": "1F4B3",
@@ -5588,7 +6148,9 @@
"visa",
"american express",
"wallet",
- "signature"
+ "signature",
+ "object",
+ "boys night"
],
"moji": "💳"
},
@@ -5606,15 +6168,16 @@
"crescent",
"waxing",
"sky",
- "night",
"cheese",
- "phase"
+ "phase",
+ "space",
+ "goodnight"
],
"moji": "🌙"
},
"cricket": {
"unicode": "1F3CF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "cricket bat and ball",
"shortname": ":cricket:",
"category": "activity",
@@ -5622,7 +6185,12 @@
":cricket_bat_ball:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "ball",
+ "sport",
+ "cricket"
+ ],
+ "moji": "🏏"
},
"crocodile": {
"unicode": "1F40A",
@@ -5639,13 +6207,26 @@
"croc",
"alligator",
"gator",
- "cranky"
+ "cranky",
+ "wildlife",
+ "reptile"
],
"moji": "🐊"
},
+ "croissant": {
+ "unicode": "1F950",
+ "unicode_alternates": [],
+ "name": "croissant",
+ "shortname": ":croissant:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥐"
+ },
"cross": {
"unicode": "271D",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "latin cross",
"shortname": ":cross:",
"category": "symbols",
@@ -5657,53 +6238,8 @@
"religion",
"symbol",
"christian"
- ]
- },
- "cross_heavy": {
- "unicode": "1F547",
- "unicode_alternates": [],
- "name": "heavy latin cross",
- "shortname": ":cross_heavy:",
- "category": "objects_symbols",
- "aliases": [
- ":heavy_latin_cross:"
],
- "aliases_ascii": [],
- "keywords": [
- "religion",
- "symbol"
- ]
- },
- "cross_white": {
- "unicode": "1F546",
- "unicode_alternates": [],
- "name": "white latin cross",
- "shortname": ":cross_white:",
- "category": "objects_symbols",
- "aliases": [
- ":white_latin_cross:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "religion",
- "symbol"
- ]
- },
- "crossbones": {
- "unicode": "1F571",
- "unicode_alternates": [],
- "name": "black skull and crossbones",
- "shortname": ":crossbones:",
- "category": "objects_symbols",
- "aliases": [
- ":black_skull_and_crossbones:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "poison",
- "danger",
- "death"
- ]
+ "moji": "✝"
},
"crossed_flags": {
"unicode": "1F38C",
@@ -5714,13 +6250,14 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "japan"
+ "japan",
+ "object"
],
"moji": "🎌"
},
"crossed_swords": {
"unicode": "2694",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "crossed swords",
"shortname": ":crossed_swords:",
"category": "objects",
@@ -5729,21 +6266,25 @@
"keywords": [
"object",
"weapon"
- ]
+ ],
+ "moji": "⚔"
},
"crown": {
"unicode": "1F451",
"unicode_alternates": [],
"name": "crown",
"shortname": ":crown:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"king",
"kod",
"leader",
- "royalty"
+ "royalty",
+ "object",
+ "gem",
+ "accessories"
],
"moji": "👑"
},
@@ -5752,7 +6293,7 @@
"unicode_alternates": [],
"name": "passenger ship",
"shortname": ":cruise_ship:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":passenger_ship:"
],
@@ -5760,15 +6301,18 @@
"keywords": [
"titanic",
"transportation",
- "boat"
- ]
+ "boat",
+ "travel",
+ "vacation"
+ ],
+ "moji": "🛳"
},
"cry": {
"unicode": "1F622",
"unicode_alternates": [],
"name": "crying face",
"shortname": ":cry:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":'(",
@@ -5779,11 +6323,14 @@
"keywords": [
"face",
"sad",
- "sad",
"cry",
"tear",
"weep",
- "tears"
+ "tears",
+ "smiley",
+ "emotion",
+ "rip",
+ "heartbreak"
],
"moji": "😢"
},
@@ -5792,7 +6339,7 @@
"unicode_alternates": [],
"name": "crying cat face",
"shortname": ":crying_cat_face:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5804,8 +6351,6 @@
"cry",
"cat",
"sob",
- "tears",
- "sad",
"melancholy",
"morn",
"somber",
@@ -5823,16 +6368,29 @@
"aliases_ascii": [],
"keywords": [
"disco",
- "party"
+ "party",
+ "object",
+ "ball"
],
"moji": "🔮"
},
+ "cucumber": {
+ "unicode": "1F952",
+ "unicode_alternates": [],
+ "name": "cucumber",
+ "shortname": ":cucumber:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥒"
+ },
"cupid": {
"unicode": "1F498",
"unicode_alternates": [],
"name": "heart with arrow",
"shortname": ":cupid:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5840,7 +6398,8 @@
"heart",
"like",
"love",
- "valentines"
+ "valentines",
+ "symbol"
],
"moji": "💘"
},
@@ -5849,11 +6408,12 @@
"unicode_alternates": [],
"name": "curly loop",
"shortname": ":curly_loop:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "scribble"
+ "scribble",
+ "symbol"
],
"moji": "➰"
},
@@ -5862,13 +6422,14 @@
"unicode_alternates": [],
"name": "currency exchange",
"shortname": ":currency_exchange:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"dollar",
"money",
- "travel"
+ "travel",
+ "symbol"
],
"moji": "💱"
},
@@ -5877,7 +6438,7 @@
"unicode_alternates": [],
"name": "curry and rice",
"shortname": ":curry:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5888,7 +6449,6 @@
"curry",
"spice",
"flavor",
- "food",
"meal"
],
"moji": "🍛"
@@ -5898,7 +6458,7 @@
"unicode_alternates": [],
"name": "custard",
"shortname": ":custard:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5920,7 +6480,7 @@
"unicode_alternates": [],
"name": "customs",
"shortname": ":customs:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5932,7 +6492,8 @@
"goods",
"check",
"authority",
- "government"
+ "government",
+ "symbol"
],
"moji": "🛃"
},
@@ -5942,7 +6503,7 @@
"unicode_alternates": [],
"name": "cyclone",
"shortname": ":cyclone:",
- "category": "nature",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5954,7 +6515,9 @@
"hurricane",
"typhoon",
"storm",
- "ocean"
+ "ocean",
+ "symbol",
+ "drugs"
]
},
"dagger": {
@@ -5962,22 +6525,25 @@
"unicode_alternates": [],
"name": "dagger knife",
"shortname": ":dagger:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":dagger_knife:"
],
"aliases_ascii": [],
"keywords": [
"blade",
- "knife"
- ]
+ "knife",
+ "object",
+ "weapon"
+ ],
+ "moji": "🗡"
},
"dancer": {
"unicode": "1F483",
"unicode_alternates": [],
"name": "dancer",
"shortname": ":dancer:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -5995,13 +6561,18 @@
"ballet",
"tango",
"cha cha",
- "music"
+ "music",
+ "people",
+ "women",
+ "sexy",
+ "diversity",
+ "girls night"
],
"moji": "💃"
},
"dancer_tone1": {
"unicode": "1F483-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "dancer tone 1",
"shortname": ":dancer_tone1:",
"category": "people",
@@ -6021,11 +6592,12 @@
"tango",
"cha cha",
"music"
- ]
+ ],
+ "moji": "💃🏻"
},
"dancer_tone2": {
"unicode": "1F483-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "dancer tone 2",
"shortname": ":dancer_tone2:",
"category": "people",
@@ -6045,11 +6617,12 @@
"tango",
"cha cha",
"music"
- ]
+ ],
+ "moji": "💃🏼"
},
"dancer_tone3": {
"unicode": "1F483-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "dancer tone 3",
"shortname": ":dancer_tone3:",
"category": "people",
@@ -6069,11 +6642,12 @@
"tango",
"cha cha",
"music"
- ]
+ ],
+ "moji": "💃🏽"
},
"dancer_tone4": {
"unicode": "1F483-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "dancer tone 4",
"shortname": ":dancer_tone4:",
"category": "people",
@@ -6093,11 +6667,12 @@
"tango",
"cha cha",
"music"
- ]
+ ],
+ "moji": "💃🏾"
},
"dancer_tone5": {
"unicode": "1F483-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "dancer tone 5",
"shortname": ":dancer_tone5:",
"category": "people",
@@ -6117,14 +6692,15 @@
"tango",
"cha cha",
"music"
- ]
+ ],
+ "moji": "💃🏿"
},
"dancers": {
"unicode": "1F46F",
"unicode_alternates": [],
"name": "woman with bunny ears",
"shortname": ":dancers:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6137,8 +6713,13 @@
"showgirl",
"playboy",
"costume",
- "bunny",
- "cancan"
+ "cancan",
+ "people",
+ "sexy",
+ "girls night",
+ "boys night",
+ "parties",
+ "dance"
],
"moji": "👯"
},
@@ -6147,7 +6728,7 @@
"unicode_alternates": [],
"name": "dango",
"shortname": ":dango:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6166,20 +6747,24 @@
"unicode_alternates": [],
"name": "dark sunglasses",
"shortname": ":dark_sunglasses:",
- "category": "objects_symbols",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"shades",
- "eyes"
- ]
+ "eyes",
+ "fashion",
+ "glasses",
+ "accessories"
+ ],
+ "moji": "🕶"
},
"dart": {
"unicode": "1F3AF",
"unicode_alternates": [],
"name": "direct hit",
"shortname": ":dart:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6190,10 +6775,10 @@
"bullseye",
"dart",
"archery",
- "game",
"fletching",
"arrow",
- "sport"
+ "sport",
+ "boys night"
],
"moji": "🎯"
},
@@ -6202,14 +6787,17 @@
"unicode_alternates": [],
"name": "dash symbol",
"shortname": ":dash:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"air",
"fast",
"shoo",
- "wind"
+ "wind",
+ "cloud",
+ "cold",
+ "smoking"
],
"moji": "💨"
},
@@ -6223,7 +6811,9 @@
"aliases_ascii": [],
"keywords": [
"calendar",
- "schedule"
+ "schedule",
+ "object",
+ "office"
],
"moji": "📅"
},
@@ -6242,16 +6832,29 @@
"tree",
"leaves",
"fall",
- "color"
+ "color",
+ "camp",
+ "trees"
],
"moji": "🌳"
},
+ "deer": {
+ "unicode": "1F98C",
+ "unicode_alternates": [],
+ "name": "deer",
+ "shortname": ":deer:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦌"
+ },
"department_store": {
"unicode": "1F3EC",
"unicode_alternates": [],
"name": "department store",
"shortname": ":department_store:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6262,31 +6865,17 @@
"store",
"retail",
"sale",
- "merchandise"
+ "merchandise",
+ "places"
],
"moji": "🏬"
},
- "descending_notes": {
- "unicode": "1F39D",
- "unicode_alternates": [],
- "name": "beamed descending musical notes",
- "shortname": ":descending_notes:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "score",
- "music",
- "sound",
- "tone"
- ]
- },
"desert": {
"unicode": "1F3DC",
"unicode_alternates": [],
"name": "desert",
"shortname": ":desert:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6295,41 +6884,36 @@
"sandy",
"cactus",
"sunny",
- "barren"
- ]
+ "barren",
+ "places",
+ "travel",
+ "vacation"
+ ],
+ "moji": "🏜"
},
"desktop": {
"unicode": "1F5A5",
"unicode_alternates": [],
"name": "desktop computer",
"shortname": ":desktop:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":desktop_computer:"
],
"aliases_ascii": [],
"keywords": [
- "cpu"
- ]
- },
- "desktop_window": {
- "unicode": "1F5D4",
- "unicode_alternates": [],
- "name": "desktop window",
- "shortname": ":desktop_window:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "computer"
- ]
+ "cpu",
+ "electronics",
+ "work"
+ ],
+ "moji": "🖥"
},
"diamond_shape_with_a_dot_inside": {
"unicode": "1F4A0",
"unicode_alternates": [],
"name": "diamond shape with a dot inside",
"shortname": ":diamond_shape_with_a_dot_inside:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6339,7 +6923,8 @@
"kawaii",
"japanese",
"glyph",
- "adorable"
+ "adorable",
+ "symbol"
],
"moji": "💠"
},
@@ -6350,12 +6935,15 @@
],
"name": "black diamond suit",
"shortname": ":diamonds:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cards",
- "poker"
+ "poker",
+ "shapes",
+ "symbol",
+ "game"
],
"moji": "♦"
},
@@ -6364,7 +6952,7 @@
"unicode_alternates": [],
"name": "disappointed face",
"shortname": ":disappointed:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
">:[",
@@ -6382,7 +6970,10 @@
"discouraged",
"face",
"sad",
- "upset"
+ "upset",
+ "smiley",
+ "tired",
+ "emotion"
],
"moji": "😞"
},
@@ -6391,7 +6982,7 @@
"unicode_alternates": [],
"name": "disappointed but relieved face",
"shortname": ":disappointed_relieved:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6400,7 +6991,12 @@
"phew",
"sweat",
"disappoint",
- "relief"
+ "relief",
+ "sad",
+ "smiley",
+ "stressed",
+ "cry",
+ "emotion"
],
"moji": "😥"
},
@@ -6409,22 +7005,25 @@
"unicode_alternates": [],
"name": "card index dividers",
"shortname": ":dividers:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":card_index_dividers:"
],
"aliases_ascii": [],
"keywords": [
"stationery",
- "rolodex"
- ]
+ "rolodex",
+ "work",
+ "office"
+ ],
+ "moji": "🗂"
},
"dizzy": {
"unicode": "1F4AB",
"unicode_alternates": [],
"name": "dizzy symbol",
"shortname": ":dizzy:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6437,7 +7036,7 @@
"intoxicated",
"squeans",
"starburst",
- "star"
+ "symbol"
],
"moji": "💫"
},
@@ -6446,7 +7045,7 @@
"unicode_alternates": [],
"name": "dizzy face",
"shortname": ":dizzy_face:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"#-)",
@@ -6463,7 +7062,13 @@
"face",
"spent",
"unconscious",
- "xox"
+ "xox",
+ "smiley",
+ "surprised",
+ "dead",
+ "wow",
+ "emotion",
+ "omg"
],
"moji": "😵"
},
@@ -6472,7 +7077,7 @@
"unicode_alternates": [],
"name": "do not litter symbol",
"shortname": ":do_not_litter:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6480,40 +7085,13 @@
"garbage",
"trash",
"litter",
- "garbage",
"waste",
"no",
"can",
- "trash"
+ "symbol"
],
"moji": "🚯"
},
- "document": {
- "unicode": "1F5CE",
- "unicode_alternates": [],
- "name": "document",
- "shortname": ":document:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "page"
- ]
- },
- "document_text": {
- "unicode": "1F5B9",
- "unicode_alternates": [],
- "name": "document with text",
- "shortname": ":document_text:",
- "category": "objects_symbols",
- "aliases": [
- ":document_with_text:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "page"
- ]
- },
"dog": {
"unicode": "1F436",
"unicode_alternates": [],
@@ -6526,7 +7104,9 @@
"animal",
"friend",
"nature",
- "woof"
+ "woof",
+ "dog",
+ "pug"
],
"moji": "🐶"
},
@@ -6546,11 +7126,10 @@
"pet",
"dog",
"puppy",
- "pet",
- "friend",
"woof",
"bark",
- "fido"
+ "fido",
+ "pug"
],
"moji": "🐕"
},
@@ -6571,8 +7150,6 @@
"canada",
"australia",
"banknote",
- "money",
- "currency",
"paper",
"cash",
"bills"
@@ -6593,7 +7170,6 @@
"toy",
"dolls",
"japan",
- "japanese",
"day",
"girls",
"emperor",
@@ -6602,7 +7178,8 @@
"blessing",
"imperial",
"family",
- "royal"
+ "royal",
+ "people"
],
"moji": "🎎"
},
@@ -6621,7 +7198,9 @@
"flipper",
"nature",
"ocean",
- "sea"
+ "sea",
+ "wildlife",
+ "tropical"
],
"moji": "🐬"
},
@@ -6641,8 +7220,7 @@
"doorway",
"entrance",
"enter",
- "exit",
- "entry"
+ "object"
],
"moji": "🚪"
},
@@ -6651,7 +7229,7 @@
"unicode_alternates": [],
"name": "doughnut",
"shortname": ":doughnut:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6666,8 +7244,7 @@
"dessert",
"breakfast",
"police",
- "homer",
- "sweet"
+ "homer"
],
"moji": "🍩"
},
@@ -6676,15 +7253,17 @@
"unicode_alternates": [],
"name": "dove of peace",
"shortname": ":dove:",
- "category": "objects_symbols",
+ "category": "nature",
"aliases": [
":dove_of_peace:"
],
"aliases_ascii": [],
"keywords": [
"symbol",
- "bird"
- ]
+ "bird",
+ "animal"
+ ],
+ "moji": "🕊"
},
"dragon": {
"unicode": "1F409",
@@ -6703,7 +7282,8 @@
"dragon",
"fire",
"legendary",
- "myth"
+ "roar",
+ "reptile"
],
"moji": "🐉"
},
@@ -6725,7 +7305,9 @@
"head",
"fire",
"legendary",
- "myth"
+ "roar",
+ "monster",
+ "reptile"
],
"moji": "🐲"
},
@@ -6734,12 +7316,15 @@
"unicode_alternates": [],
"name": "dress",
"shortname": ":dress:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"clothes",
- "fashion"
+ "fashion",
+ "women",
+ "sexy",
+ "girls night"
],
"moji": "👗"
},
@@ -6758,23 +7343,35 @@
"dromedary",
"camel",
"hump",
- "desert",
"middle east",
"heat",
- "hot",
"water",
"hump day",
"wednesday",
- "sex"
+ "sex",
+ "wildlife"
],
"moji": "🐪"
},
+ "drooling_face": {
+ "unicode": "1F924",
+ "unicode_alternates": [],
+ "name": "drooling face",
+ "shortname": ":drooling_face:",
+ "category": "people",
+ "aliases": [
+ ":drool:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤤"
+ },
"droplet": {
"unicode": "1F4A7",
"unicode_alternates": [],
"name": "droplet",
"shortname": ":droplet:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -6784,7 +7381,6 @@
"drop",
"droplet",
"h20",
- "water",
"aqua",
"tear",
"sweat",
@@ -6792,10 +7388,36 @@
"moisture",
"wet",
"moist",
- "spit"
+ "spit",
+ "weather",
+ "sky"
],
"moji": "💧"
},
+ "drum": {
+ "unicode": "1F941",
+ "unicode_alternates": [],
+ "name": "drum with drumsticks",
+ "shortname": ":drum:",
+ "category": "activity",
+ "aliases": [
+ ":drum_with_drumsticks:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥁"
+ },
+ "duck": {
+ "unicode": "1F986",
+ "unicode_alternates": [],
+ "name": "duck",
+ "shortname": ":duck:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦆"
+ },
"dvd": {
"unicode": "1F4C0",
"unicode_alternates": [],
@@ -6807,7 +7429,8 @@
"keywords": [
"cd",
"disc",
- "disk"
+ "disk",
+ "electronics"
],
"moji": "📀"
},
@@ -6823,23 +7446,37 @@
"aliases_ascii": [],
"keywords": [
"communication",
- "inbox"
+ "inbox",
+ "office"
],
"moji": "📧"
},
+ "eagle": {
+ "unicode": "1F985",
+ "unicode_alternates": [],
+ "name": "eagle",
+ "shortname": ":eagle:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦅"
+ },
"ear": {
"unicode": "1F442",
"unicode_alternates": [],
"name": "ear",
"shortname": ":ear:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"face",
"hear",
"listen",
- "sound"
+ "sound",
+ "body",
+ "diversity"
],
"moji": "👂"
},
@@ -6857,14 +7494,14 @@
"ear",
"rice",
"food",
- "plant",
- "seed"
+ "seed",
+ "leaf"
],
"moji": "🌾"
},
"ear_tone1": {
"unicode": "1F442-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ear tone 1",
"shortname": ":ear_tone1:",
"category": "people",
@@ -6874,11 +7511,12 @@
"hear",
"listen",
"sound"
- ]
+ ],
+ "moji": "👂🏻"
},
"ear_tone2": {
"unicode": "1F442-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ear tone 2",
"shortname": ":ear_tone2:",
"category": "people",
@@ -6888,11 +7526,12 @@
"hear",
"listen",
"sound"
- ]
+ ],
+ "moji": "👂🏼"
},
"ear_tone3": {
"unicode": "1F442-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ear tone 3",
"shortname": ":ear_tone3:",
"category": "people",
@@ -6902,11 +7541,12 @@
"hear",
"listen",
"sound"
- ]
+ ],
+ "moji": "👂🏽"
},
"ear_tone4": {
"unicode": "1F442-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ear tone 4",
"shortname": ":ear_tone4:",
"category": "people",
@@ -6916,11 +7556,12 @@
"hear",
"listen",
"sound"
- ]
+ ],
+ "moji": "👂🏾"
},
"ear_tone5": {
"unicode": "1F442-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ear tone 5",
"shortname": ":ear_tone5:",
"category": "people",
@@ -6930,7 +7571,8 @@
"hear",
"listen",
"sound"
- ]
+ ],
+ "moji": "👂🏿"
},
"earth_africa": {
"unicode": "1F30D",
@@ -6945,12 +7587,13 @@
"international",
"world",
"earth",
- "globe",
"space",
"planet",
"africa",
"europe",
- "home"
+ "home",
+ "map",
+ "vacation"
],
"moji": "🌍"
},
@@ -6968,14 +7611,15 @@
"international",
"world",
"earth",
- "globe",
"space",
"planet",
"north",
"south",
"america",
"americas",
- "home"
+ "home",
+ "map",
+ "vacation"
],
"moji": "🌎"
},
@@ -6993,43 +7637,33 @@
"international",
"world",
"earth",
- "globe",
"space",
"planet",
"asia",
"australia",
- "home"
+ "home",
+ "map",
+ "vacation"
],
"moji": "🌏"
},
"egg": {
- "unicode": "1F373",
+ "unicode": "1F95A",
"unicode_alternates": [],
- "name": "cooking",
+ "name": "egg",
"shortname": ":egg:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
- "keywords": [
- "breakfast",
- "food",
- "egg",
- "fry",
- "pan",
- "flat",
- "cook",
- "frying",
- "cooking",
- "utensil"
- ],
- "moji": "🍳"
+ "keywords": [],
+ "moji": "🥚"
},
"eggplant": {
"unicode": "1F346",
"unicode_alternates": [],
"name": "aubergine",
"shortname": ":eggplant:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7038,10 +7672,10 @@
"nature",
"vegetable",
"eggplant",
- "aubergine",
"fruit",
"purple",
- "penis"
+ "penis",
+ "vegetables"
],
"moji": "🍆"
},
@@ -7051,15 +7685,18 @@
"unicode_alternates": [
"0038-FE0F-20E3"
],
- "name": "digit eight",
+ "name": "keycap digit eight",
"shortname": ":eight:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"8",
"blue-square",
- "numbers"
+ "numbers",
+ "number",
+ "math",
+ "symbol"
]
},
"eight_pointed_black_star": {
@@ -7069,10 +7706,12 @@
],
"name": "eight pointed black star",
"shortname": ":eight_pointed_black_star:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "symbol"
+ ],
"moji": "✴"
},
"eight_spoked_asterisk": {
@@ -7082,16 +7721,32 @@
],
"name": "eight spoked asterisk",
"shortname": ":eight_spoked_asterisk:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"green-square",
"sparkle",
- "star"
+ "star",
+ "symbol"
],
"moji": "✳"
},
+ "eject": {
+ "unicode": "23CF",
+ "unicode_alternates": [
+ "23CF-FE0F"
+ ],
+ "name": "eject symbol",
+ "shortname": ":eject:",
+ "category": "symbols",
+ "aliases": [
+ ":eject_symbol:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "⏏"
+ },
"electric_plug": {
"unicode": "1F50C",
"unicode_alternates": [],
@@ -7102,7 +7757,8 @@
"aliases_ascii": [],
"keywords": [
"charger",
- "power"
+ "power",
+ "electronics"
],
"moji": "🔌"
},
@@ -7118,7 +7774,8 @@
"animal",
"nature",
"nose",
- "thailand"
+ "thailand",
+ "wildlife"
],
"moji": "🐘"
},
@@ -7127,12 +7784,13 @@
"unicode_alternates": [],
"name": "end with leftwards arrow above",
"shortname": ":end:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "words"
+ "words",
+ "symbol"
],
"moji": "🔚"
},
@@ -7150,78 +7808,13 @@
"communication",
"letter",
"mail",
- "postal"
+ "postal",
+ "object",
+ "office",
+ "write"
],
"moji": "✉"
},
- "envelope_back": {
- "unicode": "1F582",
- "unicode_alternates": [],
- "name": "back of envelope",
- "shortname": ":envelope_back:",
- "category": "objects_symbols",
- "aliases": [
- ":back_of_envelope:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "letter",
- "mail",
- "postal"
- ]
- },
- "envelope_flying": {
- "unicode": "1F585",
- "unicode_alternates": [],
- "name": "flying envelope",
- "shortname": ":envelope_flying:",
- "category": "objects_symbols",
- "aliases": [
- ":flying_envelope:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "letter",
- "mail",
- "postal"
- ]
- },
- "envelope_stamped": {
- "unicode": "1F583",
- "unicode_alternates": [],
- "name": "stamped envelope",
- "shortname": ":envelope_stamped:",
- "category": "objects_symbols",
- "aliases": [
- ":stamped_envelope:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "letter",
- "mail",
- "postal"
- ]
- },
- "envelope_stamped_pen": {
- "unicode": "1F586",
- "unicode_alternates": [],
- "name": "pen over stamped envelope",
- "shortname": ":envelope_stamped_pen:",
- "category": "objects_symbols",
- "aliases": [
- ":pen_over_stamped_envelope:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "letter",
- "mail",
- "postal"
- ]
- },
"envelope_with_arrow": {
"unicode": "1F4E9",
"unicode_alternates": [],
@@ -7231,7 +7824,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "email"
+ "email",
+ "object",
+ "office"
],
"moji": "📩"
},
@@ -7250,8 +7845,6 @@
"euro",
"europe",
"banknote",
- "money",
- "currency",
"paper",
"cash",
"bills"
@@ -7263,7 +7856,7 @@
"unicode_alternates": [],
"name": "european castle",
"shortname": ":european_castle:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7273,7 +7866,6 @@
"castle",
"european",
"residence",
- "royalty",
"disneyland",
"disney",
"fort",
@@ -7287,7 +7879,10 @@
"queen",
"fortress",
"nobel",
- "stronghold"
+ "stronghold",
+ "places",
+ "travel",
+ "vacation"
],
"moji": "🏰"
},
@@ -7296,11 +7891,13 @@
"unicode_alternates": [],
"name": "european post office",
"shortname": ":european_post_office:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "building"
+ "building",
+ "places",
+ "post office"
],
"moji": "🏤"
},
@@ -7318,7 +7915,10 @@
"evergreen",
"tree",
"needles",
- "christmas"
+ "christmas",
+ "holidays",
+ "camp",
+ "trees"
],
"moji": "🌲"
},
@@ -7329,11 +7929,13 @@
],
"name": "heavy exclamation mark symbol",
"shortname": ":exclamation:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "surprise"
+ "surprise",
+ "symbol",
+ "punctuation"
],
"moji": "❗"
},
@@ -7342,7 +7944,7 @@
"unicode_alternates": [],
"name": "expressionless face",
"shortname": ":expressionless:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"-_-",
@@ -7356,7 +7958,11 @@
"vapid",
"without expression",
"face",
- "indifferent"
+ "indifferent",
+ "mad",
+ "smiley",
+ "neutral",
+ "emotion"
],
"moji": "😑"
},
@@ -7371,25 +7977,36 @@
"keywords": [
"look",
"peek",
- "watch"
- ]
+ "watch",
+ "body",
+ "eyes"
+ ],
+ "moji": "👁"
},
"eye_in_speech_bubble": {
"unicode": "1F441-1F5E8",
- "unicode_alternates": "1f441-200d-1f5e8",
+ "unicode_alternates": [
+ "1F441-200D-1F5E8"
+ ],
"name": "eye in speech bubble",
"shortname": ":eye_in_speech_bubble:",
"category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "object",
+ "symbol",
+ "eyes",
+ "talk"
+ ],
+ "moji": "👁‍🗨"
},
"eyeglasses": {
"unicode": "1F453",
"unicode_alternates": [],
"name": "eyeglasses",
"shortname": ":eyeglasses:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7408,7 +8025,8 @@
"vision",
"see",
"blurry",
- "contacts"
+ "contacts",
+ "glasses"
],
"moji": "👓"
},
@@ -7417,27 +8035,110 @@
"unicode_alternates": [],
"name": "eyes",
"shortname": ":eyes:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"look",
"peek",
"stalk",
- "watch"
+ "watch",
+ "body",
+ "eyes"
],
"moji": "👀"
},
+ "face_palm": {
+ "unicode": "1F926",
+ "unicode_alternates": [],
+ "name": "face palm",
+ "shortname": ":face_palm:",
+ "category": "people",
+ "aliases": [
+ ":facepalm:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤦"
+ },
+ "face_palm_tone1": {
+ "unicode": "1F926-1F3FB",
+ "unicode_alternates": [],
+ "name": "face palm tone 1",
+ "shortname": ":face_palm_tone1:",
+ "category": "people",
+ "aliases": [
+ ":facepalm_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤦🏻"
+ },
+ "face_palm_tone2": {
+ "unicode": "1F926-1F3FC",
+ "unicode_alternates": [],
+ "name": "face palm tone 2",
+ "shortname": ":face_palm_tone2:",
+ "category": "people",
+ "aliases": [
+ ":facepalm_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤦🏼"
+ },
+ "face_palm_tone3": {
+ "unicode": "1F926-1F3FD",
+ "unicode_alternates": [],
+ "name": "face palm tone 3",
+ "shortname": ":face_palm_tone3:",
+ "category": "people",
+ "aliases": [
+ ":facepalm_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤦🏽"
+ },
+ "face_palm_tone4": {
+ "unicode": "1F926-1F3FE",
+ "unicode_alternates": [],
+ "name": "face palm tone 4",
+ "shortname": ":face_palm_tone4:",
+ "category": "people",
+ "aliases": [
+ ":facepalm_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤦🏾"
+ },
+ "face_palm_tone5": {
+ "unicode": "1F926-1F3FF",
+ "unicode_alternates": [],
+ "name": "face palm tone 5",
+ "shortname": ":face_palm_tone5:",
+ "category": "people",
+ "aliases": [
+ ":facepalm_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤦🏿"
+ },
"factory": {
"unicode": "1F3ED",
"unicode_alternates": [],
"name": "factory",
"shortname": ":factory:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "building"
+ "building",
+ "places",
+ "travel",
+ "steam"
],
"moji": "🏭"
},
@@ -7467,7 +8168,7 @@
"unicode_alternates": [],
"name": "family",
"shortname": ":family:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7479,13 +8180,12 @@
"mother",
"parents",
"family",
- "mother",
- "father",
- "child",
"girl",
"boy",
"group",
- "unit"
+ "unit",
+ "people",
+ "baby"
],
"moji": "👪"
},
@@ -7509,8 +8209,14 @@
"gay",
"homosexual",
"man",
- "boy"
- ]
+ "boy",
+ "people",
+ "family",
+ "men",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👨‍👨‍👦"
},
"family_mmbb": {
"unicode": "1F468-1F468-1F466-1F466",
@@ -7532,8 +8238,14 @@
"gay",
"homosexual",
"man",
- "boy"
- ]
+ "boy",
+ "people",
+ "family",
+ "men",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👨‍👨‍👦‍👦"
},
"family_mmg": {
"unicode": "1F468-1F468-1F467",
@@ -7555,8 +8267,14 @@
"gay",
"homosexual",
"man",
- "girl"
- ]
+ "girl",
+ "people",
+ "family",
+ "men",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👨‍👨‍👧"
},
"family_mmgb": {
"unicode": "1F468-1F468-1F467-1F466",
@@ -7579,8 +8297,14 @@
"homosexual",
"man",
"girl",
- "boy"
- ]
+ "boy",
+ "people",
+ "family",
+ "men",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👨‍👨‍👧‍👦"
},
"family_mmgg": {
"unicode": "1F468-1F468-1F467-1F467",
@@ -7602,8 +8326,14 @@
"gay",
"homosexual",
"man",
- "girl"
- ]
+ "girl",
+ "people",
+ "family",
+ "men",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👨‍👨‍👧‍👧"
},
"family_mwbb": {
"unicode": "1F468-1F469-1F466-1F466",
@@ -7626,8 +8356,12 @@
"group",
"unit",
"man",
- "woman"
- ]
+ "woman",
+ "people",
+ "family",
+ "baby"
+ ],
+ "moji": "👨‍👩‍👦‍👦"
},
"family_mwg": {
"unicode": "1F468-1F469-1F467",
@@ -7651,8 +8385,12 @@
"group",
"unit",
"man",
- "woman"
- ]
+ "woman",
+ "people",
+ "family",
+ "baby"
+ ],
+ "moji": "👨‍👩‍👧"
},
"family_mwgb": {
"unicode": "1F468-1F469-1F467-1F466",
@@ -7676,8 +8414,12 @@
"group",
"unit",
"man",
- "woman"
- ]
+ "woman",
+ "people",
+ "family",
+ "baby"
+ ],
+ "moji": "👨‍👩‍👧‍👦"
},
"family_mwgg": {
"unicode": "1F468-1F469-1F467-1F467",
@@ -7700,8 +8442,12 @@
"group",
"unit",
"man",
- "woman"
- ]
+ "woman",
+ "people",
+ "family",
+ "baby"
+ ],
+ "moji": "👨‍👩‍👧‍👧"
},
"family_wwb": {
"unicode": "1F469-1F469-1F466",
@@ -7724,8 +8470,14 @@
"gay",
"lesbian",
"homosexual",
- "woman"
- ]
+ "woman",
+ "people",
+ "family",
+ "women",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👩‍👩‍👦"
},
"family_wwbb": {
"unicode": "1F469-1F469-1F466-1F466",
@@ -7748,8 +8500,14 @@
"lesbian",
"homosexual",
"woman",
- "boy"
- ]
+ "boy",
+ "people",
+ "family",
+ "women",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👩‍👩‍👦‍👦"
},
"family_wwg": {
"unicode": "1F469-1F469-1F467",
@@ -7772,8 +8530,14 @@
"unit",
"gay",
"lesbian",
- "homosexual"
- ]
+ "homosexual",
+ "people",
+ "family",
+ "women",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👩‍👩‍👧"
},
"family_wwgb": {
"unicode": "1F469-1F469-1F467-1F466",
@@ -7797,8 +8561,14 @@
"homosexual",
"woman",
"girl",
- "boy"
- ]
+ "boy",
+ "people",
+ "family",
+ "women",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👩‍👩‍👧‍👦"
},
"family_wwgg": {
"unicode": "1F469-1F469-1F467-1F467",
@@ -7821,19 +8591,27 @@
"lesbian",
"homosexual",
"woman",
- "girl"
- ]
+ "girl",
+ "people",
+ "family",
+ "women",
+ "baby",
+ "lgbt"
+ ],
+ "moji": "👩‍👩‍👧‍👧"
},
"fast_forward": {
"unicode": "23E9",
"unicode_alternates": [],
"name": "black right-pointing double triangle",
"shortname": ":fast_forward:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "⏩"
},
@@ -7847,7 +8625,10 @@
"aliases_ascii": [],
"keywords": [
"communication",
- "technology"
+ "technology",
+ "electronics",
+ "work",
+ "office"
],
"moji": "📠"
},
@@ -7856,7 +8637,7 @@
"unicode_alternates": [],
"name": "fearful face",
"shortname": ":fearful:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7867,8 +8648,10 @@
"terrified",
"fear",
"fearful",
- "scared",
- "frightened"
+ "frightened",
+ "smiley",
+ "surprised",
+ "emotion"
],
"moji": "😨"
},
@@ -7888,16 +8671,12 @@
"paw",
"pet",
"tracking",
- "paw",
"prints",
"mark",
"imprints",
"footsteps",
- "animal",
"lion",
"bear",
- "dog",
- "cat",
"raccoon",
"critter",
"feet",
@@ -7905,12 +8684,25 @@
],
"moji": "🐾"
},
+ "fencer": {
+ "unicode": "1F93A",
+ "unicode_alternates": [],
+ "name": "fencer",
+ "shortname": ":fencer:",
+ "category": "activity",
+ "aliases": [
+ ":fencing:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤺"
+ },
"ferris_wheel": {
"unicode": "1F3A1",
"unicode_alternates": [],
"name": "ferris wheel",
"shortname": ":ferris_wheel:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7923,13 +8715,16 @@
"park",
"fair",
"ride",
- "entertainment"
+ "entertainment",
+ "places",
+ "vacation",
+ "ferris wheel"
],
"moji": "🎡"
},
"ferry": {
"unicode": "26F4",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ferry",
"shortname": ":ferry:",
"category": "travel",
@@ -7938,33 +8733,44 @@
"keywords": [
"boat",
"place",
- "travel"
- ]
+ "travel",
+ "transportation",
+ "vacation"
+ ],
+ "moji": "⛴"
},
"field_hockey": {
"unicode": "1F3D1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "field hockey stick and ball",
"shortname": ":field_hockey:",
"category": "activity",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "ball",
+ "sport",
+ "hockey"
+ ],
+ "moji": "🏑"
},
"file_cabinet": {
"unicode": "1F5C4",
"unicode_alternates": [],
"name": "file cabinet",
"shortname": ":file_cabinet:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"folders",
"office",
"documents",
- "storage"
- ]
+ "storage",
+ "object",
+ "work"
+ ],
+ "moji": "🗄"
},
"file_folder": {
"unicode": "1F4C1",
@@ -7975,7 +8781,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "documents"
+ "documents",
+ "work",
+ "office"
],
"moji": "📁"
},
@@ -7984,7 +8792,7 @@
"unicode_alternates": [],
"name": "film frames",
"shortname": ":film_frames:",
- "category": "activity",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -7993,95 +8801,96 @@
"8mm",
"16mm",
"reel",
- "celluloid"
- ]
+ "celluloid",
+ "object",
+ "camera"
+ ],
+ "moji": "🎞"
},
- "finger_pointing_down": {
- "unicode": "1F597",
+ "fingers_crossed": {
+ "unicode": "1F91E",
"unicode_alternates": [],
- "name": "white down pointing left hand index",
- "shortname": ":finger_pointing_down:",
+ "name": "hand with first and index finger crossed",
+ "shortname": ":fingers_crossed:",
"category": "people",
"aliases": [
- ":white_down_pointing_left_hand_index:"
+ ":hand_with_index_and_middle_finger_crossed:"
],
"aliases_ascii": [],
- "keywords": [
- "direction",
- "finger",
- "hand"
- ]
+ "keywords": [],
+ "moji": "🤞"
},
- "finger_pointing_down2": {
- "unicode": "1F59F",
+ "fingers_crossed_tone1": {
+ "unicode": "1F91E-1F3FB",
"unicode_alternates": [],
- "name": "sideways white down pointing index",
- "shortname": ":finger_pointing_down2:",
+ "name": "hand with index and middle fingers crossed tone 1",
+ "shortname": ":fingers_crossed_tone1:",
"category": "people",
"aliases": [
- ":sideways_white_down_pointing_index:"
+ ":hand_with_index_and_middle_fingers_crossed_tone1:"
],
"aliases_ascii": [],
- "keywords": [
- "direction",
- "finger",
- "hand"
- ]
+ "keywords": [],
+ "moji": "🤞🏻"
},
- "finger_pointing_left": {
- "unicode": "1F598",
+ "fingers_crossed_tone2": {
+ "unicode": "1F91E-1F3FC",
"unicode_alternates": [],
- "name": "sideways white left pointing index",
- "shortname": ":finger_pointing_left:",
+ "name": "hand with index and middle fingers crossed tone 2",
+ "shortname": ":fingers_crossed_tone2:",
"category": "people",
"aliases": [
- ":sideways_white_left_pointing_index:"
+ ":hand_with_index_and_middle_fingers_crossed_tone2:"
],
"aliases_ascii": [],
- "keywords": [
- "direction",
- "finger",
- "hand"
- ]
+ "keywords": [],
+ "moji": "🤞🏼"
},
- "finger_pointing_right": {
- "unicode": "1F599",
+ "fingers_crossed_tone3": {
+ "unicode": "1F91E-1F3FD",
"unicode_alternates": [],
- "name": "sideways white right pointing index",
- "shortname": ":finger_pointing_right:",
+ "name": "hand with index and middle fingers crossed tone 3",
+ "shortname": ":fingers_crossed_tone3:",
"category": "people",
"aliases": [
- ":sideways_white_right_pointing_index:"
+ ":hand_with_index_and_middle_fingers_crossed_tone3:"
],
"aliases_ascii": [],
- "keywords": [
- "direction",
- "finger",
- "hand"
- ]
+ "keywords": [],
+ "moji": "🤞🏽"
},
- "finger_pointing_up": {
- "unicode": "1F59E",
+ "fingers_crossed_tone4": {
+ "unicode": "1F91E-1F3FE",
"unicode_alternates": [],
- "name": "sideways white up pointing index",
- "shortname": ":finger_pointing_up:",
+ "name": "hand with index and middle fingers crossed tone 4",
+ "shortname": ":fingers_crossed_tone4:",
"category": "people",
"aliases": [
- ":sideways_white_up_pointing_index:"
+ ":hand_with_index_and_middle_fingers_crossed_tone4:"
],
"aliases_ascii": [],
- "keywords": [
- "direction",
- "finger",
- "hand"
- ]
+ "keywords": [],
+ "moji": "🤞🏾"
+ },
+ "fingers_crossed_tone5": {
+ "unicode": "1F91E-1F3FF",
+ "unicode_alternates": [],
+ "name": "hand with index and middle fingers crossed tone 5",
+ "shortname": ":fingers_crossed_tone5:",
+ "category": "people",
+ "aliases": [
+ ":hand_with_index_and_middle_fingers_crossed_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤞🏿"
},
"fire": {
"unicode": "1F525",
"unicode_alternates": [],
"name": "fire",
"shortname": ":fire:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [
":flame:"
],
@@ -8089,7 +8898,8 @@
"keywords": [
"cook",
"hot",
- "flame"
+ "flame",
+ "wth"
],
"moji": "🔥"
},
@@ -8098,7 +8908,7 @@
"unicode_alternates": [],
"name": "fire engine",
"shortname": ":fire_engine:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -8110,34 +8920,17 @@
"engine",
"truck",
"emergency",
- "medical"
+ "medical",
+ "911"
],
"moji": "🚒"
},
- "fire_engine_oncoming": {
- "unicode": "1F6F1",
- "unicode_alternates": [],
- "name": "oncoming fire engine",
- "shortname": ":fire_engine_oncoming:",
- "category": "travel_places",
- "aliases": [
- ":oncoming_fire_engine:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "transportation",
- "vehicle",
- "fighter",
- "truck",
- "emergency"
- ]
- },
"fireworks": {
"unicode": "1F386",
"unicode_alternates": [],
"name": "fireworks",
"shortname": ":fireworks:",
- "category": "objects",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -8154,10 +8947,24 @@
"rocket",
"sky",
"idea",
- "excitement"
+ "excitement",
+ "parties"
],
"moji": "🎆"
},
+ "first_place": {
+ "unicode": "1F947",
+ "unicode_alternates": [],
+ "name": "first place medal",
+ "shortname": ":first_place:",
+ "category": "activity",
+ "aliases": [
+ ":first_place_medal:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥇"
+ },
"first_quarter_moon": {
"unicode": "1F313",
"unicode_alternates": [],
@@ -8174,7 +8981,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌓"
},
@@ -8196,7 +9004,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌛"
},
@@ -8211,7 +9020,8 @@
"keywords": [
"animal",
"food",
- "nature"
+ "nature",
+ "wildlife"
],
"moji": "🐟"
},
@@ -8220,7 +9030,7 @@
"unicode_alternates": [],
"name": "fish cake with swirl design",
"shortname": ":fish_cake:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -8231,7 +9041,8 @@
"swirl",
"ramen",
"noodles",
- "naruto"
+ "naruto",
+ "sushi"
],
"moji": "🍥"
},
@@ -8240,7 +9051,7 @@
"unicode_alternates": [],
"name": "fishing pole and fish",
"shortname": ":fishing_pole_and_fish:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -8248,7 +9059,9 @@
"hobby",
"fish",
"fishing",
- "pole"
+ "pole",
+ "vacation",
+ "sport"
],
"moji": "🎣"
},
@@ -8257,19 +9070,25 @@
"unicode_alternates": [],
"name": "raised fist",
"shortname": ":fist:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fingers",
"grasp",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "hi",
+ "fist bump",
+ "diversity",
+ "condolence"
],
"moji": "✊"
},
"fist_tone1": {
"unicode": "270A-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised fist tone 1",
"shortname": ":fist_tone1:",
"category": "people",
@@ -8279,11 +9098,12 @@
"fingers",
"grasp",
"hand"
- ]
+ ],
+ "moji": "✊🏻"
},
"fist_tone2": {
"unicode": "270A-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised fist tone 2",
"shortname": ":fist_tone2:",
"category": "people",
@@ -8293,11 +9113,12 @@
"fingers",
"grasp",
"hand"
- ]
+ ],
+ "moji": "✊🏼"
},
"fist_tone3": {
"unicode": "270A-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised fist tone 3",
"shortname": ":fist_tone3:",
"category": "people",
@@ -8307,11 +9128,12 @@
"fingers",
"grasp",
"hand"
- ]
+ ],
+ "moji": "✊🏽"
},
"fist_tone4": {
"unicode": "270A-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised fist tone 4",
"shortname": ":fist_tone4:",
"category": "people",
@@ -8321,11 +9143,12 @@
"fingers",
"grasp",
"hand"
- ]
+ ],
+ "moji": "✊🏾"
},
"fist_tone5": {
"unicode": "270A-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised fist tone 5",
"shortname": ":fist_tone5:",
"category": "people",
@@ -8335,7 +9158,8 @@
"fingers",
"grasp",
"hand"
- ]
+ ],
+ "moji": "✊🏿"
},
"five": {
"moji": "5️⃣",
@@ -8343,15 +9167,18 @@
"unicode_alternates": [
"0035-FE0F-20E3"
],
- "name": "digit five",
+ "name": "keycap digit five",
"shortname": ":five:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
"numbers",
- "prime"
+ "prime",
+ "number",
+ "math",
+ "symbol"
]
},
"flag_ac": {
@@ -8367,8 +9194,10 @@
"keywords": [
"country",
"nation",
- "ac"
- ]
+ "ac",
+ "flag"
+ ],
+ "moji": "🇦🇨"
},
"flag_ad": {
"unicode": "1F1E6-1F1E9",
@@ -8383,8 +9212,10 @@
"keywords": [
"country",
"nation",
- "ad"
- ]
+ "ad",
+ "flag"
+ ],
+ "moji": "🇦🇩"
},
"flag_ae": {
"unicode": "1F1E6-1F1EA",
@@ -8399,8 +9230,10 @@
"keywords": [
"country",
"nation",
- "ae"
- ]
+ "ae",
+ "flag"
+ ],
+ "moji": "🇦🇪"
},
"flag_af": {
"unicode": "1F1E6-1F1EB",
@@ -8416,8 +9249,10 @@
"country",
"nation",
"afghanestan",
- "af"
- ]
+ "af",
+ "flag"
+ ],
+ "moji": "🇦🇫"
},
"flag_ag": {
"unicode": "1F1E6-1F1EC",
@@ -8432,8 +9267,10 @@
"keywords": [
"country",
"nation",
- "ag"
- ]
+ "ag",
+ "flag"
+ ],
+ "moji": "🇦🇬"
},
"flag_ai": {
"unicode": "1F1E6-1F1EE",
@@ -8448,8 +9285,10 @@
"keywords": [
"country",
"nation",
- "ai"
- ]
+ "ai",
+ "flag"
+ ],
+ "moji": "🇦🇮"
},
"flag_al": {
"unicode": "1F1E6-1F1F1",
@@ -8465,8 +9304,10 @@
"country",
"nation",
"shqiperia",
- "al"
- ]
+ "al",
+ "flag"
+ ],
+ "moji": "🇦🇱"
},
"flag_am": {
"unicode": "1F1E6-1F1F2",
@@ -8482,8 +9323,10 @@
"country",
"nation",
"hayastan",
- "am"
- ]
+ "am",
+ "flag"
+ ],
+ "moji": "🇦🇲"
},
"flag_ao": {
"unicode": "1F1E6-1F1F4",
@@ -8498,12 +9341,14 @@
"keywords": [
"country",
"nation",
- "ao"
- ]
+ "ao",
+ "flag"
+ ],
+ "moji": "🇦🇴"
},
"flag_aq": {
"unicode": "1F1E6-1F1F6",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "antarctica",
"shortname": ":flag_aq:",
"category": "flags",
@@ -8511,7 +9356,11 @@
":aq:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇦🇶"
},
"flag_ar": {
"unicode": "1F1E6-1F1F7",
@@ -8526,12 +9375,14 @@
"keywords": [
"country",
"nation",
- "ar"
- ]
+ "ar",
+ "flag"
+ ],
+ "moji": "🇦🇷"
},
"flag_as": {
"unicode": "1F1E6-1F1F8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "american samoa",
"shortname": ":flag_as:",
"category": "flags",
@@ -8539,7 +9390,11 @@
":as:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇦🇸"
},
"flag_at": {
"unicode": "1F1E6-1F1F9",
@@ -8556,8 +9411,10 @@
"nation",
"&ouml;sterreich",
"osterreich",
- "at"
- ]
+ "at",
+ "flag"
+ ],
+ "moji": "🇦🇹"
},
"flag_au": {
"unicode": "1F1E6-1F1FA",
@@ -8572,8 +9429,10 @@
"keywords": [
"country",
"nation",
- "au"
- ]
+ "au",
+ "flag"
+ ],
+ "moji": "🇦🇺"
},
"flag_aw": {
"unicode": "1F1E6-1F1FC",
@@ -8588,12 +9447,14 @@
"keywords": [
"country",
"nation",
- "aw"
- ]
+ "aw",
+ "flag"
+ ],
+ "moji": "🇦🇼"
},
"flag_ax": {
"unicode": "1F1E6-1F1FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "åland islands",
"shortname": ":flag_ax:",
"category": "flags",
@@ -8601,7 +9462,11 @@
":ax:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇦🇽"
},
"flag_az": {
"unicode": "1F1E6-1F1FF",
@@ -8617,8 +9482,10 @@
"country",
"nation",
"azarbaycan",
- "az"
- ]
+ "az",
+ "flag"
+ ],
+ "moji": "🇦🇿"
},
"flag_ba": {
"unicode": "1F1E7-1F1E6",
@@ -8634,8 +9501,10 @@
"country",
"nation",
"bosna i hercegovina",
- "ba"
- ]
+ "ba",
+ "flag"
+ ],
+ "moji": "🇧🇦"
},
"flag_bb": {
"unicode": "1F1E7-1F1E7",
@@ -8650,8 +9519,10 @@
"keywords": [
"country",
"nation",
- "bb"
- ]
+ "bb",
+ "flag"
+ ],
+ "moji": "🇧🇧"
},
"flag_bd": {
"unicode": "1F1E7-1F1E9",
@@ -8666,8 +9537,10 @@
"keywords": [
"country",
"nation",
- "bd"
- ]
+ "bd",
+ "flag"
+ ],
+ "moji": "🇧🇩"
},
"flag_be": {
"unicode": "1F1E7-1F1EA",
@@ -8684,8 +9557,10 @@
"nation",
"belgique",
"belgie",
- "be"
- ]
+ "be",
+ "flag"
+ ],
+ "moji": "🇧🇪"
},
"flag_bf": {
"unicode": "1F1E7-1F1EB",
@@ -8700,8 +9575,10 @@
"keywords": [
"country",
"nation",
- "bf"
- ]
+ "bf",
+ "flag"
+ ],
+ "moji": "🇧🇫"
},
"flag_bg": {
"unicode": "1F1E7-1F1EC",
@@ -8716,8 +9593,10 @@
"keywords": [
"country",
"nation",
- "bg"
- ]
+ "bg",
+ "flag"
+ ],
+ "moji": "🇧🇬"
},
"flag_bh": {
"unicode": "1F1E7-1F1ED",
@@ -8733,8 +9612,10 @@
"country",
"nation",
"al bahrayn",
- "bh"
- ]
+ "bh",
+ "flag"
+ ],
+ "moji": "🇧🇭"
},
"flag_bi": {
"unicode": "1F1E7-1F1EE",
@@ -8749,8 +9630,10 @@
"keywords": [
"country",
"nation",
- "bi"
- ]
+ "bi",
+ "flag"
+ ],
+ "moji": "🇧🇮"
},
"flag_bj": {
"unicode": "1F1E7-1F1EF",
@@ -8765,12 +9648,14 @@
"keywords": [
"country",
"nation",
- "bj"
- ]
+ "bj",
+ "flag"
+ ],
+ "moji": "🇧🇯"
},
"flag_bl": {
"unicode": "1F1E7-1F1F1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "saint barthélemy",
"shortname": ":flag_bl:",
"category": "flags",
@@ -8778,22 +9663,28 @@
":bl:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇧🇱"
},
"flag_black": {
"unicode": "1F3F4",
"unicode_alternates": [],
"name": "waving black flag",
"shortname": ":flag_black:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":waving_black_flag:"
],
"aliases_ascii": [],
"keywords": [
"symbol",
- "signal"
- ]
+ "signal",
+ "object"
+ ],
+ "moji": "🏴"
},
"flag_bm": {
"unicode": "1F1E7-1F1F2",
@@ -8808,8 +9699,10 @@
"keywords": [
"country",
"nation",
- "bm"
- ]
+ "bm",
+ "flag"
+ ],
+ "moji": "🇧🇲"
},
"flag_bn": {
"unicode": "1F1E7-1F1F3",
@@ -8824,8 +9717,10 @@
"keywords": [
"country",
"nation",
- "bn"
- ]
+ "bn",
+ "flag"
+ ],
+ "moji": "🇧🇳"
},
"flag_bo": {
"unicode": "1F1E7-1F1F4",
@@ -8840,12 +9735,14 @@
"keywords": [
"country",
"nation",
- "bo"
- ]
+ "bo",
+ "flag"
+ ],
+ "moji": "🇧🇴"
},
"flag_bq": {
"unicode": "1F1E7-1F1F6",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "caribbean netherlands",
"shortname": ":flag_bq:",
"category": "flags",
@@ -8853,7 +9750,11 @@
":bq:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇧🇶"
},
"flag_br": {
"unicode": "1F1E7-1F1F7",
@@ -8869,8 +9770,10 @@
"country",
"nation",
"brasil",
- "br"
- ]
+ "br",
+ "flag"
+ ],
+ "moji": "🇧🇷"
},
"flag_bs": {
"unicode": "1F1E7-1F1F8",
@@ -8885,8 +9788,10 @@
"keywords": [
"country",
"nation",
- "bs"
- ]
+ "bs",
+ "flag"
+ ],
+ "moji": "🇧🇸"
},
"flag_bt": {
"unicode": "1F1E7-1F1F9",
@@ -8901,12 +9806,14 @@
"keywords": [
"country",
"nation",
- "bt"
- ]
+ "bt",
+ "flag"
+ ],
+ "moji": "🇧🇹"
},
"flag_bv": {
"unicode": "1F1E7-1F1FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "bouvet island",
"shortname": ":flag_bv:",
"category": "flags",
@@ -8914,7 +9821,11 @@
":bv:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇧🇻"
},
"flag_bw": {
"unicode": "1F1E7-1F1FC",
@@ -8929,8 +9840,10 @@
"keywords": [
"country",
"nation",
- "bw"
- ]
+ "bw",
+ "flag"
+ ],
+ "moji": "🇧🇼"
},
"flag_by": {
"unicode": "1F1E7-1F1FE",
@@ -8946,8 +9859,10 @@
"country",
"nation",
"byelarus",
- "by"
- ]
+ "by",
+ "flag"
+ ],
+ "moji": "🇧🇾"
},
"flag_bz": {
"unicode": "1F1E7-1F1FF",
@@ -8962,8 +9877,10 @@
"keywords": [
"country",
"nation",
- "bz"
- ]
+ "bz",
+ "flag"
+ ],
+ "moji": "🇧🇿"
},
"flag_ca": {
"unicode": "1F1E8-1F1E6",
@@ -8978,12 +9895,14 @@
"keywords": [
"country",
"nation",
- "ca"
- ]
+ "ca",
+ "flag"
+ ],
+ "moji": "🇨🇦"
},
"flag_cc": {
"unicode": "1F1E8-1F1E8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "cocos (keeling) islands",
"shortname": ":flag_cc:",
"category": "flags",
@@ -8991,7 +9910,11 @@
":cc:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇨🇨"
},
"flag_cd": {
"unicode": "1F1E8-1F1E9",
@@ -9008,8 +9931,10 @@
"nation",
"r&eacute;publique d&eacute;mocratique du congo",
"republique democratique du congo",
- "cd"
- ]
+ "cd",
+ "flag"
+ ],
+ "moji": "🇨🇩"
},
"flag_cf": {
"unicode": "1F1E8-1F1EB",
@@ -9024,8 +9949,10 @@
"keywords": [
"country",
"nation",
- "cf"
- ]
+ "cf",
+ "flag"
+ ],
+ "moji": "🇨🇫"
},
"flag_cg": {
"unicode": "1F1E8-1F1EC",
@@ -9040,8 +9967,10 @@
"keywords": [
"country",
"nation",
- "cg"
- ]
+ "cg",
+ "flag"
+ ],
+ "moji": "🇨🇬"
},
"flag_ch": {
"unicode": "1F1E8-1F1ED",
@@ -9056,8 +9985,11 @@
"keywords": [
"country",
"nation",
- "swiss"
- ]
+ "swiss",
+ "neutral",
+ "flag"
+ ],
+ "moji": "🇨🇭"
},
"flag_ci": {
"unicode": "1F1E8-1F1EE",
@@ -9072,12 +10004,14 @@
"keywords": [
"country",
"nation",
- "ci"
- ]
+ "ci",
+ "flag"
+ ],
+ "moji": "🇨🇮"
},
"flag_ck": {
"unicode": "1F1E8-1F1F0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "cook islands",
"shortname": ":flag_ck:",
"category": "flags",
@@ -9085,7 +10019,11 @@
":ck:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇨🇰"
},
"flag_cl": {
"unicode": "1F1E8-1F1F1",
@@ -9100,8 +10038,10 @@
"keywords": [
"country",
"nation",
- "cl"
- ]
+ "cl",
+ "flag"
+ ],
+ "moji": "🇨🇱"
},
"flag_cm": {
"unicode": "1F1E8-1F1F2",
@@ -9116,8 +10056,10 @@
"keywords": [
"country",
"nation",
- "cm"
- ]
+ "cm",
+ "flag"
+ ],
+ "moji": "🇨🇲"
},
"flag_cn": {
"unicode": "1F1E8-1F1F3",
@@ -9135,8 +10077,10 @@
"zhong guo",
"country",
"nation",
- "cn"
- ]
+ "cn",
+ "flag"
+ ],
+ "moji": "🇨🇳"
},
"flag_co": {
"unicode": "1F1E8-1F1F4",
@@ -9151,12 +10095,14 @@
"keywords": [
"country",
"nation",
- "co"
- ]
+ "co",
+ "flag"
+ ],
+ "moji": "🇨🇴"
},
"flag_cp": {
"unicode": "1F1E8-1F1F5",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "clipperton island",
"shortname": ":flag_cp:",
"category": "flags",
@@ -9164,7 +10110,11 @@
":cp:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇨🇵"
},
"flag_cr": {
"unicode": "1F1E8-1F1F7",
@@ -9179,8 +10129,10 @@
"keywords": [
"country",
"nation",
- "cr"
- ]
+ "cr",
+ "flag"
+ ],
+ "moji": "🇨🇷"
},
"flag_cu": {
"unicode": "1F1E8-1F1FA",
@@ -9195,8 +10147,10 @@
"keywords": [
"country",
"nation",
- "cu"
- ]
+ "cu",
+ "flag"
+ ],
+ "moji": "🇨🇺"
},
"flag_cv": {
"unicode": "1F1E8-1F1FB",
@@ -9212,12 +10166,14 @@
"country",
"nation",
"cabo verde",
- "cv"
- ]
+ "cv",
+ "flag"
+ ],
+ "moji": "🇨🇻"
},
"flag_cw": {
"unicode": "1F1E8-1F1FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "curaçao",
"shortname": ":flag_cw:",
"category": "flags",
@@ -9225,11 +10181,15 @@
":cw:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇨🇼"
},
"flag_cx": {
"unicode": "1F1E8-1F1FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "christmas island",
"shortname": ":flag_cx:",
"category": "flags",
@@ -9237,7 +10197,11 @@
":cx:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇨🇽"
},
"flag_cy": {
"unicode": "1F1E8-1F1FE",
@@ -9254,8 +10218,10 @@
"nation",
"kibris",
"kypros",
- "cy"
- ]
+ "cy",
+ "flag"
+ ],
+ "moji": "🇨🇾"
},
"flag_cz": {
"unicode": "1F1E8-1F1FF",
@@ -9271,8 +10237,10 @@
"country",
"nation",
"ceska republika",
- "cz"
- ]
+ "cz",
+ "flag"
+ ],
+ "moji": "🇨🇿"
},
"flag_de": {
"unicode": "1F1E9-1F1EA",
@@ -9289,12 +10257,14 @@
"nation",
"deutschland",
"country",
- "de"
- ]
+ "de",
+ "flag"
+ ],
+ "moji": "🇩🇪"
},
"flag_dg": {
"unicode": "1F1E9-1F1EC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "diego garcia",
"shortname": ":flag_dg:",
"category": "flags",
@@ -9302,7 +10272,11 @@
":dg:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇩🇬"
},
"flag_dj": {
"unicode": "1F1E9-1F1EF",
@@ -9317,8 +10291,10 @@
"keywords": [
"country",
"nation",
- "dj"
- ]
+ "dj",
+ "flag"
+ ],
+ "moji": "🇩🇯"
},
"flag_dk": {
"unicode": "1F1E9-1F1F0",
@@ -9334,8 +10310,10 @@
"country",
"nation",
"danmark",
- "dk"
- ]
+ "dk",
+ "flag"
+ ],
+ "moji": "🇩🇰"
},
"flag_dm": {
"unicode": "1F1E9-1F1F2",
@@ -9350,8 +10328,10 @@
"keywords": [
"country",
"nation",
- "dm"
- ]
+ "dm",
+ "flag"
+ ],
+ "moji": "🇩🇲"
},
"flag_do": {
"unicode": "1F1E9-1F1F4",
@@ -9366,8 +10346,10 @@
"keywords": [
"country",
"nation",
- "do"
- ]
+ "do",
+ "flag"
+ ],
+ "moji": "🇩🇴"
},
"flag_dz": {
"unicode": "1F1E9-1F1FF",
@@ -9384,12 +10366,14 @@
"nation",
"al jaza'ir",
"al jazair",
- "dz"
- ]
+ "dz",
+ "flag"
+ ],
+ "moji": "🇩🇿"
},
"flag_ea": {
"unicode": "1F1EA-1F1E6",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ceuta, melilla",
"shortname": ":flag_ea:",
"category": "flags",
@@ -9397,7 +10381,11 @@
":ea:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇪🇦"
},
"flag_ec": {
"unicode": "1F1EA-1F1E8",
@@ -9412,8 +10400,10 @@
"keywords": [
"country",
"nation",
- "ec"
- ]
+ "ec",
+ "flag"
+ ],
+ "moji": "🇪🇨"
},
"flag_ee": {
"unicode": "1F1EA-1F1EA",
@@ -9429,8 +10419,10 @@
"country",
"nation",
"eesti vabariik",
- "ee"
- ]
+ "ee",
+ "flag"
+ ],
+ "moji": "🇪🇪"
},
"flag_eg": {
"unicode": "1F1EA-1F1EC",
@@ -9446,8 +10438,10 @@
"country",
"nation",
"misr",
- "eg"
- ]
+ "eg",
+ "flag"
+ ],
+ "moji": "🇪🇬"
},
"flag_eh": {
"unicode": "1F1EA-1F1ED",
@@ -9465,8 +10459,10 @@
"aṣ-Ṣaḥrā’ al-gharbīyah",
"sahra",
"gharbiyah",
- "eh"
- ]
+ "eh",
+ "flag"
+ ],
+ "moji": "🇪🇭"
},
"flag_er": {
"unicode": "1F1EA-1F1F7",
@@ -9482,8 +10478,10 @@
"country",
"nation",
"hagere ertra",
- "er"
- ]
+ "er",
+ "flag"
+ ],
+ "moji": "🇪🇷"
},
"flag_es": {
"unicode": "1F1EA-1F1F8",
@@ -9500,8 +10498,10 @@
"espa&ntilde;a",
"country",
"espana",
- "es"
- ]
+ "es",
+ "flag"
+ ],
+ "moji": "🇪🇸"
},
"flag_et": {
"unicode": "1F1EA-1F1F9",
@@ -9518,12 +10518,14 @@
"nation",
"ityop'iya",
"ityopiya",
- "et"
- ]
+ "et",
+ "flag"
+ ],
+ "moji": "🇪🇹"
},
"flag_eu": {
"unicode": "1F1EA-1F1FA",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "european union",
"shortname": ":flag_eu:",
"category": "flags",
@@ -9531,7 +10533,11 @@
":eu:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇪🇺"
},
"flag_fi": {
"unicode": "1F1EB-1F1EE",
@@ -9547,8 +10553,10 @@
"country",
"nation",
"suomen tasavalta",
- "fi"
- ]
+ "fi",
+ "flag"
+ ],
+ "moji": "🇫🇮"
},
"flag_fj": {
"unicode": "1F1EB-1F1EF",
@@ -9563,8 +10571,10 @@
"keywords": [
"country",
"nation",
- "fj"
- ]
+ "fj",
+ "flag"
+ ],
+ "moji": "🇫🇯"
},
"flag_fk": {
"unicode": "1F1EB-1F1F0",
@@ -9580,8 +10590,10 @@
"country",
"nation",
"islas malvinas",
- "fk"
- ]
+ "fk",
+ "flag"
+ ],
+ "moji": "🇫🇰"
},
"flag_fm": {
"unicode": "1F1EB-1F1F2",
@@ -9596,8 +10608,10 @@
"keywords": [
"country",
"nation",
- "fm"
- ]
+ "fm",
+ "flag"
+ ],
+ "moji": "🇫🇲"
},
"flag_fo": {
"unicode": "1F1EB-1F1F4",
@@ -9613,8 +10627,10 @@
"country",
"nation",
"foroyar",
- "fo"
- ]
+ "fo",
+ "flag"
+ ],
+ "moji": "🇫🇴"
},
"flag_fr": {
"unicode": "1F1EB-1F1F7",
@@ -9630,8 +10646,10 @@
"french",
"nation",
"country",
- "fr"
- ]
+ "fr",
+ "flag"
+ ],
+ "moji": "🇫🇷"
},
"flag_ga": {
"unicode": "1F1EC-1F1E6",
@@ -9646,8 +10664,10 @@
"keywords": [
"country",
"nation",
- "ga"
- ]
+ "ga",
+ "flag"
+ ],
+ "moji": "🇬🇦"
},
"flag_gb": {
"unicode": "1F1EC-1F1E7",
@@ -9666,8 +10686,10 @@
"nation",
"united kingdom",
"england",
- "country"
- ]
+ "country",
+ "flag"
+ ],
+ "moji": "🇬🇧"
},
"flag_gd": {
"unicode": "1F1EC-1F1E9",
@@ -9682,8 +10704,10 @@
"keywords": [
"country",
"nation",
- "gd"
- ]
+ "gd",
+ "flag"
+ ],
+ "moji": "🇬🇩"
},
"flag_ge": {
"unicode": "1F1EC-1F1EA",
@@ -9700,12 +10724,14 @@
"nation",
"sak'art'velo",
"sakartvelo",
- "ge"
- ]
+ "ge",
+ "flag"
+ ],
+ "moji": "🇬🇪"
},
"flag_gf": {
"unicode": "1F1EC-1F1EB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "french guiana",
"shortname": ":flag_gf:",
"category": "flags",
@@ -9713,11 +10739,15 @@
":gf:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇬🇫"
},
"flag_gg": {
"unicode": "1F1EC-1F1EC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guernsey",
"shortname": ":flag_gg:",
"category": "flags",
@@ -9725,7 +10755,11 @@
":gg:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇬🇬"
},
"flag_gh": {
"unicode": "1F1EC-1F1ED",
@@ -9740,8 +10774,10 @@
"keywords": [
"country",
"nation",
- "gh"
- ]
+ "gh",
+ "flag"
+ ],
+ "moji": "🇬🇭"
},
"flag_gi": {
"unicode": "1F1EC-1F1EE",
@@ -9756,8 +10792,10 @@
"keywords": [
"country",
"nation",
- "gi"
- ]
+ "gi",
+ "flag"
+ ],
+ "moji": "🇬🇮"
},
"flag_gl": {
"unicode": "1F1EC-1F1F1",
@@ -9773,8 +10811,10 @@
"country",
"nation",
"kalaallit nunaat",
- "gl"
- ]
+ "gl",
+ "flag"
+ ],
+ "moji": "🇬🇱"
},
"flag_gm": {
"unicode": "1F1EC-1F1F2",
@@ -9789,8 +10829,10 @@
"keywords": [
"country",
"nation",
- "gm"
- ]
+ "gm",
+ "flag"
+ ],
+ "moji": "🇬🇲"
},
"flag_gn": {
"unicode": "1F1EC-1F1F3",
@@ -9806,12 +10848,14 @@
"country",
"nation",
"guinee",
- "gn"
- ]
+ "gn",
+ "flag"
+ ],
+ "moji": "🇬🇳"
},
"flag_gp": {
"unicode": "1F1EC-1F1F5",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guadeloupe",
"shortname": ":flag_gp:",
"category": "flags",
@@ -9819,7 +10863,11 @@
":gp:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇬🇵"
},
"flag_gq": {
"unicode": "1F1EC-1F1F6",
@@ -9835,8 +10883,10 @@
"country",
"nation",
"guinea ecuatorial",
- "gq"
- ]
+ "gq",
+ "flag"
+ ],
+ "moji": "🇬🇶"
},
"flag_gr": {
"unicode": "1F1EC-1F1F7",
@@ -9853,12 +10903,14 @@
"nation",
"ellas",
"ellada",
- "gr"
- ]
+ "gr",
+ "flag"
+ ],
+ "moji": "🇬🇷"
},
"flag_gs": {
"unicode": "1F1EC-1F1F8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "south georgia",
"shortname": ":flag_gs:",
"category": "flags",
@@ -9866,7 +10918,11 @@
":gs:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇬🇸"
},
"flag_gt": {
"unicode": "1F1EC-1F1F9",
@@ -9881,8 +10937,10 @@
"keywords": [
"country",
"nation",
- "gt"
- ]
+ "gt",
+ "flag"
+ ],
+ "moji": "🇬🇹"
},
"flag_gu": {
"unicode": "1F1EC-1F1FA",
@@ -9897,8 +10955,10 @@
"keywords": [
"country",
"nation",
- "gu"
- ]
+ "gu",
+ "flag"
+ ],
+ "moji": "🇬🇺"
},
"flag_gw": {
"unicode": "1F1EC-1F1FC",
@@ -9915,8 +10975,10 @@
"nation",
"guine-bissau",
"guine bissau",
- "gw"
- ]
+ "gw",
+ "flag"
+ ],
+ "moji": "🇬🇼"
},
"flag_gy": {
"unicode": "1F1EC-1F1FE",
@@ -9931,8 +10993,10 @@
"keywords": [
"country",
"nation",
- "gy"
- ]
+ "gy",
+ "flag"
+ ],
+ "moji": "🇬🇾"
},
"flag_hk": {
"unicode": "1F1ED-1F1F0",
@@ -9948,12 +11012,14 @@
"country",
"nation",
"xianggang",
- "hk"
- ]
+ "hk",
+ "flag"
+ ],
+ "moji": "🇭🇰"
},
"flag_hm": {
"unicode": "1F1ED-1F1F2",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "heard island and mcdonald islands",
"shortname": ":flag_hm:",
"category": "flags",
@@ -9961,7 +11027,11 @@
":hm:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇭🇲"
},
"flag_hn": {
"unicode": "1F1ED-1F1F3",
@@ -9976,8 +11046,10 @@
"keywords": [
"country",
"nation",
- "hn"
- ]
+ "hn",
+ "flag"
+ ],
+ "moji": "🇭🇳"
},
"flag_hr": {
"unicode": "1F1ED-1F1F7",
@@ -9993,8 +11065,10 @@
"country",
"nation",
"hrvatska",
- "hr"
- ]
+ "hr",
+ "flag"
+ ],
+ "moji": "🇭🇷"
},
"flag_ht": {
"unicode": "1F1ED-1F1F9",
@@ -10009,8 +11083,10 @@
"keywords": [
"country",
"nation",
- "ht"
- ]
+ "ht",
+ "flag"
+ ],
+ "moji": "🇭🇹"
},
"flag_hu": {
"unicode": "1F1ED-1F1FA",
@@ -10026,12 +11102,14 @@
"country",
"nation",
"magyarorszag",
- "hu"
- ]
+ "hu",
+ "flag"
+ ],
+ "moji": "🇭🇺"
},
"flag_ic": {
"unicode": "1F1EE-1F1E8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "canary islands",
"shortname": ":flag_ic:",
"category": "flags",
@@ -10039,7 +11117,11 @@
":ic:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇮🇨"
},
"flag_id": {
"unicode": "1F1EE-1F1E9",
@@ -10054,8 +11136,10 @@
"keywords": [
"country",
"nation",
- "id"
- ]
+ "id",
+ "flag"
+ ],
+ "moji": "🇮🇩"
},
"flag_ie": {
"unicode": "1F1EE-1F1EA",
@@ -10072,8 +11156,10 @@
"nation",
"&eacute;ire",
"eire",
- "ie"
- ]
+ "ie",
+ "flag"
+ ],
+ "moji": "🇮🇪"
},
"flag_il": {
"unicode": "1F1EE-1F1F1",
@@ -10090,12 +11176,15 @@
"nation",
"yisra'el",
"yisrael",
- "il"
- ]
+ "il",
+ "jew",
+ "flag"
+ ],
+ "moji": "🇮🇱"
},
"flag_im": {
"unicode": "1F1EE-1F1F2",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "isle of man",
"shortname": ":flag_im:",
"category": "flags",
@@ -10103,7 +11192,11 @@
":im:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇮🇲"
},
"flag_in": {
"unicode": "1F1EE-1F1F3",
@@ -10119,12 +11212,14 @@
"country",
"nation",
"bharat",
- "in"
- ]
+ "in",
+ "flag"
+ ],
+ "moji": "🇮🇳"
},
"flag_io": {
"unicode": "1F1EE-1F1F4",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "british indian ocean territory",
"shortname": ":flag_io:",
"category": "flags",
@@ -10132,7 +11227,11 @@
":io:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇮🇴"
},
"flag_iq": {
"unicode": "1F1EE-1F1F6",
@@ -10147,8 +11246,10 @@
"keywords": [
"country",
"nation",
- "iq"
- ]
+ "iq",
+ "flag"
+ ],
+ "moji": "🇮🇶"
},
"flag_ir": {
"unicode": "1F1EE-1F1F7",
@@ -10163,8 +11264,10 @@
"keywords": [
"country",
"nation",
- "ir"
- ]
+ "ir",
+ "flag"
+ ],
+ "moji": "🇮🇷"
},
"flag_is": {
"unicode": "1F1EE-1F1F8",
@@ -10180,8 +11283,10 @@
"country",
"nation",
"lyoveldio island",
- "is"
- ]
+ "is",
+ "flag"
+ ],
+ "moji": "🇮🇸"
},
"flag_it": {
"unicode": "1F1EE-1F1F9",
@@ -10197,8 +11302,11 @@
"italia",
"country",
"nation",
- "it"
- ]
+ "it",
+ "italian",
+ "flag"
+ ],
+ "moji": "🇮🇹"
},
"flag_je": {
"unicode": "1F1EF-1F1EA",
@@ -10213,8 +11321,10 @@
"keywords": [
"country",
"nation",
- "je"
- ]
+ "je",
+ "flag"
+ ],
+ "moji": "🇯🇪"
},
"flag_jm": {
"unicode": "1F1EF-1F1F2",
@@ -10229,8 +11339,10 @@
"keywords": [
"country",
"nation",
- "jm"
- ]
+ "jm",
+ "flag"
+ ],
+ "moji": "🇯🇲"
},
"flag_jo": {
"unicode": "1F1EF-1F1F4",
@@ -10246,8 +11358,10 @@
"country",
"nation",
"al urdun",
- "jo"
- ]
+ "jo",
+ "flag"
+ ],
+ "moji": "🇯🇴"
},
"flag_jp": {
"unicode": "1F1EF-1F1F5",
@@ -10263,8 +11377,11 @@
"nation",
"nippon",
"country",
- "jp"
- ]
+ "jp",
+ "japan",
+ "flag"
+ ],
+ "moji": "🇯🇵"
},
"flag_ke": {
"unicode": "1F1F0-1F1EA",
@@ -10279,8 +11396,10 @@
"keywords": [
"country",
"nation",
- "ke"
- ]
+ "ke",
+ "flag"
+ ],
+ "moji": "🇰🇪"
},
"flag_kg": {
"unicode": "1F1F0-1F1EC",
@@ -10296,8 +11415,10 @@
"country",
"nation",
"kyrgyz respublikasy",
- "kg"
- ]
+ "kg",
+ "flag"
+ ],
+ "moji": "🇰🇬"
},
"flag_kh": {
"unicode": "1F1F0-1F1ED",
@@ -10313,8 +11434,10 @@
"country",
"nation",
"kampuchea",
- "kh"
- ]
+ "kh",
+ "flag"
+ ],
+ "moji": "🇰🇭"
},
"flag_ki": {
"unicode": "1F1F0-1F1EE",
@@ -10331,8 +11454,10 @@
"nation",
"kiribati",
"kiribas",
- "ki"
- ]
+ "ki",
+ "flag"
+ ],
+ "moji": "🇰🇮"
},
"flag_km": {
"unicode": "1F1F0-1F1F2",
@@ -10347,8 +11472,10 @@
"keywords": [
"country",
"nation",
- "km"
- ]
+ "km",
+ "flag"
+ ],
+ "moji": "🇰🇲"
},
"flag_kn": {
"unicode": "1F1F0-1F1F3",
@@ -10363,8 +11490,10 @@
"keywords": [
"country",
"nation",
- "kn"
- ]
+ "kn",
+ "flag"
+ ],
+ "moji": "🇰🇳"
},
"flag_kp": {
"unicode": "1F1F0-1F1F5",
@@ -10379,8 +11508,10 @@
"keywords": [
"country",
"nation",
- "kp"
- ]
+ "kp",
+ "flag"
+ ],
+ "moji": "🇰🇵"
},
"flag_kr": {
"unicode": "1F1F0-1F1F7",
@@ -10396,8 +11527,10 @@
"nation",
"country",
"south korea",
- "kr"
- ]
+ "kr",
+ "flag"
+ ],
+ "moji": "🇰🇷"
},
"flag_kw": {
"unicode": "1F1F0-1F1FC",
@@ -10413,8 +11546,10 @@
"country",
"nation",
"al kuwayt",
- "kw"
- ]
+ "kw",
+ "flag"
+ ],
+ "moji": "🇰🇼"
},
"flag_ky": {
"unicode": "1F1F0-1F1FE",
@@ -10429,8 +11564,10 @@
"keywords": [
"country",
"nation",
- "ky"
- ]
+ "ky",
+ "flag"
+ ],
+ "moji": "🇰🇾"
},
"flag_kz": {
"unicode": "1F1F0-1F1FF",
@@ -10446,8 +11583,10 @@
"country",
"nation",
"qazaqstan",
- "kz"
- ]
+ "kz",
+ "flag"
+ ],
+ "moji": "🇰🇿"
},
"flag_la": {
"unicode": "1F1F1-1F1E6",
@@ -10462,8 +11601,10 @@
"keywords": [
"country",
"nation",
- "la"
- ]
+ "la",
+ "flag"
+ ],
+ "moji": "🇱🇦"
},
"flag_lb": {
"unicode": "1F1F1-1F1E7",
@@ -10479,8 +11620,10 @@
"country",
"nation",
"lubnan",
- "lb"
- ]
+ "lb",
+ "flag"
+ ],
+ "moji": "🇱🇧"
},
"flag_lc": {
"unicode": "1F1F1-1F1E8",
@@ -10495,8 +11638,10 @@
"keywords": [
"country",
"nation",
- "lc"
- ]
+ "lc",
+ "flag"
+ ],
+ "moji": "🇱🇨"
},
"flag_li": {
"unicode": "1F1F1-1F1EE",
@@ -10511,8 +11656,10 @@
"keywords": [
"country",
"nation",
- "li"
- ]
+ "li",
+ "flag"
+ ],
+ "moji": "🇱🇮"
},
"flag_lk": {
"unicode": "1F1F1-1F1F0",
@@ -10527,8 +11674,10 @@
"keywords": [
"country",
"nation",
- "lk"
- ]
+ "lk",
+ "flag"
+ ],
+ "moji": "🇱🇰"
},
"flag_lr": {
"unicode": "1F1F1-1F1F7",
@@ -10543,8 +11692,10 @@
"keywords": [
"country",
"nation",
- "lr"
- ]
+ "lr",
+ "flag"
+ ],
+ "moji": "🇱🇷"
},
"flag_ls": {
"unicode": "1F1F1-1F1F8",
@@ -10559,8 +11710,10 @@
"keywords": [
"country",
"nation",
- "ls"
- ]
+ "ls",
+ "flag"
+ ],
+ "moji": "🇱🇸"
},
"flag_lt": {
"unicode": "1F1F1-1F1F9",
@@ -10576,8 +11729,10 @@
"country",
"nation",
"lietuva",
- "lt"
- ]
+ "lt",
+ "flag"
+ ],
+ "moji": "🇱🇹"
},
"flag_lu": {
"unicode": "1F1F1-1F1FA",
@@ -10594,8 +11749,10 @@
"nation",
"luxembourg",
"letzebuerg",
- "lu"
- ]
+ "lu",
+ "flag"
+ ],
+ "moji": "🇱🇺"
},
"flag_lv": {
"unicode": "1F1F1-1F1FB",
@@ -10611,8 +11768,10 @@
"country",
"nation",
"latvija",
- "lv"
- ]
+ "lv",
+ "flag"
+ ],
+ "moji": "🇱🇻"
},
"flag_ly": {
"unicode": "1F1F1-1F1FE",
@@ -10628,8 +11787,10 @@
"country",
"nation",
"libiyah",
- "ly"
- ]
+ "ly",
+ "flag"
+ ],
+ "moji": "🇱🇾"
},
"flag_ma": {
"unicode": "1F1F2-1F1E6",
@@ -10645,8 +11806,10 @@
"country",
"nation",
"al maghrib",
- "ma"
- ]
+ "ma",
+ "flag"
+ ],
+ "moji": "🇲🇦"
},
"flag_mc": {
"unicode": "1F1F2-1F1E8",
@@ -10661,8 +11824,10 @@
"keywords": [
"country",
"nation",
- "mc"
- ]
+ "mc",
+ "flag"
+ ],
+ "moji": "🇲🇨"
},
"flag_md": {
"unicode": "1F1F2-1F1E9",
@@ -10677,8 +11842,10 @@
"keywords": [
"country",
"nation",
- "md"
- ]
+ "md",
+ "flag"
+ ],
+ "moji": "🇲🇩"
},
"flag_me": {
"unicode": "1F1F2-1F1EA",
@@ -10694,12 +11861,14 @@
"country",
"nation",
"crna gora",
- "me"
- ]
+ "me",
+ "flag"
+ ],
+ "moji": "🇲🇪"
},
"flag_mf": {
"unicode": "1F1F2-1F1EB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "saint martin",
"shortname": ":flag_mf:",
"category": "flags",
@@ -10707,7 +11876,11 @@
":mf:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇲🇫"
},
"flag_mg": {
"unicode": "1F1F2-1F1EC",
@@ -10722,8 +11895,10 @@
"keywords": [
"country",
"nation",
- "mg"
- ]
+ "mg",
+ "flag"
+ ],
+ "moji": "🇲🇬"
},
"flag_mh": {
"unicode": "1F1F2-1F1ED",
@@ -10738,8 +11913,10 @@
"keywords": [
"country",
"nation",
- "mh"
- ]
+ "mh",
+ "flag"
+ ],
+ "moji": "🇲🇭"
},
"flag_mk": {
"unicode": "1F1F2-1F1F0",
@@ -10754,8 +11931,10 @@
"keywords": [
"country",
"nation",
- "mk"
- ]
+ "mk",
+ "flag"
+ ],
+ "moji": "🇲🇰"
},
"flag_ml": {
"unicode": "1F1F2-1F1F1",
@@ -10770,8 +11949,10 @@
"keywords": [
"country",
"nation",
- "ml"
- ]
+ "ml",
+ "flag"
+ ],
+ "moji": "🇲🇱"
},
"flag_mm": {
"unicode": "1F1F2-1F1F2",
@@ -10787,8 +11968,10 @@
"country",
"nation",
"myanma naingngandaw",
- "mm"
- ]
+ "mm",
+ "flag"
+ ],
+ "moji": "🇲🇲"
},
"flag_mn": {
"unicode": "1F1F2-1F1F3",
@@ -10804,8 +11987,10 @@
"country",
"nation",
"mongol uls",
- "mn"
- ]
+ "mn",
+ "flag"
+ ],
+ "moji": "🇲🇳"
},
"flag_mo": {
"unicode": "1F1F2-1F1F4",
@@ -10821,12 +12006,14 @@
"country",
"nation",
"aomen",
- "mo"
- ]
+ "mo",
+ "flag"
+ ],
+ "moji": "🇲🇴"
},
"flag_mp": {
"unicode": "1F1F2-1F1F5",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "northern mariana islands",
"shortname": ":flag_mp:",
"category": "flags",
@@ -10834,11 +12021,15 @@
":mp:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇲🇵"
},
"flag_mq": {
"unicode": "1F1F2-1F1F6",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "martinique",
"shortname": ":flag_mq:",
"category": "flags",
@@ -10846,7 +12037,11 @@
":mq:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇲🇶"
},
"flag_mr": {
"unicode": "1F1F2-1F1F7",
@@ -10862,8 +12057,10 @@
"country",
"nation",
"muritaniyah",
- "mr"
- ]
+ "mr",
+ "flag"
+ ],
+ "moji": "🇲🇷"
},
"flag_ms": {
"unicode": "1F1F2-1F1F8",
@@ -10878,8 +12075,10 @@
"keywords": [
"country",
"nation",
- "ms"
- ]
+ "ms",
+ "flag"
+ ],
+ "moji": "🇲🇸"
},
"flag_mt": {
"unicode": "1F1F2-1F1F9",
@@ -10894,8 +12093,10 @@
"keywords": [
"country",
"nation",
- "mt"
- ]
+ "mt",
+ "flag"
+ ],
+ "moji": "🇲🇹"
},
"flag_mu": {
"unicode": "1F1F2-1F1FA",
@@ -10910,8 +12111,10 @@
"keywords": [
"country",
"nation",
- "mu"
- ]
+ "mu",
+ "flag"
+ ],
+ "moji": "🇲🇺"
},
"flag_mv": {
"unicode": "1F1F2-1F1FB",
@@ -10927,8 +12130,10 @@
"country",
"nation",
"dhivehi raajje",
- "mv"
- ]
+ "mv",
+ "flag"
+ ],
+ "moji": "🇲🇻"
},
"flag_mw": {
"unicode": "1F1F2-1F1FC",
@@ -10943,8 +12148,10 @@
"keywords": [
"country",
"nation",
- "mw"
- ]
+ "mw",
+ "flag"
+ ],
+ "moji": "🇲🇼"
},
"flag_mx": {
"unicode": "1F1F2-1F1FD",
@@ -10959,8 +12166,11 @@
"keywords": [
"country",
"nation",
- "mx"
- ]
+ "mx",
+ "mexican",
+ "flag"
+ ],
+ "moji": "🇲🇽"
},
"flag_my": {
"unicode": "1F1F2-1F1FE",
@@ -10975,8 +12185,10 @@
"keywords": [
"country",
"nation",
- "my"
- ]
+ "my",
+ "flag"
+ ],
+ "moji": "🇲🇾"
},
"flag_mz": {
"unicode": "1F1F2-1F1FF",
@@ -10992,8 +12204,10 @@
"country",
"nation",
"mocambique",
- "mz"
- ]
+ "mz",
+ "flag"
+ ],
+ "moji": "🇲🇿"
},
"flag_na": {
"unicode": "1F1F3-1F1E6",
@@ -11008,8 +12222,10 @@
"keywords": [
"country",
"nation",
- "na"
- ]
+ "na",
+ "flag"
+ ],
+ "moji": "🇳🇦"
},
"flag_nc": {
"unicode": "1F1F3-1F1E8",
@@ -11027,8 +12243,10 @@
"nouvelle",
"cal&eacute;donie",
"caledonie",
- "nc"
- ]
+ "nc",
+ "flag"
+ ],
+ "moji": "🇳🇨"
},
"flag_ne": {
"unicode": "1F1F3-1F1EA",
@@ -11043,12 +12261,14 @@
"keywords": [
"country",
"nation",
- "ne"
- ]
+ "ne",
+ "flag"
+ ],
+ "moji": "🇳🇪"
},
"flag_nf": {
"unicode": "1F1F3-1F1EB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "norfolk island",
"shortname": ":flag_nf:",
"category": "flags",
@@ -11056,7 +12276,11 @@
":nf:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇳🇫"
},
"flag_ng": {
"unicode": "1F1F3-1F1EC",
@@ -11071,8 +12295,10 @@
"keywords": [
"country",
"nation",
- "ng"
- ]
+ "ng",
+ "flag"
+ ],
+ "moji": "🇳🇬"
},
"flag_ni": {
"unicode": "1F1F3-1F1EE",
@@ -11087,8 +12313,10 @@
"keywords": [
"country",
"nation",
- "ni"
- ]
+ "ni",
+ "flag"
+ ],
+ "moji": "🇳🇮"
},
"flag_nl": {
"unicode": "1F1F3-1F1F1",
@@ -11105,8 +12333,10 @@
"nation",
"nederland",
"holland",
- "nl"
- ]
+ "nl",
+ "flag"
+ ],
+ "moji": "🇳🇱"
},
"flag_no": {
"unicode": "1F1F3-1F1F4",
@@ -11122,8 +12352,10 @@
"country",
"nation",
"norge",
- "no"
- ]
+ "no",
+ "flag"
+ ],
+ "moji": "🇳🇴"
},
"flag_np": {
"unicode": "1F1F3-1F1F5",
@@ -11138,8 +12370,10 @@
"keywords": [
"country",
"nation",
- "np"
- ]
+ "np",
+ "flag"
+ ],
+ "moji": "🇳🇵"
},
"flag_nr": {
"unicode": "1F1F3-1F1F7",
@@ -11154,8 +12388,10 @@
"keywords": [
"country",
"nation",
- "nr"
- ]
+ "nr",
+ "flag"
+ ],
+ "moji": "🇳🇷"
},
"flag_nu": {
"unicode": "1F1F3-1F1FA",
@@ -11170,8 +12406,10 @@
"keywords": [
"country",
"nation",
- "nu"
- ]
+ "nu",
+ "flag"
+ ],
+ "moji": "🇳🇺"
},
"flag_nz": {
"unicode": "1F1F3-1F1FF",
@@ -11187,8 +12425,10 @@
"country",
"nation",
"aotearoa",
- "nz"
- ]
+ "nz",
+ "flag"
+ ],
+ "moji": "🇳🇿"
},
"flag_om": {
"unicode": "1F1F4-1F1F2",
@@ -11204,8 +12444,10 @@
"country",
"nation",
"saltanat uman",
- "om"
- ]
+ "om",
+ "flag"
+ ],
+ "moji": "🇴🇲"
},
"flag_pa": {
"unicode": "1F1F5-1F1E6",
@@ -11220,8 +12462,10 @@
"keywords": [
"country",
"nation",
- "pa"
- ]
+ "pa",
+ "flag"
+ ],
+ "moji": "🇵🇦"
},
"flag_pe": {
"unicode": "1F1F5-1F1EA",
@@ -11236,8 +12480,10 @@
"keywords": [
"country",
"nation",
- "pe"
- ]
+ "pe",
+ "flag"
+ ],
+ "moji": "🇵🇪"
},
"flag_pf": {
"unicode": "1F1F5-1F1EB",
@@ -11254,8 +12500,10 @@
"nation",
"polyn&eacute;sie fran&ccedil;aise",
"polynesie francaise",
- "pf"
- ]
+ "pf",
+ "flag"
+ ],
+ "moji": "🇵🇫"
},
"flag_pg": {
"unicode": "1F1F5-1F1EC",
@@ -11271,8 +12519,10 @@
"country",
"nation",
"papua niu gini",
- "pg"
- ]
+ "pg",
+ "flag"
+ ],
+ "moji": "🇵🇬"
},
"flag_ph": {
"unicode": "1F1F5-1F1ED",
@@ -11288,8 +12538,10 @@
"country",
"nation",
"pilipinas",
- "ph"
- ]
+ "ph",
+ "flag"
+ ],
+ "moji": "🇵🇭"
},
"flag_pk": {
"unicode": "1F1F5-1F1F0",
@@ -11304,8 +12556,10 @@
"keywords": [
"country",
"nation",
- "pk"
- ]
+ "pk",
+ "flag"
+ ],
+ "moji": "🇵🇰"
},
"flag_pl": {
"unicode": "1F1F5-1F1F1",
@@ -11321,12 +12575,14 @@
"country",
"nation",
"polska",
- "pl"
- ]
+ "pl",
+ "flag"
+ ],
+ "moji": "🇵🇱"
},
"flag_pm": {
"unicode": "1F1F5-1F1F2",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "saint pierre and miquelon",
"shortname": ":flag_pm:",
"category": "flags",
@@ -11334,11 +12590,15 @@
":pm:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇵🇲"
},
"flag_pn": {
"unicode": "1F1F5-1F1F3",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pitcairn",
"shortname": ":flag_pn:",
"category": "flags",
@@ -11346,7 +12606,11 @@
":pn:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇵🇳"
},
"flag_pr": {
"unicode": "1F1F5-1F1F7",
@@ -11361,8 +12625,10 @@
"keywords": [
"country",
"nation",
- "pr"
- ]
+ "pr",
+ "flag"
+ ],
+ "moji": "🇵🇷"
},
"flag_ps": {
"unicode": "1F1F5-1F1F8",
@@ -11377,8 +12643,10 @@
"keywords": [
"country",
"nation",
- "ps"
- ]
+ "ps",
+ "flag"
+ ],
+ "moji": "🇵🇸"
},
"flag_pt": {
"unicode": "1F1F5-1F1F9",
@@ -11393,8 +12661,10 @@
"keywords": [
"country",
"nation",
- "pt"
- ]
+ "pt",
+ "flag"
+ ],
+ "moji": "🇵🇹"
},
"flag_pw": {
"unicode": "1F1F5-1F1FC",
@@ -11410,8 +12680,10 @@
"country",
"nation",
"belau",
- "pw"
- ]
+ "pw",
+ "flag"
+ ],
+ "moji": "🇵🇼"
},
"flag_py": {
"unicode": "1F1F5-1F1FE",
@@ -11426,8 +12698,10 @@
"keywords": [
"country",
"nation",
- "py"
- ]
+ "py",
+ "flag"
+ ],
+ "moji": "🇵🇾"
},
"flag_qa": {
"unicode": "1F1F6-1F1E6",
@@ -11443,12 +12717,14 @@
"country",
"nation",
"dawlat qatar",
- "qa"
- ]
+ "qa",
+ "flag"
+ ],
+ "moji": "🇶🇦"
},
"flag_re": {
"unicode": "1F1F7-1F1EA",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "réunion",
"shortname": ":flag_re:",
"category": "flags",
@@ -11456,7 +12732,11 @@
":re:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇷🇪"
},
"flag_ro": {
"unicode": "1F1F7-1F1F4",
@@ -11471,8 +12751,10 @@
"keywords": [
"country",
"nation",
- "ro"
- ]
+ "ro",
+ "flag"
+ ],
+ "moji": "🇷🇴"
},
"flag_rs": {
"unicode": "1F1F7-1F1F8",
@@ -11488,8 +12770,10 @@
"country",
"nation",
"srbija",
- "rs"
- ]
+ "rs",
+ "flag"
+ ],
+ "moji": "🇷🇸"
},
"flag_ru": {
"unicode": "1F1F7-1F1FA",
@@ -11505,8 +12789,10 @@
"nation",
"russian",
"country",
- "ru"
- ]
+ "ru",
+ "flag"
+ ],
+ "moji": "🇷🇺"
},
"flag_rw": {
"unicode": "1F1F7-1F1FC",
@@ -11521,8 +12807,10 @@
"keywords": [
"country",
"nation",
- "rw"
- ]
+ "rw",
+ "flag"
+ ],
+ "moji": "🇷🇼"
},
"flag_sa": {
"unicode": "1F1F8-1F1E6",
@@ -11539,8 +12827,10 @@
"country",
"nation",
"al arabiyah as suudiyah",
- "sa"
- ]
+ "sa",
+ "flag"
+ ],
+ "moji": "🇸🇦"
},
"flag_sb": {
"unicode": "1F1F8-1F1E7",
@@ -11555,8 +12845,10 @@
"keywords": [
"country",
"nation",
- "sb"
- ]
+ "sb",
+ "flag"
+ ],
+ "moji": "🇸🇧"
},
"flag_sc": {
"unicode": "1F1F8-1F1E8",
@@ -11572,8 +12864,10 @@
"country",
"nation",
"seychelles",
- "sc"
- ]
+ "sc",
+ "flag"
+ ],
+ "moji": "🇸🇨"
},
"flag_sd": {
"unicode": "1F1F8-1F1E9",
@@ -11589,8 +12883,10 @@
"country",
"nation",
"as-sudan",
- "sd"
- ]
+ "sd",
+ "flag"
+ ],
+ "moji": "🇸🇩"
},
"flag_se": {
"unicode": "1F1F8-1F1EA",
@@ -11606,8 +12902,10 @@
"country",
"nation",
"sverige",
- "se"
- ]
+ "se",
+ "flag"
+ ],
+ "moji": "🇸🇪"
},
"flag_sg": {
"unicode": "1F1F8-1F1EC",
@@ -11622,8 +12920,10 @@
"keywords": [
"country",
"nation",
- "sg"
- ]
+ "sg",
+ "flag"
+ ],
+ "moji": "🇸🇬"
},
"flag_sh": {
"unicode": "1F1F8-1F1ED",
@@ -11638,8 +12938,10 @@
"keywords": [
"country",
"nation",
- "sh"
- ]
+ "sh",
+ "flag"
+ ],
+ "moji": "🇸🇭"
},
"flag_si": {
"unicode": "1F1F8-1F1EE",
@@ -11655,12 +12957,14 @@
"country",
"nation",
"slovenija",
- "si"
- ]
+ "si",
+ "flag"
+ ],
+ "moji": "🇸🇮"
},
"flag_sj": {
"unicode": "1F1F8-1F1EF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "svalbard and jan mayen",
"shortname": ":flag_sj:",
"category": "flags",
@@ -11668,7 +12972,11 @@
":sj:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇸🇯"
},
"flag_sk": {
"unicode": "1F1F8-1F1F0",
@@ -11683,8 +12991,10 @@
"keywords": [
"country",
"nation",
- "sk"
- ]
+ "sk",
+ "flag"
+ ],
+ "moji": "🇸🇰"
},
"flag_sl": {
"unicode": "1F1F8-1F1F1",
@@ -11699,8 +13009,10 @@
"keywords": [
"country",
"nation",
- "sl"
- ]
+ "sl",
+ "flag"
+ ],
+ "moji": "🇸🇱"
},
"flag_sm": {
"unicode": "1F1F8-1F1F2",
@@ -11715,8 +13027,10 @@
"keywords": [
"country",
"nation",
- "sm"
- ]
+ "sm",
+ "flag"
+ ],
+ "moji": "🇸🇲"
},
"flag_sn": {
"unicode": "1F1F8-1F1F3",
@@ -11731,8 +13045,10 @@
"keywords": [
"country",
"nation",
- "sn"
- ]
+ "sn",
+ "flag"
+ ],
+ "moji": "🇸🇳"
},
"flag_so": {
"unicode": "1F1F8-1F1F4",
@@ -11747,8 +13063,10 @@
"keywords": [
"country",
"nation",
- "so"
- ]
+ "so",
+ "flag"
+ ],
+ "moji": "🇸🇴"
},
"flag_sr": {
"unicode": "1F1F8-1F1F7",
@@ -11763,12 +13081,14 @@
"keywords": [
"country",
"nation",
- "sr"
- ]
+ "sr",
+ "flag"
+ ],
+ "moji": "🇸🇷"
},
"flag_ss": {
"unicode": "1F1F8-1F1F8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "south sudan",
"shortname": ":flag_ss:",
"category": "flags",
@@ -11776,7 +13096,11 @@
":ss:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇸🇸"
},
"flag_st": {
"unicode": "1F1F8-1F1F9",
@@ -11792,8 +13116,10 @@
"country",
"nation",
"sao tome e principe",
- "st"
- ]
+ "st",
+ "flag"
+ ],
+ "moji": "🇸🇹"
},
"flag_sv": {
"unicode": "1F1F8-1F1FB",
@@ -11808,12 +13134,14 @@
"keywords": [
"country",
"nation",
- "sv"
- ]
+ "sv",
+ "flag"
+ ],
+ "moji": "🇸🇻"
},
"flag_sx": {
"unicode": "1F1F8-1F1FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sint maarten",
"shortname": ":flag_sx:",
"category": "flags",
@@ -11821,7 +13149,11 @@
":sx:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇸🇽"
},
"flag_sy": {
"unicode": "1F1F8-1F1FE",
@@ -11836,8 +13168,10 @@
"keywords": [
"country",
"nation",
- "sy"
- ]
+ "sy",
+ "flag"
+ ],
+ "moji": "🇸🇾"
},
"flag_sz": {
"unicode": "1F1F8-1F1FF",
@@ -11852,12 +13186,14 @@
"keywords": [
"country",
"nation",
- "sz"
- ]
+ "sz",
+ "flag"
+ ],
+ "moji": "🇸🇿"
},
"flag_ta": {
"unicode": "1F1F9-1F1E6",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "tristan da cunha",
"shortname": ":flag_ta:",
"category": "flags",
@@ -11865,11 +13201,15 @@
":ta:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇹🇦"
},
"flag_tc": {
"unicode": "1F1F9-1F1E8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "turks and caicos islands",
"shortname": ":flag_tc:",
"category": "flags",
@@ -11877,7 +13217,11 @@
":tc:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇹🇨"
},
"flag_td": {
"unicode": "1F1F9-1F1E9",
@@ -11893,12 +13237,14 @@
"country",
"nation",
"tchad",
- "td"
- ]
+ "td",
+ "flag"
+ ],
+ "moji": "🇹🇩"
},
"flag_tf": {
"unicode": "1F1F9-1F1EB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "french southern territories",
"shortname": ":flag_tf:",
"category": "flags",
@@ -11906,7 +13252,11 @@
":tf:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇹🇫"
},
"flag_tg": {
"unicode": "1F1F9-1F1EC",
@@ -11922,8 +13272,10 @@
"country",
"nation",
"republique togolaise",
- "tg"
- ]
+ "tg",
+ "flag"
+ ],
+ "moji": "🇹🇬"
},
"flag_th": {
"unicode": "1F1F9-1F1ED",
@@ -11939,8 +13291,10 @@
"country",
"nation",
"prathet thai",
- "th"
- ]
+ "th",
+ "flag"
+ ],
+ "moji": "🇹🇭"
},
"flag_tj": {
"unicode": "1F1F9-1F1EF",
@@ -11956,12 +13310,14 @@
"country",
"nation",
"jumhurii tojikiston",
- "tj"
- ]
+ "tj",
+ "flag"
+ ],
+ "moji": "🇹🇯"
},
"flag_tk": {
"unicode": "1F1F9-1F1F0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "tokelau",
"shortname": ":flag_tk:",
"category": "flags",
@@ -11969,7 +13325,11 @@
":tk:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇹🇰"
},
"flag_tl": {
"unicode": "1F1F9-1F1F1",
@@ -11984,8 +13344,10 @@
"keywords": [
"country",
"nation",
- "tl"
- ]
+ "tl",
+ "flag"
+ ],
+ "moji": "🇹🇱"
},
"flag_tm": {
"unicode": "1F1F9-1F1F2",
@@ -12000,8 +13362,10 @@
"keywords": [
"country",
"nation",
- "tm"
- ]
+ "tm",
+ "flag"
+ ],
+ "moji": "🇹🇲"
},
"flag_tn": {
"unicode": "1F1F9-1F1F3",
@@ -12017,8 +13381,10 @@
"country",
"nation",
"tunis",
- "tn"
- ]
+ "tn",
+ "flag"
+ ],
+ "moji": "🇹🇳"
},
"flag_to": {
"unicode": "1F1F9-1F1F4",
@@ -12033,8 +13399,10 @@
"keywords": [
"country",
"nation",
- "to"
- ]
+ "to",
+ "flag"
+ ],
+ "moji": "🇹🇴"
},
"flag_tr": {
"unicode": "1F1F9-1F1F7",
@@ -12049,8 +13417,10 @@
"keywords": [
"country",
"nation",
- "turkiye"
- ]
+ "turkiye",
+ "flag"
+ ],
+ "moji": "🇹🇷"
},
"flag_tt": {
"unicode": "1F1F9-1F1F9",
@@ -12065,8 +13435,10 @@
"keywords": [
"country",
"nation",
- "tt"
- ]
+ "tt",
+ "flag"
+ ],
+ "moji": "🇹🇹"
},
"flag_tv": {
"unicode": "1F1F9-1F1FB",
@@ -12081,8 +13453,10 @@
"keywords": [
"country",
"nation",
- "tv"
- ]
+ "tv",
+ "flag"
+ ],
+ "moji": "🇹🇻"
},
"flag_tw": {
"unicode": "1F1F9-1F1FC",
@@ -12098,8 +13472,10 @@
"country",
"nation",
"taiwan",
- "tw"
- ]
+ "tw",
+ "flag"
+ ],
+ "moji": "🇹🇼"
},
"flag_tz": {
"unicode": "1F1F9-1F1FF",
@@ -12114,8 +13490,10 @@
"keywords": [
"country",
"nation",
- "tz"
- ]
+ "tz",
+ "flag"
+ ],
+ "moji": "🇹🇿"
},
"flag_ua": {
"unicode": "1F1FA-1F1E6",
@@ -12131,8 +13509,10 @@
"country",
"nation",
"ukrayina",
- "ua"
- ]
+ "ua",
+ "flag"
+ ],
+ "moji": "🇺🇦"
},
"flag_ug": {
"unicode": "1F1FA-1F1EC",
@@ -12147,12 +13527,14 @@
"keywords": [
"country",
"nation",
- "ug"
- ]
+ "ug",
+ "flag"
+ ],
+ "moji": "🇺🇬"
},
"flag_um": {
"unicode": "1F1FA-1F1F2",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "united states minor outlying islands",
"shortname": ":flag_um:",
"category": "flags",
@@ -12160,7 +13542,11 @@
":um:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇺🇲"
},
"flag_us": {
"unicode": "1F1FA-1F1F8",
@@ -12180,8 +13566,10 @@
"united states of america",
"america",
"old glory",
- "us"
- ]
+ "us",
+ "flag"
+ ],
+ "moji": "🇺🇸"
},
"flag_uy": {
"unicode": "1F1FA-1F1FE",
@@ -12196,8 +13584,10 @@
"keywords": [
"country",
"nation",
- "uy"
- ]
+ "uy",
+ "flag"
+ ],
+ "moji": "🇺🇾"
},
"flag_uz": {
"unicode": "1F1FA-1F1FF",
@@ -12213,8 +13603,10 @@
"country",
"nation",
"uzbekiston respublikasi",
- "uz"
- ]
+ "uz",
+ "flag"
+ ],
+ "moji": "🇺🇿"
},
"flag_va": {
"unicode": "1F1FB-1F1E6",
@@ -12229,8 +13621,10 @@
"keywords": [
"country",
"nation",
- "va"
- ]
+ "va",
+ "flag"
+ ],
+ "moji": "🇻🇦"
},
"flag_vc": {
"unicode": "1F1FB-1F1E8",
@@ -12245,8 +13639,10 @@
"keywords": [
"country",
"nation",
- "vc"
- ]
+ "vc",
+ "flag"
+ ],
+ "moji": "🇻🇨"
},
"flag_ve": {
"unicode": "1F1FB-1F1EA",
@@ -12261,12 +13657,14 @@
"keywords": [
"country",
"nation",
- "ve"
- ]
+ "ve",
+ "flag"
+ ],
+ "moji": "🇻🇪"
},
"flag_vg": {
"unicode": "1F1FB-1F1EC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "british virgin islands",
"shortname": ":flag_vg:",
"category": "flags",
@@ -12274,7 +13672,11 @@
":vg:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇻🇬"
},
"flag_vi": {
"unicode": "1F1FB-1F1EE",
@@ -12289,8 +13691,10 @@
"keywords": [
"country",
"nation",
- "vi"
- ]
+ "vi",
+ "flag"
+ ],
+ "moji": "🇻🇮"
},
"flag_vn": {
"unicode": "1F1FB-1F1F3",
@@ -12306,8 +13710,10 @@
"country",
"nation",
"viet nam",
- "vn"
- ]
+ "vn",
+ "flag"
+ ],
+ "moji": "🇻🇳"
},
"flag_vu": {
"unicode": "1F1FB-1F1FA",
@@ -12322,8 +13728,10 @@
"keywords": [
"country",
"nation",
- "vu"
- ]
+ "vu",
+ "flag"
+ ],
+ "moji": "🇻🇺"
},
"flag_wf": {
"unicode": "1F1FC-1F1EB",
@@ -12338,23 +13746,27 @@
"keywords": [
"country",
"nation",
- "wf"
- ]
+ "wf",
+ "flag"
+ ],
+ "moji": "🇼🇫"
},
"flag_white": {
"unicode": "1F3F3",
"unicode_alternates": [],
"name": "waving white flag",
"shortname": ":flag_white:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":waving_white_flag:"
],
"aliases_ascii": [],
"keywords": [
"symbol",
- "signal"
- ]
+ "signal",
+ "object"
+ ],
+ "moji": "🏳"
},
"flag_ws": {
"unicode": "1F1FC-1F1F8",
@@ -12370,8 +13782,10 @@
"country",
"nation",
"american samoa",
- "ws"
- ]
+ "ws",
+ "flag"
+ ],
+ "moji": "🇼🇸"
},
"flag_xk": {
"unicode": "1F1FD-1F1F0",
@@ -12386,8 +13800,10 @@
"keywords": [
"country",
"nation",
- "xk"
- ]
+ "xk",
+ "flag"
+ ],
+ "moji": "🇽🇰"
},
"flag_ye": {
"unicode": "1F1FE-1F1EA",
@@ -12403,12 +13819,14 @@
"country",
"nation",
"al yaman",
- "ye"
- ]
+ "ye",
+ "flag"
+ ],
+ "moji": "🇾🇪"
},
"flag_yt": {
"unicode": "1F1FE-1F1F9",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mayotte",
"shortname": ":flag_yt:",
"category": "flags",
@@ -12416,7 +13834,11 @@
":yt:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "country",
+ "flag"
+ ],
+ "moji": "🇾🇹"
},
"flag_za": {
"unicode": "1F1FF-1F1E6",
@@ -12430,8 +13852,10 @@
"aliases_ascii": [],
"keywords": [
"country",
- "nation"
- ]
+ "nation",
+ "flag"
+ ],
+ "moji": "🇿🇦"
},
"flag_zm": {
"unicode": "1F1FF-1F1F2",
@@ -12446,8 +13870,10 @@
"keywords": [
"country",
"nation",
- "zm"
- ]
+ "zm",
+ "flag"
+ ],
+ "moji": "🇿🇲"
},
"flag_zw": {
"unicode": "1F1FF-1F1FC",
@@ -12462,8 +13888,10 @@
"keywords": [
"country",
"nation",
- "zw"
- ]
+ "zw",
+ "flag"
+ ],
+ "moji": "🇿🇼"
},
"flags": {
"unicode": "1F38F",
@@ -12484,11 +13912,11 @@
"boys",
"celebration",
"happiness",
- "carp",
"streamers",
- "japanese",
"holiday",
- "flags"
+ "flags",
+ "object",
+ "japan"
],
"moji": "🎏"
},
@@ -12501,56 +13929,25 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "dark"
+ "dark",
+ "electronics",
+ "object"
],
"moji": "🔦"
},
"fleur-de-lis": {
"unicode": "269C",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "fleur-de-lis",
"shortname": ":fleur-de-lis:",
"category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "symbol"
- ]
- },
- "flip_phone": {
- "unicode": "1F581",
- "unicode_alternates": [],
- "name": "clamshell mobile phone",
- "shortname": ":flip_phone:",
- "category": "objects_symbols",
- "aliases": [
- ":clamshell_mobile_phone:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "cellphone"
- ]
- },
- "floppy_black": {
- "unicode": "1F5AA",
- "unicode_alternates": [],
- "name": "black hard shell floppy disk",
- "shortname": ":floppy_black:",
- "category": "objects_symbols",
- "aliases": [
- ":black_hard_shell_floppy_disk:"
+ "symbol",
+ "object"
],
- "aliases_ascii": [],
- "keywords": [
- "oldschool",
- "save",
- "technology",
- "storage",
- "information",
- "computer",
- "drive",
- "megabyte"
- ]
+ "moji": "⚜"
},
"floppy_disk": {
"unicode": "1F4BE",
@@ -12570,37 +13967,18 @@
"information",
"computer",
"drive",
- "megabyte"
+ "megabyte",
+ "electronics",
+ "office"
],
"moji": "💾"
},
- "floppy_white": {
- "unicode": "1F5AB",
- "unicode_alternates": [],
- "name": "white hard shell floppy disk",
- "shortname": ":floppy_white:",
- "category": "objects_symbols",
- "aliases": [
- ":white_hard_shell_floppy_disk:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "oldschool",
- "save",
- "technology",
- "storage",
- "information",
- "computer",
- "drive",
- "megabyte"
- ]
- },
"flower_playing_cards": {
"unicode": "1F3B4",
"unicode_alternates": [],
"name": "flower playing cards",
"shortname": ":flower_playing_cards:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12610,7 +13988,9 @@
"game",
"august",
"moon",
- "special"
+ "special",
+ "object",
+ "symbol"
],
"moji": "🎴"
},
@@ -12619,7 +13999,7 @@
"unicode_alternates": [],
"name": "flushed face",
"shortname": ":flushed:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":$",
@@ -12630,11 +14010,13 @@
"face",
"flattered",
"flush",
- "blush",
"red",
"pink",
"cheeks",
- "shy"
+ "shy",
+ "smiley",
+ "emotion",
+ "omg"
],
"moji": "😳"
},
@@ -12650,15 +14032,18 @@
"weather",
"damp",
"cloud",
- "hazy"
- ]
+ "hazy",
+ "sky",
+ "cold"
+ ],
+ "moji": "🌫"
},
"foggy": {
"unicode": "1F301",
"unicode_alternates": [],
"name": "foggy",
"shortname": ":foggy:",
- "category": "nature",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12667,43 +14052,21 @@
"bridge",
"weather",
"fog",
- "foggy"
+ "foggy",
+ "places",
+ "building",
+ "sky",
+ "travel",
+ "vacation"
],
"moji": "🌁"
},
- "folder": {
- "unicode": "1F5C0",
- "unicode_alternates": [],
- "name": "folder",
- "shortname": ":folder:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "documents"
- ]
- },
- "folder_open": {
- "unicode": "1F5C1",
- "unicode_alternates": [],
- "name": "open folder",
- "shortname": ":folder_open:",
- "category": "objects_symbols",
- "aliases": [
- ":open_folder:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "documents",
- "load"
- ]
- },
"football": {
"unicode": "1F3C8",
"unicode_alternates": [],
"name": "american football",
"shortname": ":football:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12714,7 +14077,8 @@
"ball",
"sport",
"america",
- "american"
+ "american",
+ "game"
],
"moji": "🏈"
},
@@ -12723,7 +14087,7 @@
"unicode_alternates": [],
"name": "footprints",
"shortname": ":footprints:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12736,7 +14100,7 @@
"unicode_alternates": [],
"name": "fork and knife",
"shortname": ":fork_and_knife:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12747,7 +14111,9 @@
"restaurant",
"meal",
"food",
- "eat"
+ "eat",
+ "object",
+ "weapon"
],
"moji": "🍴"
},
@@ -12756,7 +14122,7 @@
"unicode_alternates": [],
"name": "fork and knife with plate",
"shortname": ":fork_knife_plate:",
- "category": "travel_places",
+ "category": "food",
"aliases": [
":fork_and_knife_with_plate:"
],
@@ -12768,8 +14134,10 @@
"lunch",
"dinner",
"utensils",
- "setting"
- ]
+ "setting",
+ "object"
+ ],
+ "moji": "🍽"
},
"fountain": {
"unicode": "26F2",
@@ -12778,11 +14146,13 @@
],
"name": "fountain",
"shortname": ":fountain:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "photo"
+ "photo",
+ "travel",
+ "vacation"
],
"moji": "⛲"
},
@@ -12792,15 +14162,18 @@
"unicode_alternates": [
"0034-FE0F-20E3"
],
- "name": "digit four",
+ "name": "keycap digit four",
"shortname": ":four:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"4",
"blue-square",
- "numbers"
+ "numbers",
+ "number",
+ "math",
+ "symbol"
]
},
"four_leaf_clover": {
@@ -12823,74 +14196,75 @@
"irish",
"saint",
"patrick",
- "green"
+ "green",
+ "sol"
],
"moji": "🍀"
},
- "frame_photo": {
- "unicode": "1F5BC",
+ "fox": {
+ "unicode": "1F98A",
"unicode_alternates": [],
- "name": "frame with picture",
- "shortname": ":frame_photo:",
- "category": "objects_symbols",
+ "name": "fox face",
+ "shortname": ":fox:",
+ "category": "nature",
"aliases": [
- ":frame_with_picture:"
+ ":fox_face:"
],
"aliases_ascii": [],
- "keywords": [
- "photo"
- ]
+ "keywords": [],
+ "moji": "🦊"
},
- "frame_tiles": {
- "unicode": "1F5BD",
+ "frame_photo": {
+ "unicode": "1F5BC",
"unicode_alternates": [],
- "name": "frame with tiles",
- "shortname": ":frame_tiles:",
- "category": "objects_symbols",
+ "name": "frame with picture",
+ "shortname": ":frame_photo:",
+ "category": "objects",
"aliases": [
- ":frame_with_tiles:"
+ ":frame_with_picture:"
],
"aliases_ascii": [],
"keywords": [
"photo",
- "painting"
- ]
- },
- "frame_x": {
- "unicode": "1F5BE",
- "unicode_alternates": [],
- "name": "frame with an x",
- "shortname": ":frame_x:",
- "category": "objects_symbols",
- "aliases": [
- ":frame_with_an_x:"
+ "travel",
+ "vacation"
],
- "aliases_ascii": [],
- "keywords": [
- "photo",
- "painting"
- ]
+ "moji": "🖼"
},
"free": {
"unicode": "1F193",
"unicode_alternates": [],
"name": "squared free",
"shortname": ":free:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "words"
+ "words",
+ "symbol"
],
"moji": "🆓"
},
+ "french_bread": {
+ "unicode": "1F956",
+ "unicode_alternates": [],
+ "name": "baguette bread",
+ "shortname": ":french_bread:",
+ "category": "food",
+ "aliases": [
+ ":baguette_bread:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥖"
+ },
"fried_shrimp": {
"unicode": "1F364",
"unicode_alternates": [],
"name": "fried shrimp",
"shortname": ":fried_shrimp:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12909,7 +14283,7 @@
"unicode_alternates": [],
"name": "french fries",
"shortname": ":fries:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -12920,7 +14294,8 @@
"potato",
"fry",
"russet",
- "idaho"
+ "idaho",
+ "america"
],
"moji": "🍟"
},
@@ -12934,7 +14309,8 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife"
],
"moji": "🐸"
},
@@ -12943,7 +14319,7 @@
"unicode_alternates": [],
"name": "frowning face with open mouth",
"shortname": ":frowning:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":anguished:"
],
@@ -12955,13 +14331,16 @@
"sad",
"pout",
"sulk",
- "glower"
+ "glower",
+ "smiley",
+ "surprised",
+ "emotion"
],
"moji": "😦"
},
"frowning2": {
"unicode": "2639",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white frowning face",
"shortname": ":frowning2:",
"category": "people",
@@ -12971,8 +14350,12 @@
"aliases_ascii": [],
"keywords": [
"frown",
- "person"
- ]
+ "person",
+ "sad",
+ "smiley",
+ "emotion"
+ ],
+ "moji": "☹"
},
"fuelpump": {
"unicode": "26FD",
@@ -12981,12 +14364,14 @@
],
"name": "fuel pump",
"shortname": ":fuelpump:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"gas station",
- "petroleum"
+ "petroleum",
+ "object",
+ "gas pump"
],
"moji": "⛽"
},
@@ -13010,7 +14395,8 @@
"monster",
"spooky",
"werewolves",
- "twilight"
+ "twilight",
+ "space"
],
"moji": "🌕"
},
@@ -13029,12 +14415,13 @@
"anthropomorphic",
"face",
"sky",
- "night",
"cheese",
"phase",
"spooky",
"werewolves",
- "monsters"
+ "monsters",
+ "space",
+ "goodnight"
],
"moji": "🌝"
},
@@ -13043,23 +14430,24 @@
"unicode_alternates": [],
"name": "game die",
"shortname": ":game_die:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"dice",
"game",
"die",
- "dice",
"craps",
"gamble",
- "play"
+ "play",
+ "object",
+ "boys night"
],
"moji": "🎲"
},
"gear": {
"unicode": "2699",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "gear",
"shortname": ":gear:",
"category": "objects",
@@ -13068,19 +14456,22 @@
"keywords": [
"object",
"tool"
- ]
+ ],
+ "moji": "⚙"
},
"gem": {
"unicode": "1F48E",
"unicode_alternates": [],
"name": "gem stone",
"shortname": ":gem:",
- "category": "emoticons",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue",
- "ruby"
+ "ruby",
+ "object",
+ "gem"
],
"moji": "💎"
},
@@ -13091,7 +14482,7 @@
],
"name": "gemini",
"shortname": ":gemini:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13103,9 +14494,8 @@
"stars",
"zodiac",
"sign",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♊"
},
@@ -13114,11 +14504,13 @@
"unicode_alternates": [],
"name": "ghost",
"shortname": ":ghost:",
- "category": "objects",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "halloween"
+ "halloween",
+ "holidays",
+ "monster"
],
"moji": "👻"
},
@@ -13136,11 +14528,12 @@
"present",
"xmas",
"gift",
- "present",
"wrap",
"package",
- "birthday",
- "wedding"
+ "wedding",
+ "object",
+ "holidays",
+ "parties"
],
"moji": "🎁"
},
@@ -13149,12 +14542,14 @@
"unicode_alternates": [],
"name": "heart with ribbon",
"shortname": ":gift_heart:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"love",
- "valentines"
+ "valentines",
+ "symbol",
+ "condolence"
],
"moji": "💝"
},
@@ -13163,18 +14558,22 @@
"unicode_alternates": [],
"name": "girl",
"shortname": ":girl:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"female",
- "woman"
+ "woman",
+ "people",
+ "women",
+ "baby",
+ "diversity"
],
"moji": "👧"
},
"girl_tone1": {
"unicode": "1F467-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "girl tone 1",
"shortname": ":girl_tone1:",
"category": "people",
@@ -13184,11 +14583,12 @@
"female",
"kid",
"child"
- ]
+ ],
+ "moji": "👧🏻"
},
"girl_tone2": {
"unicode": "1F467-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "girl tone 2",
"shortname": ":girl_tone2:",
"category": "people",
@@ -13198,11 +14598,12 @@
"female",
"kid",
"child"
- ]
+ ],
+ "moji": "👧🏼"
},
"girl_tone3": {
"unicode": "1F467-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "girl tone 3",
"shortname": ":girl_tone3:",
"category": "people",
@@ -13212,11 +14613,12 @@
"female",
"kid",
"child"
- ]
+ ],
+ "moji": "👧🏽"
},
"girl_tone4": {
"unicode": "1F467-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "girl tone 4",
"shortname": ":girl_tone4:",
"category": "people",
@@ -13226,11 +14628,12 @@
"female",
"kid",
"child"
- ]
+ ],
+ "moji": "👧🏾"
},
"girl_tone5": {
"unicode": "1F467-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "girl tone 5",
"shortname": ":girl_tone5:",
"category": "people",
@@ -13240,42 +14643,43 @@
"female",
"kid",
"child"
- ]
- },
- "girls_symbol": {
- "unicode": "1F6CA",
- "unicode_alternates": [],
- "name": "girls symbol",
- "shortname": ":girls_symbol:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "female",
- "child"
- ]
+ ],
+ "moji": "👧🏿"
},
"globe_with_meridians": {
"unicode": "1F310",
"unicode_alternates": [],
"name": "globe with meridians",
"shortname": ":globe_with_meridians:",
- "category": "nature",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"earth",
"international",
"world",
- "earth",
"meridian",
"globe",
"space",
"planet",
- "home"
+ "home",
+ "symbol"
],
"moji": "🌐"
},
+ "goal": {
+ "unicode": "1F945",
+ "unicode_alternates": [],
+ "name": "goal net",
+ "shortname": ":goal:",
+ "category": "activity",
+ "aliases": [
+ ":goal_net:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥅"
+ },
"goat": {
"unicode": "1F410",
"unicode_alternates": [],
@@ -13302,12 +14706,17 @@
],
"name": "flag in hole",
"shortname": ":golf:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"business",
- "sports"
+ "sports",
+ "game",
+ "ball",
+ "vacation",
+ "sport",
+ "golf"
],
"moji": "⛳"
},
@@ -13324,15 +14733,32 @@
"par",
"birdie",
"eagle",
- "mulligan"
- ]
+ "mulligan",
+ "men",
+ "game",
+ "ball",
+ "vacation",
+ "golf"
+ ],
+ "moji": "🏌"
+ },
+ "gorilla": {
+ "unicode": "1F98D",
+ "unicode_alternates": [],
+ "name": "gorilla",
+ "shortname": ":gorilla:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦍"
},
"grapes": {
"unicode": "1F347",
"unicode_alternates": [],
"name": "grapes",
"shortname": ":grapes:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13341,7 +14767,6 @@
"grapes",
"wine",
"vinegar",
- "fruit",
"cluster",
"vine"
],
@@ -13352,19 +14777,19 @@
"unicode_alternates": [],
"name": "green apple",
"shortname": ":green_apple:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fruit",
"nature",
"apple",
- "fruit",
"green",
"pie",
"granny",
"smith",
- "core"
+ "core",
+ "food"
],
"moji": "🍏"
},
@@ -13379,7 +14804,10 @@
"keywords": [
"knowledge",
"library",
- "read"
+ "read",
+ "object",
+ "office",
+ "book"
],
"moji": "📗"
},
@@ -13388,7 +14816,7 @@
"unicode_alternates": [],
"name": "green heart",
"shortname": ":green_heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13398,14 +14826,14 @@
"valentines",
"green",
"heart",
- "love",
"nature",
"rebirth",
"reborn",
"jealous",
"clingy",
"envious",
- "possessive"
+ "possessive",
+ "symbol"
],
"moji": "💚"
},
@@ -13414,11 +14842,13 @@
"unicode_alternates": [],
"name": "white exclamation mark ornament",
"shortname": ":grey_exclamation:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "surprise"
+ "surprise",
+ "symbol",
+ "punctuation"
],
"moji": "❕"
},
@@ -13427,11 +14857,13 @@
"unicode_alternates": [],
"name": "white question mark ornament",
"shortname": ":grey_question:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "doubts"
+ "doubts",
+ "symbol",
+ "punctuation"
],
"moji": "❔"
},
@@ -13440,16 +14872,19 @@
"unicode_alternates": [],
"name": "grimacing face",
"shortname": ":grimacing:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"face",
"grimace",
"teeth",
- "grimace",
"disapprove",
- "pain"
+ "pain",
+ "silly",
+ "smiley",
+ "emotion",
+ "selfie"
],
"moji": "😬"
},
@@ -13458,7 +14893,7 @@
"unicode_alternates": [],
"name": "grinning face with smiling eyes",
"shortname": ":grin:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13469,8 +14904,11 @@
"grin",
"grinning",
"smiling",
- "smile",
- "smiley"
+ "smiley",
+ "silly",
+ "emotion",
+ "good",
+ "selfie"
],
"moji": "😁"
},
@@ -13479,7 +14917,7 @@
"unicode_alternates": [],
"name": "grinning face",
"shortname": ":grinning:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13490,17 +14928,17 @@
"grin",
"grinning",
"smiling",
- "smile",
- "smiley"
+ "smiley",
+ "emotion"
],
- "moji": "🕧"
+ "moji": "😀"
},
"guardsman": {
"unicode": "1F482",
"unicode_alternates": [],
"name": "guardsman",
"shortname": ":guardsman:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13513,16 +14951,19 @@
"guard",
"bearskin",
"hat",
- "british",
"queen",
"ceremonial",
- "military"
+ "military",
+ "people",
+ "men",
+ "diversity",
+ "job"
],
"moji": "💂"
},
"guardsman_tone1": {
"unicode": "1F482-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guardsman tone 1",
"shortname": ":guardsman_tone1:",
"category": "people",
@@ -13537,15 +14978,15 @@
"guard",
"bearskin",
"hat",
- "british",
"queen",
"ceremonial",
"military"
- ]
+ ],
+ "moji": "💂🏻"
},
"guardsman_tone2": {
"unicode": "1F482-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guardsman tone 2",
"shortname": ":guardsman_tone2:",
"category": "people",
@@ -13560,15 +15001,15 @@
"guard",
"bearskin",
"hat",
- "british",
"queen",
"ceremonial",
"military"
- ]
+ ],
+ "moji": "💂🏼"
},
"guardsman_tone3": {
"unicode": "1F482-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guardsman tone 3",
"shortname": ":guardsman_tone3:",
"category": "people",
@@ -13583,15 +15024,15 @@
"guard",
"bearskin",
"hat",
- "british",
"queen",
"ceremonial",
"military"
- ]
+ ],
+ "moji": "💂🏽"
},
"guardsman_tone4": {
"unicode": "1F482-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guardsman tone 4",
"shortname": ":guardsman_tone4:",
"category": "people",
@@ -13606,15 +15047,15 @@
"guard",
"bearskin",
"hat",
- "british",
"queen",
"ceremonial",
"military"
- ]
+ ],
+ "moji": "💂🏾"
},
"guardsman_tone5": {
"unicode": "1F482-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "guardsman tone 5",
"shortname": ":guardsman_tone5:",
"category": "people",
@@ -13629,18 +15070,18 @@
"guard",
"bearskin",
"hat",
- "british",
"queen",
"ceremonial",
"military"
- ]
+ ],
+ "moji": "💂🏿"
},
"guitar": {
"unicode": "1F3B8",
"unicode_alternates": [],
"name": "guitar",
"shortname": ":guitar:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13648,12 +15089,11 @@
"music",
"guitar",
"string",
- "music",
- "instrument",
"jam",
"rock",
"acoustic",
- "electric"
+ "electric",
+ "instruments"
],
"moji": "🎸"
},
@@ -13667,7 +15107,11 @@
"aliases_ascii": [],
"keywords": [
"violence",
- "weapon"
+ "weapon",
+ "object",
+ "dead",
+ "gun",
+ "sarcastic"
],
"moji": "🔫"
},
@@ -13676,19 +15120,22 @@
"unicode_alternates": [],
"name": "haircut",
"shortname": ":haircut:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"female",
"girl",
- "woman"
+ "woman",
+ "people",
+ "women",
+ "diversity"
],
"moji": "💇"
},
"haircut_tone1": {
"unicode": "1F487-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "haircut tone 1",
"shortname": ":haircut_tone1:",
"category": "people",
@@ -13698,11 +15145,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💇🏻"
},
"haircut_tone2": {
"unicode": "1F487-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "haircut tone 2",
"shortname": ":haircut_tone2:",
"category": "people",
@@ -13712,11 +15160,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💇🏼"
},
"haircut_tone3": {
"unicode": "1F487-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "haircut tone 3",
"shortname": ":haircut_tone3:",
"category": "people",
@@ -13726,11 +15175,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💇🏽"
},
"haircut_tone4": {
"unicode": "1F487-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "haircut tone 4",
"shortname": ":haircut_tone4:",
"category": "people",
@@ -13740,11 +15190,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💇🏾"
},
"haircut_tone5": {
"unicode": "1F487-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "haircut tone 5",
"shortname": ":haircut_tone5:",
"category": "people",
@@ -13754,14 +15205,15 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💇🏿"
},
"hamburger": {
"unicode": "1F354",
"unicode_alternates": [],
"name": "hamburger",
"shortname": ":hamburger:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -13769,9 +15221,9 @@
"meat",
"hamburger",
"burger",
- "meat",
"cow",
- "beef"
+ "beef",
+ "america"
],
"moji": "🍔"
},
@@ -13789,13 +15241,16 @@
"law",
"ruling",
"tools",
- "verdict"
+ "verdict",
+ "object",
+ "tool",
+ "weapon"
],
"moji": "🔨"
},
"hammer_pick": {
"unicode": "2692",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "hammer and pick",
"shortname": ":hammer_pick:",
"category": "objects",
@@ -13805,8 +15260,10 @@
"aliases_ascii": [],
"keywords": [
"object",
- "tool"
- ]
+ "tool",
+ "weapon"
+ ],
+ "moji": "⚒"
},
"hamster": {
"unicode": "1F439",
@@ -13836,29 +15293,16 @@
"hi",
"five",
"stop",
- "halt"
- ]
- },
- "hand_splayed_reverse": {
- "unicode": "1F591",
- "unicode_alternates": [],
- "name": "reversed raised hand with fingers splayed",
- "shortname": ":hand_splayed_reverse:",
- "category": "people",
- "aliases": [
- ":reversed_raised_hand_with_fingers_splayed:"
+ "halt",
+ "body",
+ "hands",
+ "diversity"
],
- "aliases_ascii": [],
- "keywords": [
- "hi",
- "five",
- "stop",
- "halt"
- ]
+ "moji": "🖐"
},
"hand_splayed_tone1": {
"unicode": "1F590-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with fingers splayed tone 1",
"shortname": ":hand_splayed_tone1:",
"category": "people",
@@ -13871,11 +15315,12 @@
"five",
"stop",
"halt"
- ]
+ ],
+ "moji": "🖐🏻"
},
"hand_splayed_tone2": {
"unicode": "1F590-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with fingers splayed tone 2",
"shortname": ":hand_splayed_tone2:",
"category": "people",
@@ -13888,11 +15333,12 @@
"five",
"stop",
"halt"
- ]
+ ],
+ "moji": "🖐🏼"
},
"hand_splayed_tone3": {
"unicode": "1F590-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with fingers splayed tone 3",
"shortname": ":hand_splayed_tone3:",
"category": "people",
@@ -13905,11 +15351,12 @@
"five",
"stop",
"halt"
- ]
+ ],
+ "moji": "🖐🏽"
},
"hand_splayed_tone4": {
"unicode": "1F590-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with fingers splayed tone 4",
"shortname": ":hand_splayed_tone4:",
"category": "people",
@@ -13922,11 +15369,12 @@
"five",
"stop",
"halt"
- ]
+ ],
+ "moji": "🖐🏾"
},
"hand_splayed_tone5": {
"unicode": "1F590-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with fingers splayed tone 5",
"shortname": ":hand_splayed_tone5:",
"category": "people",
@@ -13939,57 +15387,170 @@
"five",
"stop",
"halt"
- ]
- },
- "hand_victory": {
- "unicode": "1F594",
- "unicode_alternates": [],
- "name": "reversed victory hand",
- "shortname": ":hand_victory:",
- "category": "people",
- "aliases": [
- ":reversed_victory_hand:"
],
- "aliases_ascii": [],
- "keywords": [
- "fu"
- ]
+ "moji": "🖐🏿"
},
"handbag": {
"unicode": "1F45C",
"unicode_alternates": [],
"name": "handbag",
"shortname": ":handbag:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"accessories",
"accessory",
"bag",
- "fashion"
+ "fashion",
+ "women",
+ "vacation"
],
"moji": "👜"
},
- "hard_disk": {
- "unicode": "1F5B4",
+ "handball": {
+ "unicode": "1F93E",
"unicode_alternates": [],
- "name": "hard disk",
- "shortname": ":hard_disk:",
- "category": "objects_symbols",
+ "name": "handball",
+ "shortname": ":handball:",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
- "keywords": [
- "save",
- "technology",
- "storage",
- "information",
- "computer",
- "drive",
- "megabyte",
- "gigabyte",
- "hd"
- ]
+ "keywords": [],
+ "moji": "🤾"
+ },
+ "handball_tone1": {
+ "unicode": "1F93E-1F3FB",
+ "unicode_alternates": [],
+ "name": "handball tone 1",
+ "shortname": ":handball_tone1:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤾🏻"
+ },
+ "handball_tone2": {
+ "unicode": "1F93E-1F3FC",
+ "unicode_alternates": [],
+ "name": "handball tone 2",
+ "shortname": ":handball_tone2:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤾🏼"
+ },
+ "handball_tone3": {
+ "unicode": "1F93E-1F3FD",
+ "unicode_alternates": [],
+ "name": "handball tone 3",
+ "shortname": ":handball_tone3:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤾🏽"
+ },
+ "handball_tone4": {
+ "unicode": "1F93E-1F3FE",
+ "unicode_alternates": [],
+ "name": "handball tone 4",
+ "shortname": ":handball_tone4:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤾🏾"
+ },
+ "handball_tone5": {
+ "unicode": "1F93E-1F3FF",
+ "unicode_alternates": [],
+ "name": "handball tone 5",
+ "shortname": ":handball_tone5:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤾🏿"
+ },
+ "handshake": {
+ "unicode": "1F91D",
+ "unicode_alternates": [],
+ "name": "handshake",
+ "shortname": ":handshake:",
+ "category": "people",
+ "aliases": [
+ ":shaking_hands:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤝"
+ },
+ "handshake_tone1": {
+ "unicode": "1F91D-1F3FB",
+ "unicode_alternates": [],
+ "name": "handshake tone 1",
+ "shortname": ":handshake_tone1:",
+ "category": "people",
+ "aliases": [
+ ":shaking_hands_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤝🏻"
+ },
+ "handshake_tone2": {
+ "unicode": "1F91D-1F3FC",
+ "unicode_alternates": [],
+ "name": "handshake tone 2",
+ "shortname": ":handshake_tone2:",
+ "category": "people",
+ "aliases": [
+ ":shaking_hands_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤝🏼"
+ },
+ "handshake_tone3": {
+ "unicode": "1F91D-1F3FD",
+ "unicode_alternates": [],
+ "name": "handshake tone 3",
+ "shortname": ":handshake_tone3:",
+ "category": "people",
+ "aliases": [
+ ":shaking_hands_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤝🏽"
+ },
+ "handshake_tone4": {
+ "unicode": "1F91D-1F3FE",
+ "unicode_alternates": [],
+ "name": "handshake tone 4",
+ "shortname": ":handshake_tone4:",
+ "category": "people",
+ "aliases": [
+ ":shaking_hands_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤝🏾"
+ },
+ "handshake_tone5": {
+ "unicode": "1F91D-1F3FF",
+ "unicode_alternates": [],
+ "name": "handshake tone 5",
+ "shortname": ":handshake_tone5:",
+ "category": "people",
+ "aliases": [
+ ":shaking_hands_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤝🏿"
},
"hash": {
"moji": "#⃣",
@@ -13999,11 +15560,12 @@
],
"name": "number sign",
"shortname": ":hash:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "symbol"
+ "symbol",
+ "number"
]
},
"hatched_chick": {
@@ -14018,12 +15580,11 @@
"baby",
"chicken",
"chick",
- "baby",
"bird",
- "chicken",
"young",
"woman",
- "cute"
+ "cute",
+ "animal"
],
"moji": "🐥"
},
@@ -14040,19 +15601,18 @@
"chicken",
"egg",
"chick",
- "egg",
"baby",
"bird",
- "chicken",
"young",
"woman",
- "cute"
+ "cute",
+ "animal"
],
"moji": "🐣"
},
"head_bandage": {
"unicode": "1F915",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with head-bandage",
"shortname": ":head_bandage:",
"category": "people",
@@ -14060,14 +15620,20 @@
":face_with_head_bandage:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "smiley",
+ "health",
+ "sick",
+ "emotion"
+ ],
+ "moji": "🤕"
},
"headphones": {
"unicode": "1F3A7",
"unicode_alternates": [],
"name": "headphone",
"shortname": ":headphones:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14076,12 +15642,12 @@
"score",
"headphone",
"sound",
- "music",
"ears",
"beats",
"buds",
"audio",
- "listen"
+ "listen",
+ "instruments"
],
"moji": "🎧"
},
@@ -14090,13 +15656,12 @@
"unicode_alternates": [],
"name": "hear-no-evil monkey",
"shortname": ":hear_no_evil:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"animal",
"monkey",
- "monkey",
"ears",
"hear",
"sound",
@@ -14112,7 +15677,7 @@
],
"name": "heavy black heart",
"shortname": ":heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [
"<3"
@@ -14124,7 +15689,6 @@
"pink",
"black",
"heart",
- "love",
"passion",
"romance",
"intense",
@@ -14132,7 +15696,9 @@
"death",
"evil",
"cold",
- "valentines"
+ "valentines",
+ "symbol",
+ "parties"
]
},
"heart_decoration": {
@@ -14140,19 +15706,20 @@
"unicode_alternates": [],
"name": "heart decoration",
"shortname": ":heart_decoration:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"like",
"love",
- "purple-square"
+ "purple-square",
+ "symbol"
],
"moji": "💟"
},
"heart_exclamation": {
"unicode": "2763",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "heavy heart exclamation mark ornament",
"shortname": ":heart_exclamation:",
"category": "symbols",
@@ -14163,15 +15730,17 @@
"keywords": [
"emotion",
"punctuation",
- "symbol"
- ]
+ "symbol",
+ "love"
+ ],
+ "moji": "❣"
},
"heart_eyes": {
"unicode": "1F60D",
"unicode_alternates": [],
"name": "smiling face with heart-shaped eyes",
"shortname": ":heart_eyes:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14185,10 +15754,15 @@
"smiling",
"heart",
"lovestruck",
- "love",
"flirt",
"smile",
- "heart-shaped"
+ "heart-shaped",
+ "happy",
+ "smiley",
+ "sex",
+ "heart eyes",
+ "emotion",
+ "beautiful"
],
"moji": "😍"
},
@@ -14197,7 +15771,7 @@
"unicode_alternates": [],
"name": "smiling cat face with heart-shaped eyes",
"shortname": ":heart_eyes_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14208,41 +15782,27 @@
"love",
"valentines",
"lovestruck",
- "love",
- "heart"
+ "heart",
+ "heart eyes",
+ "cat",
+ "beautiful"
],
"moji": "😻"
},
- "heart_tip": {
- "unicode": "1F394",
- "unicode_alternates": [],
- "name": "heart with tip on the left",
- "shortname": ":heart_tip:",
- "category": "celebration",
- "aliases": [
- ":heart_with_tip_on_the_left:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "affection",
- "like",
- "love",
- "valentines"
- ]
- },
"heartbeat": {
"unicode": "1F493",
"unicode_alternates": [],
"name": "beating heart",
"shortname": ":heartbeat:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"affection",
"like",
"love",
- "valentines"
+ "valentines",
+ "symbol"
],
"moji": "💓"
},
@@ -14251,14 +15811,15 @@
"unicode_alternates": [],
"name": "growing heart",
"shortname": ":heartpulse:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"affection",
"like",
"love",
- "valentines"
+ "valentines",
+ "symbol"
],
"moji": "💗"
},
@@ -14269,12 +15830,15 @@
],
"name": "black heart suit",
"shortname": ":hearts:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cards",
- "poker"
+ "poker",
+ "love",
+ "symbol",
+ "game"
],
"moji": "♥"
},
@@ -14285,12 +15849,13 @@
],
"name": "heavy check mark",
"shortname": ":heavy_check_mark:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"nike",
- "ok"
+ "ok",
+ "symbol"
],
"moji": "✔"
},
@@ -14299,13 +15864,14 @@
"unicode_alternates": [],
"name": "heavy division sign",
"shortname": ":heavy_division_sign:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"calculation",
"divide",
- "math"
+ "math",
+ "symbol"
],
"moji": "➗"
},
@@ -14314,7 +15880,7 @@
"unicode_alternates": [],
"name": "heavy dollar sign",
"shortname": ":heavy_dollar_sign:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14322,12 +15888,12 @@
"money",
"payment",
"dollar",
- "currency",
- "money",
"cash",
"sale",
"purchase",
- "value"
+ "value",
+ "math",
+ "symbol"
],
"moji": "💲"
},
@@ -14336,12 +15902,13 @@
"unicode_alternates": [],
"name": "heavy minus sign",
"shortname": ":heavy_minus_sign:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"calculation",
- "math"
+ "math",
+ "symbol"
],
"moji": "➖"
},
@@ -14352,12 +15919,13 @@
],
"name": "heavy multiplication x",
"shortname": ":heavy_multiplication_x:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"calculation",
- "math"
+ "math",
+ "symbol"
],
"moji": "✖"
},
@@ -14366,12 +15934,13 @@
"unicode_alternates": [],
"name": "heavy plus sign",
"shortname": ":heavy_plus_sign:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"calculation",
- "math"
+ "math",
+ "symbol"
],
"moji": "➕"
},
@@ -14380,7 +15949,7 @@
"unicode_alternates": [],
"name": "helicopter",
"shortname": ":helicopter:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14389,13 +15958,16 @@
"helicopter",
"helo",
"gyro",
- "gyrocopter"
+ "gyrocopter",
+ "plane",
+ "travel",
+ "fly"
],
"moji": "🚁"
},
"helmet_with_cross": {
"unicode": "26D1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "helmet with white cross",
"shortname": ":helmet_with_cross:",
"category": "people",
@@ -14407,8 +15979,12 @@
"aid",
"face",
"hat",
- "person"
- ]
+ "person",
+ "object",
+ "accessories",
+ "job"
+ ],
+ "moji": "⛑"
},
"herb": {
"unicode": "1F33F",
@@ -14427,9 +16003,10 @@
"weed",
"herb",
"spice",
- "plant",
"cook",
- "cooking"
+ "cooking",
+ "nature",
+ "leaf"
],
"moji": "🌿"
},
@@ -14447,7 +16024,9 @@
"vegetable",
"hibiscus",
"flower",
- "warm"
+ "warm",
+ "nature",
+ "tropical"
],
"moji": "🌺"
},
@@ -14456,13 +16035,14 @@
"unicode_alternates": [],
"name": "high brightness symbol",
"shortname": ":high_brightness:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"light",
"summer",
- "sun"
+ "sun",
+ "symbol"
],
"moji": "🔆"
},
@@ -14471,45 +16051,57 @@
"unicode_alternates": [],
"name": "high-heeled shoe",
"shortname": ":high_heel:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fashion",
"female",
- "shoes"
+ "shoes",
+ "women",
+ "shoe",
+ "sexy",
+ "accessories",
+ "girls night"
],
"moji": "👠"
},
"hockey": {
"unicode": "1F3D2",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ice hockey stick and puck",
"shortname": ":hockey:",
"category": "activity",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "game",
+ "sport",
+ "hockey"
+ ],
+ "moji": "🏒"
},
"hole": {
"unicode": "1F573",
"unicode_alternates": [],
"name": "hole",
"shortname": ":hole:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"pit",
- "well"
- ]
+ "well",
+ "object"
+ ],
+ "moji": "🕳"
},
"homes": {
"unicode": "1F3D8",
"unicode_alternates": [],
"name": "house buildings",
"shortname": ":homes:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":house_buildings:"
],
@@ -14521,15 +16113,19 @@
"mansion",
"bungalow",
"ranch",
- "craftsman"
- ]
+ "craftsman",
+ "places",
+ "building",
+ "house"
+ ],
+ "moji": "🏘"
},
"honey_pot": {
"unicode": "1F36F",
"unicode_alternates": [],
"name": "honey pot",
"shortname": ":honey_pot:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14537,9 +16133,10 @@
"sweet",
"honey",
"pot",
- "bees",
"pooh",
- "bear"
+ "bear",
+ "food",
+ "vagina"
],
"moji": "🍯"
},
@@ -14553,7 +16150,8 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "brown"
+ "brown",
+ "wildlife"
],
"moji": "🐴"
},
@@ -14562,7 +16160,7 @@
"unicode_alternates": [],
"name": "horse racing",
"shortname": ":horse_racing:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14573,13 +16171,16 @@
"race",
"racing",
"jockey",
- "triple crown"
+ "triple crown",
+ "men",
+ "sport",
+ "horse racing"
],
"moji": "🏇"
},
"horse_racing_tone1": {
"unicode": "1F3C7-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "horse racing tone 1",
"shortname": ":horse_racing_tone1:",
"category": "activity",
@@ -14592,11 +16193,12 @@
"race",
"jockey",
"triple crown"
- ]
+ ],
+ "moji": "🏇🏻"
},
"horse_racing_tone2": {
"unicode": "1F3C7-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "horse racing tone 2",
"shortname": ":horse_racing_tone2:",
"category": "activity",
@@ -14609,11 +16211,12 @@
"race",
"jockey",
"triple crown"
- ]
+ ],
+ "moji": "🏇🏼"
},
"horse_racing_tone3": {
"unicode": "1F3C7-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "horse racing tone 3",
"shortname": ":horse_racing_tone3:",
"category": "activity",
@@ -14626,11 +16229,12 @@
"race",
"jockey",
"triple crown"
- ]
+ ],
+ "moji": "🏇🏽"
},
"horse_racing_tone4": {
"unicode": "1F3C7-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "horse racing tone 4",
"shortname": ":horse_racing_tone4:",
"category": "activity",
@@ -14643,11 +16247,12 @@
"race",
"jockey",
"triple crown"
- ]
+ ],
+ "moji": "🏇🏾"
},
"horse_racing_tone5": {
"unicode": "1F3C7-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "horse racing tone 5",
"shortname": ":horse_racing_tone5:",
"category": "activity",
@@ -14660,21 +16265,24 @@
"race",
"jockey",
"triple crown"
- ]
+ ],
+ "moji": "🏇🏿"
},
"hospital": {
"unicode": "1F3E5",
"unicode_alternates": [],
"name": "hospital",
"shortname": ":hospital:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"building",
"doctor",
"health",
- "surgery"
+ "surgery",
+ "places",
+ "911"
],
"moji": "🏥"
},
@@ -14683,7 +16291,7 @@
"unicode_alternates": [],
"name": "hot pepper",
"shortname": ":hot_pepper:",
- "category": "food_drink",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14693,27 +16301,33 @@
"chili",
"cayenne",
"habanero",
- "jalapeno"
- ]
+ "jalapeno",
+ "vegetables"
+ ],
+ "moji": "🌶"
},
"hotdog": {
"unicode": "1F32D",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "hot dog",
"shortname": ":hotdog:",
- "category": "foods",
+ "category": "food",
"aliases": [
":hot_dog:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "america",
+ "food"
+ ],
+ "moji": "🌭"
},
"hotel": {
"unicode": "1F3E8",
"unicode_alternates": [],
"name": "hotel",
"shortname": ":hotel:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14724,7 +16338,9 @@
"hotel",
"motel",
"holiday inn",
- "hospital"
+ "hospital",
+ "places",
+ "vacation"
],
"moji": "🏨"
},
@@ -14735,13 +16351,14 @@
],
"name": "hot springs",
"shortname": ":hotsprings:",
- "category": "places",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"bath",
"relax",
- "warm"
+ "warm",
+ "symbol"
],
"moji": "♨"
},
@@ -14758,7 +16375,8 @@
"keywords": [
"clock",
"oldschool",
- "time"
+ "time",
+ "object"
],
"moji": "⌛"
},
@@ -14773,7 +16391,8 @@
"keywords": [
"countdown",
"oldschool",
- "time"
+ "time",
+ "object"
],
"moji": "⏳"
},
@@ -14782,20 +16401,20 @@
"unicode_alternates": [],
"name": "house building",
"shortname": ":house:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"building",
"home",
"house",
- "home",
"residence",
"dwelling",
"mansion",
"bungalow",
"ranch",
- "craftsman"
+ "craftsman",
+ "places"
],
"moji": "🏠"
},
@@ -14804,7 +16423,7 @@
"unicode_alternates": [],
"name": "derelict house building",
"shortname": ":house_abandoned:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":derelict_house_building:"
],
@@ -14821,27 +16440,34 @@
"abandoned",
"vacant",
"run down",
- "shoddy"
- ]
+ "shoddy",
+ "places",
+ "building",
+ "house"
+ ],
+ "moji": "🏚"
},
"house_with_garden": {
"unicode": "1F3E1",
"unicode_alternates": [],
"name": "house with garden",
"shortname": ":house_with_garden:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"home",
"nature",
- "plant"
+ "plant",
+ "places",
+ "building",
+ "house"
],
"moji": "🏡"
},
"hugging": {
"unicode": "1F917",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "hugging face",
"shortname": ":hugging:",
"category": "people",
@@ -14849,14 +16475,19 @@
":hugging_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "smiley",
+ "hug",
+ "thank you"
+ ],
+ "moji": "🤗"
},
"hushed": {
"unicode": "1F62F",
"unicode_alternates": [],
"name": "hushed face",
"shortname": ":hushed:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14865,7 +16496,10 @@
"quiet",
"hush",
"whisper",
- "silent"
+ "silent",
+ "smiley",
+ "surprised",
+ "wow"
],
"moji": "😯"
},
@@ -14874,7 +16508,7 @@
"unicode_alternates": [],
"name": "ice cream",
"shortname": ":ice_cream:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14896,7 +16530,7 @@
},
"ice_skate": {
"unicode": "26F8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ice skate",
"shortname": ":ice_skate:",
"category": "activity",
@@ -14905,15 +16539,18 @@
"keywords": [
"place",
"sport",
- "travel"
- ]
+ "travel",
+ "cold",
+ "ice skating"
+ ],
+ "moji": "⛸"
},
"icecream": {
"unicode": "1F366",
"unicode_alternates": [],
"name": "soft ice cream",
"shortname": ":icecream:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14935,7 +16572,7 @@
},
"id": {
"unicode": "1F194",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "squared id",
"shortname": ":id:",
"category": "symbols",
@@ -14947,21 +16584,24 @@
"identity",
"symbol",
"word"
- ]
+ ],
+ "moji": "🆔"
},
"ideograph_advantage": {
"unicode": "1F250",
"unicode_alternates": [],
"name": "circled ideograph advantage",
"shortname": ":ideograph_advantage:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"get",
"kanji",
- "obtain"
+ "obtain",
+ "japan",
+ "symbol"
],
"moji": "🉐"
},
@@ -14970,7 +16610,7 @@
"unicode_alternates": [],
"name": "imp",
"shortname": ":imp:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -14979,7 +16619,9 @@
"evil",
"horns",
"cute",
- "devil"
+ "smiley",
+ "monster",
+ "wth"
],
"moji": "👿"
},
@@ -14993,7 +16635,9 @@
"aliases_ascii": [],
"keywords": [
"documents",
- "email"
+ "email",
+ "work",
+ "office"
],
"moji": "📥"
},
@@ -15007,30 +16651,17 @@
"aliases_ascii": [],
"keywords": [
"email",
- "inbox"
+ "inbox",
+ "object"
],
"moji": "📨"
},
- "info": {
- "unicode": "1F6C8",
- "unicode_alternates": [],
- "name": "circled information source",
- "shortname": ":info:",
- "category": "objects_symbols",
- "aliases": [
- ":circled_information_source:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "icon"
- ]
- },
"information_desk_person": {
"unicode": "1F481",
"unicode_alternates": [],
"name": "information desk person",
"shortname": ":information_desk_person:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15045,13 +16676,16 @@
"sassy",
"unimpressed",
"attitude",
- "snarky"
+ "snarky",
+ "people",
+ "women",
+ "diversity"
],
"moji": "💁"
},
"information_desk_person_tone1": {
"unicode": "1F481-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "information desk person tone 1",
"shortname": ":information_desk_person_tone1:",
"category": "people",
@@ -15069,11 +16703,12 @@
"unimpressed",
"attitude",
"snarky"
- ]
+ ],
+ "moji": "💁🏻"
},
"information_desk_person_tone2": {
"unicode": "1F481-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "information desk person tone 2",
"shortname": ":information_desk_person_tone2:",
"category": "people",
@@ -15091,11 +16726,12 @@
"unimpressed",
"attitude",
"snarky"
- ]
+ ],
+ "moji": "💁🏼"
},
"information_desk_person_tone3": {
"unicode": "1F481-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "information desk person tone 3",
"shortname": ":information_desk_person_tone3:",
"category": "people",
@@ -15113,11 +16749,12 @@
"unimpressed",
"attitude",
"snarky"
- ]
+ ],
+ "moji": "💁🏽"
},
"information_desk_person_tone4": {
"unicode": "1F481-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "information desk person tone 4",
"shortname": ":information_desk_person_tone4:",
"category": "people",
@@ -15135,11 +16772,12 @@
"unimpressed",
"attitude",
"snarky"
- ]
+ ],
+ "moji": "💁🏾"
},
"information_desk_person_tone5": {
"unicode": "1F481-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "information desk person tone 5",
"shortname": ":information_desk_person_tone5:",
"category": "people",
@@ -15157,7 +16795,8 @@
"unimpressed",
"attitude",
"snarky"
- ]
+ ],
+ "moji": "💁🏿"
},
"information_source": {
"unicode": "2139",
@@ -15166,13 +16805,14 @@
],
"name": "information source",
"shortname": ":information_source:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"blue-square",
- "letter"
+ "letter",
+ "symbol"
],
"moji": "ℹ"
},
@@ -15181,7 +16821,7 @@
"unicode_alternates": [],
"name": "smiling face with halo",
"shortname": ":innocent:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"O:-)",
@@ -15202,12 +16842,12 @@
"angel",
"face",
"halo",
- "halo",
- "angel",
"innocent",
"ring",
"circle",
- "heaven"
+ "heaven",
+ "smiley",
+ "emotion"
],
"moji": "😇"
},
@@ -15218,13 +16858,14 @@
],
"name": "exclamation question mark",
"shortname": ":interrobang:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"punctuation",
"surprise",
- "wat"
+ "wat",
+ "symbol"
],
"moji": "⁉"
},
@@ -15240,7 +16881,10 @@
"apple",
"dial",
"gadgets",
- "technology"
+ "technology",
+ "electronics",
+ "phone",
+ "selfie"
],
"moji": "📱"
},
@@ -15249,7 +16893,7 @@
"unicode_alternates": [],
"name": "desert island",
"shortname": ":island:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":desert_island:"
],
@@ -15257,15 +16901,22 @@
"keywords": [
"land",
"solitude",
- "alone"
- ]
+ "alone",
+ "places",
+ "travel",
+ "vacation",
+ "tropical",
+ "beach",
+ "swim"
+ ],
+ "moji": "🏝"
},
"izakaya_lantern": {
"unicode": "1F3EE",
"unicode_alternates": [],
"name": "izakaya lantern",
"shortname": ":izakaya_lantern:",
- "category": "places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15277,7 +16928,9 @@
"alcohol",
"bar",
"sake",
- "restaurant"
+ "restaurant",
+ "object",
+ "japan"
],
"moji": "🏮"
},
@@ -15286,14 +16939,13 @@
"unicode_alternates": [],
"name": "jack-o-lantern",
"shortname": ":jack_o_lantern:",
- "category": "objects",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"halloween",
"jack-o-lantern",
"pumpkin",
- "halloween",
"holiday",
"carve",
"autumn",
@@ -15305,7 +16957,8 @@
"horror",
"scary",
"scared",
- "dead"
+ "dead",
+ "holidays"
],
"moji": "🎃"
},
@@ -15314,11 +16967,16 @@
"unicode_alternates": [],
"name": "silhouette of japan",
"shortname": ":japan:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "nation"
+ "nation",
+ "places",
+ "travel",
+ "map",
+ "vacation",
+ "tropical"
],
"moji": "🗾"
},
@@ -15327,7 +16985,7 @@
"unicode_alternates": [],
"name": "japanese castle",
"shortname": ":japanese_castle:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15339,7 +16997,10 @@
"royalty",
"fort",
"fortified",
- "fortress"
+ "fortress",
+ "places",
+ "travel",
+ "vacation"
],
"moji": "🏯"
},
@@ -15348,7 +17009,7 @@
"unicode_alternates": [],
"name": "japanese goblin",
"shortname": ":japanese_goblin:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15361,13 +17022,14 @@
"avian",
"demon",
"goblin",
- "mask",
"theater",
"nose",
"frown",
"mustache",
"anger",
- "frustration"
+ "frustration",
+ "angry",
+ "monster"
],
"moji": "👺"
},
@@ -15376,7 +17038,7 @@
"unicode_alternates": [],
"name": "japanese ogre",
"shortname": ":japanese_ogre:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15387,7 +17049,6 @@
"troll",
"ogre",
"folklore",
- "monster",
"devil",
"mask",
"theater",
@@ -15401,7 +17062,7 @@
"unicode_alternates": [],
"name": "jeans",
"shortname": ":jeans:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15419,26 +17080,12 @@
],
"moji": "👖"
},
- "jet_up": {
- "unicode": "1F6E6",
- "unicode_alternates": [],
- "name": "up-pointing military airplane",
- "shortname": ":jet_up:",
- "category": "travel_places",
- "aliases": [
- ":up_pointing_military_airplane:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "jet"
- ]
- },
"joy": {
"unicode": "1F602",
"unicode_alternates": [],
"name": "face with tears of joy",
"shortname": ":joy:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":')",
@@ -15450,11 +17097,13 @@
"haha",
"happy",
"tears",
- "tears",
- "cry",
"joy",
- "happy",
- "weep"
+ "weep",
+ "silly",
+ "smiley",
+ "laugh",
+ "emotion",
+ "sarcastic"
],
"moji": "😂"
},
@@ -15463,7 +17112,7 @@
"unicode_alternates": [],
"name": "cat face with tears of joy",
"shortname": ":joy_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15472,10 +17121,12 @@
"haha",
"happy",
"tears",
- "happy",
- "tears",
"cry",
- "joy"
+ "joy",
+ "silly",
+ "laugh",
+ "cat",
+ "sarcastic"
],
"moji": "😹"
},
@@ -15484,24 +17135,112 @@
"unicode_alternates": [],
"name": "joystick",
"shortname": ":joystick:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"games",
"atari",
- "controller"
- ]
+ "controller",
+ "electronics",
+ "game",
+ "boys night"
+ ],
+ "moji": "🕹"
+ },
+ "juggling": {
+ "unicode": "1F939",
+ "unicode_alternates": [],
+ "name": "juggling",
+ "shortname": ":juggling:",
+ "category": "activity",
+ "aliases": [
+ ":juggler:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤹"
+ },
+ "juggling_tone1": {
+ "unicode": "1F939-1F3FB",
+ "unicode_alternates": [],
+ "name": "juggling tone 1",
+ "shortname": ":juggling_tone1:",
+ "category": "activity",
+ "aliases": [
+ ":juggler_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤹🏻"
+ },
+ "juggling_tone2": {
+ "unicode": "1F939-1F3FC",
+ "unicode_alternates": [],
+ "name": "juggling tone 2",
+ "shortname": ":juggling_tone2:",
+ "category": "activity",
+ "aliases": [
+ ":juggler_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤹🏼"
+ },
+ "juggling_tone3": {
+ "unicode": "1F939-1F3FD",
+ "unicode_alternates": [],
+ "name": "juggling tone 3",
+ "shortname": ":juggling_tone3:",
+ "category": "activity",
+ "aliases": [
+ ":juggler_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤹🏽"
+ },
+ "juggling_tone4": {
+ "unicode": "1F939-1F3FE",
+ "unicode_alternates": [],
+ "name": "juggling tone 4",
+ "shortname": ":juggling_tone4:",
+ "category": "activity",
+ "aliases": [
+ ":juggler_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤹🏾"
+ },
+ "juggling_tone5": {
+ "unicode": "1F939-1F3FF",
+ "unicode_alternates": [],
+ "name": "juggling tone 5",
+ "shortname": ":juggling_tone5:",
+ "category": "activity",
+ "aliases": [
+ ":juggler_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤹🏿"
},
"kaaba": {
"unicode": "1F54B",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "kaaba",
"shortname": ":kaaba:",
"category": "travel",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "places",
+ "religion",
+ "building",
+ "condolence"
+ ],
+ "moji": "🕋"
},
"key": {
"unicode": "1F511",
@@ -15514,7 +17253,8 @@
"keywords": [
"door",
"lock",
- "password"
+ "password",
+ "object"
],
"moji": "🔑"
},
@@ -15523,7 +17263,7 @@
"unicode_alternates": [],
"name": "old key",
"shortname": ":key2:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":old_key:"
],
@@ -15532,79 +17272,34 @@
"door",
"lock",
"password",
- "skeleton"
- ]
- },
- "keyboard": {
- "unicode": "1F5AE",
- "unicode_alternates": [],
- "name": "wired keyboard",
- "shortname": ":keyboard:",
- "category": "objects_symbols",
- "aliases": [
- ":wired_keyboard:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "typing",
- "keys",
- "input",
- "device"
- ]
- },
- "keyboard_mouse": {
- "unicode": "1F5A6",
- "unicode_alternates": [],
- "name": "keyboard and mouse",
- "shortname": ":keyboard_mouse:",
- "category": "objects_symbols",
- "aliases": [
- ":keyboard_and_mouse:"
+ "skeleton",
+ "object"
],
- "aliases_ascii": [],
- "keywords": [
- "computer",
- "input",
- "desktop"
- ]
+ "moji": "🗝"
},
- "keyboard_with_jacks": {
- "unicode": "1F398",
- "unicode_alternates": [],
- "name": "musical keyboard with jacks",
- "shortname": ":keyboard_with_jacks:",
- "category": "objects_symbols",
- "aliases": [
- ":musical_keyboard_with_jacks:"
+ "keyboard": {
+ "unicode": "2328",
+ "unicode_alternates": [
+ "2328-FE0F"
],
- "aliases_ascii": [],
- "keywords": [
- "music",
- "instrument",
- "midi"
- ]
- },
- "keycap_ten": {
- "unicode": "1F51F",
- "unicode_alternates": [],
- "name": "keycap ten",
- "shortname": ":keycap_ten:",
- "category": "other",
+ "name": "keyboard",
+ "shortname": ":keyboard:",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "10",
- "blue-square",
- "numbers"
+ "electronics",
+ "work",
+ "office"
],
- "moji": "🔟"
+ "moji": "⌨"
},
"kimono": {
"unicode": "1F458",
"unicode_alternates": [],
"name": "kimono",
"shortname": ":kimono:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15621,7 +17316,7 @@
"unicode_alternates": [],
"name": "kiss mark",
"shortname": ":kiss:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15630,7 +17325,12 @@
"like",
"lips",
"love",
- "valentines"
+ "valentines",
+ "women",
+ "sexy",
+ "lip",
+ "beautiful",
+ "girls night"
],
"moji": "💋"
},
@@ -15652,8 +17352,14 @@
"love",
"marriage",
"valentines",
- "couple"
- ]
+ "couple",
+ "people",
+ "gay",
+ "men",
+ "sex",
+ "lgbt"
+ ],
+ "moji": "👨‍❤️‍💋‍👨"
},
"kiss_ww": {
"unicode": "1F469-2764-1F48B-1F469",
@@ -15673,15 +17379,21 @@
"love",
"marriage",
"valentines",
- "couple"
- ]
+ "couple",
+ "people",
+ "women",
+ "sex",
+ "lgbt",
+ "lesbian"
+ ],
+ "moji": "👩‍❤️‍💋‍👩"
},
"kissing": {
"unicode": "1F617",
"unicode_alternates": [],
"name": "kissing face",
"shortname": ":kissing:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15695,7 +17407,9 @@
"kiss",
"pucker",
"lips",
- "smooch"
+ "smooch",
+ "smiley",
+ "sexy"
],
"moji": "😗"
},
@@ -15704,7 +17418,7 @@
"unicode_alternates": [],
"name": "kissing cat face with closed eyes",
"shortname": ":kissing_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15714,7 +17428,8 @@
"kiss",
"puckered",
"heart",
- "love"
+ "love",
+ "cat"
],
"moji": "😽"
},
@@ -15723,7 +17438,7 @@
"unicode_alternates": [],
"name": "kissing face with closed eyes",
"shortname": ":kissing_closed_eyes:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15738,8 +17453,9 @@
"passion",
"puckered",
"heart",
- "love",
- "smooch"
+ "smooch",
+ "smiley",
+ "sexy"
],
"moji": "😚"
},
@@ -15748,7 +17464,7 @@
"unicode_alternates": [],
"name": "face throwing a kiss",
"shortname": ":kissing_heart:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":*",
@@ -15766,8 +17482,9 @@
"love",
"lips",
"like",
- "love",
- "valentines"
+ "valentines",
+ "smiley",
+ "sexy"
],
"moji": "😘"
},
@@ -15776,7 +17493,7 @@
"unicode_alternates": [],
"name": "kissing face with smiling eyes",
"shortname": ":kissing_smiling_eyes:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15789,10 +17506,25 @@
"smile",
"pucker",
"lips",
- "smooch"
+ "smooch",
+ "smiley",
+ "sexy"
],
"moji": "😙"
},
+ "kiwi": {
+ "unicode": "1F95D",
+ "unicode_alternates": [],
+ "name": "kiwifruit",
+ "shortname": ":kiwi:",
+ "category": "food",
+ "aliases": [
+ ":kiwifruit:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥝"
+ },
"knife": {
"unicode": "1F52A",
"unicode_alternates": [],
@@ -15801,7 +17533,10 @@
"category": "objects",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "object",
+ "weapon"
+ ],
"moji": "🔪"
},
"koala": {
@@ -15814,7 +17549,8 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife"
],
"moji": "🐨"
},
@@ -15823,7 +17559,7 @@
"unicode_alternates": [],
"name": "squared katakana koko",
"shortname": ":koko:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -15831,7 +17567,8 @@
"destination",
"here",
"japanese",
- "katakana"
+ "katakana",
+ "symbol"
],
"moji": "🈁"
},
@@ -15840,22 +17577,28 @@
"unicode_alternates": [],
"name": "label",
"shortname": ":label:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "tag"
- ]
+ "tag",
+ "object"
+ ],
+ "moji": "🏷"
},
"large_blue_circle": {
"unicode": "1F535",
"unicode_alternates": [],
"name": "large blue circle",
"shortname": ":large_blue_circle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "shapes",
+ "symbol",
+ "circle"
+ ],
"moji": "🔵"
},
"large_blue_diamond": {
@@ -15863,11 +17606,13 @@
"unicode_alternates": [],
"name": "large blue diamond",
"shortname": ":large_blue_diamond:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol"
],
"moji": "🔷"
},
@@ -15876,11 +17621,13 @@
"unicode_alternates": [],
"name": "large orange diamond",
"shortname": ":large_orange_diamond:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol"
],
"moji": "🔶"
},
@@ -15900,7 +17647,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌗"
},
@@ -15922,7 +17670,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌜"
},
@@ -15931,7 +17680,7 @@
"unicode_alternates": [],
"name": "smiling face with open mouth and tightly-closed ey",
"shortname": ":laughing:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":satisfied:"
],
@@ -15947,7 +17696,9 @@
"lol",
"smiling",
"laughing",
- "laugh"
+ "laugh",
+ "smiley",
+ "emotion"
],
"moji": "😆"
},
@@ -15984,16 +17735,97 @@
"aliases_ascii": [],
"keywords": [
"notes",
- "paper"
+ "paper",
+ "object",
+ "office",
+ "write"
],
"moji": "📒"
},
+ "left_facing_fist": {
+ "unicode": "1F91B",
+ "unicode_alternates": [],
+ "name": "left-facing fist",
+ "shortname": ":left_facing_fist:",
+ "category": "people",
+ "aliases": [
+ ":left_fist:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤛"
+ },
+ "left_facing_fist_tone1": {
+ "unicode": "1F91B-1F3FB",
+ "unicode_alternates": [],
+ "name": "left facing fist tone 1",
+ "shortname": ":left_facing_fist_tone1:",
+ "category": "people",
+ "aliases": [
+ ":left_fist_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤛🏻"
+ },
+ "left_facing_fist_tone2": {
+ "unicode": "1F91B-1F3FC",
+ "unicode_alternates": [],
+ "name": "left facing fist tone 2",
+ "shortname": ":left_facing_fist_tone2:",
+ "category": "people",
+ "aliases": [
+ ":left_fist_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤛🏼"
+ },
+ "left_facing_fist_tone3": {
+ "unicode": "1F91B-1F3FD",
+ "unicode_alternates": [],
+ "name": "left facing fist tone 3",
+ "shortname": ":left_facing_fist_tone3:",
+ "category": "people",
+ "aliases": [
+ ":left_fist_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤛🏽"
+ },
+ "left_facing_fist_tone4": {
+ "unicode": "1F91B-1F3FE",
+ "unicode_alternates": [],
+ "name": "left facing fist tone 4",
+ "shortname": ":left_facing_fist_tone4:",
+ "category": "people",
+ "aliases": [
+ ":left_fist_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤛🏾"
+ },
+ "left_facing_fist_tone5": {
+ "unicode": "1F91B-1F3FF",
+ "unicode_alternates": [],
+ "name": "left facing fist tone 5",
+ "shortname": ":left_facing_fist_tone5:",
+ "category": "people",
+ "aliases": [
+ ":left_fist_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤛🏿"
+ },
"left_luggage": {
"unicode": "1F6C5",
"unicode_alternates": [],
"name": "left luggage",
"shortname": ":left_luggage:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16002,26 +17834,10 @@
"bag",
"baggage",
"luggage",
- "travel"
+ "symbol"
],
"moji": "🛅"
},
- "left_receiver": {
- "unicode": "1F57B",
- "unicode_alternates": [],
- "name": "left hand telephone receiver",
- "shortname": ":left_receiver:",
- "category": "objects_symbols",
- "aliases": [
- ":left_hand_telephone_receiver:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "dial",
- "technology"
- ]
- },
"left_right_arrow": {
"unicode": "2194",
"unicode_alternates": [
@@ -16029,11 +17845,13 @@
],
"name": "left right arrow",
"shortname": ":left_right_arrow:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "arrow",
+ "symbol"
],
"moji": "↔"
},
@@ -16044,10 +17862,13 @@
],
"name": "leftwards arrow with hook",
"shortname": ":leftwards_arrow_with_hook:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "arrow",
+ "symbol"
+ ],
"moji": "↩"
},
"lemon": {
@@ -16055,7 +17876,7 @@
"unicode_alternates": [],
"name": "lemon",
"shortname": ":lemon:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16063,7 +17884,8 @@
"nature",
"lemon",
"yellow",
- "citrus"
+ "citrus",
+ "food"
],
"moji": "🍋"
},
@@ -16074,7 +17896,7 @@
],
"name": "leo",
"shortname": ":leo:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16087,9 +17909,8 @@
"zodiac",
"sign",
"purple-square",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♌"
},
@@ -16108,7 +17929,9 @@
"cat",
"spot",
"spotted",
- "sexy"
+ "sexy",
+ "wildlife",
+ "roar"
],
"moji": "🐆"
},
@@ -16117,27 +17940,31 @@
"unicode_alternates": [],
"name": "level slider",
"shortname": ":level_slider:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"controls"
- ]
+ ],
+ "moji": "🎚"
},
"levitate": {
"unicode": "1F574",
"unicode_alternates": [],
"name": "man in business suit levitating",
"shortname": ":levitate:",
- "category": "people",
+ "category": "activity",
"aliases": [
":man_in_business_suit_levitating:"
],
"aliases_ascii": [],
"keywords": [
"hover",
- "exclamation"
- ]
+ "exclamation",
+ "men",
+ "job"
+ ],
+ "moji": "🕴"
},
"libra": {
"unicode": "264E",
@@ -16146,7 +17973,7 @@
],
"name": "libra",
"shortname": ":libra:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16159,9 +17986,8 @@
"zodiac",
"sign",
"purple-square",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♎"
},
@@ -16179,12 +18005,20 @@
"bench",
"press",
"squats",
- "deadlift"
- ]
+ "deadlift",
+ "men",
+ "workout",
+ "flex",
+ "sport",
+ "weight lifting",
+ "win",
+ "diversity"
+ ],
+ "moji": "🏋"
},
"lifter_tone1": {
"unicode": "1F3CB-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "weight lifter tone 1",
"shortname": ":lifter_tone1:",
"category": "activity",
@@ -16197,11 +18031,12 @@
"press",
"squats",
"deadlift"
- ]
+ ],
+ "moji": "🏋🏻"
},
"lifter_tone2": {
"unicode": "1F3CB-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "weight lifter tone 2",
"shortname": ":lifter_tone2:",
"category": "activity",
@@ -16214,11 +18049,12 @@
"press",
"squats",
"deadlift"
- ]
+ ],
+ "moji": "🏋🏼"
},
"lifter_tone3": {
"unicode": "1F3CB-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "weight lifter tone 3",
"shortname": ":lifter_tone3:",
"category": "activity",
@@ -16231,11 +18067,12 @@
"press",
"squats",
"deadlift"
- ]
+ ],
+ "moji": "🏋🏽"
},
"lifter_tone4": {
"unicode": "1F3CB-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "weight lifter tone 4",
"shortname": ":lifter_tone4:",
"category": "activity",
@@ -16248,11 +18085,12 @@
"press",
"squats",
"deadlift"
- ]
+ ],
+ "moji": "🏋🏾"
},
"lifter_tone5": {
"unicode": "1F3CB-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "weight lifter tone 5",
"shortname": ":lifter_tone5:",
"category": "activity",
@@ -16265,28 +18103,15 @@
"press",
"squats",
"deadlift"
- ]
- },
- "light_check_mark": {
- "unicode": "1F5F8",
- "unicode_alternates": [],
- "name": "light check mark",
- "shortname": ":light_check_mark:",
- "category": "objects_symbols",
- "aliases": [
- ":light_mark:"
],
- "aliases_ascii": [],
- "keywords": [
- "vote"
- ]
+ "moji": "🏋🏿"
},
"light_rail": {
"unicode": "1F688",
"unicode_alternates": [],
"name": "light rail",
"shortname": ":light_rail:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16294,7 +18119,8 @@
"vehicle",
"train",
"rail",
- "light"
+ "light",
+ "travel"
],
"moji": "🚈"
},
@@ -16303,18 +18129,20 @@
"unicode_alternates": [],
"name": "link symbol",
"shortname": ":link:",
- "category": "other",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"rings",
- "url"
+ "url",
+ "symbol",
+ "office"
],
"moji": "🔗"
},
"lion_face": {
"unicode": "1F981",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "lion face",
"shortname": ":lion_face:",
"category": "nature",
@@ -16322,50 +18150,62 @@
":lion:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "wildlife",
+ "roar",
+ "cat",
+ "animal"
+ ],
+ "moji": "🦁"
},
"lips": {
"unicode": "1F444",
"unicode_alternates": [],
"name": "mouth",
"shortname": ":lips:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"kiss",
- "mouth"
+ "mouth",
+ "women",
+ "body",
+ "sexy",
+ "lip"
],
"moji": "👄"
},
- "lips2": {
- "unicode": "1F5E2",
- "unicode_alternates": [],
- "name": "lips",
- "shortname": ":lips2:",
- "category": "people",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "kiss",
- "mouth"
- ]
- },
"lipstick": {
"unicode": "1F484",
"unicode_alternates": [],
"name": "lipstick",
"shortname": ":lipstick:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fashion",
"female",
- "girl"
+ "girl",
+ "object",
+ "women",
+ "sexy",
+ "lip"
],
"moji": "💄"
},
+ "lizard": {
+ "unicode": "1F98E",
+ "unicode_alternates": [],
+ "name": "lizard",
+ "shortname": ":lizard:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦎"
+ },
"lock": {
"unicode": "1F512",
"unicode_alternates": [],
@@ -16376,7 +18216,9 @@
"aliases_ascii": [],
"keywords": [
"password",
- "security"
+ "security",
+ "object",
+ "lock"
],
"moji": "🔒"
},
@@ -16390,7 +18232,9 @@
"aliases_ascii": [],
"keywords": [
"secret",
- "security"
+ "security",
+ "object",
+ "lock"
],
"moji": "🔏"
},
@@ -16399,7 +18243,7 @@
"unicode_alternates": [],
"name": "lollipop",
"shortname": ":lollipop:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16410,9 +18254,8 @@
"lollipop",
"stick",
"lick",
- "sweet",
"sugar",
- "candy"
+ "halloween"
],
"moji": "🍭"
},
@@ -16421,11 +18264,12 @@
"unicode_alternates": [],
"name": "double curly loop",
"shortname": ":loop:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "curly"
+ "curly",
+ "symbol"
],
"moji": "➿"
},
@@ -16434,10 +18278,13 @@
"unicode_alternates": [],
"name": "speaker with three sound waves",
"shortname": ":loud_sound:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": [],
+ "keywords": [
+ "alarm",
+ "symbol"
+ ],
"moji": "🔊"
},
"loudspeaker": {
@@ -16445,12 +18292,15 @@
"unicode_alternates": [],
"name": "public address loudspeaker",
"shortname": ":loudspeaker:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"sound",
- "volume"
+ "volume",
+ "object",
+ "alarm",
+ "symbol"
],
"moji": "📢"
},
@@ -16459,7 +18309,7 @@
"unicode_alternates": [],
"name": "love hotel",
"shortname": ":love_hotel:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16468,7 +18318,6 @@
"like",
"love",
"hotel",
- "love",
"sex",
"romance",
"leisure",
@@ -16476,7 +18325,9 @@
"prostitution",
"hospital",
"birth",
- "happy"
+ "happy",
+ "places",
+ "building"
],
"moji": "🏩"
},
@@ -16485,7 +18336,7 @@
"unicode_alternates": [],
"name": "love letter",
"shortname": ":love_letter:",
- "category": "emoticons",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16497,7 +18348,8 @@
"love",
"letter",
"kiss",
- "heart"
+ "heart",
+ "object"
],
"moji": "💌"
},
@@ -16506,15 +18358,29 @@
"unicode_alternates": [],
"name": "low brightness symbol",
"shortname": ":low_brightness:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"summer",
- "sun"
+ "sun",
+ "symbol"
],
"moji": "🔅"
},
+ "lying_face": {
+ "unicode": "1F925",
+ "unicode_alternates": [],
+ "name": "lying face",
+ "shortname": ":lying_face:",
+ "category": "people",
+ "aliases": [
+ ":liar:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤥"
+ },
"m": {
"unicode": "24C2",
"unicode_alternates": [
@@ -16522,13 +18388,14 @@
],
"name": "circled latin capital letter m",
"shortname": ":m:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"blue-circle",
- "letter"
+ "letter",
+ "symbol"
],
"moji": "Ⓜ"
},
@@ -16546,7 +18413,8 @@
"detective",
"investigator",
"detail",
- "details"
+ "details",
+ "object"
],
"moji": "🔍"
},
@@ -16564,7 +18432,8 @@
"detective",
"investigator",
"detail",
- "details"
+ "details",
+ "object"
],
"moji": "🔎"
},
@@ -16575,13 +18444,15 @@
],
"name": "mahjong tile red dragon",
"shortname": ":mahjong:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"game",
- "kanji"
+ "kanji",
+ "object",
+ "symbol"
],
"moji": "🀄"
},
@@ -16596,7 +18467,8 @@
"keywords": [
"communication",
"email",
- "inbox"
+ "inbox",
+ "object"
],
"moji": "📫"
},
@@ -16611,7 +18483,9 @@
"keywords": [
"communication",
"email",
- "inbox"
+ "inbox",
+ "object",
+ "office"
],
"moji": "📪"
},
@@ -16626,7 +18500,8 @@
"keywords": [
"communication",
"email",
- "inbox"
+ "inbox",
+ "object"
],
"moji": "📬"
},
@@ -16640,7 +18515,8 @@
"aliases_ascii": [],
"keywords": [
"email",
- "inbox"
+ "inbox",
+ "object"
],
"moji": "📭"
},
@@ -16649,7 +18525,7 @@
"unicode_alternates": [],
"name": "man",
"shortname": ":man:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16657,13 +18533,173 @@
"dad",
"father",
"guy",
- "mustashe"
+ "mustashe",
+ "people",
+ "men",
+ "sex",
+ "diversity",
+ "selfie",
+ "boys night"
],
"moji": "👨"
},
+ "man_dancing": {
+ "unicode": "1F57A",
+ "unicode_alternates": [],
+ "name": "man dancing",
+ "shortname": ":man_dancing:",
+ "category": "people",
+ "aliases": [
+ ":male_dancer:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🕺"
+ },
+ "man_dancing_tone1": {
+ "unicode": "1F57A-1F3FB",
+ "unicode_alternates": [],
+ "name": "man dancing tone 1",
+ "shortname": ":man_dancing_tone1:",
+ "category": "activity",
+ "aliases": [
+ ":male_dancer_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🕺🏻"
+ },
+ "man_dancing_tone2": {
+ "unicode": "1F57A-1F3FC",
+ "unicode_alternates": [],
+ "name": "man dancing tone 2",
+ "shortname": ":man_dancing_tone2:",
+ "category": "activity",
+ "aliases": [
+ ":male_dancer_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🕺🏼"
+ },
+ "man_dancing_tone3": {
+ "unicode": "1F57A-1F3FD",
+ "unicode_alternates": [],
+ "name": "man dancing tone 3",
+ "shortname": ":man_dancing_tone3:",
+ "category": "activity",
+ "aliases": [
+ ":male_dancer_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🕺🏽"
+ },
+ "man_dancing_tone4": {
+ "unicode": "1F57A-1F3FE",
+ "unicode_alternates": [],
+ "name": "man dancing tone 4",
+ "shortname": ":man_dancing_tone4:",
+ "category": "activity",
+ "aliases": [
+ ":male_dancer_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🕺🏾"
+ },
+ "man_dancing_tone5": {
+ "unicode": "1F57A-1F3FF",
+ "unicode_alternates": [],
+ "name": "man dancing tone 5",
+ "shortname": ":man_dancing_tone5:",
+ "category": "activity",
+ "aliases": [
+ ":male_dancer_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🕺🏿"
+ },
+ "man_in_tuxedo": {
+ "unicode": "1F935",
+ "unicode_alternates": [],
+ "name": "man in tuxedo",
+ "shortname": ":man_in_tuxedo:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤵"
+ },
+ "man_in_tuxedo_tone1": {
+ "unicode": "1F935-1F3FB",
+ "unicode_alternates": [],
+ "name": "man in tuxedo tone 1",
+ "shortname": ":man_in_tuxedo_tone1:",
+ "category": "people",
+ "aliases": [
+ ":tuxedo_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤵🏻"
+ },
+ "man_in_tuxedo_tone2": {
+ "unicode": "1F935-1F3FC",
+ "unicode_alternates": [],
+ "name": "man in tuxedo tone 2",
+ "shortname": ":man_in_tuxedo_tone2:",
+ "category": "people",
+ "aliases": [
+ ":tuxedo_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤵🏼"
+ },
+ "man_in_tuxedo_tone3": {
+ "unicode": "1F935-1F3FD",
+ "unicode_alternates": [],
+ "name": "man in tuxedo tone 3",
+ "shortname": ":man_in_tuxedo_tone3:",
+ "category": "people",
+ "aliases": [
+ ":tuxedo_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤵🏽"
+ },
+ "man_in_tuxedo_tone4": {
+ "unicode": "1F935-1F3FE",
+ "unicode_alternates": [],
+ "name": "man in tuxedo tone 4",
+ "shortname": ":man_in_tuxedo_tone4:",
+ "category": "people",
+ "aliases": [
+ ":tuxedo_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤵🏾"
+ },
+ "man_in_tuxedo_tone5": {
+ "unicode": "1F935-1F3FF",
+ "unicode_alternates": [],
+ "name": "man in tuxedo tone 5",
+ "shortname": ":man_in_tuxedo_tone5:",
+ "category": "people",
+ "aliases": [
+ ":tuxedo_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤵🏿"
+ },
"man_tone1": {
"unicode": "1F468-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man tone 1",
"shortname": ":man_tone1:",
"category": "people",
@@ -16675,11 +18711,12 @@
"father",
"guy",
"mustache"
- ]
+ ],
+ "moji": "👨🏻"
},
"man_tone2": {
"unicode": "1F468-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man tone 2",
"shortname": ":man_tone2:",
"category": "people",
@@ -16691,11 +18728,12 @@
"father",
"guy",
"mustache"
- ]
+ ],
+ "moji": "👨🏼"
},
"man_tone3": {
"unicode": "1F468-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man tone 3",
"shortname": ":man_tone3:",
"category": "people",
@@ -16707,11 +18745,12 @@
"father",
"guy",
"mustache"
- ]
+ ],
+ "moji": "👨🏽"
},
"man_tone4": {
"unicode": "1F468-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man tone 4",
"shortname": ":man_tone4:",
"category": "people",
@@ -16723,11 +18762,12 @@
"father",
"guy",
"mustache"
- ]
+ ],
+ "moji": "👨🏾"
},
"man_tone5": {
"unicode": "1F468-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man tone 5",
"shortname": ":man_tone5:",
"category": "people",
@@ -16739,14 +18779,15 @@
"father",
"guy",
"mustache"
- ]
+ ],
+ "moji": "👨🏿"
},
"man_with_gua_pi_mao": {
"unicode": "1F472",
"unicode_alternates": [],
"name": "man with gua pi mao",
"shortname": ":man_with_gua_pi_mao:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16755,13 +18796,17 @@
"skullcap",
"chinese",
"asian",
- "qing"
+ "qing",
+ "people",
+ "hat",
+ "men",
+ "diversity"
],
"moji": "👲"
},
"man_with_gua_pi_mao_tone1": {
"unicode": "1F472-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with gua pi mao tone 1",
"shortname": ":man_with_gua_pi_mao_tone1:",
"category": "people",
@@ -16774,11 +18819,12 @@
"chinese",
"asian",
"qing"
- ]
+ ],
+ "moji": "👲🏻"
},
"man_with_gua_pi_mao_tone2": {
"unicode": "1F472-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with gua pi mao tone 2",
"shortname": ":man_with_gua_pi_mao_tone2:",
"category": "people",
@@ -16791,11 +18837,12 @@
"chinese",
"asian",
"qing"
- ]
+ ],
+ "moji": "👲🏼"
},
"man_with_gua_pi_mao_tone3": {
"unicode": "1F472-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with gua pi mao tone 3",
"shortname": ":man_with_gua_pi_mao_tone3:",
"category": "people",
@@ -16808,11 +18855,12 @@
"chinese",
"asian",
"qing"
- ]
+ ],
+ "moji": "👲🏽"
},
"man_with_gua_pi_mao_tone4": {
"unicode": "1F472-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with gua pi mao tone 4",
"shortname": ":man_with_gua_pi_mao_tone4:",
"category": "people",
@@ -16825,11 +18873,12 @@
"chinese",
"asian",
"qing"
- ]
+ ],
+ "moji": "👲🏾"
},
"man_with_gua_pi_mao_tone5": {
"unicode": "1F472-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with gua pi mao tone 5",
"shortname": ":man_with_gua_pi_mao_tone5:",
"category": "people",
@@ -16842,14 +18891,15 @@
"chinese",
"asian",
"qing"
- ]
+ ],
+ "moji": "👲🏿"
},
"man_with_turban": {
"unicode": "1F473",
"unicode_alternates": [],
"name": "man with turban",
"shortname": ":man_with_turban:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -16862,13 +18912,16 @@
"indian",
"mummy",
"wisdom",
- "peace"
+ "peace",
+ "people",
+ "hat",
+ "diversity"
],
"moji": "👳"
},
"man_with_turban_tone1": {
"unicode": "1F473-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with turban tone 1",
"shortname": ":man_with_turban_tone1:",
"category": "people",
@@ -16884,11 +18937,12 @@
"mummy",
"wisdom",
"peace"
- ]
+ ],
+ "moji": "👳🏻"
},
"man_with_turban_tone2": {
"unicode": "1F473-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with turban tone 2",
"shortname": ":man_with_turban_tone2:",
"category": "people",
@@ -16904,11 +18958,12 @@
"mummy",
"wisdom",
"peace"
- ]
+ ],
+ "moji": "👳🏼"
},
"man_with_turban_tone3": {
"unicode": "1F473-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with turban tone 3",
"shortname": ":man_with_turban_tone3:",
"category": "people",
@@ -16924,11 +18979,12 @@
"mummy",
"wisdom",
"peace"
- ]
+ ],
+ "moji": "👳🏽"
},
"man_with_turban_tone4": {
"unicode": "1F473-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with turban tone 4",
"shortname": ":man_with_turban_tone4:",
"category": "people",
@@ -16944,11 +19000,12 @@
"mummy",
"wisdom",
"peace"
- ]
+ ],
+ "moji": "👳🏾"
},
"man_with_turban_tone5": {
"unicode": "1F473-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "man with turban tone 5",
"shortname": ":man_with_turban_tone5:",
"category": "people",
@@ -16964,19 +19021,22 @@
"mummy",
"wisdom",
"peace"
- ]
+ ],
+ "moji": "👳🏿"
},
"mans_shoe": {
"unicode": "1F45E",
"unicode_alternates": [],
"name": "mans shoe",
"shortname": ":mans_shoe:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fashion",
- "male"
+ "male",
+ "shoe",
+ "accessories"
],
"moji": "👞"
},
@@ -16985,7 +19045,7 @@
"unicode_alternates": [],
"name": "world map",
"shortname": ":map:",
- "category": "travel_places",
+ "category": "objects",
"aliases": [
":world_map:"
],
@@ -16993,8 +19053,12 @@
"keywords": [
"atlas",
"earth",
- "cartography"
- ]
+ "cartography",
+ "travel",
+ "map",
+ "vacation"
+ ],
+ "moji": "🗺"
},
"maple_leaf": {
"unicode": "1F341",
@@ -17012,28 +19076,42 @@
"maple",
"leaf",
"syrup",
- "canada",
"tree"
],
"moji": "🍁"
},
+ "martial_arts_uniform": {
+ "unicode": "1F94B",
+ "unicode_alternates": [],
+ "name": "martial arts uniform",
+ "shortname": ":martial_arts_uniform:",
+ "category": "activity",
+ "aliases": [
+ ":karate_uniform:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥋"
+ },
"mask": {
"unicode": "1F637",
"unicode_alternates": [],
"name": "face with medical mask",
"shortname": ":mask:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"face",
"ill",
"sick",
- "sick",
"virus",
"flu",
"medical",
- "mask"
+ "mask",
+ "smiley",
+ "dead",
+ "health"
],
"moji": "😷"
},
@@ -17042,19 +19120,22 @@
"unicode_alternates": [],
"name": "face massage",
"shortname": ":massage:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"female",
"girl",
- "woman"
+ "woman",
+ "people",
+ "women",
+ "diversity"
],
"moji": "💆"
},
"massage_tone1": {
"unicode": "1F486-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face massage tone 1",
"shortname": ":massage_tone1:",
"category": "people",
@@ -17064,11 +19145,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💆🏻"
},
"massage_tone2": {
"unicode": "1F486-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face massage tone 2",
"shortname": ":massage_tone2:",
"category": "people",
@@ -17078,11 +19160,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💆🏼"
},
"massage_tone3": {
"unicode": "1F486-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face massage tone 3",
"shortname": ":massage_tone3:",
"category": "people",
@@ -17092,11 +19175,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💆🏽"
},
"massage_tone4": {
"unicode": "1F486-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face massage tone 4",
"shortname": ":massage_tone4:",
"category": "people",
@@ -17106,11 +19190,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💆🏾"
},
"massage_tone5": {
"unicode": "1F486-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face massage tone 5",
"shortname": ":massage_tone5:",
"category": "people",
@@ -17120,14 +19205,15 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "💆🏿"
},
"meat_on_bone": {
"unicode": "1F356",
"unicode_alternates": [],
"name": "meat on bone",
"shortname": ":meat_on_bone:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17160,21 +19246,27 @@
"first",
"show",
"reward",
- "achievement"
- ]
+ "achievement",
+ "object",
+ "sport",
+ "perfect"
+ ],
+ "moji": "🏅"
},
"mega": {
"unicode": "1F4E3",
"unicode_alternates": [],
"name": "cheering megaphone",
"shortname": ":mega:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"sound",
"speaker",
- "volume"
+ "volume",
+ "object",
+ "sport"
],
"moji": "📣"
},
@@ -17183,7 +19275,7 @@
"unicode_alternates": [],
"name": "melon",
"shortname": ":melon:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17192,26 +19284,34 @@
"nature",
"melon",
"cantaloupe",
- "honeydew"
+ "honeydew",
+ "boobs"
],
"moji": "🍈"
},
"menorah": {
"unicode": "1F54E",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "menorah with nine branches",
"shortname": ":menorah:",
"category": "symbols",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "religion",
+ "object",
+ "jew",
+ "symbol",
+ "holidays"
+ ],
+ "moji": "🕎"
},
"mens": {
"unicode": "1F6B9",
"unicode_alternates": [],
"name": "mens symbol",
"shortname": ":mens:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17220,17 +19320,17 @@
"wc",
"men",
"bathroom",
- "restroom",
"sign",
"boy",
"male",
- "avatar"
+ "avatar",
+ "symbol"
],
"moji": "🚹"
},
"metal": {
"unicode": "1F918",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sign of the horns",
"shortname": ":metal:",
"category": "people",
@@ -17242,12 +19342,19 @@
"band",
"concert",
"fingers",
- "rocknroll"
- ]
+ "rocknroll",
+ "body",
+ "hands",
+ "hi",
+ "diversity",
+ "boys night",
+ "parties"
+ ],
+ "moji": "🤘"
},
"metal_tone1": {
"unicode": "1F918-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sign of the horns tone 1",
"shortname": ":metal_tone1:",
"category": "people",
@@ -17260,11 +19367,12 @@
"concert",
"fingers",
"rocknroll"
- ]
+ ],
+ "moji": "🤘🏻"
},
"metal_tone2": {
"unicode": "1F918-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sign of the horns tone 2",
"shortname": ":metal_tone2:",
"category": "people",
@@ -17277,11 +19385,12 @@
"concert",
"fingers",
"rocknroll"
- ]
+ ],
+ "moji": "🤘🏼"
},
"metal_tone3": {
"unicode": "1F918-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sign of the horns tone 3",
"shortname": ":metal_tone3:",
"category": "people",
@@ -17294,11 +19403,12 @@
"concert",
"fingers",
"rocknroll"
- ]
+ ],
+ "moji": "🤘🏽"
},
"metal_tone4": {
"unicode": "1F918-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sign of the horns tone 4",
"shortname": ":metal_tone4:",
"category": "people",
@@ -17311,11 +19421,12 @@
"concert",
"fingers",
"rocknroll"
- ]
+ ],
+ "moji": "🤘🏾"
},
"metal_tone5": {
"unicode": "1F918-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sign of the horns tone 5",
"shortname": ":metal_tone5:",
"category": "people",
@@ -17328,14 +19439,15 @@
"concert",
"fingers",
"rocknroll"
- ]
+ ],
+ "moji": "🤘🏿"
},
"metro": {
"unicode": "1F687",
"unicode_alternates": [],
"name": "metro",
"shortname": ":metro:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17346,8 +19458,8 @@
"underground",
"metro",
"subway",
- "underground",
- "train"
+ "train",
+ "travel"
],
"moji": "🚇"
},
@@ -17356,7 +19468,7 @@
"unicode_alternates": [],
"name": "microphone",
"shortname": ":microphone:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17366,9 +19478,9 @@
"microphone",
"mic",
"audio",
- "sound",
"voice",
- "karaoke"
+ "karaoke",
+ "instruments"
],
"moji": "🎤"
},
@@ -17377,7 +19489,7 @@
"unicode_alternates": [],
"name": "studio microphone",
"shortname": ":microphone2:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":studio_microphone:"
],
@@ -17385,8 +19497,11 @@
"keywords": [
"mic",
"audio",
- "recording"
- ]
+ "recording",
+ "electronics",
+ "object"
+ ],
+ "moji": "🎙"
},
"microscope": {
"unicode": "1F52C",
@@ -17399,7 +19514,9 @@
"keywords": [
"experiment",
"laboratory",
- "zoomin"
+ "zoomin",
+ "object",
+ "science"
],
"moji": "🔬"
},
@@ -17414,12 +19531,17 @@
],
"aliases_ascii": [],
"keywords": [
- "fu"
- ]
+ "fu",
+ "body",
+ "hands",
+ "middle finger",
+ "diversity"
+ ],
+ "moji": "🖕"
},
"middle_finger_tone1": {
"unicode": "1F595-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "reversed hand with middle finger extended tone 1",
"shortname": ":middle_finger_tone1:",
"category": "people",
@@ -17429,11 +19551,12 @@
"aliases_ascii": [],
"keywords": [
"fu"
- ]
+ ],
+ "moji": "🖕🏻"
},
"middle_finger_tone2": {
"unicode": "1F595-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "reversed hand with middle finger extended tone 2",
"shortname": ":middle_finger_tone2:",
"category": "people",
@@ -17443,11 +19566,12 @@
"aliases_ascii": [],
"keywords": [
"fu"
- ]
+ ],
+ "moji": "🖕🏼"
},
"middle_finger_tone3": {
"unicode": "1F595-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "reversed hand with middle finger extended tone 3",
"shortname": ":middle_finger_tone3:",
"category": "people",
@@ -17457,11 +19581,12 @@
"aliases_ascii": [],
"keywords": [
"fu"
- ]
+ ],
+ "moji": "🖕🏽"
},
"middle_finger_tone4": {
"unicode": "1F595-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "reversed hand with middle finger extended tone 4",
"shortname": ":middle_finger_tone4:",
"category": "people",
@@ -17471,11 +19596,12 @@
"aliases_ascii": [],
"keywords": [
"fu"
- ]
+ ],
+ "moji": "🖕🏾"
},
"middle_finger_tone5": {
"unicode": "1F595-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "reversed hand with middle finger extended tone 5",
"shortname": ":middle_finger_tone5:",
"category": "people",
@@ -17485,14 +19611,15 @@
"aliases_ascii": [],
"keywords": [
"fu"
- ]
+ ],
+ "moji": "🖕🏿"
},
"military_medal": {
"unicode": "1F396",
"unicode_alternates": [],
"name": "military medal",
"shortname": ":military_medal:",
- "category": "celebration",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17500,15 +19627,32 @@
"acknowledgment",
"purple heart",
"heroism",
- "veteran"
- ]
+ "veteran",
+ "object",
+ "award",
+ "win"
+ ],
+ "moji": "🎖"
+ },
+ "milk": {
+ "unicode": "1F95B",
+ "unicode_alternates": [],
+ "name": "glass of milk",
+ "shortname": ":milk:",
+ "category": "food",
+ "aliases": [
+ ":glass_of_milk:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥛"
},
"milky_way": {
"unicode": "1F30C",
"unicode_alternates": [],
"name": "milky way",
"shortname": ":milky_way:",
- "category": "nature",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17519,8 +19663,10 @@
"star",
"stars",
"planets",
- "space",
- "sky"
+ "sky",
+ "places",
+ "travel",
+ "vacation"
],
"moji": "🌌"
},
@@ -17529,7 +19675,7 @@
"unicode_alternates": [],
"name": "minibus",
"shortname": ":minibus:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17538,8 +19684,7 @@
"vehicle",
"bus",
"city",
- "transport",
- "transportation"
+ "transport"
],
"moji": "🚐"
},
@@ -17556,7 +19701,8 @@
"disc",
"disk",
"record",
- "technology"
+ "technology",
+ "electronics"
],
"moji": "💽"
},
@@ -17565,17 +19711,18 @@
"unicode_alternates": [],
"name": "mobile phone off",
"shortname": ":mobile_phone_off:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "mute"
+ "mute",
+ "symbol"
],
"moji": "📴"
},
"money_mouth": {
"unicode": "1F911",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "money-mouth face",
"shortname": ":money_mouth:",
"category": "people",
@@ -17583,7 +19730,14 @@
":money_mouth_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "smiley",
+ "win",
+ "money",
+ "emotion",
+ "boys night"
+ ],
+ "moji": "🤑"
},
"money_with_wings": {
"unicode": "1F4B8",
@@ -17607,7 +19761,7 @@
"burned",
"gift",
"cash",
- "dollar"
+ "boys night"
],
"moji": "💸"
},
@@ -17622,7 +19776,10 @@
"keywords": [
"coins",
"dollar",
- "payment"
+ "payment",
+ "bag",
+ "award",
+ "money"
],
"moji": "💰"
},
@@ -17640,7 +19797,8 @@
"monkey",
"primate",
"banana",
- "silly"
+ "silly",
+ "wildlife"
],
"moji": "🐒"
},
@@ -17663,7 +19821,7 @@
"unicode_alternates": [],
"name": "monorail",
"shortname": ":monorail:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17672,66 +19830,18 @@
"train",
"mono",
"rail",
- "transport"
+ "transport",
+ "travel",
+ "vacation"
],
"moji": "🚝"
},
- "mood_bubble": {
- "unicode": "1F5F0",
- "unicode_alternates": [],
- "name": "mood bubble",
- "shortname": ":mood_bubble:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "conversation",
- "communication",
- "comic",
- "feeling"
- ]
- },
- "mood_bubble_lightning": {
- "unicode": "1F5F1",
- "unicode_alternates": [],
- "name": "lightning mood bubble",
- "shortname": ":mood_bubble_lightning:",
- "category": "objects_symbols",
- "aliases": [
- ":lightning_mood_bubble:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "conversation",
- "communication",
- "comic",
- "feeling"
- ]
- },
- "mood_lightning": {
- "unicode": "1F5F2",
- "unicode_alternates": [],
- "name": "lightning mood",
- "shortname": ":mood_lightning:",
- "category": "objects_symbols",
- "aliases": [
- ":lightning_mood:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "zap",
- "electric",
- "current"
- ]
- },
"mortar_board": {
"unicode": "1F393",
"unicode_alternates": [],
"name": "graduation cap",
"shortname": ":mortar_board:",
- "category": "objects",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17742,33 +19852,55 @@
"hat",
"school",
"university",
- "graduation",
- "cap",
"mortarboard",
"academic",
"education",
"ceremony",
"square",
- "tassel"
+ "tassel",
+ "office",
+ "accessories"
],
"moji": "🎓"
},
"mosque": {
"unicode": "1F54C",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mosque",
"shortname": ":mosque:",
"category": "travel",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "places",
+ "religion",
+ "building",
+ "vacation",
+ "condolence"
+ ],
+ "moji": "🕌"
+ },
+ "motor_scooter": {
+ "unicode": "1F6F5",
+ "unicode_alternates": [],
+ "name": "motor scooter",
+ "shortname": ":motor_scooter:",
+ "category": "travel",
+ "aliases": [
+ ":motorbike:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [
+ "moped"
+ ],
+ "moji": "🛵"
},
"motorboat": {
"unicode": "1F6E5",
"unicode_alternates": [],
"name": "motorboat",
"shortname": ":motorboat:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17776,30 +19908,35 @@
"vehicle",
"boat",
"speedboat",
- "powerboat"
- ]
+ "powerboat",
+ "travel"
+ ],
+ "moji": "🛥"
},
"motorcycle": {
"unicode": "1F3CD",
"unicode_alternates": [],
"name": "racing motorcycle",
"shortname": ":motorcycle:",
- "category": "activity",
+ "category": "travel",
"aliases": [
":racing_motorcycle:"
],
"aliases_ascii": [],
"keywords": [
"bike",
- "speed"
- ]
+ "speed",
+ "transportation",
+ "travel"
+ ],
+ "moji": "🏍"
},
"motorway": {
"unicode": "1F6E3",
"unicode_alternates": [],
"name": "motorway",
"shortname": ":motorway:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17807,43 +19944,56 @@
"highway",
"freeway",
"traffic",
- "travel"
- ]
+ "travel",
+ "vacation",
+ "camp"
+ ],
+ "moji": "🛣"
},
"mount_fuji": {
"unicode": "1F5FB",
"unicode_alternates": [],
"name": "mount fuji",
"shortname": ":mount_fuji:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"japan",
"mountain",
"nature",
- "photo"
+ "photo",
+ "places",
+ "travel",
+ "vacation",
+ "cold",
+ "camp"
],
"moji": "🗻"
},
"mountain": {
"unicode": "26F0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mountain",
"shortname": ":mountain:",
"category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "place"
- ]
+ "place",
+ "places",
+ "travel",
+ "vacation",
+ "camp"
+ ],
+ "moji": "⛰"
},
"mountain_bicyclist": {
"unicode": "1F6B5",
"unicode_alternates": [],
"name": "mountain bicyclist",
"shortname": ":mountain_bicyclist:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17855,13 +20005,15 @@
"bike",
"pedal",
"bicycle",
- "transportation"
+ "men",
+ "sport",
+ "diversity"
],
"moji": "🚵"
},
"mountain_bicyclist_tone1": {
"unicode": "1F6B5-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mountain bicyclist tone 1",
"shortname": ":mountain_bicyclist_tone1:",
"category": "activity",
@@ -17872,13 +20024,13 @@
"transportation",
"bike",
"pedal",
- "bicycle",
- "transportation"
- ]
+ "bicycle"
+ ],
+ "moji": "🚵🏻"
},
"mountain_bicyclist_tone2": {
"unicode": "1F6B5-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mountain bicyclist tone 2",
"shortname": ":mountain_bicyclist_tone2:",
"category": "activity",
@@ -17889,13 +20041,13 @@
"transportation",
"bike",
"pedal",
- "bicycle",
- "transportation"
- ]
+ "bicycle"
+ ],
+ "moji": "🚵🏼"
},
"mountain_bicyclist_tone3": {
"unicode": "1F6B5-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mountain bicyclist tone 3",
"shortname": ":mountain_bicyclist_tone3:",
"category": "activity",
@@ -17906,13 +20058,13 @@
"transportation",
"bike",
"pedal",
- "bicycle",
- "transportation"
- ]
+ "bicycle"
+ ],
+ "moji": "🚵🏽"
},
"mountain_bicyclist_tone4": {
"unicode": "1F6B5-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mountain bicyclist tone 4",
"shortname": ":mountain_bicyclist_tone4:",
"category": "activity",
@@ -17923,13 +20075,13 @@
"transportation",
"bike",
"pedal",
- "bicycle",
- "transportation"
- ]
+ "bicycle"
+ ],
+ "moji": "🚵🏾"
},
"mountain_bicyclist_tone5": {
"unicode": "1F6B5-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "mountain bicyclist tone 5",
"shortname": ":mountain_bicyclist_tone5:",
"category": "activity",
@@ -17940,16 +20092,16 @@
"transportation",
"bike",
"pedal",
- "bicycle",
- "transportation"
- ]
+ "bicycle"
+ ],
+ "moji": "🚵🏿"
},
"mountain_cableway": {
"unicode": "1F6A0",
"unicode_alternates": [],
"name": "mountain cableway",
"shortname": ":mountain_cableway:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17959,7 +20111,8 @@
"cable",
"rail",
"train",
- "railway"
+ "railway",
+ "travel"
],
"moji": "🚠"
},
@@ -17968,7 +20121,7 @@
"unicode_alternates": [],
"name": "mountain railway",
"shortname": ":mountain_railway:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -17977,7 +20130,8 @@
"railway",
"rail",
"train",
- "transport"
+ "transport",
+ "travel"
],
"moji": "🚞"
},
@@ -17986,7 +20140,7 @@
"unicode_alternates": [],
"name": "snow capped mountain",
"shortname": ":mountain_snow:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":snow_capped_mountain:"
],
@@ -17995,8 +20149,13 @@
"cold",
"elevation",
"hiking",
- "peak"
- ]
+ "peak",
+ "places",
+ "travel",
+ "vacation",
+ "camp"
+ ],
+ "moji": "🏔"
},
"mouse": {
"unicode": "1F42D",
@@ -18029,25 +20188,9 @@
],
"moji": "🐁"
},
- "mouse_one": {
- "unicode": "1F5AF",
- "unicode_alternates": [],
- "name": "one button mouse",
- "shortname": ":mouse_one:",
- "category": "objects_symbols",
- "aliases": [
- ":one_button_mouse:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "computer",
- "input",
- "device"
- ]
- },
"mouse_three_button": {
"unicode": "1F5B1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "three button mouse",
"shortname": ":mouse_three_button:",
"category": "objects",
@@ -18059,8 +20202,12 @@
"3",
"computer",
"object",
- "office"
- ]
+ "office",
+ "electronics",
+ "work",
+ "game"
+ ],
+ "moji": "🖱"
},
"movie_camera": {
"unicode": "1F3A5",
@@ -18078,7 +20225,8 @@
"camcorder",
"video",
"motion",
- "picture"
+ "picture",
+ "object"
],
"moji": "🎥"
},
@@ -18087,21 +20235,101 @@
"unicode_alternates": [],
"name": "moyai",
"shortname": ":moyai:",
- "category": "places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"island",
- "stone"
+ "stone",
+ "travel",
+ "vacation"
],
"moji": "🗿"
},
+ "mrs_claus": {
+ "unicode": "1F936",
+ "unicode_alternates": [],
+ "name": "mother christmas",
+ "shortname": ":mrs_claus:",
+ "category": "people",
+ "aliases": [
+ ":mother_christmas:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤶"
+ },
+ "mrs_claus_tone1": {
+ "unicode": "1F936-1F3FB",
+ "unicode_alternates": [],
+ "name": "mother christmas tone 1",
+ "shortname": ":mrs_claus_tone1:",
+ "category": "people",
+ "aliases": [
+ ":mother_christmas_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤶🏻"
+ },
+ "mrs_claus_tone2": {
+ "unicode": "1F936-1F3FC",
+ "unicode_alternates": [],
+ "name": "mother christmas tone 2",
+ "shortname": ":mrs_claus_tone2:",
+ "category": "people",
+ "aliases": [
+ ":mother_christmas_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤶🏼"
+ },
+ "mrs_claus_tone3": {
+ "unicode": "1F936-1F3FD",
+ "unicode_alternates": [],
+ "name": "mother christmas tone 3",
+ "shortname": ":mrs_claus_tone3:",
+ "category": "people",
+ "aliases": [
+ ":mother_christmas_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤶🏽"
+ },
+ "mrs_claus_tone4": {
+ "unicode": "1F936-1F3FE",
+ "unicode_alternates": [],
+ "name": "mother christmas tone 4",
+ "shortname": ":mrs_claus_tone4:",
+ "category": "people",
+ "aliases": [
+ ":mother_christmas_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤶🏾"
+ },
+ "mrs_claus_tone5": {
+ "unicode": "1F936-1F3FF",
+ "unicode_alternates": [],
+ "name": "mother christmas tone 5",
+ "shortname": ":mrs_claus_tone5:",
+ "category": "people",
+ "aliases": [
+ ":mother_christmas_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤶🏿"
+ },
"muscle": {
"unicode": "1F4AA",
"unicode_alternates": [],
"name": "flexed biceps",
"shortname": ":muscle:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18110,13 +20338,20 @@
"hand",
"strong",
"muscle",
- "bicep"
+ "bicep",
+ "body",
+ "hands",
+ "workout",
+ "win",
+ "diversity",
+ "feminist",
+ "boys night"
],
"moji": "💪"
},
"muscle_tone1": {
"unicode": "1F4AA-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "flexed biceps tone 1",
"shortname": ":muscle_tone1:",
"category": "people",
@@ -18129,11 +20364,12 @@
"strong",
"muscle",
"bicep"
- ]
+ ],
+ "moji": "💪🏻"
},
"muscle_tone2": {
"unicode": "1F4AA-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "flexed biceps tone 2",
"shortname": ":muscle_tone2:",
"category": "people",
@@ -18146,11 +20382,12 @@
"strong",
"muscle",
"bicep"
- ]
+ ],
+ "moji": "💪🏼"
},
"muscle_tone3": {
"unicode": "1F4AA-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "flexed biceps tone 3",
"shortname": ":muscle_tone3:",
"category": "people",
@@ -18163,11 +20400,12 @@
"strong",
"muscle",
"bicep"
- ]
+ ],
+ "moji": "💪🏽"
},
"muscle_tone4": {
"unicode": "1F4AA-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "flexed biceps tone 4",
"shortname": ":muscle_tone4:",
"category": "people",
@@ -18180,11 +20418,12 @@
"strong",
"muscle",
"bicep"
- ]
+ ],
+ "moji": "💪🏾"
},
"muscle_tone5": {
"unicode": "1F4AA-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "flexed biceps tone 5",
"shortname": ":muscle_tone5:",
"category": "people",
@@ -18197,7 +20436,8 @@
"strong",
"muscle",
"bicep"
- ]
+ ],
+ "moji": "💪🏿"
},
"mushroom": {
"unicode": "1F344",
@@ -18213,7 +20453,9 @@
"mushroom",
"fungi",
"food",
- "fungus"
+ "fungus",
+ "nature",
+ "drugs"
],
"moji": "🍄"
},
@@ -18222,7 +20464,7 @@
"unicode_alternates": [],
"name": "musical keyboard",
"shortname": ":musical_keyboard:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18230,10 +20472,9 @@
"piano",
"music",
"keyboard",
- "piano",
"organ",
- "instrument",
- "electric"
+ "electric",
+ "instruments"
],
"moji": "🎹"
},
@@ -18242,7 +20483,7 @@
"unicode_alternates": [],
"name": "musical note",
"shortname": ":musical_note:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18250,8 +20491,9 @@
"musical",
"music",
"note",
- "music",
- "sound"
+ "sound",
+ "instruments",
+ "symbol"
],
"moji": "🎵"
},
@@ -18260,7 +20502,7 @@
"unicode_alternates": [],
"name": "musical score",
"shortname": ":musical_score:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18269,10 +20511,10 @@
"music",
"musical",
"score",
- "clef",
"g-clef",
"stave",
- "staff"
+ "staff",
+ "instruments"
],
"moji": "🎼"
},
@@ -18281,12 +20523,14 @@
"unicode_alternates": [],
"name": "speaker with cancellation stroke",
"shortname": ":mute:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"sound",
- "volume"
+ "volume",
+ "alarm",
+ "symbol"
],
"moji": "🔇"
},
@@ -18295,18 +20539,24 @@
"unicode_alternates": [],
"name": "nail polish",
"shortname": ":nail_care:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"beauty",
- "manicure"
+ "manicure",
+ "women",
+ "body",
+ "hands",
+ "nailpolish",
+ "diversity",
+ "girls night"
],
"moji": "💅"
},
"nail_care_tone1": {
"unicode": "1F485-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nail polish tone 1",
"shortname": ":nail_care_tone1:",
"category": "people",
@@ -18315,11 +20565,12 @@
"keywords": [
"beauty",
"manicure"
- ]
+ ],
+ "moji": "💅🏻"
},
"nail_care_tone2": {
"unicode": "1F485-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nail polish tone 2",
"shortname": ":nail_care_tone2:",
"category": "people",
@@ -18328,11 +20579,12 @@
"keywords": [
"beauty",
"manicure"
- ]
+ ],
+ "moji": "💅🏼"
},
"nail_care_tone3": {
"unicode": "1F485-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nail polish tone 3",
"shortname": ":nail_care_tone3:",
"category": "people",
@@ -18341,11 +20593,12 @@
"keywords": [
"beauty",
"manicure"
- ]
+ ],
+ "moji": "💅🏽"
},
"nail_care_tone4": {
"unicode": "1F485-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nail polish tone 4",
"shortname": ":nail_care_tone4:",
"category": "people",
@@ -18354,11 +20607,12 @@
"keywords": [
"beauty",
"manicure"
- ]
+ ],
+ "moji": "💅🏾"
},
"nail_care_tone5": {
"unicode": "1F485-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nail polish tone 5",
"shortname": ":nail_care_tone5:",
"category": "people",
@@ -18367,28 +20621,43 @@
"keywords": [
"beauty",
"manicure"
- ]
+ ],
+ "moji": "💅🏿"
},
"name_badge": {
"unicode": "1F4DB",
"unicode_alternates": [],
"name": "name badge",
"shortname": ":name_badge:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fire",
- "forbid"
+ "forbid",
+ "work"
],
"moji": "📛"
},
+ "nauseated_face": {
+ "unicode": "1F922",
+ "unicode_alternates": [],
+ "name": "nauseated face",
+ "shortname": ":nauseated_face:",
+ "category": "people",
+ "aliases": [
+ ":sick:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤢"
+ },
"necktie": {
"unicode": "1F454",
"unicode_alternates": [],
"name": "necktie",
"shortname": ":necktie:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18405,20 +20674,21 @@
"unicode_alternates": [],
"name": "negative squared cross mark",
"shortname": ":negative_squared_cross_mark:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"deny",
"green-square",
"no",
- "x"
+ "x",
+ "symbol"
],
"moji": "❎"
},
"nerd": {
"unicode": "1F913",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nerd face",
"shortname": ":nerd:",
"category": "people",
@@ -18426,31 +20696,18 @@
":nerd_face:"
],
"aliases_ascii": [],
- "keywords": []
- },
- "network": {
- "unicode": "1F5A7",
- "unicode_alternates": [],
- "name": "three networked computers",
- "shortname": ":network:",
- "category": "objects_symbols",
- "aliases": [
- ":three_networked_computers:"
- ],
- "aliases_ascii": [],
"keywords": [
- "lan",
- "wan",
- "network",
- "technology"
- ]
+ "smiley",
+ "glasses"
+ ],
+ "moji": "🤓"
},
"neutral_face": {
"unicode": "1F610",
"unicode_alternates": [],
"name": "neutral face",
"shortname": ":neutral_face:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18459,7 +20716,11 @@
"neutral",
"objective",
"impartial",
- "blank"
+ "blank",
+ "mad",
+ "smiley",
+ "shrug",
+ "emotion"
],
"moji": "😐"
},
@@ -18468,11 +20729,12 @@
"unicode_alternates": [],
"name": "squared new",
"shortname": ":new:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "🆕"
},
@@ -18491,7 +20753,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌑"
},
@@ -18512,7 +20775,9 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space",
+ "goodnight"
],
"moji": "🌚"
},
@@ -18526,7 +20791,9 @@
"aliases_ascii": [],
"keywords": [
"headline",
- "press"
+ "press",
+ "office",
+ "write"
],
"moji": "📰"
},
@@ -18535,19 +20802,22 @@
"unicode_alternates": [],
"name": "rolled-up newspaper",
"shortname": ":newspaper2:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":rolled_up_newspaper:"
],
"aliases_ascii": [],
"keywords": [
"headline",
- "press"
- ]
+ "press",
+ "office",
+ "write"
+ ],
+ "moji": "🗞"
},
"ng": {
"unicode": "1F196",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "squared ng",
"shortname": ":ng:",
"category": "symbols",
@@ -18558,14 +20828,15 @@
"no good",
"symbol",
"word"
- ]
+ ],
+ "moji": "🆖"
},
"night_with_stars": {
"unicode": "1F303",
"unicode_alternates": [],
"name": "night with stars",
"shortname": ":night_with_stars:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18575,7 +20846,11 @@
"evening",
"planets",
"space",
- "sky"
+ "sky",
+ "places",
+ "building",
+ "vacation",
+ "goodnight"
],
"moji": "🌃"
},
@@ -18585,15 +20860,18 @@
"unicode_alternates": [
"0039-FE0F-20E3"
],
- "name": "digit nine",
+ "name": "keycap digit nine",
"shortname": ":nine:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"9",
"blue-square",
- "numbers"
+ "numbers",
+ "number",
+ "math",
+ "symbol"
]
},
"no_bell": {
@@ -18601,13 +20879,15 @@
"unicode_alternates": [],
"name": "bell with cancellation stroke",
"shortname": ":no_bell:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"mute",
"sound",
- "volume"
+ "volume",
+ "alarm",
+ "symbol"
],
"moji": "🔕"
},
@@ -18616,7 +20896,7 @@
"unicode_alternates": [],
"name": "no bicycles",
"shortname": ":no_bicycles:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18624,7 +20904,8 @@
"prohibited",
"bicycle",
"bike pedal",
- "no"
+ "no",
+ "symbol"
],
"moji": "🚳"
},
@@ -18635,7 +20916,7 @@
],
"name": "no entry",
"shortname": ":no_entry:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18644,7 +20925,9 @@
"limit",
"privacy",
"security",
- "stop"
+ "stop",
+ "symbol",
+ "circle"
],
"moji": "⛔"
},
@@ -18653,7 +20936,7 @@
"unicode_alternates": [],
"name": "no entry sign",
"shortname": ":no_entry_sign:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18663,8 +20946,9 @@
"limit",
"stop",
"no",
- "stop",
- "entry"
+ "entry",
+ "symbol",
+ "circle"
],
"moji": "🚫"
},
@@ -18673,7 +20957,7 @@
"unicode_alternates": [],
"name": "face with no good gesture",
"shortname": ":no_good:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18684,13 +20968,17 @@
"stop",
"nope",
"don&#039;t",
- "not"
+ "not",
+ "people",
+ "women",
+ "diversity",
+ "girls night"
],
"moji": "🙅"
},
"no_good_tone1": {
"unicode": "1F645-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with no good gesture tone 1",
"shortname": ":no_good_tone1:",
"category": "people",
@@ -18708,11 +20996,12 @@
"hand",
"person",
"prohibited"
- ]
+ ],
+ "moji": "🙅🏻"
},
"no_good_tone2": {
"unicode": "1F645-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with no good gesture tone 2",
"shortname": ":no_good_tone2:",
"category": "people",
@@ -18730,11 +21019,12 @@
"hand",
"person",
"prohibited"
- ]
+ ],
+ "moji": "🙅🏼"
},
"no_good_tone3": {
"unicode": "1F645-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with no good gesture tone 3",
"shortname": ":no_good_tone3:",
"category": "people",
@@ -18752,11 +21042,12 @@
"hand",
"person",
"prohibited"
- ]
+ ],
+ "moji": "🙅🏽"
},
"no_good_tone4": {
"unicode": "1F645-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with no good gesture tone 4",
"shortname": ":no_good_tone4:",
"category": "people",
@@ -18774,11 +21065,12 @@
"hand",
"person",
"prohibited"
- ]
+ ],
+ "moji": "🙅🏾"
},
"no_good_tone5": {
"unicode": "1F645-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with no good gesture tone 5",
"shortname": ":no_good_tone5:",
"category": "people",
@@ -18796,19 +21088,22 @@
"hand",
"person",
"prohibited"
- ]
+ ],
+ "moji": "🙅🏿"
},
"no_mobile_phones": {
"unicode": "1F4F5",
"unicode_alternates": [],
"name": "no mobile phones",
"shortname": ":no_mobile_phones:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"iphone",
- "mute"
+ "mute",
+ "symbol",
+ "phone"
],
"moji": "📵"
},
@@ -18817,7 +21112,7 @@
"unicode_alternates": [],
"name": "face without mouth",
"shortname": ":no_mouth:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":-X",
@@ -18835,7 +21130,11 @@
"hellokitty",
"mouth",
"silent",
- "vapid"
+ "vapid",
+ "mad",
+ "smiley",
+ "neutral",
+ "emotion"
],
"moji": "😶"
},
@@ -18844,7 +21143,7 @@
"unicode_alternates": [],
"name": "no pedestrians",
"shortname": ":no_pedestrians:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18857,7 +21156,8 @@
"stroll",
"stride",
"foot",
- "feet"
+ "feet",
+ "symbol"
],
"moji": "🚷"
},
@@ -18866,20 +21166,20 @@
"unicode_alternates": [],
"name": "no smoking symbol",
"shortname": ":no_smoking:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cigarette",
"no",
"smoking",
- "cigarette",
"smoke",
"cancer",
"lungs",
"inhale",
"tar",
- "nicotine"
+ "nicotine",
+ "symbol"
],
"moji": "🚭"
},
@@ -18888,7 +21188,7 @@
"unicode_alternates": [],
"name": "non-potable water symbol",
"shortname": ":non-potable_water:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -18901,7 +21201,8 @@
"dirty",
"gross",
"aqua",
- "h20"
+ "h20",
+ "symbol"
],
"moji": "🚱"
},
@@ -18910,18 +21211,20 @@
"unicode_alternates": [],
"name": "nose",
"shortname": ":nose:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"smell",
- "sniff"
+ "sniff",
+ "body",
+ "diversity"
],
"moji": "👃"
},
"nose_tone1": {
"unicode": "1F443-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nose tone 1",
"shortname": ":nose_tone1:",
"category": "people",
@@ -18930,11 +21233,12 @@
"keywords": [
"smell",
"sniff"
- ]
+ ],
+ "moji": "👃🏻"
},
"nose_tone2": {
"unicode": "1F443-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nose tone 2",
"shortname": ":nose_tone2:",
"category": "people",
@@ -18943,11 +21247,12 @@
"keywords": [
"smell",
"sniff"
- ]
+ ],
+ "moji": "👃🏼"
},
"nose_tone3": {
"unicode": "1F443-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nose tone 3",
"shortname": ":nose_tone3:",
"category": "people",
@@ -18956,11 +21261,12 @@
"keywords": [
"smell",
"sniff"
- ]
+ ],
+ "moji": "👃🏽"
},
"nose_tone4": {
"unicode": "1F443-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nose tone 4",
"shortname": ":nose_tone4:",
"category": "people",
@@ -18969,11 +21275,12 @@
"keywords": [
"smell",
"sniff"
- ]
+ ],
+ "moji": "👃🏾"
},
"nose_tone5": {
"unicode": "1F443-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "nose tone 5",
"shortname": ":nose_tone5:",
"category": "people",
@@ -18982,37 +21289,8 @@
"keywords": [
"smell",
"sniff"
- ]
- },
- "note": {
- "unicode": "1F5C9",
- "unicode_alternates": [],
- "name": "note page",
- "shortname": ":note:",
- "category": "objects_symbols",
- "aliases": [
- ":note_page:"
],
- "aliases_ascii": [],
- "keywords": [
- "stationery",
- "post-it"
- ]
- },
- "note_empty": {
- "unicode": "1F5C6",
- "unicode_alternates": [],
- "name": "empty note page",
- "shortname": ":note_empty:",
- "category": "objects_symbols",
- "aliases": [
- ":empty_note_page:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "stationery",
- "post-it"
- ]
+ "moji": "👃🏿"
},
"notebook": {
"unicode": "1F4D3",
@@ -19026,7 +21304,10 @@
"notes",
"paper",
"record",
- "stationery"
+ "stationery",
+ "object",
+ "office",
+ "write"
],
"moji": "📓"
},
@@ -19042,71 +21323,48 @@
"classroom",
"notes",
"paper",
- "record"
+ "record",
+ "object",
+ "office",
+ "write"
],
"moji": "📔"
},
- "notepad": {
- "unicode": "1F5CA",
- "unicode_alternates": [],
- "name": "note pad",
- "shortname": ":notepad:",
- "category": "objects_symbols",
- "aliases": [
- ":note_pad:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "stationery",
- "post-it"
- ]
- },
- "notepad_empty": {
- "unicode": "1F5C7",
- "unicode_alternates": [],
- "name": "empty note pad",
- "shortname": ":notepad_empty:",
- "category": "objects_symbols",
- "aliases": [
- ":empty_note_pad:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "stationery",
- "post-it"
- ]
- },
"notepad_spiral": {
"unicode": "1F5D2",
"unicode_alternates": [],
"name": "spiral note pad",
"shortname": ":notepad_spiral:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":spiral_note_pad:"
],
"aliases_ascii": [],
"keywords": [
- "stationery"
- ]
+ "stationery",
+ "work",
+ "office",
+ "write"
+ ],
+ "moji": "🗒"
},
"notes": {
"unicode": "1F3B6",
"unicode_alternates": [],
"name": "multiple musical notes",
"shortname": ":notes:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"music",
"score",
"musical",
- "music",
"notes",
- "music",
"sound",
- "melody"
+ "melody",
+ "instruments",
+ "symbol"
],
"moji": "🎶"
},
@@ -19120,7 +21378,10 @@
"aliases_ascii": [],
"keywords": [
"handy",
- "tools"
+ "tools",
+ "object",
+ "tool",
+ "nutcase"
],
"moji": "🔩"
},
@@ -19131,12 +21392,13 @@
],
"name": "heavy large circle",
"shortname": ":o:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"circle",
- "round"
+ "round",
+ "symbol"
],
"moji": "⭕"
},
@@ -19145,13 +21407,14 @@
"unicode_alternates": [],
"name": "negative squared latin capital letter o",
"shortname": ":o2:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"letter",
- "red-square"
+ "red-square",
+ "symbol"
],
"moji": "🅾"
},
@@ -19168,13 +21431,29 @@
"water",
"wave",
"ocean",
- "wave",
"surf",
"beach",
- "tide"
+ "tide",
+ "weather",
+ "boat",
+ "tropical",
+ "swim"
],
"moji": "🌊"
},
+ "octagonal_sign": {
+ "unicode": "1F6D1",
+ "unicode_alternates": [],
+ "name": "octagonal sign",
+ "shortname": ":octagonal_sign:",
+ "category": "symbols",
+ "aliases": [
+ ":stop_sign:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🛑"
+ },
"octopus": {
"unicode": "1F419",
"unicode_alternates": [],
@@ -19187,7 +21466,8 @@
"animal",
"creature",
"ocean",
- "sea"
+ "sea",
+ "wildlife"
],
"moji": "🐙"
},
@@ -19196,7 +21476,7 @@
"unicode_alternates": [],
"name": "oden",
"shortname": ":oden:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19214,13 +21494,14 @@
"unicode_alternates": [],
"name": "office building",
"shortname": ":office:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"building",
"bureau",
- "work"
+ "work",
+ "places"
],
"moji": "🏢"
},
@@ -19229,28 +21510,31 @@
"unicode_alternates": [],
"name": "oil drum",
"shortname": ":oil:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":oil_drum:"
],
"aliases_ascii": [],
"keywords": [
- "petroleum"
- ]
+ "petroleum",
+ "object"
+ ],
+ "moji": "🛢"
},
"ok": {
"unicode": "1F197",
"unicode_alternates": [],
"name": "squared ok",
"shortname": ":ok:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"agree",
"blue-square",
"good",
- "yes"
+ "yes",
+ "symbol"
],
"moji": "🆗"
},
@@ -19259,7 +21543,7 @@
"unicode_alternates": [],
"name": "ok hand sign",
"shortname": ":ok_hand:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19273,13 +21557,19 @@
"marijuana",
"joint",
"pot",
- "420"
+ "420",
+ "body",
+ "hands",
+ "hi",
+ "diversity",
+ "good",
+ "beautiful"
],
"moji": "👌"
},
"ok_hand_tone1": {
"unicode": "1F44C-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ok hand sign tone 1",
"shortname": ":ok_hand_tone1:",
"category": "people",
@@ -19296,11 +21586,12 @@
"joint",
"pot",
"420"
- ]
+ ],
+ "moji": "👌🏻"
},
"ok_hand_tone2": {
"unicode": "1F44C-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ok hand sign tone 2",
"shortname": ":ok_hand_tone2:",
"category": "people",
@@ -19317,11 +21608,12 @@
"joint",
"pot",
"420"
- ]
+ ],
+ "moji": "👌🏼"
},
"ok_hand_tone3": {
"unicode": "1F44C-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ok hand sign tone 3",
"shortname": ":ok_hand_tone3:",
"category": "people",
@@ -19338,11 +21630,12 @@
"joint",
"pot",
"420"
- ]
+ ],
+ "moji": "👌🏽"
},
"ok_hand_tone4": {
"unicode": "1F44C-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ok hand sign tone 4",
"shortname": ":ok_hand_tone4:",
"category": "people",
@@ -19359,11 +21652,12 @@
"joint",
"pot",
"420"
- ]
+ ],
+ "moji": "👌🏾"
},
"ok_hand_tone5": {
"unicode": "1F44C-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "ok hand sign tone 5",
"shortname": ":ok_hand_tone5:",
"category": "people",
@@ -19380,14 +21674,15 @@
"joint",
"pot",
"420"
- ]
+ ],
+ "moji": "👌🏿"
},
"ok_woman": {
"unicode": "1F646",
"unicode_alternates": [],
"name": "face with ok gesture",
"shortname": ":ok_woman:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"*\\0/*",
@@ -19404,13 +21699,15 @@
"yes",
"ok",
"okay",
- "accept"
+ "accept",
+ "people",
+ "diversity"
],
"moji": "🙆"
},
"ok_woman_tone1": {
"unicode": "1F646-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with ok gesture tone1",
"shortname": ":ok_woman_tone1:",
"category": "people",
@@ -19425,11 +21722,12 @@
"yes",
"okay",
"accept"
- ]
+ ],
+ "moji": "🙆🏻"
},
"ok_woman_tone2": {
"unicode": "1F646-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with ok gesture tone2",
"shortname": ":ok_woman_tone2:",
"category": "people",
@@ -19444,11 +21742,12 @@
"yes",
"okay",
"accept"
- ]
+ ],
+ "moji": "🙆🏼"
},
"ok_woman_tone3": {
"unicode": "1F646-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with ok gesture tone3",
"shortname": ":ok_woman_tone3:",
"category": "people",
@@ -19463,11 +21762,12 @@
"yes",
"okay",
"accept"
- ]
+ ],
+ "moji": "🙆🏽"
},
"ok_woman_tone4": {
"unicode": "1F646-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with ok gesture tone4",
"shortname": ":ok_woman_tone4:",
"category": "people",
@@ -19482,11 +21782,12 @@
"yes",
"okay",
"accept"
- ]
+ ],
+ "moji": "🙆🏾"
},
"ok_woman_tone5": {
"unicode": "1F646-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with ok gesture tone5",
"shortname": ":ok_woman_tone5:",
"category": "people",
@@ -19501,26 +21802,30 @@
"yes",
"okay",
"accept"
- ]
+ ],
+ "moji": "🙆🏿"
},
"older_man": {
"unicode": "1F474",
"unicode_alternates": [],
"name": "older man",
"shortname": ":older_man:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"human",
"male",
- "men"
+ "men",
+ "people",
+ "old people",
+ "diversity"
],
"moji": "👴"
},
"older_man_tone1": {
"unicode": "1F474-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older man tone 1",
"shortname": ":older_man_tone1:",
"category": "people",
@@ -19531,11 +21836,12 @@
"men",
"grandpa",
"grandfather"
- ]
+ ],
+ "moji": "👴🏻"
},
"older_man_tone2": {
"unicode": "1F474-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older man tone 2",
"shortname": ":older_man_tone2:",
"category": "people",
@@ -19546,11 +21852,12 @@
"men",
"grandpa",
"grandfather"
- ]
+ ],
+ "moji": "👴🏼"
},
"older_man_tone3": {
"unicode": "1F474-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older man tone 3",
"shortname": ":older_man_tone3:",
"category": "people",
@@ -19561,11 +21868,12 @@
"men",
"grandpa",
"grandfather"
- ]
+ ],
+ "moji": "👴🏽"
},
"older_man_tone4": {
"unicode": "1F474-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older man tone 4",
"shortname": ":older_man_tone4:",
"category": "people",
@@ -19576,11 +21884,12 @@
"men",
"grandpa",
"grandfather"
- ]
+ ],
+ "moji": "👴🏾"
},
"older_man_tone5": {
"unicode": "1F474-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older man tone 5",
"shortname": ":older_man_tone5:",
"category": "people",
@@ -19591,14 +21900,15 @@
"men",
"grandpa",
"grandfather"
- ]
+ ],
+ "moji": "👴🏿"
},
"older_woman": {
"unicode": "1F475",
"unicode_alternates": [],
"name": "older woman",
"shortname": ":older_woman:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":grandma:"
],
@@ -19608,13 +21918,16 @@
"girl",
"women",
"grandma",
- "grandmother"
+ "grandmother",
+ "people",
+ "old people",
+ "diversity"
],
"moji": "👵"
},
"older_woman_tone1": {
"unicode": "1F475-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older woman tone 1",
"shortname": ":older_woman_tone1:",
"category": "people",
@@ -19628,11 +21941,12 @@
"lady",
"grandma",
"grandmother"
- ]
+ ],
+ "moji": "👵🏻"
},
"older_woman_tone2": {
"unicode": "1F475-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older woman tone 2",
"shortname": ":older_woman_tone2:",
"category": "people",
@@ -19646,11 +21960,12 @@
"lady",
"grandma",
"grandmother"
- ]
+ ],
+ "moji": "👵🏼"
},
"older_woman_tone3": {
"unicode": "1F475-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older woman tone 3",
"shortname": ":older_woman_tone3:",
"category": "people",
@@ -19664,11 +21979,12 @@
"lady",
"grandma",
"grandmother"
- ]
+ ],
+ "moji": "👵🏽"
},
"older_woman_tone4": {
"unicode": "1F475-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older woman tone 4",
"shortname": ":older_woman_tone4:",
"category": "people",
@@ -19682,11 +21998,12 @@
"lady",
"grandma",
"grandmother"
- ]
+ ],
+ "moji": "👵🏾"
},
"older_woman_tone5": {
"unicode": "1F475-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "older woman tone 5",
"shortname": ":older_woman_tone5:",
"category": "people",
@@ -19700,14 +22017,15 @@
"lady",
"grandma",
"grandmother"
- ]
+ ],
+ "moji": "👵🏿"
},
"om_symbol": {
"unicode": "1F549",
"unicode_alternates": [],
"name": "om symbol",
"shortname": ":om_symbol:",
- "category": "objects_symbols",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19718,20 +22036,24 @@
"dharmic",
"buddhism",
"jainism",
- "meditate"
- ]
+ "meditate",
+ "religion",
+ "symbol"
+ ],
+ "moji": "🕉"
},
"on": {
"unicode": "1F51B",
"unicode_alternates": [],
"name": "on with exclamation mark with left right arrow abo",
"shortname": ":on:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "words"
+ "words",
+ "symbol"
],
"moji": "🔛"
},
@@ -19740,7 +22062,7 @@
"unicode_alternates": [],
"name": "oncoming automobile",
"shortname": ":oncoming_automobile:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19748,8 +22070,8 @@
"transportation",
"vehicle",
"sedan",
- "car",
- "automobile"
+ "automobile",
+ "travel"
],
"moji": "🚘"
},
@@ -19758,7 +22080,7 @@
"unicode_alternates": [],
"name": "oncoming bus",
"shortname": ":oncoming_bus:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19767,8 +22089,8 @@
"bus",
"school",
"city",
- "transportation",
- "public"
+ "public",
+ "travel"
],
"moji": "🚍"
},
@@ -19777,7 +22099,7 @@
"unicode_alternates": [],
"name": "oncoming police car",
"shortname": ":oncoming_police_car:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19791,7 +22113,9 @@
"citation",
"crime",
"help",
- "officer"
+ "officer",
+ "transportation",
+ "911"
],
"moji": "🚔"
},
@@ -19800,7 +22124,7 @@
"unicode_alternates": [],
"name": "oncoming taxi",
"shortname": ":oncoming_taxi:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19812,7 +22136,9 @@
"automobile",
"city",
"transport",
- "service"
+ "service",
+ "transportation",
+ "travel"
],
"moji": "🚖"
},
@@ -19822,15 +22148,18 @@
"unicode_alternates": [
"0031-FE0F-20E3"
],
- "name": "digit one",
+ "name": "keycap digit one",
"shortname": ":one:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"1",
"blue-square",
- "numbers"
+ "numbers",
+ "number",
+ "math",
+ "symbol"
]
},
"open_file_folder": {
@@ -19843,7 +22172,9 @@
"aliases_ascii": [],
"keywords": [
"documents",
- "load"
+ "load",
+ "work",
+ "office"
],
"moji": "📂"
},
@@ -19852,18 +22183,22 @@
"unicode_alternates": [],
"name": "open hands sign",
"shortname": ":open_hands:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"butterfly",
- "fingers"
+ "fingers",
+ "body",
+ "hands",
+ "diversity",
+ "condolence"
],
"moji": "👐"
},
"open_hands_tone1": {
"unicode": "1F450-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "open hands sign tone 1",
"shortname": ":open_hands_tone1:",
"category": "people",
@@ -19872,11 +22207,12 @@
"keywords": [
"butterfly",
"fingers"
- ]
+ ],
+ "moji": "👐🏻"
},
"open_hands_tone2": {
"unicode": "1F450-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "open hands sign tone 2",
"shortname": ":open_hands_tone2:",
"category": "people",
@@ -19885,11 +22221,12 @@
"keywords": [
"butterfly",
"fingers"
- ]
+ ],
+ "moji": "👐🏼"
},
"open_hands_tone3": {
"unicode": "1F450-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "open hands sign tone 3",
"shortname": ":open_hands_tone3:",
"category": "people",
@@ -19898,11 +22235,12 @@
"keywords": [
"butterfly",
"fingers"
- ]
+ ],
+ "moji": "👐🏽"
},
"open_hands_tone4": {
"unicode": "1F450-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "open hands sign tone 4",
"shortname": ":open_hands_tone4:",
"category": "people",
@@ -19911,11 +22249,12 @@
"keywords": [
"butterfly",
"fingers"
- ]
+ ],
+ "moji": "👐🏾"
},
"open_hands_tone5": {
"unicode": "1F450-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "open hands sign tone 5",
"shortname": ":open_hands_tone5:",
"category": "people",
@@ -19924,14 +22263,15 @@
"keywords": [
"butterfly",
"fingers"
- ]
+ ],
+ "moji": "👐🏿"
},
"open_mouth": {
"unicode": "1F62E",
"unicode_alternates": [],
"name": "face with open mouth",
"shortname": ":open_mouth:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":-O",
@@ -19949,7 +22289,10 @@
"jaw",
"gapping",
"surprise",
- "wow"
+ "wow",
+ "smiley",
+ "surprised",
+ "emotion"
],
"moji": "😮"
},
@@ -19958,7 +22301,7 @@
"unicode_alternates": [],
"name": "ophiuchus",
"shortname": ":ophiuchus:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -19972,28 +22315,11 @@
"zodiac",
"purple-square",
"sign",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "⛎"
},
- "optical_disk": {
- "unicode": "1F5B8",
- "unicode_alternates": [],
- "name": "optical disc icon",
- "shortname": ":optical_disk:",
- "category": "objects_symbols",
- "aliases": [
- ":optical_disc_icon:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "cd",
- "dvd",
- "disc",
- "disk",
- "technology"
- ]
- },
"orange_book": {
"unicode": "1F4D9",
"unicode_alternates": [],
@@ -20005,13 +22331,17 @@
"keywords": [
"knowledge",
"library",
- "read"
+ "read",
+ "object",
+ "office",
+ "write",
+ "book"
],
"moji": "📙"
},
"orthodox_cross": {
"unicode": "2626",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "orthodox cross",
"shortname": ":orthodox_cross:",
"category": "symbols",
@@ -20021,7 +22351,8 @@
"christian",
"religion",
"symbol"
- ]
+ ],
+ "moji": "☦"
},
"outbox_tray": {
"unicode": "1F4E4",
@@ -20033,10 +22364,23 @@
"aliases_ascii": [],
"keywords": [
"email",
- "inbox"
+ "inbox",
+ "work",
+ "office"
],
"moji": "📤"
},
+ "owl": {
+ "unicode": "1F989",
+ "unicode_alternates": [],
+ "name": "owl",
+ "shortname": ":owl:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦉"
+ },
"ox": {
"unicode": "1F402",
"unicode_alternates": [],
@@ -20062,22 +22406,12 @@
"aliases_ascii": [],
"keywords": [
"gift",
- "mail"
+ "mail",
+ "object",
+ "office"
],
"moji": "📦"
},
- "page": {
- "unicode": "1F5CF",
- "unicode_alternates": [],
- "name": "page",
- "shortname": ":page:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "document"
- ]
- },
"page_facing_up": {
"unicode": "1F4C4",
"unicode_alternates": [],
@@ -20087,7 +22421,10 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "documents"
+ "documents",
+ "work",
+ "office",
+ "write"
],
"moji": "📄"
},
@@ -20100,7 +22437,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "documents"
+ "documents",
+ "office",
+ "write"
],
"moji": "📃"
},
@@ -20114,28 +22453,18 @@
"aliases_ascii": [],
"keywords": [
"bbcall",
- "oldschool"
+ "oldschool",
+ "electronics",
+ "work"
],
"moji": "📟"
},
- "pages": {
- "unicode": "1F5D0",
- "unicode_alternates": [],
- "name": "pages",
- "shortname": ":pages:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "documents"
- ]
- },
"paintbrush": {
"unicode": "1F58C",
"unicode_alternates": [],
"name": "lower left paintbrush",
"shortname": ":paintbrush:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":lower_left_paintbrush:"
],
@@ -20143,8 +22472,12 @@
"keywords": [
"brush",
"art",
- "painting"
- ]
+ "painting",
+ "object",
+ "office",
+ "write"
+ ],
+ "moji": "🖌"
},
"palm_tree": {
"unicode": "1F334",
@@ -20163,10 +22496,22 @@
"coconuts",
"fronds",
"warm",
- "tropical"
+ "tropical",
+ "trees"
],
"moji": "🌴"
},
+ "pancakes": {
+ "unicode": "1F95E",
+ "unicode_alternates": [],
+ "name": "pancakes",
+ "shortname": ":pancakes:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥞"
+ },
"panda_face": {
"unicode": "1F43C",
"unicode_alternates": [],
@@ -20189,7 +22534,9 @@
"bamboo",
"china",
"black",
- "white"
+ "white",
+ "wildlife",
+ "roar"
],
"moji": "🐼"
},
@@ -20203,7 +22550,10 @@
"aliases_ascii": [],
"keywords": [
"documents",
- "stationery"
+ "stationery",
+ "object",
+ "work",
+ "office"
],
"moji": "📎"
},
@@ -20212,22 +22562,26 @@
"unicode_alternates": [],
"name": "linked paperclips",
"shortname": ":paperclips:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":linked_paperclips:"
],
"aliases_ascii": [],
"keywords": [
"documents",
- "stationery"
- ]
+ "stationery",
+ "object",
+ "work",
+ "office"
+ ],
+ "moji": "🖇"
},
"park": {
"unicode": "1F3DE",
"unicode_alternates": [],
"name": "national park",
"shortname": ":park:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":national_park:"
],
@@ -20238,8 +22592,13 @@
"wildlife",
"forest",
"wilderness",
- "national"
- ]
+ "national",
+ "travel",
+ "vacation",
+ "park",
+ "camp"
+ ],
+ "moji": "🏞"
},
"parking": {
"unicode": "1F17F",
@@ -20248,14 +22607,15 @@
],
"name": "negative squared latin capital letter p",
"shortname": ":parking:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
"blue-square",
"cars",
- "letter"
+ "letter",
+ "symbol"
],
"moji": "🅿"
},
@@ -20266,7 +22626,7 @@
],
"name": "part alternation mark",
"shortname": ":part_alternation_mark:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20279,7 +22639,8 @@
"cue",
"letter",
"m",
- "japanese"
+ "japanese",
+ "symbol"
],
"moji": "〽"
},
@@ -20297,7 +22658,9 @@
"cloud",
"morning",
"nature",
- "weather"
+ "weather",
+ "sky",
+ "sun"
],
"moji": "⛅"
},
@@ -20306,7 +22669,7 @@
"unicode_alternates": [],
"name": "passport control",
"shortname": ":passport_control:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20317,13 +22680,14 @@
"travel",
"control",
"foreign",
- "identification"
+ "identification",
+ "symbol"
],
"moji": "🛂"
},
"pause_button": {
"unicode": "23F8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "double vertical bar",
"shortname": ":pause_button:",
"category": "symbols",
@@ -20335,11 +22699,12 @@
"pause",
"sound",
"symbol"
- ]
+ ],
+ "moji": "⏸"
},
"peace": {
"unicode": "262E",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "peace symbol",
"shortname": ":peace:",
"category": "symbols",
@@ -20348,15 +22713,19 @@
],
"aliases_ascii": [],
"keywords": [
- "sign"
- ]
+ "sign",
+ "symbol",
+ "peace",
+ "drugs"
+ ],
+ "moji": "☮"
},
"peach": {
"unicode": "1F351",
"unicode_alternates": [],
"name": "peach",
"shortname": ":peach:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20364,26 +22733,39 @@
"fruit",
"nature",
"peach",
- "fruit",
"juicy",
- "pit"
+ "pit",
+ "butt"
],
"moji": "🍑"
},
+ "peanuts": {
+ "unicode": "1F95C",
+ "unicode_alternates": [],
+ "name": "peanuts",
+ "shortname": ":peanuts:",
+ "category": "food",
+ "aliases": [
+ ":shelled_peanut:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥜"
+ },
"pear": {
"unicode": "1F350",
"unicode_alternates": [],
"name": "pear",
"shortname": ":pear:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fruit",
"nature",
"pear",
- "fruit",
- "shape"
+ "shape",
+ "food"
],
"moji": "🍐"
},
@@ -20392,7 +22774,7 @@
"unicode_alternates": [],
"name": "lower left ballpoint pen",
"shortname": ":pen_ballpoint:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":lower_left_ballpoint_pen:"
],
@@ -20400,15 +22782,18 @@
"keywords": [
"write",
"bic",
- "ink"
- ]
+ "ink",
+ "object",
+ "office"
+ ],
+ "moji": "🖊"
},
"pen_fountain": {
"unicode": "1F58B",
"unicode_alternates": [],
"name": "lower left fountain pen",
"shortname": ":pen_fountain:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":lower_left_fountain_pen:"
],
@@ -20416,8 +22801,11 @@
"keywords": [
"write",
"calligraphy",
- "ink"
- ]
+ "ink",
+ "object",
+ "office"
+ ],
+ "moji": "🖋"
},
"pencil": {
"unicode": "1F4DD",
@@ -20433,7 +22821,9 @@
"documents",
"paper",
"station",
- "write"
+ "write",
+ "work",
+ "office"
],
"moji": "📝"
},
@@ -20450,26 +22840,12 @@
"keywords": [
"paper",
"stationery",
- "write"
+ "write",
+ "object",
+ "office"
],
"moji": "✏"
},
- "pencil3": {
- "unicode": "1F589",
- "unicode_alternates": [],
- "name": "lower left pencil",
- "shortname": ":pencil3:",
- "category": "objects_symbols",
- "aliases": [
- ":lower_left_pencil:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "paper",
- "stationery",
- "write"
- ]
- },
"penguin": {
"unicode": "1F427",
"unicode_alternates": [],
@@ -20480,46 +22856,17 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife"
],
"moji": "🐧"
},
- "pennant_black": {
- "unicode": "1F3F2",
- "unicode_alternates": [],
- "name": "black pennant",
- "shortname": ":pennant_black:",
- "category": "objects_symbols",
- "aliases": [
- ":black_pennant:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "flag",
- "athletics"
- ]
- },
- "pennant_white": {
- "unicode": "1F3F1",
- "unicode_alternates": [],
- "name": "white pennant",
- "shortname": ":pennant_white:",
- "category": "objects_symbols",
- "aliases": [
- ":white_pennant:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "flag",
- "athletics"
- ]
- },
"pensive": {
"unicode": "1F614",
"unicode_alternates": [],
"name": "pensive face",
"shortname": ":pensive:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20532,7 +22879,10 @@
"reflective",
"wistful",
"meditate",
- "serious"
+ "serious",
+ "smiley",
+ "emotion",
+ "rip"
],
"moji": "😔"
},
@@ -20541,7 +22891,7 @@
"unicode_alternates": [],
"name": "performing arts",
"shortname": ":performing_arts:",
- "category": "places",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20552,10 +22902,11 @@
"arts",
"performance",
"entertainment",
- "acting",
"story",
"mask",
- "masks"
+ "masks",
+ "theatre",
+ "movie"
],
"moji": "🎭"
},
@@ -20564,7 +22915,7 @@
"unicode_alternates": [],
"name": "persevering face",
"shortname": ":persevere:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
">.<"
@@ -20575,7 +22926,11 @@
"face",
"no",
"sick",
- "upset"
+ "upset",
+ "sad",
+ "smiley",
+ "angry",
+ "emotion"
],
"moji": "😣"
},
@@ -20584,7 +22939,7 @@
"unicode_alternates": [],
"name": "person frowning",
"shortname": ":person_frowning:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20594,13 +22949,16 @@
"dejected",
"rejected",
"sad",
- "frown"
+ "frown",
+ "people",
+ "women",
+ "diversity"
],
"moji": "🙍"
},
"person_frowning_tone1": {
"unicode": "1F64D-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person frowning tone 1",
"shortname": ":person_frowning_tone1:",
"category": "people",
@@ -20614,11 +22972,12 @@
"rejected",
"sad",
"frown"
- ]
+ ],
+ "moji": "🙍🏻"
},
"person_frowning_tone2": {
"unicode": "1F64D-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person frowning tone 2",
"shortname": ":person_frowning_tone2:",
"category": "people",
@@ -20632,11 +22991,12 @@
"rejected",
"sad",
"frown"
- ]
+ ],
+ "moji": "🙍🏼"
},
"person_frowning_tone3": {
"unicode": "1F64D-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person frowning tone 3",
"shortname": ":person_frowning_tone3:",
"category": "people",
@@ -20650,11 +23010,12 @@
"rejected",
"sad",
"frown"
- ]
+ ],
+ "moji": "🙍🏽"
},
"person_frowning_tone4": {
"unicode": "1F64D-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person frowning tone 4",
"shortname": ":person_frowning_tone4:",
"category": "people",
@@ -20668,11 +23029,12 @@
"rejected",
"sad",
"frown"
- ]
+ ],
+ "moji": "🙍🏾"
},
"person_frowning_tone5": {
"unicode": "1F64D-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person frowning tone 5",
"shortname": ":person_frowning_tone5:",
"category": "people",
@@ -20686,14 +23048,15 @@
"rejected",
"sad",
"frown"
- ]
+ ],
+ "moji": "🙍🏿"
},
"person_with_blond_hair": {
"unicode": "1F471",
"unicode_alternates": [],
"name": "person with blond hair",
"shortname": ":person_with_blond_hair:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20703,13 +23066,16 @@
"young",
"western",
"westerner",
- "occidental"
+ "occidental",
+ "people",
+ "men",
+ "diversity"
],
"moji": "👱"
},
"person_with_blond_hair_tone1": {
"unicode": "1F471-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with blond hair tone 1",
"shortname": ":person_with_blond_hair_tone1:",
"category": "people",
@@ -20723,11 +23089,12 @@
"western",
"westerner",
"occidental"
- ]
+ ],
+ "moji": "👱🏻"
},
"person_with_blond_hair_tone2": {
"unicode": "1F471-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with blond hair tone 2",
"shortname": ":person_with_blond_hair_tone2:",
"category": "people",
@@ -20741,11 +23108,12 @@
"western",
"westerner",
"occidental"
- ]
+ ],
+ "moji": "👱🏼"
},
"person_with_blond_hair_tone3": {
"unicode": "1F471-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with blond hair tone 3",
"shortname": ":person_with_blond_hair_tone3:",
"category": "people",
@@ -20759,11 +23127,12 @@
"western",
"westerner",
"occidental"
- ]
+ ],
+ "moji": "👱🏽"
},
"person_with_blond_hair_tone4": {
"unicode": "1F471-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with blond hair tone 4",
"shortname": ":person_with_blond_hair_tone4:",
"category": "people",
@@ -20777,11 +23146,12 @@
"western",
"westerner",
"occidental"
- ]
+ ],
+ "moji": "👱🏾"
},
"person_with_blond_hair_tone5": {
"unicode": "1F471-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with blond hair tone 5",
"shortname": ":person_with_blond_hair_tone5:",
"category": "people",
@@ -20795,14 +23165,15 @@
"western",
"westerner",
"occidental"
- ]
+ ],
+ "moji": "👱🏿"
},
"person_with_pouting_face": {
"unicode": "1F64E",
"unicode_alternates": [],
"name": "person with pouting face",
"shortname": ":person_with_pouting_face:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -20812,13 +23183,16 @@
"pout",
"sexy",
"cute",
- "annoyed"
+ "annoyed",
+ "people",
+ "women",
+ "diversity"
],
"moji": "🙎"
},
"person_with_pouting_face_tone1": {
"unicode": "1F64E-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with pouting face tone1",
"shortname": ":person_with_pouting_face_tone1:",
"category": "people",
@@ -20832,11 +23206,12 @@
"sexy",
"cute",
"annoyed"
- ]
+ ],
+ "moji": "🙎🏻"
},
"person_with_pouting_face_tone2": {
"unicode": "1F64E-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with pouting face tone2",
"shortname": ":person_with_pouting_face_tone2:",
"category": "people",
@@ -20850,11 +23225,12 @@
"sexy",
"cute",
"annoyed"
- ]
+ ],
+ "moji": "🙎🏼"
},
"person_with_pouting_face_tone3": {
"unicode": "1F64E-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with pouting face tone3",
"shortname": ":person_with_pouting_face_tone3:",
"category": "people",
@@ -20868,11 +23244,12 @@
"sexy",
"cute",
"annoyed"
- ]
+ ],
+ "moji": "🙎🏽"
},
"person_with_pouting_face_tone4": {
"unicode": "1F64E-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with pouting face tone4",
"shortname": ":person_with_pouting_face_tone4:",
"category": "people",
@@ -20886,11 +23263,12 @@
"sexy",
"cute",
"annoyed"
- ]
+ ],
+ "moji": "🙎🏾"
},
"person_with_pouting_face_tone5": {
"unicode": "1F64E-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with pouting face tone5",
"shortname": ":person_with_pouting_face_tone5:",
"category": "people",
@@ -20904,11 +23282,12 @@
"sexy",
"cute",
"annoyed"
- ]
+ ],
+ "moji": "🙎🏿"
},
"pick": {
"unicode": "26CF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pick",
"shortname": ":pick:",
"category": "objects",
@@ -20917,8 +23296,10 @@
"keywords": [
"mining",
"object",
- "tool"
- ]
+ "tool",
+ "weapon"
+ ],
+ "moji": "⛏"
},
"pig": {
"unicode": "1F437",
@@ -20976,7 +23357,6 @@
"food",
"eat",
"cute",
- "oink",
"pink",
"smell",
"truffle"
@@ -20993,7 +23373,9 @@
"aliases_ascii": [],
"keywords": [
"health",
- "medicine"
+ "medicine",
+ "object",
+ "drugs"
],
"moji": "💊"
},
@@ -21002,7 +23384,7 @@
"unicode_alternates": [],
"name": "pineapple",
"shortname": ":pineapple:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21018,7 +23400,7 @@
},
"ping_pong": {
"unicode": "1F3D3",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "table tennis paddle and ball",
"shortname": ":ping_pong:",
"category": "activity",
@@ -21026,22 +23408,13 @@
":table_tennis:"
],
"aliases_ascii": [],
- "keywords": []
- },
- "piracy": {
- "unicode": "1F572",
- "unicode_alternates": [],
- "name": "no piracy",
- "shortname": ":piracy:",
- "category": "objects_symbols",
- "aliases": [
- ":no_piracy:"
- ],
- "aliases_ascii": [],
"keywords": [
- "theft",
- "rule"
- ]
+ "game",
+ "ball",
+ "sport",
+ "ping pong"
+ ],
+ "moji": "🏓"
},
"pisces": {
"unicode": "2653",
@@ -21050,7 +23423,7 @@
],
"name": "pisces",
"shortname": ":pisces:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21063,9 +23436,8 @@
"zodiac",
"sign",
"purple-square",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♓"
},
@@ -21074,7 +23446,7 @@
"unicode_alternates": [],
"name": "slice of pizza",
"shortname": ":pizza:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21086,13 +23458,14 @@
"italian",
"italy",
"slice",
- "peperoni"
+ "peperoni",
+ "boys night"
],
"moji": "🍕"
},
"place_of_worship": {
"unicode": "1F6D0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "place of worship",
"shortname": ":place_of_worship:",
"category": "symbols",
@@ -21100,11 +23473,16 @@
":worship_symbol:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "religion",
+ "symbol",
+ "pray"
+ ],
+ "moji": "🛐"
},
"play_pause": {
"unicode": "23EF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "black right-pointing double triangle with double vertical bar",
"shortname": ":play_pause:",
"category": "symbols",
@@ -21117,26 +23495,30 @@
"right",
"sound",
"symbol"
- ]
+ ],
+ "moji": "⏯"
},
"point_down": {
"unicode": "1F447",
"unicode_alternates": [],
"name": "white down pointing backhand index",
"shortname": ":point_down:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"direction",
"fingers",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "diversity"
],
"moji": "👇"
},
"point_down_tone1": {
"unicode": "1F447-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white down pointing backhand index tone 1",
"shortname": ":point_down_tone1:",
"category": "people",
@@ -21146,11 +23528,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👇🏻"
},
"point_down_tone2": {
"unicode": "1F447-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white down pointing backhand index tone 2",
"shortname": ":point_down_tone2:",
"category": "people",
@@ -21160,11 +23543,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👇🏼"
},
"point_down_tone3": {
"unicode": "1F447-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white down pointing backhand index tone 3",
"shortname": ":point_down_tone3:",
"category": "people",
@@ -21174,11 +23558,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👇🏽"
},
"point_down_tone4": {
"unicode": "1F447-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white down pointing backhand index tone 4",
"shortname": ":point_down_tone4:",
"category": "people",
@@ -21188,11 +23573,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👇🏾"
},
"point_down_tone5": {
"unicode": "1F447-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white down pointing backhand index tone 5",
"shortname": ":point_down_tone5:",
"category": "people",
@@ -21202,26 +23588,31 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👇🏿"
},
"point_left": {
"unicode": "1F448",
"unicode_alternates": [],
"name": "white left pointing backhand index",
"shortname": ":point_left:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"direction",
"fingers",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "hi",
+ "diversity"
],
"moji": "👈"
},
"point_left_tone1": {
"unicode": "1F448-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white left pointing backhand index tone 1",
"shortname": ":point_left_tone1:",
"category": "people",
@@ -21231,11 +23622,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👈🏻"
},
"point_left_tone2": {
"unicode": "1F448-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white left pointing backhand index tone 2",
"shortname": ":point_left_tone2:",
"category": "people",
@@ -21245,11 +23637,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👈🏼"
},
"point_left_tone3": {
"unicode": "1F448-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white left pointing backhand index tone 3",
"shortname": ":point_left_tone3:",
"category": "people",
@@ -21259,11 +23652,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👈🏽"
},
"point_left_tone4": {
"unicode": "1F448-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white left pointing backhand index tone 4",
"shortname": ":point_left_tone4:",
"category": "people",
@@ -21273,11 +23667,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👈🏾"
},
"point_left_tone5": {
"unicode": "1F448-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white left pointing backhand index tone 5",
"shortname": ":point_left_tone5:",
"category": "people",
@@ -21287,26 +23682,31 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👈🏿"
},
"point_right": {
"unicode": "1F449",
"unicode_alternates": [],
"name": "white right pointing backhand index",
"shortname": ":point_right:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"direction",
"fingers",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "hi",
+ "diversity"
],
"moji": "👉"
},
"point_right_tone1": {
"unicode": "1F449-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white right pointing backhand index tone 1",
"shortname": ":point_right_tone1:",
"category": "people",
@@ -21316,11 +23716,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👉🏻"
},
"point_right_tone2": {
"unicode": "1F449-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white right pointing backhand index tone 2",
"shortname": ":point_right_tone2:",
"category": "people",
@@ -21330,11 +23731,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👉🏼"
},
"point_right_tone3": {
"unicode": "1F449-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white right pointing backhand index tone 3",
"shortname": ":point_right_tone3:",
"category": "people",
@@ -21344,11 +23746,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👉🏽"
},
"point_right_tone4": {
"unicode": "1F449-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white right pointing backhand index tone 4",
"shortname": ":point_right_tone4:",
"category": "people",
@@ -21358,11 +23761,12 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👉🏾"
},
"point_right_tone5": {
"unicode": "1F449-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white right pointing backhand index tone 5",
"shortname": ":point_right_tone5:",
"category": "people",
@@ -21372,7 +23776,8 @@
"direction",
"finger",
"hand"
- ]
+ ],
+ "moji": "👉🏿"
},
"point_up": {
"unicode": "261D",
@@ -21381,13 +23786,17 @@
],
"name": "white up pointing index",
"shortname": ":point_up:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"direction",
"fingers",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "emojione",
+ "diversity"
],
"moji": "☝"
},
@@ -21396,19 +23805,22 @@
"unicode_alternates": [],
"name": "white up pointing backhand index",
"shortname": ":point_up_2:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"direction",
"fingers",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "diversity"
],
"moji": "👆"
},
"point_up_2_tone1": {
"unicode": "1F446-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing backhand index tone 1",
"shortname": ":point_up_2_tone1:",
"category": "people",
@@ -21419,11 +23831,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "👆🏻"
},
"point_up_2_tone2": {
"unicode": "1F446-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing backhand index tone 2",
"shortname": ":point_up_2_tone2:",
"category": "people",
@@ -21434,11 +23847,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "👆🏼"
},
"point_up_2_tone3": {
"unicode": "1F446-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing backhand index tone 3",
"shortname": ":point_up_2_tone3:",
"category": "people",
@@ -21449,11 +23863,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "👆🏽"
},
"point_up_2_tone4": {
"unicode": "1F446-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing backhand index tone 4",
"shortname": ":point_up_2_tone4:",
"category": "people",
@@ -21464,11 +23879,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "👆🏾"
},
"point_up_2_tone5": {
"unicode": "1F446-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing backhand index tone 5",
"shortname": ":point_up_2_tone5:",
"category": "people",
@@ -21479,11 +23895,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "👆🏿"
},
"point_up_tone1": {
"unicode": "261D-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing index tone 1",
"shortname": ":point_up_tone1:",
"category": "people",
@@ -21494,11 +23911,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "☝🏻"
},
"point_up_tone2": {
"unicode": "261D-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing index tone 2",
"shortname": ":point_up_tone2:",
"category": "people",
@@ -21509,11 +23927,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "☝🏼"
},
"point_up_tone3": {
"unicode": "261D-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing index tone 3",
"shortname": ":point_up_tone3:",
"category": "people",
@@ -21524,11 +23943,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "☝🏽"
},
"point_up_tone4": {
"unicode": "261D-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing index tone 4",
"shortname": ":point_up_tone4:",
"category": "people",
@@ -21539,11 +23959,12 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "☝🏾"
},
"point_up_tone5": {
"unicode": "261D-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white up pointing index tone 5",
"shortname": ":point_up_tone5:",
"category": "people",
@@ -21554,14 +23975,15 @@
"finger",
"hand",
"one"
- ]
+ ],
+ "moji": "☝🏿"
},
"police_car": {
"unicode": "1F693",
"unicode_alternates": [],
"name": "police car",
"shortname": ":police_car:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21577,7 +23999,8 @@
"citation",
"crime",
"help",
- "officer"
+ "officer",
+ "911"
],
"moji": "🚓"
},
@@ -21595,7 +24018,6 @@
"dog",
"nature",
"poodle",
- "dog",
"clip",
"showy",
"sophisticated",
@@ -21608,7 +24030,7 @@
"unicode_alternates": [],
"name": "pile of poo",
"shortname": ":poop:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":shit:",
":hankey:",
@@ -21620,32 +24042,41 @@
"shit",
"shitface",
"turd",
- "poo"
+ "poo",
+ "bathroom",
+ "sol",
+ "diarrhea"
],
"moji": "💩"
},
"popcorn": {
"unicode": "1F37F",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "popcorn",
"shortname": ":popcorn:",
- "category": "foods",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "food",
+ "parties"
+ ],
+ "moji": "🍿"
},
"post_office": {
"unicode": "1F3E3",
"unicode_alternates": [],
"name": "japanese post office",
"shortname": ":post_office:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"building",
"communication",
- "email"
+ "email",
+ "places",
+ "post office"
],
"moji": "🏣"
},
@@ -21659,7 +24090,8 @@
"aliases_ascii": [],
"keywords": [
"instrument",
- "music"
+ "music",
+ "object"
],
"moji": "📯"
},
@@ -21674,7 +24106,8 @@
"keywords": [
"email",
"envelope",
- "letter"
+ "letter",
+ "object"
],
"moji": "📮"
},
@@ -21683,7 +24116,7 @@
"unicode_alternates": [],
"name": "potable water symbol",
"shortname": ":potable_water:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21699,27 +24132,40 @@
"clear",
"clean",
"aqua",
- "h20"
+ "h20",
+ "symbol"
],
"moji": "🚰"
},
+ "potato": {
+ "unicode": "1F954",
+ "unicode_alternates": [],
+ "name": "potato",
+ "shortname": ":potato:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥔"
+ },
"pouch": {
"unicode": "1F45D",
"unicode_alternates": [],
"name": "pouch",
"shortname": ":pouch:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"accessories",
"bag",
"pouch",
- "bag",
"cosmetic",
"packing",
"grandma",
- "makeup"
+ "makeup",
+ "women",
+ "fashion"
],
"moji": "👝"
},
@@ -21728,7 +24174,7 @@
"unicode_alternates": [],
"name": "poultry leg",
"shortname": ":poultry_leg:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21737,7 +24183,8 @@
"poultry",
"leg",
"chicken",
- "fried"
+ "fried",
+ "holidays"
],
"moji": "🍗"
},
@@ -21759,13 +24206,9 @@
"uk",
"pound",
"britain",
- "british",
"banknote",
- "money",
- "currency",
"paper",
- "cash",
- "bills"
+ "cash"
],
"moji": "💷"
},
@@ -21774,7 +24217,7 @@
"unicode_alternates": [],
"name": "pouting cat face",
"shortname": ":pouting_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21784,7 +24227,8 @@
"annoyed",
"miffed",
"glower",
- "frown"
+ "frown",
+ "cat"
],
"moji": "😾"
},
@@ -21793,7 +24237,7 @@
"unicode_alternates": [],
"name": "person with folded hands",
"shortname": ":pray:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21807,13 +24251,19 @@
"hands",
"sorrow",
"regret",
- "sorry"
+ "sorry",
+ "body",
+ "hi",
+ "luck",
+ "thank you",
+ "diversity",
+ "scientology"
],
"moji": "🙏"
},
"pray_tone1": {
"unicode": "1F64F-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with folded hands tone 1",
"shortname": ":pray_tone1:",
"category": "people",
@@ -21830,11 +24280,12 @@
"sorrow",
"regret",
"sorry"
- ]
+ ],
+ "moji": "🙏🏻"
},
"pray_tone2": {
"unicode": "1F64F-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with folded hands tone 2",
"shortname": ":pray_tone2:",
"category": "people",
@@ -21851,11 +24302,12 @@
"sorrow",
"regret",
"sorry"
- ]
+ ],
+ "moji": "🙏🏼"
},
"pray_tone3": {
"unicode": "1F64F-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with folded hands tone 3",
"shortname": ":pray_tone3:",
"category": "people",
@@ -21872,11 +24324,12 @@
"sorrow",
"regret",
"sorry"
- ]
+ ],
+ "moji": "🙏🏽"
},
"pray_tone4": {
"unicode": "1F64F-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with folded hands tone 4",
"shortname": ":pray_tone4:",
"category": "people",
@@ -21893,11 +24346,12 @@
"sorrow",
"regret",
"sorry"
- ]
+ ],
+ "moji": "🙏🏾"
},
"pray_tone5": {
"unicode": "1F64F-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person with folded hands tone 5",
"shortname": ":pray_tone5:",
"category": "people",
@@ -21914,24 +24368,173 @@
"sorrow",
"regret",
"sorry"
- ]
+ ],
+ "moji": "🙏🏿"
},
"prayer_beads": {
"unicode": "1F4FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "prayer beads",
"shortname": ":prayer_beads:",
"category": "objects",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "object",
+ "rosary"
+ ],
+ "moji": "📿"
+ },
+ "pregnant_woman": {
+ "unicode": "1F930",
+ "unicode_alternates": [],
+ "name": "pregnant woman",
+ "shortname": ":pregnant_woman:",
+ "category": "people",
+ "aliases": [
+ ":expecting_woman:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤰"
+ },
+ "pregnant_woman_tone1": {
+ "unicode": "1F930-1F3FB",
+ "unicode_alternates": [],
+ "name": "pregnant woman tone 1",
+ "shortname": ":pregnant_woman_tone1:",
+ "category": "people",
+ "aliases": [
+ ":expecting_woman_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤰🏻"
+ },
+ "pregnant_woman_tone2": {
+ "unicode": "1F930-1F3FC",
+ "unicode_alternates": [],
+ "name": "pregnant woman tone 2",
+ "shortname": ":pregnant_woman_tone2:",
+ "category": "people",
+ "aliases": [
+ ":expecting_woman_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤰🏼"
+ },
+ "pregnant_woman_tone3": {
+ "unicode": "1F930-1F3FD",
+ "unicode_alternates": [],
+ "name": "pregnant woman tone 3",
+ "shortname": ":pregnant_woman_tone3:",
+ "category": "people",
+ "aliases": [
+ ":expecting_woman_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤰🏽"
+ },
+ "pregnant_woman_tone4": {
+ "unicode": "1F930-1F3FE",
+ "unicode_alternates": [],
+ "name": "pregnant woman tone 4",
+ "shortname": ":pregnant_woman_tone4:",
+ "category": "people",
+ "aliases": [
+ ":expecting_woman_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤰🏾"
+ },
+ "pregnant_woman_tone5": {
+ "unicode": "1F930-1F3FF",
+ "unicode_alternates": [],
+ "name": "pregnant woman tone 5",
+ "shortname": ":pregnant_woman_tone5:",
+ "category": "people",
+ "aliases": [
+ ":expecting_woman_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤰🏿"
+ },
+ "prince": {
+ "unicode": "1F934",
+ "unicode_alternates": [],
+ "name": "prince",
+ "shortname": ":prince:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤴"
+ },
+ "prince_tone1": {
+ "unicode": "1F934-1F3FB",
+ "unicode_alternates": [],
+ "name": "prince tone 1",
+ "shortname": ":prince_tone1:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤴🏻"
+ },
+ "prince_tone2": {
+ "unicode": "1F934-1F3FC",
+ "unicode_alternates": [],
+ "name": "prince tone 2",
+ "shortname": ":prince_tone2:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤴🏼"
+ },
+ "prince_tone3": {
+ "unicode": "1F934-1F3FD",
+ "unicode_alternates": [],
+ "name": "prince tone 3",
+ "shortname": ":prince_tone3:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤴🏽"
+ },
+ "prince_tone4": {
+ "unicode": "1F934-1F3FE",
+ "unicode_alternates": [],
+ "name": "prince tone 4",
+ "shortname": ":prince_tone4:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤴🏾"
+ },
+ "prince_tone5": {
+ "unicode": "1F934-1F3FF",
+ "unicode_alternates": [],
+ "name": "prince tone 5",
+ "shortname": ":prince_tone5:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤴🏿"
},
"princess": {
"unicode": "1F478",
"unicode_alternates": [],
"name": "princess",
"shortname": ":princess:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -21947,13 +24550,18 @@
"queen",
"daughter",
"disney",
- "high-maintenance"
+ "high-maintenance",
+ "people",
+ "women",
+ "diversity",
+ "beautiful",
+ "girls night"
],
"moji": "👸"
},
"princess_tone1": {
"unicode": "1F478-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "princess tone 1",
"shortname": ":princess_tone1:",
"category": "people",
@@ -21972,11 +24580,12 @@
"daughter",
"disney",
"high-maintenance"
- ]
+ ],
+ "moji": "👸🏻"
},
"princess_tone2": {
"unicode": "1F478-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "princess tone 2",
"shortname": ":princess_tone2:",
"category": "people",
@@ -21995,11 +24604,12 @@
"daughter",
"disney",
"high-maintenance"
- ]
+ ],
+ "moji": "👸🏼"
},
"princess_tone3": {
"unicode": "1F478-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "princess tone 3",
"shortname": ":princess_tone3:",
"category": "people",
@@ -22018,11 +24628,12 @@
"daughter",
"disney",
"high-maintenance"
- ]
+ ],
+ "moji": "👸🏽"
},
"princess_tone4": {
"unicode": "1F478-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "princess tone 4",
"shortname": ":princess_tone4:",
"category": "people",
@@ -22041,11 +24652,12 @@
"daughter",
"disney",
"high-maintenance"
- ]
+ ],
+ "moji": "👸🏾"
},
"princess_tone5": {
"unicode": "1F478-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "princess tone 5",
"shortname": ":princess_tone5:",
"category": "people",
@@ -22064,49 +24676,34 @@
"daughter",
"disney",
"high-maintenance"
- ]
+ ],
+ "moji": "👸🏿"
},
"printer": {
"unicode": "1F5A8",
"unicode_alternates": [],
"name": "printer",
"shortname": ":printer:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"hardcopy",
"paper",
"inkjet",
- "laser"
- ]
- },
- "prohibited": {
- "unicode": "1F6C7",
- "unicode_alternates": [],
- "name": "prohibited sign",
- "shortname": ":prohibited:",
- "category": "objects_symbols",
- "aliases": [
- ":prohibited_sign:"
+ "laser",
+ "electronics",
+ "work",
+ "office"
],
- "aliases_ascii": [],
- "keywords": [
- "no",
- "not",
- "denied",
- "disallow",
- "forbid",
- "limit",
- "stop"
- ]
+ "moji": "🖨"
},
"projector": {
"unicode": "1F4FD",
"unicode_alternates": [],
"name": "film projector",
"shortname": ":projector:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":film_projector:"
],
@@ -22117,26 +24714,35 @@
"motion",
"picture",
"8mm",
- "16mm"
- ]
+ "16mm",
+ "object",
+ "camera"
+ ],
+ "moji": "📽"
},
"punch": {
"unicode": "1F44A",
"unicode_alternates": [],
"name": "fisted hand sign",
"shortname": ":punch:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fist",
- "hand"
+ "hand",
+ "body",
+ "hands",
+ "hi",
+ "fist bump",
+ "diversity",
+ "boys night"
],
"moji": "👊"
},
"punch_tone1": {
"unicode": "1F44A-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "fisted hand sign tone 1",
"shortname": ":punch_tone1:",
"category": "people",
@@ -22145,11 +24751,12 @@
"keywords": [
"fist",
"punch"
- ]
+ ],
+ "moji": "👊🏻"
},
"punch_tone2": {
"unicode": "1F44A-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "fisted hand sign tone 2",
"shortname": ":punch_tone2:",
"category": "people",
@@ -22158,11 +24765,12 @@
"keywords": [
"fist",
"punch"
- ]
+ ],
+ "moji": "👊🏼"
},
"punch_tone3": {
"unicode": "1F44A-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "fisted hand sign tone 3",
"shortname": ":punch_tone3:",
"category": "people",
@@ -22171,11 +24779,12 @@
"keywords": [
"fist",
"punch"
- ]
+ ],
+ "moji": "👊🏽"
},
"punch_tone4": {
"unicode": "1F44A-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "fisted hand sign tone 4",
"shortname": ":punch_tone4:",
"category": "people",
@@ -22184,11 +24793,12 @@
"keywords": [
"fist",
"punch"
- ]
+ ],
+ "moji": "👊🏾"
},
"punch_tone5": {
"unicode": "1F44A-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "fisted hand sign tone 5",
"shortname": ":punch_tone5:",
"category": "people",
@@ -22197,14 +24807,15 @@
"keywords": [
"fist",
"punch"
- ]
+ ],
+ "moji": "👊🏿"
},
"purple_heart": {
"unicode": "1F49C",
"unicode_alternates": [],
"name": "purple heart",
"shortname": ":purple_heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22215,7 +24826,6 @@
"purple",
"violet",
"heart",
- "love",
"sensitive",
"understanding",
"compassionate",
@@ -22224,7 +24834,8 @@
"honor",
"royalty",
"veteran",
- "sacrifice"
+ "sacrifice",
+ "symbol"
],
"moji": "💜"
},
@@ -22233,7 +24844,7 @@
"unicode_alternates": [],
"name": "purse",
"shortname": ":purse:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22246,9 +24857,9 @@
"handbag",
"coin bag",
"accessory",
- "money",
"ladies",
- "shopping"
+ "shopping",
+ "women"
],
"moji": "👛"
},
@@ -22261,28 +24872,18 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "stationery"
+ "stationery",
+ "object",
+ "office"
],
"moji": "📌"
},
- "pushpin_black": {
- "unicode": "1F588",
- "unicode_alternates": [],
- "name": "black pushpin",
- "shortname": ":pushpin_black:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "stationery"
- ]
- },
"put_litter_in_its_place": {
"unicode": "1F6AE",
"unicode_alternates": [],
"name": "put litter in its place symbol",
"shortname": ":put_litter_in_its_place:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22292,7 +24893,8 @@
"trash",
"garbage",
"receptacle",
- "can"
+ "can",
+ "symbol"
],
"moji": "🚮"
},
@@ -22301,12 +24903,15 @@
"unicode_alternates": [],
"name": "black question mark ornament",
"shortname": ":question:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"confused",
- "doubt"
+ "doubt",
+ "symbol",
+ "punctuation",
+ "wth"
],
"moji": "❓"
},
@@ -22320,7 +24925,8 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife"
],
"moji": "🐰"
},
@@ -22339,7 +24945,8 @@
"bunny",
"easter",
"reproduction",
- "prolific"
+ "prolific",
+ "wildlife"
],
"moji": "🐇"
},
@@ -22348,7 +24955,7 @@
"unicode_alternates": [],
"name": "racing car",
"shortname": ":race_car:",
- "category": "activity",
+ "category": "travel",
"aliases": [
":racing_car:"
],
@@ -22359,8 +24966,11 @@
"stock",
"nascar",
"speed",
- "drive"
- ]
+ "drive",
+ "transportation",
+ "car"
+ ],
+ "moji": "🏎"
},
"racehorse": {
"unicode": "1F40E",
@@ -22391,7 +25001,8 @@
"gelding",
"yearling",
"thoroughbred",
- "pony"
+ "pony",
+ "wildlife"
],
"moji": "🐎"
},
@@ -22407,7 +25018,8 @@
"communication",
"music",
"podcast",
- "program"
+ "program",
+ "electronics"
],
"moji": "📻"
},
@@ -22416,17 +25028,19 @@
"unicode_alternates": [],
"name": "radio button",
"shortname": ":radio_button:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "input"
+ "input",
+ "symbol",
+ "circle"
],
"moji": "🔘"
},
"radioactive": {
"unicode": "2622",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "radioactive sign",
"shortname": ":radioactive:",
"category": "symbols",
@@ -22435,15 +25049,17 @@
],
"aliases_ascii": [],
"keywords": [
- "symbol"
- ]
+ "symbol",
+ "science"
+ ],
+ "moji": "☢"
},
"rage": {
"unicode": "1F621",
"unicode_alternates": [],
"name": "pouting face",
"shortname": ":rage:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22454,7 +25070,9 @@
"pout",
"anger",
"rage",
- "irate"
+ "irate",
+ "smiley",
+ "emotion"
],
"moji": "😡"
},
@@ -22463,7 +25081,7 @@
"unicode_alternates": [],
"name": "railway car",
"shortname": ":railway_car:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22473,7 +25091,8 @@
"rail",
"car",
"coach",
- "train"
+ "train",
+ "travel"
],
"moji": "🚃"
},
@@ -22482,7 +25101,7 @@
"unicode_alternates": [],
"name": "railway track",
"shortname": ":railway_track:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [
":railroad_track:"
],
@@ -22492,15 +25111,18 @@
"trolley",
"subway",
"locomotive",
- "transit"
- ]
+ "transit",
+ "travel",
+ "vacation"
+ ],
+ "moji": "🛤"
},
"rainbow": {
"unicode": "1F308",
"unicode_alternates": [],
"name": "rainbow",
"shortname": ":rainbow:",
- "category": "nature",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22516,28 +25138,114 @@
"spectrum",
"refract",
"leprechaun",
- "gold"
+ "gold",
+ "weather",
+ "gay",
+ "rain"
],
"moji": "🌈"
},
+ "raised_back_of_hand": {
+ "unicode": "1F91A",
+ "unicode_alternates": [],
+ "name": "raised back of hand",
+ "shortname": ":raised_back_of_hand:",
+ "category": "people",
+ "aliases": [
+ ":back_of_hand:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤚"
+ },
+ "raised_back_of_hand_tone1": {
+ "unicode": "1F91A-1F3FB",
+ "unicode_alternates": [],
+ "name": "raised back of hand tone 1",
+ "shortname": ":raised_back_of_hand_tone1:",
+ "category": "people",
+ "aliases": [
+ ":back_of_hand_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤚🏻"
+ },
+ "raised_back_of_hand_tone2": {
+ "unicode": "1F91A-1F3FC",
+ "unicode_alternates": [],
+ "name": "raised back of hand tone 2",
+ "shortname": ":raised_back_of_hand_tone2:",
+ "category": "people",
+ "aliases": [
+ ":back_of_hand_tone2:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤚🏼"
+ },
+ "raised_back_of_hand_tone3": {
+ "unicode": "1F91A-1F3FD",
+ "unicode_alternates": [],
+ "name": "raised back of hand tone 3",
+ "shortname": ":raised_back_of_hand_tone3:",
+ "category": "people",
+ "aliases": [
+ ":back_of_hand_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤚🏽"
+ },
+ "raised_back_of_hand_tone4": {
+ "unicode": "1F91A-1F3FE",
+ "unicode_alternates": [],
+ "name": "raised back of hand tone 4",
+ "shortname": ":raised_back_of_hand_tone4:",
+ "category": "people",
+ "aliases": [
+ ":back_of_hand_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤚🏾"
+ },
+ "raised_back_of_hand_tone5": {
+ "unicode": "1F91A-1F3FF",
+ "unicode_alternates": [],
+ "name": "raised back of hand tone 5",
+ "shortname": ":raised_back_of_hand_tone5:",
+ "category": "people",
+ "aliases": [
+ ":back_of_hand_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤚🏿"
+ },
"raised_hand": {
"unicode": "270B",
"unicode_alternates": [],
"name": "raised hand",
"shortname": ":raised_hand:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"female",
"girl",
- "woman"
+ "woman",
+ "body",
+ "hands",
+ "hi",
+ "diversity",
+ "girls night"
],
"moji": "✋"
},
"raised_hand_tone1": {
"unicode": "270B-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand tone 1",
"shortname": ":raised_hand_tone1:",
"category": "people",
@@ -22547,11 +25255,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "✋🏻"
},
"raised_hand_tone2": {
"unicode": "270B-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand tone 2",
"shortname": ":raised_hand_tone2:",
"category": "people",
@@ -22561,11 +25270,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "✋🏼"
},
"raised_hand_tone3": {
"unicode": "270B-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand tone 3",
"shortname": ":raised_hand_tone3:",
"category": "people",
@@ -22575,11 +25285,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "✋🏽"
},
"raised_hand_tone4": {
"unicode": "270B-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand tone 4",
"shortname": ":raised_hand_tone4:",
"category": "people",
@@ -22589,11 +25300,12 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "✋🏾"
},
"raised_hand_tone5": {
"unicode": "270B-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand tone 5",
"shortname": ":raised_hand_tone5:",
"category": "people",
@@ -22603,14 +25315,15 @@
"female",
"girl",
"woman"
- ]
+ ],
+ "moji": "✋🏿"
},
"raised_hands": {
"unicode": "1F64C",
"unicode_alternates": [],
"name": "person raising both hands in celebration",
"shortname": ":raised_hands:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22619,13 +25332,19 @@
"winning",
"woot",
"yay",
- "banzai"
+ "banzai",
+ "body",
+ "hands",
+ "diversity",
+ "perfect",
+ "good",
+ "parties"
],
"moji": "🙌"
},
"raised_hands_tone1": {
"unicode": "1F64C-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person raising both hands in celebration tone 1",
"shortname": ":raised_hands_tone1:",
"category": "people",
@@ -22639,11 +25358,12 @@
"yay",
"banzai",
"raised"
- ]
+ ],
+ "moji": "🙌🏻"
},
"raised_hands_tone2": {
"unicode": "1F64C-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person raising both hands in celebration tone 2",
"shortname": ":raised_hands_tone2:",
"category": "people",
@@ -22657,11 +25377,12 @@
"yay",
"banzai",
"raised"
- ]
+ ],
+ "moji": "🙌🏼"
},
"raised_hands_tone3": {
"unicode": "1F64C-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person raising both hands in celebration tone 3",
"shortname": ":raised_hands_tone3:",
"category": "people",
@@ -22675,11 +25396,12 @@
"yay",
"banzai",
"raised"
- ]
+ ],
+ "moji": "🙌🏽"
},
"raised_hands_tone4": {
"unicode": "1F64C-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person raising both hands in celebration tone 4",
"shortname": ":raised_hands_tone4:",
"category": "people",
@@ -22693,11 +25415,12 @@
"yay",
"banzai",
"raised"
- ]
+ ],
+ "moji": "🙌🏾"
},
"raised_hands_tone5": {
"unicode": "1F64C-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "person raising both hands in celebration tone 5",
"shortname": ":raised_hands_tone5:",
"category": "people",
@@ -22711,14 +25434,15 @@
"yay",
"banzai",
"raised"
- ]
+ ],
+ "moji": "🙌🏿"
},
"raising_hand": {
"unicode": "1F64B",
"unicode_alternates": [],
"name": "happy person raising one hand",
"shortname": ":raising_hand:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22729,13 +25453,16 @@
"raise",
"notice",
"attention",
- "answer"
+ "answer",
+ "people",
+ "women",
+ "diversity"
],
"moji": "🙋"
},
"raising_hand_tone1": {
"unicode": "1F64B-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "happy person raising one hand tone1",
"shortname": ":raising_hand_tone1:",
"category": "people",
@@ -22749,11 +25476,12 @@
"notice",
"attention",
"answer"
- ]
+ ],
+ "moji": "🙋🏻"
},
"raising_hand_tone2": {
"unicode": "1F64B-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "happy person raising one hand tone2",
"shortname": ":raising_hand_tone2:",
"category": "people",
@@ -22767,11 +25495,12 @@
"notice",
"attention",
"answer"
- ]
+ ],
+ "moji": "🙋🏼"
},
"raising_hand_tone3": {
"unicode": "1F64B-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "happy person raising one hand tone3",
"shortname": ":raising_hand_tone3:",
"category": "people",
@@ -22785,11 +25514,12 @@
"notice",
"attention",
"answer"
- ]
+ ],
+ "moji": "🙋🏽"
},
"raising_hand_tone4": {
"unicode": "1F64B-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "happy person raising one hand tone4",
"shortname": ":raising_hand_tone4:",
"category": "people",
@@ -22803,11 +25533,12 @@
"notice",
"attention",
"answer"
- ]
+ ],
+ "moji": "🙋🏾"
},
"raising_hand_tone5": {
"unicode": "1F64B-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "happy person raising one hand tone5",
"shortname": ":raising_hand_tone5:",
"category": "people",
@@ -22821,7 +25552,8 @@
"notice",
"attention",
"answer"
- ]
+ ],
+ "moji": "🙋🏿"
},
"ram": {
"unicode": "1F40F",
@@ -22836,10 +25568,10 @@
"nature",
"sheep",
"ram",
- "sheep",
"male",
"horn",
- "horns"
+ "horns",
+ "wildlife"
],
"moji": "🐏"
},
@@ -22848,7 +25580,7 @@
"unicode_alternates": [],
"name": "steaming bowl",
"shortname": ":ramen:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22860,7 +25592,8 @@
"noodles",
"bowl",
"steaming",
- "soup"
+ "soup",
+ "japan"
],
"moji": "🍜"
},
@@ -22884,7 +25617,7 @@
},
"record_button": {
"unicode": "23FA",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "black circle for record",
"shortname": ":record_button:",
"category": "symbols",
@@ -22892,8 +25625,10 @@
"aliases_ascii": [],
"keywords": [
"sound",
- "symbol"
- ]
+ "symbol",
+ "circle"
+ ],
+ "moji": "⏺"
},
"recycle": {
"unicode": "267B",
@@ -22902,14 +25637,15 @@
],
"name": "black universal recycling symbol",
"shortname": ":recycle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
"environment",
"garbage",
- "trash"
+ "trash",
+ "symbol"
],
"moji": "♻"
},
@@ -22918,12 +25654,14 @@
"unicode_alternates": [],
"name": "automobile",
"shortname": ":red_car:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"transportation",
- "vehicle"
+ "vehicle",
+ "car",
+ "travel"
],
"moji": "🚗"
},
@@ -22932,11 +25670,14 @@
"unicode_alternates": [],
"name": "large red circle",
"shortname": ":red_circle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "circle"
],
"moji": "🔴"
},
@@ -22946,12 +25687,13 @@
"unicode_alternates": [],
"name": "registered sign",
"shortname": ":registered:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"alphabet",
- "circle"
+ "circle",
+ "symbol"
]
},
"relaxed": {
@@ -22961,7 +25703,7 @@
],
"name": "white smiling face",
"shortname": ":relaxed:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22969,7 +25711,9 @@
"face",
"happiness",
"massage",
- "smile"
+ "smile",
+ "happy",
+ "smiley"
],
"moji": "☺"
},
@@ -22978,7 +25722,7 @@
"unicode_alternates": [],
"name": "relieved face",
"shortname": ":relieved:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -22989,8 +25733,9 @@
"relaxed",
"relieved",
"satisfied",
- "phew",
- "relief"
+ "relief",
+ "smiley",
+ "emotion"
],
"moji": "😌"
},
@@ -22999,24 +25744,28 @@
"unicode_alternates": [],
"name": "reminder ribbon",
"shortname": ":reminder_ribbon:",
- "category": "celebration",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "awareness"
- ]
+ "awareness",
+ "award"
+ ],
+ "moji": "🎗"
},
"repeat": {
"unicode": "1F501",
"unicode_alternates": [],
"name": "clockwise rightwards and leftwards open circle arr",
"shortname": ":repeat:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"loop",
- "record"
+ "record",
+ "arrow",
+ "symbol"
],
"moji": "🔁"
},
@@ -23025,12 +25774,14 @@
"unicode_alternates": [],
"name": "clockwise rightwards and leftwards open circle arr",
"shortname": ":repeat_one:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "loop"
+ "loop",
+ "arrow",
+ "symbol"
],
"moji": "🔂"
},
@@ -23039,7 +25790,7 @@
"unicode_alternates": [],
"name": "restroom",
"shortname": ":restroom:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23051,7 +25802,8 @@
"restroom",
"sign",
"shared",
- "toilet"
+ "toilet",
+ "symbol"
],
"moji": "🚻"
},
@@ -23060,7 +25812,7 @@
"unicode_alternates": [],
"name": "revolving hearts",
"shortname": ":revolving_hearts:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23074,7 +25826,8 @@
"moving",
"circle",
"multiple",
- "lovers"
+ "lovers",
+ "symbol"
],
"moji": "💞"
},
@@ -23083,21 +25836,36 @@
"unicode_alternates": [],
"name": "black left-pointing double triangle",
"shortname": ":rewind:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "play"
+ "play",
+ "arrow",
+ "symbol"
],
"moji": "⏪"
},
+ "rhino": {
+ "unicode": "1F98F",
+ "unicode_alternates": [],
+ "name": "rhinoceros",
+ "shortname": ":rhino:",
+ "category": "nature",
+ "aliases": [
+ ":rhinoceros:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦏"
+ },
"ribbon": {
"unicode": "1F380",
"unicode_alternates": [],
"name": "ribbon",
"shortname": ":ribbon:",
- "category": "emoticons",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23108,7 +25876,10 @@
"ribbon",
"lace",
"wrap",
- "decorate"
+ "decorate",
+ "object",
+ "gift",
+ "birthday"
],
"moji": "🎀"
},
@@ -23117,7 +25888,7 @@
"unicode_alternates": [],
"name": "cooked rice",
"shortname": ":rice:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23125,8 +25896,9 @@
"rice",
"white",
"grain",
- "food",
- "bowl"
+ "bowl",
+ "sushi",
+ "japan"
],
"moji": "🍚"
},
@@ -23135,7 +25907,7 @@
"unicode_alternates": [],
"name": "rice ball",
"shortname": ":rice_ball:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23146,7 +25918,8 @@
"white",
"nori",
"seaweed",
- "japanese"
+ "sushi",
+ "japan"
],
"moji": "🍙"
},
@@ -23155,7 +25928,7 @@
"unicode_alternates": [],
"name": "rice cracker",
"shortname": ":rice_cracker:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23164,8 +25937,7 @@
"rice",
"cracker",
"seaweed",
- "food",
- "japanese"
+ "sushi"
],
"moji": "🍘"
},
@@ -23174,7 +25946,7 @@
"unicode_alternates": [],
"name": "moon viewing ceremony",
"shortname": ":rice_scene:",
- "category": "objects",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23187,92 +25959,115 @@
"rice",
"scene",
"festival",
- "autumn"
+ "autumn",
+ "places",
+ "space",
+ "sky",
+ "travel"
],
"moji": "🎑"
},
- "right_speaker": {
- "unicode": "1F568",
+ "right_facing_fist": {
+ "unicode": "1F91C",
"unicode_alternates": [],
- "name": "right speaker",
- "shortname": ":right_speaker:",
- "category": "objects_symbols",
- "aliases": [],
+ "name": "right-facing fist",
+ "shortname": ":right_facing_fist:",
+ "category": "people",
+ "aliases": [
+ ":right_fist:"
+ ],
"aliases_ascii": [],
- "keywords": [
- "sound",
- "listen",
- "hear",
- "noise",
- "volume"
- ]
+ "keywords": [],
+ "moji": "🤜"
},
- "right_speaker_one": {
- "unicode": "1F569",
+ "right_facing_fist_tone1": {
+ "unicode": "1F91C-1F3FB",
"unicode_alternates": [],
- "name": "right speaker with one sound wave",
- "shortname": ":right_speaker_one:",
- "category": "objects_symbols",
+ "name": "right facing fist tone 1",
+ "shortname": ":right_facing_fist_tone1:",
+ "category": "people",
"aliases": [
- ":right_speaker_with_one_sound_wave:"
+ ":right_fist_tone1:"
],
"aliases_ascii": [],
- "keywords": [
- "low",
- "volume"
- ]
+ "keywords": [],
+ "moji": "🤜🏻"
},
- "right_speaker_three": {
- "unicode": "1F56A",
+ "right_facing_fist_tone2": {
+ "unicode": "1F91C-1F3FC",
"unicode_alternates": [],
- "name": "right speaker with three sound waves",
- "shortname": ":right_speaker_three:",
- "category": "objects_symbols",
+ "name": "right facing fist tone 2",
+ "shortname": ":right_facing_fist_tone2:",
+ "category": "people",
"aliases": [
- ":right_speaker_with_three_sound_waves:"
+ ":right_fist_tone2:"
],
"aliases_ascii": [],
- "keywords": [
- "loud",
- "high",
- "volume"
- ]
+ "keywords": [],
+ "moji": "🤜🏼"
+ },
+ "right_facing_fist_tone3": {
+ "unicode": "1F91C-1F3FD",
+ "unicode_alternates": [],
+ "name": "right facing fist tone 3",
+ "shortname": ":right_facing_fist_tone3:",
+ "category": "people",
+ "aliases": [
+ ":right_fist_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤜🏽"
+ },
+ "right_facing_fist_tone4": {
+ "unicode": "1F91C-1F3FE",
+ "unicode_alternates": [],
+ "name": "right facing fist tone 4",
+ "shortname": ":right_facing_fist_tone4:",
+ "category": "people",
+ "aliases": [
+ ":right_fist_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤜🏾"
+ },
+ "right_facing_fist_tone5": {
+ "unicode": "1F91C-1F3FF",
+ "unicode_alternates": [],
+ "name": "right facing fist tone 5",
+ "shortname": ":right_facing_fist_tone5:",
+ "category": "people",
+ "aliases": [
+ ":right_fist_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤜🏿"
},
"ring": {
"unicode": "1F48D",
"unicode_alternates": [],
"name": "ring",
"shortname": ":ring:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"marriage",
"propose",
"valentines",
- "wedding"
+ "wedding",
+ "object",
+ "fashion",
+ "gem",
+ "accessories"
],
"moji": "💍"
},
- "ringing_bell": {
- "unicode": "1F56D",
- "unicode_alternates": [],
- "name": "ringing bell",
- "shortname": ":ringing_bell:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "alert",
- "ding",
- "volume",
- "sound",
- "chime"
- ]
- },
"robot": {
"unicode": "1F916",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "robot face",
"shortname": ":robot:",
"category": "people",
@@ -23280,14 +26075,18 @@
":robot_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "monster",
+ "robot"
+ ],
+ "moji": "🤖"
},
"rocket": {
"unicode": "1F680",
"unicode_alternates": [],
"name": "rocket",
"shortname": ":rocket:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23298,16 +26097,33 @@
"space",
"spacecraft",
"astronaut",
- "cosmonaut"
+ "cosmonaut",
+ "transportation",
+ "object",
+ "fly",
+ "blast"
],
"moji": "🚀"
},
+ "rofl": {
+ "unicode": "1F923",
+ "unicode_alternates": [],
+ "name": "rolling on the floor laughing",
+ "shortname": ":rofl:",
+ "category": "people",
+ "aliases": [
+ ":rolling_on_the_floor_laughing:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤣"
+ },
"roller_coaster": {
"unicode": "1F3A2",
"unicode_alternates": [],
"name": "roller coaster",
"shortname": ":roller_coaster:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23322,13 +26138,16 @@
"park",
"fair",
"ride",
- "entertainment"
+ "entertainment",
+ "places",
+ "vacation",
+ "roller coaster"
],
"moji": "🎢"
},
"rolling_eyes": {
"unicode": "1F644",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with rolling eyes",
"shortname": ":rolling_eyes:",
"category": "people",
@@ -23336,7 +26155,14 @@
":face_with_rolling_eyes:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "mad",
+ "smiley",
+ "rolling eyes",
+ "emotion",
+ "sarcastic"
+ ],
+ "moji": "🙄"
},
"rooster": {
"unicode": "1F413",
@@ -23375,9 +26201,13 @@
"fragrant",
"flower",
"thorns",
- "love",
"petals",
- "romance"
+ "romance",
+ "nature",
+ "plant",
+ "rip",
+ "condolence",
+ "beautiful"
],
"moji": "🌹"
},
@@ -23386,31 +26216,21 @@
"unicode_alternates": [],
"name": "rosette",
"shortname": ":rosette:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "flower"
- ]
- },
- "rosette_black": {
- "unicode": "1F3F6",
- "unicode_alternates": [],
- "name": "black rosette",
- "shortname": ":rosette_black:",
- "category": "objects_symbols",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "flower"
- ]
+ "flower",
+ "tropical"
+ ],
+ "moji": "🏵"
},
"rotating_light": {
"unicode": "1F6A8",
"unicode_alternates": [],
"name": "police cars revolving light",
"shortname": ":rotating_light:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23419,8 +26239,8 @@
"emergency",
"police",
"light",
- "police",
- "emergency"
+ "transportation",
+ "object"
],
"moji": "🚨"
},
@@ -23429,11 +26249,13 @@
"unicode_alternates": [],
"name": "round pushpin",
"shortname": ":round_pushpin:",
- "category": "places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "stationery"
+ "stationery",
+ "object",
+ "office"
],
"moji": "📍"
},
@@ -23442,7 +26264,7 @@
"unicode_alternates": [],
"name": "rowboat",
"shortname": ":rowboat:",
- "category": "places",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23453,13 +26275,18 @@
"boat",
"row",
"oar",
- "paddle"
+ "paddle",
+ "men",
+ "workout",
+ "sport",
+ "rowing",
+ "diversity"
],
"moji": "🚣"
},
"rowboat_tone1": {
"unicode": "1F6A3-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "rowboat tone 1",
"shortname": ":rowboat_tone1:",
"category": "activity",
@@ -23473,11 +26300,12 @@
"row",
"oar",
"paddle"
- ]
+ ],
+ "moji": "🚣🏻"
},
"rowboat_tone2": {
"unicode": "1F6A3-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "rowboat tone 2",
"shortname": ":rowboat_tone2:",
"category": "activity",
@@ -23491,11 +26319,12 @@
"row",
"oar",
"paddle"
- ]
+ ],
+ "moji": "🚣🏼"
},
"rowboat_tone3": {
"unicode": "1F6A3-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "rowboat tone 3",
"shortname": ":rowboat_tone3:",
"category": "activity",
@@ -23509,11 +26338,12 @@
"row",
"oar",
"paddle"
- ]
+ ],
+ "moji": "🚣🏽"
},
"rowboat_tone4": {
"unicode": "1F6A3-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "rowboat tone 4",
"shortname": ":rowboat_tone4:",
"category": "activity",
@@ -23527,11 +26357,12 @@
"row",
"oar",
"paddle"
- ]
+ ],
+ "moji": "🚣🏾"
},
"rowboat_tone5": {
"unicode": "1F6A3-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "rowboat tone 5",
"shortname": ":rowboat_tone5:",
"category": "activity",
@@ -23545,14 +26376,15 @@
"row",
"oar",
"paddle"
- ]
+ ],
+ "moji": "🚣🏿"
},
"rugby_football": {
"unicode": "1F3C9",
"unicode_alternates": [],
"name": "rugby football",
"shortname": ":rugby_football:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23562,7 +26394,8 @@
"ball",
"sport",
"team",
- "england"
+ "england",
+ "game"
],
"moji": "🏉"
},
@@ -23571,7 +26404,7 @@
"unicode_alternates": [],
"name": "runner",
"shortname": ":runner:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23581,16 +26414,19 @@
"run",
"runner",
"jog",
- "exercise",
"sprint",
"race",
- "dash"
+ "dash",
+ "people",
+ "men",
+ "diversity",
+ "boys night"
],
"moji": "🏃"
},
"runner_tone1": {
"unicode": "1F3C3-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "runner tone 1",
"shortname": ":runner_tone1:",
"category": "people",
@@ -23605,11 +26441,12 @@
"race",
"dash",
"marathon"
- ]
+ ],
+ "moji": "🏃🏻"
},
"runner_tone2": {
"unicode": "1F3C3-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "runner tone 2",
"shortname": ":runner_tone2:",
"category": "people",
@@ -23624,11 +26461,12 @@
"race",
"dash",
"marathon"
- ]
+ ],
+ "moji": "🏃🏼"
},
"runner_tone3": {
"unicode": "1F3C3-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "runner tone 3",
"shortname": ":runner_tone3:",
"category": "people",
@@ -23643,11 +26481,12 @@
"race",
"dash",
"marathon"
- ]
+ ],
+ "moji": "🏃🏽"
},
"runner_tone4": {
"unicode": "1F3C3-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "runner tone 4",
"shortname": ":runner_tone4:",
"category": "people",
@@ -23662,11 +26501,12 @@
"race",
"dash",
"marathon"
- ]
+ ],
+ "moji": "🏃🏾"
},
"runner_tone5": {
"unicode": "1F3C3-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "runner tone 5",
"shortname": ":runner_tone5:",
"category": "people",
@@ -23681,14 +26521,15 @@
"race",
"dash",
"marathon"
- ]
+ ],
+ "moji": "🏃🏿"
},
"running_shirt_with_sash": {
"unicode": "1F3BD",
"unicode_alternates": [],
"name": "running shirt with sash",
"shortname": ":running_shirt_with_sash:",
- "category": "emoticons",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23699,13 +26540,14 @@
"shirt",
"cloths",
"compete",
- "sports"
+ "sports",
+ "award"
],
"moji": "🎽"
},
"sa": {
"unicode": "1F202",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "squared katakana sa",
"shortname": ":sa:",
"category": "symbols",
@@ -23716,7 +26558,8 @@
"japanese",
"symbol",
"word"
- ]
+ ],
+ "moji": "🈂"
},
"sagittarius": {
"unicode": "2650",
@@ -23725,7 +26568,7 @@
],
"name": "sagittarius",
"shortname": ":sagittarius:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23738,9 +26581,8 @@
"stars",
"zodiac",
"sign",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♐"
},
@@ -23751,12 +26593,15 @@
],
"name": "sailboat",
"shortname": ":sailboat:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"ship",
- "transportation"
+ "transportation",
+ "travel",
+ "boat",
+ "vacation"
],
"moji": "⛵"
},
@@ -23765,7 +26610,7 @@
"unicode_alternates": [],
"name": "sake bottle and cup",
"shortname": ":sake:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23774,26 +26619,41 @@
"drunk",
"wine",
"sake",
- "wine",
"rice",
"ferment",
"alcohol",
"japanese",
- "drink"
+ "japan",
+ "girls night"
],
"moji": "🍶"
},
+ "salad": {
+ "unicode": "1F957",
+ "unicode_alternates": [],
+ "name": "green salad",
+ "shortname": ":salad:",
+ "category": "food",
+ "aliases": [
+ ":green_salad:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥗"
+ },
"sandal": {
"unicode": "1F461",
"unicode_alternates": [],
"name": "womans sandal",
"shortname": ":sandal:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"fashion",
- "shoes"
+ "shoes",
+ "shoe",
+ "accessories"
],
"moji": "👡"
},
@@ -23802,7 +26662,7 @@
"unicode_alternates": [],
"name": "father christmas",
"shortname": ":santa:",
- "category": "objects",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23823,14 +26683,18 @@
"nice",
"sleigh",
"father",
- "christmas",
- "holiday"
+ "holiday",
+ "people",
+ "hat",
+ "winter",
+ "holidays",
+ "diversity"
],
"moji": "🎅"
},
"santa_tone1": {
"unicode": "1F385-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "father christmas tone 1",
"shortname": ":santa_tone1:",
"category": "people",
@@ -23852,11 +26716,12 @@
"nice",
"sleigh",
"holiday"
- ]
+ ],
+ "moji": "🎅🏻"
},
"santa_tone2": {
"unicode": "1F385-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "father christmas tone 2",
"shortname": ":santa_tone2:",
"category": "people",
@@ -23878,11 +26743,12 @@
"nice",
"sleigh",
"holiday"
- ]
+ ],
+ "moji": "🎅🏼"
},
"santa_tone3": {
"unicode": "1F385-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "father christmas tone 3",
"shortname": ":santa_tone3:",
"category": "people",
@@ -23904,11 +26770,12 @@
"nice",
"sleigh",
"holiday"
- ]
+ ],
+ "moji": "🎅🏽"
},
"santa_tone4": {
"unicode": "1F385-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "father christmas tone 4",
"shortname": ":santa_tone4:",
"category": "people",
@@ -23930,11 +26797,12 @@
"nice",
"sleigh",
"holiday"
- ]
+ ],
+ "moji": "🎅🏾"
},
"santa_tone5": {
"unicode": "1F385-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "father christmas tone 5",
"shortname": ":santa_tone5:",
"category": "people",
@@ -23956,7 +26824,8 @@
"nice",
"sleigh",
"holiday"
- ]
+ ],
+ "moji": "🎅🏿"
},
"satellite": {
"unicode": "1F4E1",
@@ -23967,7 +26836,8 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "communication"
+ "communication",
+ "object"
],
"moji": "📡"
},
@@ -23976,21 +26846,23 @@
"unicode_alternates": [],
"name": "satellite",
"shortname": ":satellite_orbital:",
- "category": "objects_symbols",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"communication",
"orbital",
- "space"
- ]
+ "space",
+ "object"
+ ],
+ "moji": "🛰"
},
"saxophone": {
"unicode": "1F3B7",
"unicode_alternates": [],
"name": "saxophone",
"shortname": ":saxophone:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -23998,15 +26870,14 @@
"music",
"saxophone",
"sax",
- "music",
- "instrument",
- "woodwind"
+ "woodwind",
+ "instruments"
],
"moji": "🎷"
},
"scales": {
"unicode": "2696",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "scales",
"shortname": ":scales:",
"category": "objects",
@@ -24020,14 +26891,15 @@
"tool",
"weight",
"zodiac"
- ]
+ ],
+ "moji": "⚖"
},
"school": {
"unicode": "1F3EB",
"unicode_alternates": [],
"name": "school",
"shortname": ":school:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24039,7 +26911,8 @@
"high",
"college",
"teach",
- "education"
+ "education",
+ "places"
],
"moji": "🏫"
},
@@ -24048,7 +26921,7 @@
"unicode_alternates": [],
"name": "school satchel",
"shortname": ":school_satchel:",
- "category": "objects",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24058,14 +26931,16 @@
"school",
"satchel",
"backpack",
- "bag",
"packing",
"pack",
"hike",
- "education",
"adventure",
"travel",
- "sightsee"
+ "sightsee",
+ "fashion",
+ "office",
+ "vacation",
+ "accessories"
],
"moji": "🎒"
},
@@ -24081,19 +26956,39 @@
"aliases_ascii": [],
"keywords": [
"cut",
- "stationery"
+ "stationery",
+ "object",
+ "tool",
+ "weapon",
+ "office"
],
"moji": "✂"
},
+ "scooter": {
+ "unicode": "1F6F4",
+ "unicode_alternates": [],
+ "name": "scooter",
+ "shortname": ":scooter:",
+ "category": "travel",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🛴"
+ },
"scorpion": {
"unicode": "1F982",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "scorpion",
"shortname": ":scorpion:",
"category": "nature",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "insects",
+ "reptile",
+ "animal"
+ ],
+ "moji": "🦂"
},
"scorpius": {
"unicode": "264F",
@@ -24102,7 +26997,7 @@
],
"name": "scorpius",
"shortname": ":scorpius:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24115,9 +27010,8 @@
"stars",
"zodiac",
"sign",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♏"
},
@@ -24126,7 +27020,7 @@
"unicode_alternates": [],
"name": "face screaming in fear",
"shortname": ":scream:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24135,7 +27029,12 @@
"scream",
"painting",
"artist",
- "alien"
+ "alien",
+ "smiley",
+ "surprised",
+ "wow",
+ "emotion",
+ "omg"
],
"moji": "😱"
},
@@ -24144,7 +27043,7 @@
"unicode_alternates": [],
"name": "weary cat face",
"shortname": ":scream_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24161,7 +27060,8 @@
"exhausted",
"scream",
"painting",
- "artist"
+ "artist",
+ "cat"
],
"moji": "🙀"
},
@@ -24174,7 +27074,9 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "documents"
+ "documents",
+ "object",
+ "office"
],
"moji": "📜"
},
@@ -24183,14 +27085,31 @@
"unicode_alternates": [],
"name": "seat",
"shortname": ":seat:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "sit"
+ "sit",
+ "transportation",
+ "object",
+ "travel",
+ "vacation"
],
"moji": "💺"
},
+ "second_place": {
+ "unicode": "1F948",
+ "unicode_alternates": [],
+ "name": "second place medal",
+ "shortname": ":second_place:",
+ "category": "activity",
+ "aliases": [
+ ":second_place_medal:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥈"
+ },
"secret": {
"unicode": "3299",
"unicode_alternates": [
@@ -24198,11 +27117,13 @@
],
"name": "circled ideograph secret",
"shortname": ":secret:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "privacy"
+ "privacy",
+ "japan",
+ "symbol"
],
"moji": "㊙"
},
@@ -24211,14 +27132,13 @@
"unicode_alternates": [],
"name": "see-no-evil monkey",
"shortname": ":see_no_evil:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"animal",
"monkey",
"nature",
- "monkey",
"see",
"eyes",
"vision",
@@ -24241,34 +27161,118 @@
"nature",
"plant",
"seedling",
- "plant",
"new",
"start",
- "grow"
+ "grow",
+ "leaf"
],
"moji": "🌱"
},
+ "selfie": {
+ "unicode": "1F933",
+ "unicode_alternates": [],
+ "name": "selfie",
+ "shortname": ":selfie:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤳"
+ },
+ "selfie_tone1": {
+ "unicode": "1F933-1F3FB",
+ "unicode_alternates": [],
+ "name": "selfie tone 1",
+ "shortname": ":selfie_tone1:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤳🏻"
+ },
+ "selfie_tone2": {
+ "unicode": "1F933-1F3FC",
+ "unicode_alternates": [],
+ "name": "selfie tone 2",
+ "shortname": ":selfie_tone2:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤳🏼"
+ },
+ "selfie_tone3": {
+ "unicode": "1F933-1F3FD",
+ "unicode_alternates": [],
+ "name": "selfie tone 3",
+ "shortname": ":selfie_tone3:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤳🏽"
+ },
+ "selfie_tone4": {
+ "unicode": "1F933-1F3FE",
+ "unicode_alternates": [],
+ "name": "selfie tone 4",
+ "shortname": ":selfie_tone4:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤳🏾"
+ },
+ "selfie_tone5": {
+ "unicode": "1F933-1F3FF",
+ "unicode_alternates": [],
+ "name": "selfie tone 5",
+ "shortname": ":selfie_tone5:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤳🏿"
+ },
"seven": {
"moji": "7️⃣",
"unicode": "0037-20E3",
"unicode_alternates": [
"0037-FE0F-20E3"
],
- "name": "digit seven",
+ "name": "keycap digit seven",
"shortname": ":seven:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"7",
"blue-square",
"numbers",
- "prime"
+ "prime",
+ "number",
+ "math",
+ "symbol"
]
},
+ "shallow_pan_of_food": {
+ "unicode": "1F958",
+ "unicode_alternates": [],
+ "name": "shallow pan of food",
+ "shortname": ":shallow_pan_of_food:",
+ "category": "food",
+ "aliases": [
+ ":paella:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [
+ "pan of food"
+ ],
+ "moji": "🥘"
+ },
"shamrock": {
"unicode": "2618",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "shamrock",
"shortname": ":shamrock:",
"category": "nature",
@@ -24276,15 +27280,29 @@
"aliases_ascii": [],
"keywords": [
"nature",
- "plant"
- ]
+ "plant",
+ "luck",
+ "leaf"
+ ],
+ "moji": "☘"
+ },
+ "shark": {
+ "unicode": "1F988",
+ "unicode_alternates": [],
+ "name": "shark",
+ "shortname": ":shark:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦈"
},
"shaved_ice": {
"unicode": "1F367",
"unicode_alternates": [],
"name": "shaved ice",
"shortname": ":shaved_ice:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24295,7 +27313,8 @@
"dessert",
"treat",
"syrup",
- "flavoring"
+ "flavoring",
+ "food"
],
"moji": "🍧"
},
@@ -24334,7 +27353,6 @@
"sea",
"shell",
"spiral",
- "beach",
"sand",
"crab",
"nautilus"
@@ -24346,7 +27364,7 @@
"unicode_alternates": [],
"name": "shield",
"shortname": ":shield:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24354,12 +27372,13 @@
"route",
"sign",
"highway",
- "interstate"
- ]
+ "object"
+ ],
+ "moji": "🛡"
},
"shinto_shrine": {
"unicode": "26E9",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "shinto shrine",
"shortname": ":shinto_shrine:",
"category": "travel",
@@ -24367,15 +27386,20 @@
"aliases_ascii": [],
"keywords": [
"religion",
- "symbol"
- ]
+ "symbol",
+ "places",
+ "building",
+ "travel",
+ "vacation"
+ ],
+ "moji": "⛩"
},
"ship": {
"unicode": "1F6A2",
"unicode_alternates": [],
"name": "ship",
"shortname": ":ship:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24383,7 +27407,9 @@
"transportation",
"ferry",
"ship",
- "boat"
+ "boat",
+ "travel",
+ "vacation"
],
"moji": "🚢"
},
@@ -24392,7 +27418,7 @@
"unicode_alternates": [],
"name": "t-shirt",
"shortname": ":shirt:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24406,7 +27432,7 @@
"unicode_alternates": [],
"name": "shopping bags",
"shortname": ":shopping_bags:",
- "category": "travel_places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24414,8 +27440,25 @@
"mall",
"buy",
"store",
- "shop"
- ]
+ "shop",
+ "object",
+ "birthday",
+ "parties"
+ ],
+ "moji": "🛍"
+ },
+ "shopping_cart": {
+ "unicode": "1F6D2",
+ "unicode_alternates": [],
+ "name": "shopping trolley",
+ "shortname": ":shopping_cart:",
+ "category": "objects",
+ "aliases": [
+ ":shopping_trolley:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🛒"
},
"shower": {
"unicode": "1F6BF",
@@ -24433,22 +27476,100 @@
"shower",
"soap",
"water",
- "clean",
"shampoo",
- "lather"
+ "lather",
+ "object"
],
"moji": "🚿"
},
+ "shrimp": {
+ "unicode": "1F990",
+ "unicode_alternates": [],
+ "name": "shrimp",
+ "shortname": ":shrimp:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦐"
+ },
+ "shrug": {
+ "unicode": "1F937",
+ "unicode_alternates": [],
+ "name": "shrug",
+ "shortname": ":shrug:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤷"
+ },
+ "shrug_tone1": {
+ "unicode": "1F937-1F3FB",
+ "unicode_alternates": [],
+ "name": "shrug tone 1",
+ "shortname": ":shrug_tone1:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤷🏻"
+ },
+ "shrug_tone2": {
+ "unicode": "1F937-1F3FC",
+ "unicode_alternates": [],
+ "name": "shrug tone 2",
+ "shortname": ":shrug_tone2:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤷🏼"
+ },
+ "shrug_tone3": {
+ "unicode": "1F937-1F3FD",
+ "unicode_alternates": [],
+ "name": "shrug tone 3",
+ "shortname": ":shrug_tone3:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤷🏽"
+ },
+ "shrug_tone4": {
+ "unicode": "1F937-1F3FE",
+ "unicode_alternates": [],
+ "name": "shrug tone 4",
+ "shortname": ":shrug_tone4:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤷🏾"
+ },
+ "shrug_tone5": {
+ "unicode": "1F937-1F3FF",
+ "unicode_alternates": [],
+ "name": "shrug tone 5",
+ "shortname": ":shrug_tone5:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤷🏿"
+ },
"signal_strength": {
"unicode": "1F4F6",
"unicode_alternates": [],
"name": "antenna with bars",
"shortname": ":signal_strength:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "📶"
},
@@ -24458,15 +27579,18 @@
"unicode_alternates": [
"0036-FE0F-20E3"
],
- "name": "digit six",
+ "name": "keycap digit six",
"shortname": ":six:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"6",
"blue-square",
- "numbers"
+ "numbers",
+ "number",
+ "math",
+ "symbol"
]
},
"six_pointed_star": {
@@ -24474,11 +27598,15 @@
"unicode_alternates": [],
"name": "six pointed star with middle dot",
"shortname": ":six_pointed_star:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "purple-square"
+ "purple-square",
+ "religion",
+ "jew",
+ "star",
+ "symbol"
],
"moji": "🔯"
},
@@ -24487,7 +27615,7 @@
"unicode_alternates": [],
"name": "ski and ski boot",
"shortname": ":ski:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24499,18 +27627,19 @@
"cross-country",
"poles",
"snow",
- "winter",
"mountain",
"alpine",
"powder",
"slalom",
- "freestyle"
+ "freestyle",
+ "sport",
+ "skiing"
],
"moji": "🎿"
},
"skier": {
"unicode": "26F7",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "skier",
"shortname": ":skier:",
"category": "activity",
@@ -24521,15 +27650,20 @@
"ski",
"snow",
"sport",
- "travel"
- ]
+ "travel",
+ "hat",
+ "vacation",
+ "cold",
+ "skiing"
+ ],
+ "moji": "⛷"
},
"skull": {
"unicode": "1F480",
"unicode_alternates": [],
"name": "skull",
"shortname": ":skull:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":skeleton:"
],
@@ -24537,13 +27671,15 @@
"keywords": [
"dead",
"skeleton",
- "dying"
+ "dying",
+ "halloween",
+ "skull"
],
"moji": "💀"
},
"skull_crossbones": {
"unicode": "2620",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "skull and crossbones",
"shortname": ":skull_crossbones:",
"category": "objects",
@@ -24556,15 +27692,19 @@
"death",
"face",
"monster",
- "person"
- ]
+ "person",
+ "symbol",
+ "dead",
+ "skull"
+ ],
+ "moji": "☠"
},
"sleeping": {
"unicode": "1F634",
"unicode_alternates": [],
"name": "sleeping face",
"shortname": ":sleeping:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24572,9 +27712,11 @@
"sleepy",
"tired",
"sleep",
- "sleepy",
"sleeping",
- "snore"
+ "snore",
+ "smiley",
+ "emotion",
+ "goodnight"
],
"moji": "😴"
},
@@ -24583,21 +27725,23 @@
"unicode_alternates": [],
"name": "sleeping accommodation",
"shortname": ":sleeping_accommodation:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"hotel",
"motel",
- "rest"
- ]
+ "rest",
+ "tired"
+ ],
+ "moji": "🛌"
},
"sleepy": {
"unicode": "1F62A",
"unicode_alternates": [],
"name": "sleepy face",
"shortname": ":sleepy:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24605,8 +27749,10 @@
"rest",
"tired",
"sleepy",
- "tired",
- "exhausted"
+ "exhausted",
+ "smiley",
+ "sick",
+ "emotion"
],
"moji": "😪"
},
@@ -24624,8 +27770,12 @@
"slight",
"frown",
"unhappy",
- "disappointed"
- ]
+ "disappointed",
+ "sad",
+ "smiley",
+ "emotion"
+ ],
+ "moji": "🙁"
},
"slight_smile": {
"unicode": "1F642",
@@ -24640,15 +27790,17 @@
"keywords": [
"slight",
"smile",
- "happy"
- ]
+ "happy",
+ "smiley"
+ ],
+ "moji": "🙂"
},
"slot_machine": {
"unicode": "1F3B0",
"unicode_alternates": [],
"name": "slot machine",
"shortname": ":slot_machine:",
- "category": "places",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24657,10 +27809,11 @@
"vegas",
"slot",
"machine",
- "gamble",
"one-armed bandit",
"slots",
- "luck"
+ "luck",
+ "game",
+ "boys night"
],
"moji": "🎰"
},
@@ -24669,11 +27822,13 @@
"unicode_alternates": [],
"name": "small blue diamond",
"shortname": ":small_blue_diamond:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol"
],
"moji": "🔹"
},
@@ -24682,11 +27837,13 @@
"unicode_alternates": [],
"name": "small orange diamond",
"shortname": ":small_orange_diamond:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol"
],
"moji": "🔸"
},
@@ -24695,11 +27852,14 @@
"unicode_alternates": [],
"name": "up-pointing red triangle",
"shortname": ":small_red_triangle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "triangle"
],
"moji": "🔺"
},
@@ -24708,11 +27868,14 @@
"unicode_alternates": [],
"name": "down-pointing red triangle",
"shortname": ":small_red_triangle_down:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "triangle"
],
"moji": "🔻"
},
@@ -24721,7 +27884,7 @@
"unicode_alternates": [],
"name": "smiling face with open mouth and smiling eyes",
"shortname": ":smile:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":)",
@@ -24739,7 +27902,8 @@
"laugh",
"smile",
"smiley",
- "smiling"
+ "smiling",
+ "emotion"
],
"moji": "😄"
},
@@ -24748,7 +27912,7 @@
"unicode_alternates": [],
"name": "grinning cat face with smiling eyes",
"shortname": ":smile_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24757,7 +27921,8 @@
"cat",
"smile",
"grin",
- "grinning"
+ "grinning",
+ "happy"
],
"moji": "😸"
},
@@ -24766,7 +27931,7 @@
"unicode_alternates": [],
"name": "smiling face with open mouth",
"shortname": ":smiley:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":D",
@@ -24780,7 +27945,9 @@
"joy",
"smiling",
"smile",
- "smiley"
+ "smiley",
+ "emotion",
+ "good"
],
"moji": "😃"
},
@@ -24789,7 +27956,7 @@
"unicode_alternates": [],
"name": "smiling cat face with open mouth",
"shortname": ":smiley_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24798,8 +27965,7 @@
"happy",
"smile",
"smiley",
- "cat",
- "happy"
+ "cat"
],
"moji": "😺"
},
@@ -24808,16 +27974,19 @@
"unicode_alternates": [],
"name": "smiling face with horns",
"shortname": ":smiling_imp:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"devil",
"horns",
- "horns",
- "devil",
"impish",
- "trouble"
+ "trouble",
+ "silly",
+ "smiley",
+ "angry",
+ "monster",
+ "boys night"
],
"moji": "😈"
},
@@ -24826,7 +27995,7 @@
"unicode_alternates": [],
"name": "smirking face",
"shortname": ":smirk:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24836,10 +28005,12 @@
"smug",
"smirking",
"smirk",
- "smug",
- "smile",
"half-smile",
- "conceited"
+ "conceited",
+ "silly",
+ "smiley",
+ "sexy",
+ "sarcastic"
],
"moji": "😏"
},
@@ -24848,7 +28019,7 @@
"unicode_alternates": [],
"name": "cat face with wry smile",
"shortname": ":smirk_cat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24858,7 +28029,8 @@
"smirking",
"wry",
"confident",
- "confidence"
+ "confidence",
+ "cat"
],
"moji": "😼"
},
@@ -24875,13 +28047,14 @@
"kills",
"tobacco",
"smoking",
- "cigarette",
"smoke",
"cancer",
"lungs",
"inhale",
"tar",
- "nicotine"
+ "nicotine",
+ "symbol",
+ "drugs"
],
"moji": "🚬"
},
@@ -24898,10 +28071,10 @@
"shell",
"slow",
"snail",
- "slow",
"escargot",
"french",
- "appetizer"
+ "appetizer",
+ "insects"
],
"moji": "🐌"
},
@@ -24915,16 +28088,32 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "evil"
+ "evil",
+ "wildlife",
+ "reptile",
+ "creationism"
],
"moji": "🐍"
},
+ "sneezing_face": {
+ "unicode": "1F927",
+ "unicode_alternates": [],
+ "name": "sneezing face",
+ "shortname": ":sneezing_face:",
+ "category": "people",
+ "aliases": [
+ ":sneeze:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤧"
+ },
"snowboarder": {
"unicode": "1F3C2",
"unicode_alternates": [],
"name": "snowboarder",
"shortname": ":snowboarder:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -24932,13 +28121,16 @@
"winter",
"snow",
"boarding",
- "sports",
"freestyle",
"halfpipe",
"board",
"mountain",
"alpine",
- "winter"
+ "hat",
+ "vacation",
+ "cold",
+ "sport",
+ "snowboarding"
],
"moji": "🏂"
},
@@ -24965,13 +28157,13 @@
"droplet",
"ice",
"crystal",
- "cold",
"chilly",
- "winter",
"unique",
"special",
"below zero",
- "elsa"
+ "elsa",
+ "sky",
+ "holidays"
],
"moji": "❄"
},
@@ -24991,13 +28183,15 @@
"season",
"weather",
"winter",
- "xmas"
+ "xmas",
+ "holidays",
+ "snow"
],
"moji": "⛄"
},
"snowman2": {
"unicode": "2603",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "snowman",
"shortname": ":snowman2:",
"category": "nature",
@@ -25007,15 +28201,19 @@
"cold",
"nature",
"snow",
- "weather"
- ]
+ "weather",
+ "winter",
+ "holidays",
+ "christmas"
+ ],
+ "moji": "☃"
},
"sob": {
"unicode": "1F62D",
"unicode_alternates": [],
"name": "loudly crying face",
"shortname": ":sob:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25024,14 +28222,14 @@
"sad",
"tears",
"upset",
- "cry",
"sob",
- "tears",
- "sad",
"melancholy",
"morn",
"somber",
- "hurt"
+ "hurt",
+ "smiley",
+ "emotion",
+ "heartbreak"
],
"moji": "😭"
},
@@ -25042,7 +28240,7 @@
],
"name": "soccer ball",
"shortname": ":soccer:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25051,7 +28249,10 @@
"football",
"sports",
"european",
- "football"
+ "game",
+ "ball",
+ "sport",
+ "soccer"
],
"moji": "⚽"
},
@@ -25060,12 +28261,13 @@
"unicode_alternates": [],
"name": "soon with rightwards arrow above",
"shortname": ":soon:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arrow",
- "words"
+ "words",
+ "symbol"
],
"moji": "🔜"
},
@@ -25074,14 +28276,15 @@
"unicode_alternates": [],
"name": "squared sos",
"shortname": ":sos:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"emergency",
"help",
"red-square",
- "words"
+ "words",
+ "symbol"
],
"moji": "🆘"
},
@@ -25090,12 +28293,14 @@
"unicode_alternates": [],
"name": "speaker with one sound wave",
"shortname": ":sound:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"speaker",
- "volume"
+ "volume",
+ "alarm",
+ "symbol"
],
"moji": "🔉"
},
@@ -25104,12 +28309,14 @@
"unicode_alternates": [],
"name": "alien monster",
"shortname": ":space_invader:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"arcade",
- "game"
+ "game",
+ "monster",
+ "alien"
],
"moji": "👾"
},
@@ -25120,12 +28327,14 @@
],
"name": "black spade suit",
"shortname": ":spades:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cards",
- "poker"
+ "poker",
+ "symbol",
+ "game"
],
"moji": "♠"
},
@@ -25134,7 +28343,7 @@
"unicode_alternates": [],
"name": "spaghetti",
"shortname": ":spaghetti:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25145,7 +28354,7 @@
"noodles",
"tomato",
"sauce",
- "italian"
+ "pasta"
],
"moji": "🍝"
},
@@ -25156,12 +28365,13 @@
],
"name": "sparkle",
"shortname": ":sparkle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"green-square",
- "stars"
+ "stars",
+ "symbol"
],
"moji": "❇"
},
@@ -25170,13 +28380,14 @@
"unicode_alternates": [],
"name": "firework sparkler",
"shortname": ":sparkler:",
- "category": "objects",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"night",
"shine",
- "stars"
+ "stars",
+ "parties"
],
"moji": "🎇"
},
@@ -25185,14 +28396,16 @@
"unicode_alternates": [],
"name": "sparkles",
"shortname": ":sparkles:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"cool",
"shine",
"shiny",
- "stars"
+ "stars",
+ "star",
+ "girls night"
],
"moji": "✨"
},
@@ -25201,14 +28414,16 @@
"unicode_alternates": [],
"name": "sparkling heart",
"shortname": ":sparkling_heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"affection",
"like",
"love",
- "valentines"
+ "valentines",
+ "symbol",
+ "girls night"
],
"moji": "💖"
},
@@ -25217,13 +28432,12 @@
"unicode_alternates": [],
"name": "speak-no-evil monkey",
"shortname": ":speak_no_evil:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"animal",
"monkey",
- "monkey",
"mouth",
"talk",
"say",
@@ -25240,36 +28454,41 @@
"unicode_alternates": [],
"name": "speaker",
"shortname": ":speaker:",
- "category": "objects",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"sound",
"listen",
"hear",
- "noise"
- ]
+ "noise",
+ "alarm",
+ "symbol"
+ ],
+ "moji": "🔈"
},
"speaking_head": {
"unicode": "1F5E3",
"unicode_alternates": [],
"name": "speaking head in silhouette",
"shortname": ":speaking_head:",
- "category": "objects_symbols",
+ "category": "people",
"aliases": [
":speaking_head_in_silhouette:"
],
"aliases_ascii": [],
"keywords": [
- "talk"
- ]
+ "talk",
+ "people"
+ ],
+ "moji": "🗣"
},
"speech_balloon": {
"unicode": "1F4AC",
"unicode_alternates": [],
"name": "speech balloon",
"shortname": ":speech_balloon:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25281,96 +28500,18 @@
"conversation",
"communication",
"comic",
- "dialogue"
+ "dialogue",
+ "symbol",
+ "free speech"
],
"moji": "💬"
},
- "speech_left": {
- "unicode": "1F5E8",
- "unicode_alternates": [],
- "name": "left speech bubble",
- "shortname": ":speech_left:",
- "category": "objects_symbols",
- "aliases": [
- ":left_speech_bubble:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "words",
- "talk",
- "conversation",
- "communication",
- "comic",
- "dialogue"
- ]
- },
- "speech_right": {
- "unicode": "1F5E9",
- "unicode_alternates": [],
- "name": "right speech bubble",
- "shortname": ":speech_right:",
- "category": "objects_symbols",
- "aliases": [
- ":right_speech_bubble:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "words",
- "talk",
- "conversation",
- "communication",
- "comic",
- "dialogue"
- ]
- },
- "speech_three": {
- "unicode": "1F5EB",
- "unicode_alternates": [],
- "name": "three speech bubbles",
- "shortname": ":speech_three:",
- "category": "objects_symbols",
- "aliases": [
- ":three_speech_bubbles:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "words",
- "talk",
- "conversation",
- "communication",
- "comic",
- "dialogue"
- ]
- },
- "speech_two": {
- "unicode": "1F5EA",
- "unicode_alternates": [],
- "name": "two speech bubbles",
- "shortname": ":speech_two:",
- "category": "objects_symbols",
- "aliases": [
- ":two_speech_bubbles:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "words",
- "talk",
- "conversation",
- "communication",
- "comic",
- "dialogue"
- ]
- },
"speedboat": {
"unicode": "1F6A4",
"unicode_alternates": [],
"name": "speedboat",
"shortname": ":speedboat:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25381,7 +28522,10 @@
"speed",
"ski",
"power",
- "boat"
+ "boat",
+ "travel",
+ "vacation",
+ "tropical"
],
"moji": "🚤"
},
@@ -25395,8 +28539,12 @@
"aliases_ascii": [],
"keywords": [
"arachnid",
- "eight-legged"
- ]
+ "eight-legged",
+ "insects",
+ "halloween",
+ "animal"
+ ],
+ "moji": "🕷"
},
"spider_web": {
"unicode": "1F578",
@@ -25407,8 +28555,21 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "cobweb"
- ]
+ "cobweb",
+ "halloween"
+ ],
+ "moji": "🕸"
+ },
+ "spoon": {
+ "unicode": "1F944",
+ "unicode_alternates": [],
+ "name": "spoon",
+ "shortname": ":spoon:",
+ "category": "food",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥄"
},
"spy": {
"unicode": "1F575",
@@ -25423,12 +28584,19 @@
"keywords": [
"pi",
"undercover",
- "investigator"
- ]
+ "investigator",
+ "people",
+ "hat",
+ "men",
+ "glasses",
+ "diversity",
+ "job"
+ ],
+ "moji": "🕵"
},
"spy_tone1": {
"unicode": "1F575-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sleuth or spy tone 1",
"shortname": ":spy_tone1:",
"category": "people",
@@ -25441,11 +28609,12 @@
"undercover",
"investigator",
"person"
- ]
+ ],
+ "moji": "🕵🏻"
},
"spy_tone2": {
"unicode": "1F575-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sleuth or spy tone 2",
"shortname": ":spy_tone2:",
"category": "people",
@@ -25458,11 +28627,12 @@
"undercover",
"investigator",
"person"
- ]
+ ],
+ "moji": "🕵🏼"
},
"spy_tone3": {
"unicode": "1F575-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sleuth or spy tone 3",
"shortname": ":spy_tone3:",
"category": "people",
@@ -25475,11 +28645,12 @@
"undercover",
"investigator",
"person"
- ]
+ ],
+ "moji": "🕵🏽"
},
"spy_tone4": {
"unicode": "1F575-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sleuth or spy tone 4",
"shortname": ":spy_tone4:",
"category": "people",
@@ -25492,11 +28663,12 @@
"undercover",
"investigator",
"person"
- ]
+ ],
+ "moji": "🕵🏾"
},
"spy_tone5": {
"unicode": "1F575-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "sleuth or spy tone 5",
"shortname": ":spy_tone5:",
"category": "people",
@@ -25509,14 +28681,26 @@
"undercover",
"investigator",
"person"
- ]
+ ],
+ "moji": "🕵🏿"
+ },
+ "squid": {
+ "unicode": "1F991",
+ "unicode_alternates": [],
+ "name": "squid",
+ "shortname": ":squid:",
+ "category": "nature",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🦑"
},
"stadium": {
"unicode": "1F3DF",
"unicode_alternates": [],
"name": "stadium",
"shortname": ":stadium:",
- "category": "travel_places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25524,8 +28708,14 @@
"event",
"concert",
"convention",
- "game"
- ]
+ "game",
+ "places",
+ "building",
+ "travel",
+ "vacation",
+ "boys night"
+ ],
+ "moji": "🏟"
},
"star": {
"unicode": "2B50",
@@ -25539,7 +28729,10 @@
"aliases_ascii": [],
"keywords": [
"night",
- "yellow"
+ "yellow",
+ "space",
+ "sky",
+ "star"
],
"moji": "⭐"
},
@@ -25548,7 +28741,7 @@
"unicode_alternates": [],
"name": "glowing star",
"shortname": ":star2:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25559,13 +28752,15 @@
"star",
"five",
"points",
- "classic"
+ "classic",
+ "space",
+ "sky"
],
"moji": "🌟"
},
"star_and_crescent": {
"unicode": "262A",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "star and crescent",
"shortname": ":star_and_crescent:",
"category": "symbols",
@@ -25576,11 +28771,12 @@
"muslim",
"religion",
"symbol"
- ]
+ ],
+ "moji": "☪"
},
"star_of_david": {
"unicode": "2721",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "star of david",
"shortname": ":star_of_david:",
"category": "symbols",
@@ -25590,15 +28786,17 @@
"jew",
"jewish",
"religion",
- "symbol"
- ]
+ "symbol",
+ "star"
+ ],
+ "moji": "✡"
},
"stars": {
"unicode": "1F320",
"unicode_alternates": [],
"name": "shooting star",
"shortname": ":stars:",
- "category": "nature",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25608,9 +28806,9 @@
"shoot",
"star",
"sky",
- "night",
"comet",
- "meteoroid"
+ "meteoroid",
+ "space"
],
"moji": "🌠"
},
@@ -25619,7 +28817,7 @@
"unicode_alternates": [],
"name": "station",
"shortname": ":station:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25628,7 +28826,8 @@
"vehicle",
"station",
"train",
- "subway"
+ "subway",
+ "travel"
],
"moji": "🚉"
},
@@ -25637,12 +28836,18 @@
"unicode_alternates": [],
"name": "statue of liberty",
"shortname": ":statue_of_liberty:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"american",
- "newyork"
+ "newyork",
+ "places",
+ "america",
+ "travel",
+ "vacation",
+ "statue of liberty",
+ "free speech"
],
"moji": "🗽"
},
@@ -25651,7 +28856,7 @@
"unicode_alternates": [],
"name": "steam locomotive",
"shortname": ":steam_locomotive:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25660,35 +28865,17 @@
"vehicle",
"locomotive",
"steam",
- "train",
- "engine"
+ "engine",
+ "travel"
],
"moji": "🚂"
},
- "stereo": {
- "unicode": "1F4FE",
- "unicode_alternates": [],
- "name": "portable stereo",
- "shortname": ":stereo:",
- "category": "objects_symbols",
- "aliases": [
- ":portable_stereo:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "music",
- "program",
- "boom",
- "box"
- ]
- },
"stew": {
"unicode": "1F372",
"unicode_alternates": [],
"name": "pot of food",
"shortname": ":stew:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25699,28 +28886,14 @@
"soup",
"thick",
"hot",
- "pot"
+ "pot",
+ "steam"
],
"moji": "🍲"
},
- "stock_chart": {
- "unicode": "1F5E0",
- "unicode_alternates": [],
- "name": "stock chart",
- "shortname": ":stock_chart:",
- "category": "objects_symbols",
- "aliases": [],
- "aliases_ascii": [],
- "keywords": [
- "graph",
- "presentation",
- "stats",
- "business"
- ]
- },
"stop_button": {
"unicode": "23F9",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "black square for stop",
"shortname": ":stop_button:",
"category": "symbols",
@@ -25728,12 +28901,14 @@
"aliases_ascii": [],
"keywords": [
"sound",
- "symbol"
- ]
+ "symbol",
+ "square"
+ ],
+ "moji": "⏹"
},
"stopwatch": {
"unicode": "23F1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "stopwatch",
"shortname": ":stopwatch:",
"category": "objects",
@@ -25742,8 +28917,10 @@
"keywords": [
"clock",
"object",
- "time"
- ]
+ "time",
+ "electronics"
+ ],
+ "moji": "⏱"
},
"straight_ruler": {
"unicode": "1F4CF",
@@ -25754,7 +28931,10 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "stationery"
+ "stationery",
+ "object",
+ "tool",
+ "office"
],
"moji": "📏"
},
@@ -25763,7 +28943,7 @@
"unicode_alternates": [],
"name": "strawberry",
"shortname": ":strawberry:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25782,7 +28962,7 @@
"unicode_alternates": [],
"name": "face with stuck-out tongue",
"shortname": ":stuck_out_tongue:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
":P",
@@ -25807,8 +28987,10 @@
"prank",
"tongue",
"silly",
- "playful",
- "cheeky"
+ "cheeky",
+ "smiley",
+ "sex",
+ "emotion"
],
"moji": "😛"
},
@@ -25817,7 +28999,7 @@
"unicode_alternates": [],
"name": "face with stuck-out tongue and tightly-closed eyes",
"shortname": ":stuck_out_tongue_closed_eyes:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25828,8 +29010,10 @@
"tongue",
"kidding",
"silly",
- "playful",
- "ecstatic"
+ "ecstatic",
+ "happy",
+ "smiley",
+ "emotion"
],
"moji": "😝"
},
@@ -25838,7 +29022,7 @@
"unicode_alternates": [],
"name": "face with stuck-out tongue and winking eye",
"shortname": ":stuck_out_tongue_winking_eye:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
">:P",
@@ -25856,11 +29040,27 @@
"winking",
"kidding",
"silly",
- "playful",
- "crazy"
+ "crazy",
+ "happy",
+ "smiley",
+ "emotion",
+ "parties"
],
"moji": "😜"
},
+ "stuffed_flatbread": {
+ "unicode": "1F959",
+ "unicode_alternates": [],
+ "name": "stuffed flatbread",
+ "shortname": ":stuffed_flatbread:",
+ "category": "food",
+ "aliases": [
+ ":stuffed_pita:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥙"
+ },
"sun_with_face": {
"unicode": "1F31E",
"unicode_alternates": [],
@@ -25874,7 +29074,9 @@
"sun",
"anthropomorphic",
"face",
- "sky"
+ "sky",
+ "day",
+ "hump day"
],
"moji": "🌞"
},
@@ -25902,7 +29104,7 @@
"unicode_alternates": [],
"name": "smiling face with sunglasses",
"shortname": ":sunglasses:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"B-)",
@@ -25920,8 +29122,11 @@
"sun",
"glasses",
"sunny",
- "cool",
- "smooth"
+ "smooth",
+ "silly",
+ "smiley",
+ "emojione",
+ "boys night"
],
"moji": "😎"
},
@@ -25937,15 +29142,21 @@
"aliases_ascii": [],
"keywords": [
"brightness",
- "weather"
- ]
+ "weather",
+ "sky",
+ "day",
+ "sun",
+ "hot",
+ "morning"
+ ],
+ "moji": "☀"
},
"sunrise": {
"unicode": "1F305",
"unicode_alternates": [],
"name": "sunrise",
"shortname": ":sunrise:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25955,9 +29166,13 @@
"view",
"sunrise",
"sun",
- "morning",
"color",
- "sky"
+ "sky",
+ "places",
+ "travel",
+ "tropical",
+ "day",
+ "hump day"
],
"moji": "🌅"
},
@@ -25966,7 +29181,7 @@
"unicode_alternates": [],
"name": "sunrise over mountains",
"shortname": ":sunrise_over_mountains:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25979,7 +29194,11 @@
"mountain",
"rural",
"color",
- "sky"
+ "sky",
+ "places",
+ "travel",
+ "day",
+ "camp"
],
"moji": "🌄"
},
@@ -25988,7 +29207,7 @@
"unicode_alternates": [],
"name": "surfer",
"shortname": ":surfer:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -25998,15 +29217,19 @@
"surfer",
"surf",
"wave",
- "ocean",
"ride",
- "swell"
+ "swell",
+ "men",
+ "vacation",
+ "tropical",
+ "sport",
+ "diversity"
],
"moji": "🏄"
},
"surfer_tone1": {
"unicode": "1F3C4-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "surfer tone 1",
"shortname": ":surfer_tone1:",
"category": "activity",
@@ -26018,14 +29241,14 @@
"sport",
"surf",
"wave",
- "ocean",
"ride",
"swell"
- ]
+ ],
+ "moji": "🏄🏻"
},
"surfer_tone2": {
"unicode": "1F3C4-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "surfer tone 2",
"shortname": ":surfer_tone2:",
"category": "activity",
@@ -26037,14 +29260,14 @@
"sport",
"surf",
"wave",
- "ocean",
"ride",
"swell"
- ]
+ ],
+ "moji": "🏄🏼"
},
"surfer_tone3": {
"unicode": "1F3C4-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "surfer tone 3",
"shortname": ":surfer_tone3:",
"category": "activity",
@@ -26056,14 +29279,14 @@
"sport",
"surf",
"wave",
- "ocean",
"ride",
"swell"
- ]
+ ],
+ "moji": "🏄🏽"
},
"surfer_tone4": {
"unicode": "1F3C4-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "surfer tone 4",
"shortname": ":surfer_tone4:",
"category": "activity",
@@ -26075,14 +29298,14 @@
"sport",
"surf",
"wave",
- "ocean",
"ride",
"swell"
- ]
+ ],
+ "moji": "🏄🏾"
},
"surfer_tone5": {
"unicode": "1F3C4-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "surfer tone 5",
"shortname": ":surfer_tone5:",
"category": "activity",
@@ -26094,17 +29317,17 @@
"sport",
"surf",
"wave",
- "ocean",
"ride",
"swell"
- ]
+ ],
+ "moji": "🏄🏿"
},
"sushi": {
"unicode": "1F363",
"unicode_alternates": [],
"name": "sushi",
"shortname": ":sushi:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26114,7 +29337,7 @@
"fish",
"raw",
"nigiri",
- "japanese"
+ "japan"
],
"moji": "🍣"
},
@@ -26123,7 +29346,7 @@
"unicode_alternates": [],
"name": "suspension railway",
"shortname": ":suspension_railway:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26133,7 +29356,7 @@
"railway",
"rail",
"train",
- "transportation"
+ "travel"
],
"moji": "🚟"
},
@@ -26142,7 +29365,7 @@
"unicode_alternates": [],
"name": "face with cold sweat",
"shortname": ":sweat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"':(",
@@ -26158,7 +29381,11 @@
"clammy",
"diaphoresis",
"face",
- "hot"
+ "hot",
+ "sad",
+ "smiley",
+ "stressed",
+ "emotion"
],
"moji": "😓"
},
@@ -26167,11 +29394,14 @@
"unicode_alternates": [],
"name": "splashing sweat symbol",
"shortname": ":sweat_drops:",
- "category": "emoticons",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "water"
+ "water",
+ "rain",
+ "stressed",
+ "sweat"
],
"moji": "💦"
},
@@ -26180,7 +29410,7 @@
"unicode_alternates": [],
"name": "smiling face with open mouth and cold sweat",
"shortname": ":sweat_smile:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
"':)",
@@ -26197,7 +29427,10 @@
"smiling",
"cold",
"sweat",
- "perspiration"
+ "perspiration",
+ "smiley",
+ "workout",
+ "emotion"
],
"moji": "😅"
},
@@ -26206,7 +29439,7 @@
"unicode_alternates": [],
"name": "roasted sweet potato",
"shortname": ":sweet_potato:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26216,7 +29449,8 @@
"potato",
"potassium",
"roasted",
- "roast"
+ "roast",
+ "vegetables"
],
"moji": "🍠"
},
@@ -26225,7 +29459,7 @@
"unicode_alternates": [],
"name": "swimmer",
"shortname": ":swimmer:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26238,13 +29472,16 @@
"freestyle",
"butterfly",
"breaststroke",
- "backstroke"
+ "backstroke",
+ "workout",
+ "sport",
+ "diversity"
],
"moji": "🏊"
},
"swimmer_tone1": {
"unicode": "1F3CA-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "swimmer tone 1",
"shortname": ":swimmer_tone1:",
"category": "activity",
@@ -26260,11 +29497,12 @@
"butterfly",
"breaststroke",
"backstroke"
- ]
+ ],
+ "moji": "🏊🏻"
},
"swimmer_tone2": {
"unicode": "1F3CA-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "swimmer tone 2",
"shortname": ":swimmer_tone2:",
"category": "activity",
@@ -26280,11 +29518,12 @@
"butterfly",
"breaststroke",
"backstroke"
- ]
+ ],
+ "moji": "🏊🏼"
},
"swimmer_tone3": {
"unicode": "1F3CA-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "swimmer tone 3",
"shortname": ":swimmer_tone3:",
"category": "activity",
@@ -26300,11 +29539,12 @@
"butterfly",
"breaststroke",
"backstroke"
- ]
+ ],
+ "moji": "🏊🏽"
},
"swimmer_tone4": {
"unicode": "1F3CA-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "swimmer tone 4",
"shortname": ":swimmer_tone4:",
"category": "activity",
@@ -26320,11 +29560,12 @@
"butterfly",
"breaststroke",
"backstroke"
- ]
+ ],
+ "moji": "🏊🏾"
},
"swimmer_tone5": {
"unicode": "1F3CA-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "swimmer tone 5",
"shortname": ":swimmer_tone5:",
"category": "activity",
@@ -26340,30 +29581,40 @@
"butterfly",
"breaststroke",
"backstroke"
- ]
+ ],
+ "moji": "🏊🏿"
},
"symbols": {
"unicode": "1F523",
"unicode_alternates": [],
"name": "input symbol for symbols",
"shortname": ":symbols:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "🔣"
},
"synagogue": {
"unicode": "1F54D",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "synagogue",
"shortname": ":synagogue:",
"category": "travel",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "places",
+ "religion",
+ "building",
+ "travel",
+ "vacation",
+ "condolence"
+ ],
+ "moji": "🕍"
},
"syringe": {
"unicode": "1F489",
@@ -26379,19 +29630,26 @@
"health",
"hospital",
"medicine",
- "needle"
+ "needle",
+ "object",
+ "weapon"
],
"moji": "💉"
},
"taco": {
"unicode": "1F32E",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "taco",
"shortname": ":taco:",
- "category": "foods",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "food",
+ "mexican",
+ "vagina"
+ ],
+ "moji": "🌮"
},
"tada": {
"unicode": "1F389",
@@ -26404,14 +29662,21 @@
"keywords": [
"contulations",
"party",
- "party",
"popper",
"tada",
"celebration",
"victory",
"announcement",
"climax",
- "congratulations"
+ "congratulations",
+ "object",
+ "birthday",
+ "holidays",
+ "cheers",
+ "good",
+ "girls night",
+ "boys night",
+ "parties"
],
"moji": "🎉"
},
@@ -26420,7 +29685,7 @@
"unicode_alternates": [],
"name": "tanabata tree",
"shortname": ":tanabata_tree:",
- "category": "objects",
+ "category": "nature",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26431,7 +29696,8 @@
"festival",
"star",
"wish",
- "holiday"
+ "holiday",
+ "trees"
],
"moji": "🎋"
},
@@ -26440,7 +29706,7 @@
"unicode_alternates": [],
"name": "tangerine",
"shortname": ":tangerine:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26460,7 +29726,7 @@
],
"name": "taurus",
"shortname": ":taurus:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26473,9 +29739,8 @@
"constellation",
"stars",
"zodiac",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♉"
},
@@ -26484,7 +29749,7 @@
"unicode_alternates": [],
"name": "taxi",
"shortname": ":taxi:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26497,7 +29762,8 @@
"automobile",
"city",
"transport",
- "service"
+ "service",
+ "travel"
],
"moji": "🚕"
},
@@ -26506,7 +29772,7 @@
"unicode_alternates": [],
"name": "teacup without handle",
"shortname": ":tea:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26517,10 +29783,13 @@
"green",
"tea",
"leaf",
- "drink",
"teacup",
"hot",
- "beverage"
+ "beverage",
+ "japan",
+ "caffeine",
+ "steam",
+ "morning"
],
"moji": "🍵"
},
@@ -26537,26 +29806,12 @@
"keywords": [
"communication",
"dial",
- "technology"
+ "technology",
+ "electronics",
+ "phone"
],
"moji": "☎"
},
- "telephone_black": {
- "unicode": "1F57F",
- "unicode_alternates": [],
- "name": "black touchtone telephone",
- "shortname": ":telephone_black:",
- "category": "objects_symbols",
- "aliases": [
- ":black_touchtone_telephone:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "dial",
- "technology"
- ]
- },
"telephone_receiver": {
"unicode": "1F4DE",
"unicode_alternates": [],
@@ -26568,26 +29823,12 @@
"keywords": [
"communication",
"dial",
- "technology"
+ "technology",
+ "electronics",
+ "phone"
],
"moji": "📞"
},
- "telephone_white": {
- "unicode": "1F57E",
- "unicode_alternates": [],
- "name": "white touchtone telephone",
- "shortname": ":telephone_white:",
- "category": "objects_symbols",
- "aliases": [
- ":white_touchtone_telephone:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "communication",
- "dial",
- "technology"
- ]
- },
"telescope": {
"unicode": "1F52D",
"unicode_alternates": [],
@@ -26598,13 +29839,15 @@
"aliases_ascii": [],
"keywords": [
"space",
- "stars"
+ "stars",
+ "object",
+ "science"
],
"moji": "🔭"
},
"ten": {
"unicode": "1F51F",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "keycap ten",
"shortname": ":ten:",
"category": "symbols",
@@ -26615,15 +29858,18 @@
"blue-square",
"numbers",
"symbol",
- "word"
- ]
+ "word",
+ "number",
+ "math"
+ ],
+ "moji": "🔟"
},
"tennis": {
"unicode": "1F3BE",
"unicode_alternates": [],
"name": "tennis racquet and ball",
"shortname": ":tennis:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26637,7 +29883,8 @@
"game",
"net",
"court",
- "love"
+ "love",
+ "sport"
],
"moji": "🎾"
},
@@ -26648,13 +29895,16 @@
],
"name": "tent",
"shortname": ":tent:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"camp",
"outdoors",
- "photo"
+ "photo",
+ "places",
+ "travel",
+ "vacation"
],
"moji": "⛺"
},
@@ -26663,16 +29913,21 @@
"unicode_alternates": [],
"name": "thermometer",
"shortname": ":thermometer:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "temperature"
- ]
+ "temperature",
+ "object",
+ "science",
+ "health",
+ "hot"
+ ],
+ "moji": "🌡"
},
"thermometer_face": {
"unicode": "1F912",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "face with thermometer",
"shortname": ":thermometer_face:",
"category": "people",
@@ -26680,11 +29935,17 @@
":face_with_thermometer:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "smiley",
+ "health",
+ "sick",
+ "emotion"
+ ],
+ "moji": "🤒"
},
"thinking": {
"unicode": "1F914",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thinking face",
"shortname": ":thinking:",
"category": "people",
@@ -26692,14 +29953,32 @@
":thinking_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "smiley",
+ "thinking",
+ "boys night"
+ ],
+ "moji": "🤔"
+ },
+ "third_place": {
+ "unicode": "1F949",
+ "unicode_alternates": [],
+ "name": "third place medal",
+ "shortname": ":third_place:",
+ "category": "activity",
+ "aliases": [
+ ":third_place_medal:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥉"
},
"thought_balloon": {
"unicode": "1F4AD",
"unicode_alternates": [],
"name": "thought balloon",
"shortname": ":thought_balloon:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -26711,98 +29990,30 @@
"comic",
"think",
"day dream",
- "wonder"
+ "wonder",
+ "symbol"
],
"moji": "💭"
},
- "thought_left": {
- "unicode": "1F5EC",
- "unicode_alternates": [],
- "name": "left thought bubble",
- "shortname": ":thought_left:",
- "category": "objects_symbols",
- "aliases": [
- ":left_thought_bubble:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "cloud",
- "comic",
- "think",
- "day dream",
- "wonder"
- ]
- },
- "thought_right": {
- "unicode": "1F5ED",
- "unicode_alternates": [],
- "name": "right thought bubble",
- "shortname": ":thought_right:",
- "category": "objects_symbols",
- "aliases": [
- ":right_thought_bubble:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "balloon",
- "cloud",
- "comic",
- "think",
- "day dream",
- "wonder"
- ]
- },
"three": {
"moji": "3️⃣",
"unicode": "0033-20E3",
"unicode_alternates": [
"0033-FE0F-20E3"
],
- "name": "digit three",
+ "name": "keycap digit three",
"shortname": ":three:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"3",
"blue-square",
"numbers",
- "prime"
- ]
- },
- "thumbs_down_reverse": {
- "unicode": "1F593",
- "unicode_alternates": [],
- "name": "reversed thumbs down sign",
- "shortname": ":thumbs_down_reverse:",
- "category": "people",
- "aliases": [
- ":reversed_thumbs_down_sign:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "hand",
- "no",
- "-1"
- ]
- },
- "thumbs_up_reverse": {
- "unicode": "1F592",
- "unicode_alternates": [],
- "name": "reversed thumbs up sign",
- "shortname": ":thumbs_up_reverse:",
- "category": "people",
- "aliases": [
- ":reversed_thumbs_up_sign:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "cool",
- "hand",
- "like",
- "yes",
- "+1"
+ "prime",
+ "number",
+ "math",
+ "symbol"
]
},
"thumbsdown": {
@@ -26810,20 +30021,23 @@
"unicode_alternates": [],
"name": "thumbs down sign",
"shortname": ":thumbsdown:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":-1:"
],
"aliases_ascii": [],
"keywords": [
"hand",
- "no"
+ "no",
+ "body",
+ "hands",
+ "diversity"
],
"moji": "👎"
},
"thumbsdown_tone1": {
"unicode": "1F44E-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs down sign tone 1",
"shortname": ":thumbsdown_tone1:",
"category": "people",
@@ -26835,11 +30049,12 @@
"hand",
"no",
"-1"
- ]
+ ],
+ "moji": "👎🏻"
},
"thumbsdown_tone2": {
"unicode": "1F44E-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs down sign tone 2",
"shortname": ":thumbsdown_tone2:",
"category": "people",
@@ -26851,11 +30066,12 @@
"hand",
"no",
"-1"
- ]
+ ],
+ "moji": "👎🏼"
},
"thumbsdown_tone3": {
"unicode": "1F44E-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs down sign tone 3",
"shortname": ":thumbsdown_tone3:",
"category": "people",
@@ -26867,11 +30083,12 @@
"hand",
"no",
"-1"
- ]
+ ],
+ "moji": "👎🏽"
},
"thumbsdown_tone4": {
"unicode": "1F44E-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs down sign tone 4",
"shortname": ":thumbsdown_tone4:",
"category": "people",
@@ -26883,11 +30100,12 @@
"hand",
"no",
"-1"
- ]
+ ],
+ "moji": "👎🏾"
},
"thumbsdown_tone5": {
"unicode": "1F44E-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs down sign tone 5",
"shortname": ":thumbsdown_tone5:",
"category": "people",
@@ -26899,14 +30117,15 @@
"hand",
"no",
"-1"
- ]
+ ],
+ "moji": "👎🏿"
},
"thumbsup": {
"unicode": "1F44D",
"unicode_alternates": [],
"name": "thumbs up sign",
"shortname": ":thumbsup:",
- "category": "emoticons",
+ "category": "people",
"aliases": [
":+1:"
],
@@ -26915,13 +30134,22 @@
"cool",
"hand",
"like",
- "yes"
+ "yes",
+ "body",
+ "hands",
+ "hi",
+ "luck",
+ "thank you",
+ "diversity",
+ "perfect",
+ "good",
+ "beautiful"
],
"moji": "👍"
},
"thumbsup_tone1": {
"unicode": "1F44D-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs up sign tone 1",
"shortname": ":thumbsup_tone1:",
"category": "people",
@@ -26935,11 +30163,12 @@
"like",
"yes",
"+1"
- ]
+ ],
+ "moji": "👍🏻"
},
"thumbsup_tone2": {
"unicode": "1F44D-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs up sign tone 2",
"shortname": ":thumbsup_tone2:",
"category": "people",
@@ -26953,11 +30182,12 @@
"like",
"yes",
"+1"
- ]
+ ],
+ "moji": "👍🏼"
},
"thumbsup_tone3": {
"unicode": "1F44D-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs up sign tone 3",
"shortname": ":thumbsup_tone3:",
"category": "people",
@@ -26971,11 +30201,12 @@
"like",
"yes",
"+1"
- ]
+ ],
+ "moji": "👍🏽"
},
"thumbsup_tone4": {
"unicode": "1F44D-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs up sign tone 4",
"shortname": ":thumbsup_tone4:",
"category": "people",
@@ -26989,11 +30220,12 @@
"like",
"yes",
"+1"
- ]
+ ],
+ "moji": "👍🏾"
},
"thumbsup_tone5": {
"unicode": "1F44D-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thumbs up sign tone 5",
"shortname": ":thumbsup_tone5:",
"category": "people",
@@ -27007,11 +30239,12 @@
"like",
"yes",
"+1"
- ]
+ ],
+ "moji": "👍🏿"
},
"thunder_cloud_rain": {
"unicode": "26C8",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "thunder cloud and rain",
"shortname": ":thunder_cloud_rain:",
"category": "nature",
@@ -27021,15 +30254,20 @@
"aliases_ascii": [],
"keywords": [
"nature",
- "weather"
- ]
+ "weather",
+ "sky",
+ "cloud",
+ "cold",
+ "rain"
+ ],
+ "moji": "⛈"
},
"ticket": {
"unicode": "1F3AB",
"unicode_alternates": [],
"name": "ticket",
"shortname": ":ticket:",
- "category": "places",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27042,7 +30280,10 @@
"stub",
"admission",
"proof",
- "purchase"
+ "purchase",
+ "theatre",
+ "movie",
+ "parties"
],
"moji": "🎫"
},
@@ -27064,8 +30305,12 @@
"entertainment",
"stub",
"proof",
- "purchase"
- ]
+ "purchase",
+ "theatre",
+ "movie",
+ "parties"
+ ],
+ "moji": "🎟"
},
"tiger": {
"unicode": "1F42F",
@@ -27076,7 +30321,10 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "animal"
+ "animal",
+ "wildlife",
+ "roar",
+ "cat"
],
"moji": "🐯"
},
@@ -27096,13 +30344,15 @@
"striped",
"tony",
"tigger",
- "hobs"
+ "hobs",
+ "wildlife",
+ "roar"
],
"moji": "🐅"
},
"timer": {
"unicode": "23F2",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "timer clock",
"shortname": ":timer:",
"category": "objects",
@@ -27113,14 +30363,15 @@
"keywords": [
"object",
"time"
- ]
+ ],
+ "moji": "⏲"
},
"tired_face": {
"unicode": "1F62B",
"unicode_alternates": [],
"name": "tired face",
"shortname": ":tired_face:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27131,13 +30382,18 @@
"whine",
"exhausted",
"sleepy",
- "tired"
+ "tired",
+ "sad",
+ "smiley",
+ "emotion"
],
"moji": "😫"
},
"tm": {
"unicode": "2122",
- "unicode_alternates": "2122-fe0f",
+ "unicode_alternates": [
+ "2122-FE0F"
+ ],
"name": "trade mark sign",
"shortname": ":tm:",
"category": "symbols",
@@ -27149,7 +30405,8 @@
"symbol",
"tm",
"word"
- ]
+ ],
+ "moji": "™"
},
"toilet": {
"unicode": "1F6BD",
@@ -27168,7 +30425,8 @@
"porcelain",
"waste",
"flush",
- "plumbing"
+ "plumbing",
+ "object"
],
"moji": "🚽"
},
@@ -27177,12 +30435,16 @@
"unicode_alternates": [],
"name": "tokyo tower",
"shortname": ":tokyo_tower:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"japan",
- "photo"
+ "photo",
+ "places",
+ "travel",
+ "vacation",
+ "eiffel tower"
],
"moji": "🗼"
},
@@ -27191,7 +30453,7 @@
"unicode_alternates": [],
"name": "tomato",
"shortname": ":tomato:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27200,80 +30462,83 @@
"nature",
"vegetable",
"tomato",
- "fruit",
"sauce",
- "italian"
+ "italian",
+ "vegetables"
],
"moji": "🍅"
},
"tone1": {
"unicode": "1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "emoji modifier Fitzpatrick type-1-2",
"shortname": ":tone1:",
"category": "modifier",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [],
+ "moji": "🏻"
},
"tone2": {
"unicode": "1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "emoji modifier Fitzpatrick type-3",
"shortname": ":tone2:",
"category": "modifier",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [],
+ "moji": "🏼"
},
"tone3": {
"unicode": "1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "emoji modifier Fitzpatrick type-4",
"shortname": ":tone3:",
"category": "modifier",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [],
+ "moji": "🏽"
},
"tone4": {
"unicode": "1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "emoji modifier Fitzpatrick type-5",
"shortname": ":tone4:",
"category": "modifier",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [],
+ "moji": "🏾"
},
"tone5": {
"unicode": "1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "emoji modifier Fitzpatrick type-6",
"shortname": ":tone5:",
"category": "modifier",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [],
+ "moji": "🏿"
},
"tongue": {
"unicode": "1F445",
"unicode_alternates": [],
"name": "tongue",
"shortname": ":tongue:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"mouth",
"playful",
"tongue",
- "mouth",
"taste",
"buds",
"food",
"silly",
- "playful",
"tease",
"kiss",
"french kiss",
@@ -27281,7 +30546,10 @@
"tasty",
"playfulness",
"silliness",
- "intimacy"
+ "intimacy",
+ "body",
+ "sexy",
+ "lip"
],
"moji": "👅"
},
@@ -27290,26 +30558,31 @@
"unicode_alternates": [],
"name": "hammer and wrench",
"shortname": ":tools:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [
":hammer_and_wrench:"
],
"aliases_ascii": [],
"keywords": [
- "tools"
- ]
+ "tools",
+ "object",
+ "tool"
+ ],
+ "moji": "🛠"
},
"top": {
"unicode": "1F51D",
"unicode_alternates": [],
"name": "top with upwards arrow above",
"shortname": ":top:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "words"
+ "words",
+ "arrow",
+ "symbol"
],
"moji": "🔝"
},
@@ -27318,7 +30591,7 @@
"unicode_alternates": [],
"name": "top hat",
"shortname": ":tophat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27337,14 +30610,15 @@
"topper",
"london",
"period piece",
- "magic",
- "magician"
+ "magician",
+ "fashion",
+ "accessories"
],
"moji": "🎩"
},
"track_next": {
"unicode": "23ED",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "black right-pointing double triangle with vertical bar",
"shortname": ":track_next:",
"category": "symbols",
@@ -27358,11 +30632,12 @@
"next track",
"sound",
"symbol"
- ]
+ ],
+ "moji": "⏭"
},
"track_previous": {
"unicode": "23EE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "black left-pointing double triangle with vertical bar",
"shortname": ":track_previous:",
"category": "symbols",
@@ -27376,28 +30651,34 @@
"previous track",
"sound",
"symbol"
- ]
+ ],
+ "moji": "⏮"
},
"trackball": {
"unicode": "1F5B2",
"unicode_alternates": [],
"name": "trackball",
"shortname": ":trackball:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"input",
"device",
- "gadget"
- ]
+ "gadget",
+ "electronics",
+ "work",
+ "game",
+ "office"
+ ],
+ "moji": "🖲"
},
"tractor": {
"unicode": "1F69C",
"unicode_alternates": [],
"name": "tractor",
"shortname": ":tractor:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27409,7 +30690,8 @@
"farm",
"construction",
"machine",
- "digger"
+ "digger",
+ "transportation"
],
"moji": "🚜"
},
@@ -27418,18 +30700,19 @@
"unicode_alternates": [],
"name": "horizontal traffic light",
"shortname": ":traffic_light:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"traffic",
"transportation",
- "traffic",
"light",
"stop",
"go",
"yield",
- "horizontal"
+ "horizontal",
+ "object",
+ "stop light"
],
"moji": "🚥"
},
@@ -27438,20 +30721,24 @@
"unicode_alternates": [],
"name": "Tram Car",
"shortname": ":train:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"tram",
- "rail"
- ]
+ "rail",
+ "transportation",
+ "travel",
+ "train"
+ ],
+ "moji": "🚋"
},
"train2": {
"unicode": "1F686",
"unicode_alternates": [],
"name": "train",
"shortname": ":train2:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27459,66 +30746,35 @@
"vehicle",
"train",
"locomotive",
- "rail"
+ "rail",
+ "travel"
],
"moji": "🚆"
},
- "train_diesel": {
- "unicode": "1F6F2",
- "unicode_alternates": [],
- "name": "diesel locomotive",
- "shortname": ":train_diesel:",
- "category": "travel_places",
- "aliases": [
- ":diesel_locomotive:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "train",
- "transportation",
- "engine",
- "rail"
- ]
- },
"tram": {
"unicode": "1F68A",
"unicode_alternates": [],
"name": "tram",
"shortname": ":tram:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"transportation",
"vehicle",
"tram",
- "transportation",
- "transport"
+ "transport",
+ "travel",
+ "train"
],
"moji": "🚊"
},
- "triangle_round": {
- "unicode": "1F6C6",
- "unicode_alternates": [],
- "name": "triangle with rounded corners",
- "shortname": ":triangle_round:",
- "category": "objects_symbols",
- "aliases": [
- ":triangle_with_rounded_corners:"
- ],
- "aliases_ascii": [],
- "keywords": [
- "caution",
- "warning",
- "alert"
- ]
- },
"triangular_flag_on_post": {
"unicode": "1F6A9",
"unicode_alternates": [],
"name": "triangular flag on post",
"shortname": ":triangular_flag_on_post:",
- "category": "places",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27527,7 +30783,8 @@
"flag",
"golf",
"post",
- "flagpole"
+ "flagpole",
+ "object"
],
"moji": "🚩"
},
@@ -27543,7 +30800,10 @@
"architect",
"math",
"sketch",
- "stationery"
+ "stationery",
+ "object",
+ "tool",
+ "office"
],
"moji": "📐"
},
@@ -27552,12 +30812,14 @@
"unicode_alternates": [],
"name": "trident emblem",
"shortname": ":trident:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"spear",
- "weapon"
+ "weapon",
+ "object",
+ "symbol"
],
"moji": "🔱"
},
@@ -27566,7 +30828,7 @@
"unicode_alternates": [],
"name": "face with look of triumph",
"shortname": ":triumph:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27575,7 +30837,11 @@
"phew",
"triumph",
"steam",
- "breath"
+ "breath",
+ "mad",
+ "smiley",
+ "angry",
+ "emotion"
],
"moji": "😤"
},
@@ -27584,7 +30850,7 @@
"unicode_alternates": [],
"name": "trolleybus",
"shortname": ":trolleybus:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27595,7 +30861,7 @@
"bus",
"city",
"transport",
- "transportation"
+ "travel"
],
"moji": "🚎"
},
@@ -27604,7 +30870,7 @@
"unicode_alternates": [],
"name": "trophy",
"shortname": ":trophy:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27617,11 +30883,13 @@
"trophy",
"first",
"show",
- "place",
- "win",
"reward",
"achievement",
- "medal"
+ "medal",
+ "object",
+ "game",
+ "perfect",
+ "parties"
],
"moji": "🏆"
},
@@ -27630,7 +30898,7 @@
"unicode_alternates": [],
"name": "tropical drink",
"shortname": ":tropical_drink:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27642,7 +30910,9 @@
"coconut",
"pina",
"fruit",
- "umbrella"
+ "umbrella",
+ "cocktail",
+ "alcohol"
],
"moji": "🍹"
},
@@ -27656,7 +30926,8 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "swim"
+ "swim",
+ "wildlife"
],
"moji": "🐠"
},
@@ -27665,7 +30936,7 @@
"unicode_alternates": [],
"name": "delivery truck",
"shortname": ":truck:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27682,16 +30953,15 @@
"unicode_alternates": [],
"name": "trumpet",
"shortname": ":trumpet:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"brass",
"music",
"trumpet",
- "brass",
- "music",
- "instrument"
+ "instrument",
+ "instruments"
],
"moji": "🎺"
},
@@ -27711,34 +30981,40 @@
"flower",
"bulb",
"spring",
- "easter"
+ "easter",
+ "vagina",
+ "girls night"
],
"moji": "🌷"
},
+ "tumbler_glass": {
+ "unicode": "1F943",
+ "unicode_alternates": [],
+ "name": "tumbler glass",
+ "shortname": ":tumbler_glass:",
+ "category": "food",
+ "aliases": [
+ ":whisky:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [
+ "booze"
+ ],
+ "moji": "🥃"
+ },
"turkey": {
"unicode": "1F983",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "turkey",
"shortname": ":turkey:",
"category": "nature",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
- },
- "turned_ok_hand": {
- "unicode": "1F58F",
- "unicode_alternates": [],
- "name": "turned ok hand sign",
- "shortname": ":turned_ok_hand:",
- "category": "people",
- "aliases": [
- ":turned_ok_hand_sign:"
- ],
- "aliases_ascii": [],
"keywords": [
- "perfect",
- "okay"
- ]
+ "wildlife",
+ "animal"
+ ],
+ "moji": "🦃"
},
"turtle": {
"unicode": "1F422",
@@ -27756,15 +31032,15 @@
"tortoise",
"chelonian",
"reptile",
- "slow",
"snap",
- "steady"
+ "steady",
+ "wildlife"
],
"moji": "🐢"
},
"tv": {
"unicode": "1F4FA",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "television",
"shortname": ":tv:",
"category": "objects",
@@ -27778,19 +31054,23 @@
"tv",
"entertainment",
"object",
- "video"
- ]
+ "video",
+ "electronics"
+ ],
+ "moji": "📺"
},
"twisted_rightwards_arrows": {
"unicode": "1F500",
"unicode_alternates": [],
"name": "twisted rightwards arrows",
"shortname": ":twisted_rightwards_arrows:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "arrow",
+ "symbol"
],
"moji": "🔀"
},
@@ -27800,16 +31080,19 @@
"unicode_alternates": [
"0032-FE0F-20E3"
],
- "name": "digit two",
+ "name": "keycap digit two",
"shortname": ":two:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"2",
"blue-square",
"numbers",
- "prime"
+ "prime",
+ "number",
+ "math",
+ "symbol"
]
},
"two_hearts": {
@@ -27817,7 +31100,7 @@
"unicode_alternates": [],
"name": "two hearts",
"shortname": ":two_hearts:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27828,8 +31111,8 @@
"heart",
"hearts",
"two",
- "love",
- "emotion"
+ "emotion",
+ "symbol"
],
"moji": "💕"
},
@@ -27838,7 +31121,7 @@
"unicode_alternates": [],
"name": "two men holding hands",
"shortname": ":two_men_holding_hands:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27850,11 +31133,13 @@
"men",
"gay",
"homosexual",
- "friends",
"hands",
"holding",
"team",
- "unity"
+ "unity",
+ "people",
+ "sex",
+ "lgbt"
],
"moji": "👬"
},
@@ -27863,7 +31148,7 @@
"unicode_alternates": [],
"name": "two women holding hands",
"shortname": ":two_women_holding_hands:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27875,14 +31160,17 @@
"women",
"hands",
"girlfriends",
- "friends",
"sisters",
"mother",
"daughter",
"gay",
"homosexual",
- "couple",
- "unity"
+ "unity",
+ "people",
+ "sex",
+ "lgbt",
+ "lesbian",
+ "girls night"
],
"moji": "👭"
},
@@ -27891,7 +31179,7 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-5272",
"shortname": ":u5272:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27899,7 +31187,8 @@
"cut",
"divide",
"kanji",
- "pink"
+ "pink",
+ "symbol"
],
"moji": "🈹"
},
@@ -27908,14 +31197,16 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-5408",
"shortname": ":u5408:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"japanese",
"join",
- "kanji"
+ "kanji",
+ "japan",
+ "symbol"
],
"moji": "🈴"
},
@@ -27924,12 +31215,13 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-55b6",
"shortname": ":u55b6:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"japanese",
- "opening hours"
+ "opening hours",
+ "symbol"
],
"moji": "🈺"
},
@@ -27940,14 +31232,15 @@
],
"name": "squared cjk unified ideograph-6307",
"shortname": ":u6307:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"green-square",
"kanji",
- "point"
+ "point",
+ "symbol"
],
"moji": "🈯"
},
@@ -27956,7 +31249,7 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-6708",
"shortname": ":u6708:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27964,7 +31257,8 @@
"japanese",
"kanji",
"moon",
- "orange-square"
+ "orange-square",
+ "symbol"
],
"moji": "🈷"
},
@@ -27973,14 +31267,15 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-6709",
"shortname": ":u6709:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"have",
"kanji",
- "orange-square"
+ "orange-square",
+ "symbol"
],
"moji": "🈶"
},
@@ -27989,7 +31284,7 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-6e80",
"shortname": ":u6e80:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -27997,7 +31292,9 @@
"full",
"japanese",
"kanji",
- "red-square"
+ "red-square",
+ "japan",
+ "symbol"
],
"moji": "🈵"
},
@@ -28008,7 +31305,7 @@
],
"name": "squared cjk unified ideograph-7121",
"shortname": ":u7121:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28017,7 +31314,8 @@
"kanji",
"no",
"nothing",
- "orange-square"
+ "orange-square",
+ "symbol"
],
"moji": "🈚"
},
@@ -28026,13 +31324,14 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-7533",
"shortname": ":u7533:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"japanese",
- "kanji"
+ "kanji",
+ "symbol"
],
"moji": "🈸"
},
@@ -28041,7 +31340,7 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-7981",
"shortname": ":u7981:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28050,7 +31349,9 @@
"japanese",
"kanji",
"limit",
- "restricted"
+ "restricted",
+ "japan",
+ "symbol"
],
"moji": "🈲"
},
@@ -28059,14 +31360,15 @@
"unicode_alternates": [],
"name": "squared cjk unified ideograph-7a7a",
"shortname": ":u7a7a:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"chinese",
"empty",
"japanese",
- "kanji"
+ "kanji",
+ "symbol"
],
"moji": "🈳"
},
@@ -28082,13 +31384,15 @@
"aliases_ascii": [],
"keywords": [
"rain",
- "weather"
+ "weather",
+ "sky",
+ "cold"
],
"moji": "☔"
},
"umbrella2": {
"unicode": "2602",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "umbrella",
"shortname": ":umbrella2:",
"category": "nature",
@@ -28098,15 +31402,19 @@
"clothing",
"nature",
"rain",
- "weather"
- ]
+ "weather",
+ "object",
+ "sky",
+ "cold"
+ ],
+ "moji": "☂"
},
"unamused": {
"unicode": "1F612",
"unicode_alternates": [],
"name": "unamused face",
"shortname": ":unamused:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28120,7 +31428,12 @@
"depressed",
"unhappy",
"disapprove",
- "lame"
+ "lame",
+ "sad",
+ "mad",
+ "smiley",
+ "tired",
+ "emotion"
],
"moji": "😒"
},
@@ -28129,20 +31442,21 @@
"unicode_alternates": [],
"name": "no one under eighteen symbol",
"shortname": ":underage:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"18",
"drink",
"night",
- "pub"
+ "pub",
+ "symbol"
],
"moji": "🔞"
},
"unicorn": {
"unicode": "1F984",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "unicorn face",
"shortname": ":unicorn:",
"category": "nature",
@@ -28150,7 +31464,10 @@
":unicorn_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "animal"
+ ],
+ "moji": "🦄"
},
"unlock": {
"unicode": "1F513",
@@ -28162,7 +31479,9 @@
"aliases_ascii": [],
"keywords": [
"privacy",
- "security"
+ "security",
+ "object",
+ "lock"
],
"moji": "🔓"
},
@@ -28171,17 +31490,18 @@
"unicode_alternates": [],
"name": "squared up with exclamation mark",
"shortname": ":up:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "blue-square"
+ "blue-square",
+ "symbol"
],
"moji": "🆙"
},
"upside_down": {
"unicode": "1F643",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "upside-down face",
"shortname": ":upside_down:",
"category": "people",
@@ -28189,11 +31509,16 @@
":upside_down_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "silly",
+ "smiley",
+ "sarcastic"
+ ],
+ "moji": "🙃"
},
"urn": {
"unicode": "26B1",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "funeral urn",
"shortname": ":urn:",
"category": "objects",
@@ -28203,8 +31528,11 @@
"aliases_ascii": [],
"keywords": [
"death",
- "object"
- ]
+ "object",
+ "dead",
+ "rip"
+ ],
+ "moji": "⚱"
},
"v": {
"unicode": "270C",
@@ -28213,7 +31541,7 @@
],
"name": "victory hand",
"shortname": ":v:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28222,13 +31550,19 @@
"ohyeah",
"peace",
"two",
- "victory"
+ "victory",
+ "body",
+ "hands",
+ "hi",
+ "thank you",
+ "diversity",
+ "girls night"
],
"moji": "✌"
},
"v_tone1": {
"unicode": "270C-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "victory hand tone 1",
"shortname": ":v_tone1:",
"category": "people",
@@ -28240,11 +31574,12 @@
"peace",
"two",
"v"
- ]
+ ],
+ "moji": "✌🏻"
},
"v_tone2": {
"unicode": "270C-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "victory hand tone 2",
"shortname": ":v_tone2:",
"category": "people",
@@ -28256,11 +31591,12 @@
"peace",
"two",
"v"
- ]
+ ],
+ "moji": "✌🏼"
},
"v_tone3": {
"unicode": "270C-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "victory hand tone 3",
"shortname": ":v_tone3:",
"category": "people",
@@ -28272,11 +31608,12 @@
"peace",
"two",
"v"
- ]
+ ],
+ "moji": "✌🏽"
},
"v_tone4": {
"unicode": "270C-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "victory hand tone 4",
"shortname": ":v_tone4:",
"category": "people",
@@ -28288,11 +31625,12 @@
"peace",
"two",
"v"
- ]
+ ],
+ "moji": "✌🏾"
},
"v_tone5": {
"unicode": "270C-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "victory hand tone 5",
"shortname": ":v_tone5:",
"category": "people",
@@ -28304,14 +31642,15 @@
"peace",
"two",
"v"
- ]
+ ],
+ "moji": "✌🏿"
},
"vertical_traffic_light": {
"unicode": "1F6A6",
"unicode_alternates": [],
"name": "vertical traffic light",
"shortname": ":vertical_traffic_light:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28321,7 +31660,9 @@
"stop",
"go",
"yield",
- "vertical"
+ "vertical",
+ "object",
+ "stop light"
],
"moji": "🚦"
},
@@ -28336,7 +31677,8 @@
"keywords": [
"oldschool",
"record",
- "video"
+ "video",
+ "electronics"
],
"moji": "📼"
},
@@ -28345,12 +31687,13 @@
"unicode_alternates": [],
"name": "vibration mode",
"shortname": ":vibration_mode:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"orange-square",
- "phone"
+ "phone",
+ "symbol"
],
"moji": "📳"
},
@@ -28364,7 +31707,10 @@
"aliases_ascii": [],
"keywords": [
"film",
- "record"
+ "record",
+ "electronics",
+ "camera",
+ "movie"
],
"moji": "📹"
},
@@ -28373,7 +31719,7 @@
"unicode_alternates": [],
"name": "video game",
"shortname": ":video_game:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28383,11 +31729,11 @@
"play",
"video",
"game",
- "console",
- "controller",
"nintendo",
"xbox",
- "playstation"
+ "playstation",
+ "electronics",
+ "boys night"
],
"moji": "🎮"
},
@@ -28396,7 +31742,7 @@
"unicode_alternates": [],
"name": "violin",
"shortname": ":violin:",
- "category": "objects",
+ "category": "activity",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28404,8 +31750,8 @@
"music",
"violin",
"fiddle",
- "music",
- "instrument"
+ "instruments",
+ "sarcastic"
],
"moji": "🎻"
},
@@ -28416,7 +31762,7 @@
],
"name": "virgo",
"shortname": ":virgo:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28428,9 +31774,8 @@
"constellation",
"stars",
"zodiac",
- "sign",
- "zodiac",
- "horoscope"
+ "horoscope",
+ "symbol"
],
"moji": "♍"
},
@@ -28439,7 +31784,7 @@
"unicode_alternates": [],
"name": "volcano",
"shortname": ":volcano:",
- "category": "nature",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28449,31 +31794,40 @@
"lava",
"magma",
"hot",
- "explode"
+ "explode",
+ "places",
+ "tropical"
],
"moji": "🌋"
},
"volleyball": {
"unicode": "1F3D0",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "volleyball",
"shortname": ":volleyball:",
"category": "activity",
"aliases": [],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "game",
+ "ball",
+ "sport",
+ "volleyball"
+ ],
+ "moji": "🏐"
},
"vs": {
"unicode": "1F19A",
"unicode_alternates": [],
"name": "squared vs",
"shortname": ":vs:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"orange-square",
- "words"
+ "words",
+ "symbol"
],
"moji": "🆚"
},
@@ -28493,12 +31847,17 @@
"leonard",
"nimoy",
"star trek",
- "live long"
- ]
+ "live long",
+ "body",
+ "hands",
+ "hi",
+ "diversity"
+ ],
+ "moji": "🖖"
},
"vulcan_tone1": {
"unicode": "1F596-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with part between middle and ring fingers tone 1",
"shortname": ":vulcan_tone1:",
"category": "people",
@@ -28513,11 +31872,12 @@
"nimoy",
"star trek",
"live long"
- ]
+ ],
+ "moji": "🖖🏻"
},
"vulcan_tone2": {
"unicode": "1F596-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with part between middle and ring fingers tone 2",
"shortname": ":vulcan_tone2:",
"category": "people",
@@ -28532,11 +31892,12 @@
"nimoy",
"star trek",
"live long"
- ]
+ ],
+ "moji": "🖖🏼"
},
"vulcan_tone3": {
"unicode": "1F596-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with part between middle and ring fingers tone 3",
"shortname": ":vulcan_tone3:",
"category": "people",
@@ -28551,11 +31912,12 @@
"nimoy",
"star trek",
"live long"
- ]
+ ],
+ "moji": "🖖🏽"
},
"vulcan_tone4": {
"unicode": "1F596-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with part between middle and ring fingers tone 4",
"shortname": ":vulcan_tone4:",
"category": "people",
@@ -28570,11 +31932,12 @@
"nimoy",
"star trek",
"live long"
- ]
+ ],
+ "moji": "🖖🏾"
},
"vulcan_tone5": {
"unicode": "1F596-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "raised hand with part between middle and ring fingers tone 5",
"shortname": ":vulcan_tone5:",
"category": "people",
@@ -28589,14 +31952,15 @@
"nimoy",
"star trek",
"live long"
- ]
+ ],
+ "moji": "🖖🏿"
},
"walking": {
"unicode": "1F6B6",
"unicode_alternates": [],
"name": "pedestrian",
"shortname": ":walking:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28607,13 +31971,16 @@
"stroll",
"stride",
"foot",
- "feet"
+ "feet",
+ "people",
+ "men",
+ "diversity"
],
"moji": "🚶"
},
"walking_tone1": {
"unicode": "1F6B6-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pedestrian tone 1",
"shortname": ":walking_tone1:",
"category": "people",
@@ -28626,11 +31993,12 @@
"stride",
"hiking",
"hike"
- ]
+ ],
+ "moji": "🚶🏻"
},
"walking_tone2": {
"unicode": "1F6B6-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pedestrian tone 2",
"shortname": ":walking_tone2:",
"category": "people",
@@ -28643,11 +32011,12 @@
"stride",
"hiking",
"hike"
- ]
+ ],
+ "moji": "🚶🏼"
},
"walking_tone3": {
"unicode": "1F6B6-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pedestrian tone 3",
"shortname": ":walking_tone3:",
"category": "people",
@@ -28660,11 +32029,12 @@
"stride",
"hiking",
"hike"
- ]
+ ],
+ "moji": "🚶🏽"
},
"walking_tone4": {
"unicode": "1F6B6-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pedestrian tone 4",
"shortname": ":walking_tone4:",
"category": "people",
@@ -28677,11 +32047,12 @@
"stride",
"hiking",
"hike"
- ]
+ ],
+ "moji": "🚶🏾"
},
"walking_tone5": {
"unicode": "1F6B6-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "pedestrian tone 5",
"shortname": ":walking_tone5:",
"category": "people",
@@ -28694,7 +32065,8 @@
"stride",
"hiking",
"hike"
- ]
+ ],
+ "moji": "🚶🏿"
},
"waning_crescent_moon": {
"unicode": "1F318",
@@ -28712,7 +32084,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌘"
},
@@ -28732,7 +32105,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌖"
},
@@ -28743,12 +32117,14 @@
],
"name": "warning sign",
"shortname": ":warning:",
- "category": "places",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"exclamation",
- "wip"
+ "wip",
+ "symbol",
+ "punctuation"
],
"moji": "⚠"
},
@@ -28757,14 +32133,17 @@
"unicode_alternates": [],
"name": "wastebasket",
"shortname": ":wastebasket:",
- "category": "objects_symbols",
+ "category": "objects",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"trash",
"garbage",
- "dispose"
- ]
+ "dispose",
+ "object",
+ "work"
+ ],
+ "moji": "🗑"
},
"watch": {
"unicode": "231A",
@@ -28778,7 +32157,8 @@
"aliases_ascii": [],
"keywords": [
"accessories",
- "time"
+ "time",
+ "electronics"
],
"moji": "⌚"
},
@@ -28800,16 +32180,83 @@
"asia",
"bovine",
"milk",
- "dairy"
+ "dairy",
+ "wildlife"
],
"moji": "🐃"
},
+ "water_polo": {
+ "unicode": "1F93D",
+ "unicode_alternates": [],
+ "name": "water polo",
+ "shortname": ":water_polo:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤽"
+ },
+ "water_polo_tone1": {
+ "unicode": "1F93D-1F3FB",
+ "unicode_alternates": [],
+ "name": "water polo tone 1",
+ "shortname": ":water_polo_tone1:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤽🏻"
+ },
+ "water_polo_tone2": {
+ "unicode": "1F93D-1F3FC",
+ "unicode_alternates": [],
+ "name": "water polo tone 2",
+ "shortname": ":water_polo_tone2:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤽🏼"
+ },
+ "water_polo_tone3": {
+ "unicode": "1F93D-1F3FD",
+ "unicode_alternates": [],
+ "name": "water polo tone 3",
+ "shortname": ":water_polo_tone3:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤽🏽"
+ },
+ "water_polo_tone4": {
+ "unicode": "1F93D-1F3FE",
+ "unicode_alternates": [],
+ "name": "water polo tone 4",
+ "shortname": ":water_polo_tone4:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤽🏾"
+ },
+ "water_polo_tone5": {
+ "unicode": "1F93D-1F3FF",
+ "unicode_alternates": [],
+ "name": "water polo tone 5",
+ "shortname": ":water_polo_tone5:",
+ "category": "activity",
+ "aliases": [],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤽🏿"
+ },
"watermelon": {
"unicode": "1F349",
"unicode_alternates": [],
"name": "watermelon",
"shortname": ":watermelon:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28818,7 +32265,6 @@
"melon",
"watermelon",
"summer",
- "fruit",
"large"
],
"moji": "🍉"
@@ -28828,7 +32274,7 @@
"unicode_alternates": [],
"name": "waving hand sign",
"shortname": ":wave:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28836,13 +32282,16 @@
"gesture",
"goodbye",
"hands",
- "solong"
+ "solong",
+ "body",
+ "hi",
+ "diversity"
],
"moji": "👋"
},
"wave_tone1": {
"unicode": "1F44B-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "waving hand sign tone 1",
"shortname": ":wave_tone1:",
"category": "people",
@@ -28855,11 +32304,12 @@
"solong",
"hi",
"wave"
- ]
+ ],
+ "moji": "👋🏻"
},
"wave_tone2": {
"unicode": "1F44B-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "waving hand sign tone 2",
"shortname": ":wave_tone2:",
"category": "people",
@@ -28872,11 +32322,12 @@
"solong",
"hi",
"wave"
- ]
+ ],
+ "moji": "👋🏼"
},
"wave_tone3": {
"unicode": "1F44B-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "waving hand sign tone 3",
"shortname": ":wave_tone3:",
"category": "people",
@@ -28889,11 +32340,12 @@
"solong",
"hi",
"wave"
- ]
+ ],
+ "moji": "👋🏽"
},
"wave_tone4": {
"unicode": "1F44B-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "waving hand sign tone 4",
"shortname": ":wave_tone4:",
"category": "people",
@@ -28906,11 +32358,12 @@
"solong",
"hi",
"wave"
- ]
+ ],
+ "moji": "👋🏾"
},
"wave_tone5": {
"unicode": "1F44B-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "waving hand sign tone 5",
"shortname": ":wave_tone5:",
"category": "people",
@@ -28923,19 +32376,21 @@
"solong",
"hi",
"wave"
- ]
+ ],
+ "moji": "👋🏿"
},
"wavy_dash": {
"unicode": "3030",
"unicode_alternates": [],
"name": "wavy dash",
"shortname": ":wavy_dash:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"draw",
- "line"
+ "line",
+ "symbol"
],
"moji": "〰"
},
@@ -28954,7 +32409,8 @@
"sky",
"night",
"cheese",
- "phase"
+ "phase",
+ "space"
],
"moji": "🌒"
},
@@ -28967,7 +32423,10 @@
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "nature"
+ "nature",
+ "space",
+ "sky",
+ "moon"
],
"moji": "🌔"
},
@@ -28976,7 +32435,7 @@
"unicode_alternates": [],
"name": "water closet",
"shortname": ":wc:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -28985,13 +32444,13 @@
"toilet",
"water",
"closet",
- "toilet",
"bathroom",
"throne",
"porcelain",
"waste",
"flush",
- "plumbing"
+ "plumbing",
+ "symbol"
],
"moji": "🚾"
},
@@ -29000,7 +32459,7 @@
"unicode_alternates": [],
"name": "weary face",
"shortname": ":weary:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29010,13 +32469,14 @@
"sleepy",
"tired",
"weary",
- "sleepy",
- "tired",
"tiredness",
"study",
"finals",
"school",
- "exhausted"
+ "exhausted",
+ "smiley",
+ "stressed",
+ "emotion"
],
"moji": "😩"
},
@@ -29025,7 +32485,7 @@
"unicode_alternates": [],
"name": "wedding",
"shortname": ":wedding:",
- "category": "places",
+ "category": "travel",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29035,7 +32495,11 @@
"groom",
"like",
"love",
- "marriage"
+ "marriage",
+ "places",
+ "wedding",
+ "building",
+ "parties"
],
"moji": "💒"
},
@@ -29051,7 +32515,10 @@
"animal",
"nature",
"ocean",
- "sea"
+ "sea",
+ "wildlife",
+ "tropical",
+ "whales"
],
"moji": "🐳"
},
@@ -29073,13 +32540,16 @@
"bloated",
"fat",
"large",
- "massive"
+ "massive",
+ "wildlife",
+ "tropical",
+ "whales"
],
"moji": "🐋"
},
"wheel_of_dharma": {
"unicode": "2638",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "wheel of dharma",
"shortname": ":wheel_of_dharma:",
"category": "symbols",
@@ -29089,7 +32559,8 @@
"buddhist",
"religion",
"symbol"
- ]
+ ],
+ "moji": "☸"
},
"wheelchair": {
"unicode": "267F",
@@ -29098,12 +32569,13 @@
],
"name": "wheelchair symbol",
"shortname": ":wheelchair:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
- "disabled"
+ "disabled",
+ "symbol"
],
"moji": "♿"
},
@@ -29112,13 +32584,14 @@
"unicode_alternates": [],
"name": "white heavy check mark",
"shortname": ":white_check_mark:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"agree",
"green-square",
- "ok"
+ "ok",
+ "symbol"
],
"moji": "✅"
},
@@ -29129,11 +32602,14 @@
],
"name": "medium white circle",
"shortname": ":white_circle:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "circle"
],
"moji": "⚪"
},
@@ -29142,7 +32618,7 @@
"unicode_alternates": [],
"name": "white flower",
"shortname": ":white_flower:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29158,7 +32634,8 @@
"homework",
"student",
"assignment",
- "praise"
+ "praise",
+ "symbol"
],
"moji": "💮"
},
@@ -29169,11 +32646,14 @@
],
"name": "white large square",
"shortname": ":white_large_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "⬜"
},
@@ -29184,11 +32664,14 @@
],
"name": "white medium small square",
"shortname": ":white_medium_small_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "◽"
},
@@ -29199,11 +32682,14 @@
],
"name": "white medium square",
"shortname": ":white_medium_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "◻"
},
@@ -29214,11 +32700,14 @@
],
"name": "white small square",
"shortname": ":white_small_square:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "▫"
},
@@ -29227,17 +32716,20 @@
"unicode_alternates": [],
"name": "white square button",
"shortname": ":white_square_button:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
- "shape"
+ "shape",
+ "shapes",
+ "symbol",
+ "square"
],
"moji": "🔳"
},
"white_sun_cloud": {
"unicode": "1F325",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white sun behind cloud",
"shortname": ":white_sun_cloud:",
"category": "nature",
@@ -29247,12 +32739,17 @@
"aliases_ascii": [],
"keywords": [
"nature",
- "weather"
- ]
+ "weather",
+ "sky",
+ "cloud",
+ "cold",
+ "sun"
+ ],
+ "moji": "🌥"
},
"white_sun_rain_cloud": {
"unicode": "1F326",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white sun behind cloud with rain",
"shortname": ":white_sun_rain_cloud:",
"category": "nature",
@@ -29262,12 +32759,18 @@
"aliases_ascii": [],
"keywords": [
"nature",
- "weather"
- ]
+ "weather",
+ "sky",
+ "cloud",
+ "cold",
+ "rain",
+ "sun"
+ ],
+ "moji": "🌦"
},
"white_sun_small_cloud": {
"unicode": "1F324",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "white sun with small cloud",
"shortname": ":white_sun_small_cloud:",
"category": "nature",
@@ -29277,8 +32780,25 @@
"aliases_ascii": [],
"keywords": [
"nature",
- "weather"
- ]
+ "weather",
+ "sky",
+ "cloud",
+ "sun"
+ ],
+ "moji": "🌤"
+ },
+ "wilted_rose": {
+ "unicode": "1F940",
+ "unicode_alternates": [],
+ "name": "wilted flower",
+ "shortname": ":wilted_rose:",
+ "category": "nature",
+ "aliases": [
+ ":wilted_flower:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🥀"
},
"wind_blowing_face": {
"unicode": "1F32C",
@@ -29290,8 +32810,11 @@
"aliases_ascii": [],
"keywords": [
"mother",
- "nature"
- ]
+ "nature",
+ "weather",
+ "cold"
+ ],
+ "moji": "🌬"
},
"wind_chime": {
"unicode": "1F390",
@@ -29314,7 +32837,9 @@
"soothing",
"protective",
"spiritual",
- "sound"
+ "sound",
+ "object",
+ "japan"
],
"moji": "🎐"
},
@@ -29323,7 +32848,7 @@
"unicode_alternates": [],
"name": "wine glass",
"shortname": ":wine_glass:",
- "category": "objects",
+ "category": "food",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29338,7 +32863,10 @@
"grapes",
"tasting",
"wine",
- "winery"
+ "winery",
+ "italian",
+ "girls night",
+ "parties"
],
"moji": "🍷"
},
@@ -29347,7 +32875,7 @@
"unicode_alternates": [],
"name": "winking face",
"shortname": ":wink:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [
";)",
@@ -29367,7 +32895,10 @@
"wink",
"winking",
"friendly",
- "joke"
+ "joke",
+ "silly",
+ "smiley",
+ "emotion"
],
"moji": "😉"
},
@@ -29381,7 +32912,9 @@
"aliases_ascii": [],
"keywords": [
"animal",
- "nature"
+ "nature",
+ "wildlife",
+ "roar"
],
"moji": "🐺"
},
@@ -29390,18 +32923,25 @@
"unicode_alternates": [],
"name": "woman",
"shortname": ":woman:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"female",
- "girls"
+ "girls",
+ "people",
+ "women",
+ "sex",
+ "diversity",
+ "feminist",
+ "selfie",
+ "girls night"
],
"moji": "👩"
},
"woman_tone1": {
"unicode": "1F469-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "woman tone 1",
"shortname": ":woman_tone1:",
"category": "people",
@@ -29411,11 +32951,12 @@
"female",
"girl",
"lady"
- ]
+ ],
+ "moji": "👩🏻"
},
"woman_tone2": {
"unicode": "1F469-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "woman tone 2",
"shortname": ":woman_tone2:",
"category": "people",
@@ -29425,11 +32966,12 @@
"female",
"girl",
"lady"
- ]
+ ],
+ "moji": "👩🏼"
},
"woman_tone3": {
"unicode": "1F469-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "woman tone 3",
"shortname": ":woman_tone3:",
"category": "people",
@@ -29439,11 +32981,12 @@
"female",
"girl",
"lady"
- ]
+ ],
+ "moji": "👩🏽"
},
"woman_tone4": {
"unicode": "1F469-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "woman tone 4",
"shortname": ":woman_tone4:",
"category": "people",
@@ -29453,11 +32996,12 @@
"female",
"girl",
"lady"
- ]
+ ],
+ "moji": "👩🏾"
},
"woman_tone5": {
"unicode": "1F469-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "woman tone 5",
"shortname": ":woman_tone5:",
"category": "people",
@@ -29467,14 +33011,15 @@
"female",
"girl",
"lady"
- ]
+ ],
+ "moji": "👩🏿"
},
"womans_clothes": {
"unicode": "1F45A",
"unicode_alternates": [],
"name": "womans clothes",
"shortname": ":womans_clothes:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29490,7 +33035,8 @@
"shopping",
"shop",
"dressing",
- "dressed"
+ "dressed",
+ "women"
],
"moji": "👚"
},
@@ -29499,13 +33045,14 @@
"unicode_alternates": [],
"name": "womans hat",
"shortname": ":womans_hat:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"accessories",
"fashion",
- "female"
+ "female",
+ "women"
],
"moji": "👒"
},
@@ -29514,7 +33061,7 @@
"unicode_alternates": [],
"name": "womens symbol",
"shortname": ":womens:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29525,7 +33072,8 @@
"sign",
"girl",
"female",
- "avatar"
+ "avatar",
+ "symbol"
],
"moji": "🚺"
},
@@ -29534,7 +33082,7 @@
"unicode_alternates": [],
"name": "worried face",
"shortname": ":worried:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29544,8 +33092,10 @@
"worried",
"anxious",
"distressed",
- "nervous",
- "tense"
+ "tense",
+ "sad",
+ "smiley",
+ "emotion"
],
"moji": "😟"
},
@@ -29560,30 +33110,111 @@
"keywords": [
"diy",
"ikea",
- "tools"
+ "tools",
+ "object",
+ "tool"
],
"moji": "🔧"
},
- "writing_hand": {
- "unicode": "1F58E",
+ "wrestlers": {
+ "unicode": "1F93C",
"unicode_alternates": [],
- "name": "left writing hand",
- "shortname": ":writing_hand:",
- "category": "people",
+ "name": "wrestlers",
+ "shortname": ":wrestlers:",
+ "category": "activity",
+ "aliases": [
+ ":wrestling:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤼"
+ },
+ "wrestlers_tone1": {
+ "unicode": "1F93C-1F3FB",
+ "unicode_alternates": [],
+ "name": "wrestlers tone 1",
+ "shortname": ":wrestlers_tone1:",
+ "category": "activity",
+ "aliases": [
+ ":wrestling_tone1:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤼🏻"
+ },
+ "wrestlers_tone2": {
+ "unicode": "1F93C-1F3FC",
+ "unicode_alternates": [],
+ "name": "wrestlers tone 2",
+ "shortname": ":wrestlers_tone2:",
+ "category": "activity",
"aliases": [
- ":left_writing_hand:"
+ ":wrestling_tone2:"
],
"aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤼🏼"
+ },
+ "wrestlers_tone3": {
+ "unicode": "1F93C-1F3FD",
+ "unicode_alternates": [],
+ "name": "wrestlers tone 3",
+ "shortname": ":wrestlers_tone3:",
+ "category": "activity",
+ "aliases": [
+ ":wrestling_tone3:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤼🏽"
+ },
+ "wrestlers_tone4": {
+ "unicode": "1F93C-1F3FE",
+ "unicode_alternates": [],
+ "name": "wrestlers tone 4",
+ "shortname": ":wrestlers_tone4:",
+ "category": "activity",
+ "aliases": [
+ ":wrestling_tone4:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤼🏾"
+ },
+ "wrestlers_tone5": {
+ "unicode": "1F93C-1F3FF",
+ "unicode_alternates": [],
+ "name": "wrestlers tone 5",
+ "shortname": ":wrestlers_tone5:",
+ "category": "activity",
+ "aliases": [
+ ":wrestling_tone5:"
+ ],
+ "aliases_ascii": [],
+ "keywords": [],
+ "moji": "🤼🏿"
+ },
+ "writing_hand": {
+ "unicode": "270D",
+ "unicode_alternates": [
+ "270D-FE0F"
+ ],
+ "name": "writing hand",
+ "shortname": ":writing_hand:",
+ "category": "people",
+ "aliases": [],
+ "aliases_ascii": [],
"keywords": [
+ "body",
+ "hands",
"write",
- "sign",
- "signature",
- "draw"
- ]
+ "diversity"
+ ],
+ "moji": "✍"
},
"writing_hand_tone1": {
"unicode": "270D-1F3FB",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "writing hand tone 1",
"shortname": ":writing_hand_tone1:",
"category": "people",
@@ -29594,11 +33225,12 @@
"sign",
"signature",
"draw"
- ]
+ ],
+ "moji": "✍🏻"
},
"writing_hand_tone2": {
"unicode": "270D-1F3FC",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "writing hand tone 2",
"shortname": ":writing_hand_tone2:",
"category": "people",
@@ -29609,11 +33241,12 @@
"sign",
"signature",
"draw"
- ]
+ ],
+ "moji": "✍🏼"
},
"writing_hand_tone3": {
"unicode": "270D-1F3FD",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "writing hand tone 3",
"shortname": ":writing_hand_tone3:",
"category": "people",
@@ -29624,11 +33257,12 @@
"sign",
"signature",
"draw"
- ]
+ ],
+ "moji": "✍🏽"
},
"writing_hand_tone4": {
"unicode": "270D-1F3FE",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "writing hand tone 4",
"shortname": ":writing_hand_tone4:",
"category": "people",
@@ -29639,11 +33273,12 @@
"sign",
"signature",
"draw"
- ]
+ ],
+ "moji": "✍🏾"
},
"writing_hand_tone5": {
"unicode": "270D-1F3FF",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "writing hand tone 5",
"shortname": ":writing_hand_tone5:",
"category": "people",
@@ -29654,20 +33289,23 @@
"sign",
"signature",
"draw"
- ]
+ ],
+ "moji": "✍🏿"
},
"x": {
"unicode": "274C",
"unicode_alternates": [],
"name": "cross mark",
"shortname": ":x:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"delete",
"no",
- "remove"
+ "remove",
+ "symbol",
+ "sol"
],
"moji": "❌"
},
@@ -29676,7 +33314,7 @@
"unicode_alternates": [],
"name": "yellow heart",
"shortname": ":yellow_heart:",
- "category": "emoticons",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29687,7 +33325,6 @@
"yellow",
"gold",
"heart",
- "love",
"friendship",
"happy",
"happiness",
@@ -29696,7 +33333,8 @@
"respectful",
"honest",
"caring",
- "selfless"
+ "selfless",
+ "symbol"
],
"moji": "💛"
},
@@ -29715,10 +33353,7 @@
"money",
"yen",
"japan",
- "japanese",
"banknote",
- "money",
- "currency",
"paper",
"cash",
"bill"
@@ -29727,7 +33362,7 @@
},
"yin_yang": {
"unicode": "262F",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "yin yang",
"shortname": ":yin_yang:",
"category": "symbols",
@@ -29739,14 +33374,15 @@
"symbol",
"tao",
"taoist"
- ]
+ ],
+ "moji": "☯"
},
"yum": {
"unicode": "1F60B",
"unicode_alternates": [],
"name": "face savouring delicious food",
"shortname": ":yum:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
@@ -29762,7 +33398,12 @@
"yummy",
"yum",
"tasty",
- "savory"
+ "savory",
+ "silly",
+ "smiley",
+ "emotion",
+ "sarcastic",
+ "good"
],
"moji": "😋"
},
@@ -29779,7 +33420,9 @@
"keywords": [
"lightning bolt",
"thunder",
- "weather"
+ "weather",
+ "sky",
+ "diarrhea"
],
"moji": "⚡"
},
@@ -29789,20 +33432,23 @@
"unicode_alternates": [
"0030-FE0F-20E3"
],
- "name": "digit zero",
+ "name": "keycap digit zero",
"shortname": ":zero:",
- "category": "other",
+ "category": "symbols",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"blue-square",
"null",
- "numbers"
+ "numbers",
+ "number",
+ "math",
+ "symbol"
]
},
"zipper_mouth": {
"unicode": "1F910",
- "unicode_alternates": "",
+ "unicode_alternates": [],
"name": "zipper-mouth face",
"shortname": ":zipper_mouth:",
"category": "people",
@@ -29810,19 +33456,24 @@
":zipper_mouth_face:"
],
"aliases_ascii": [],
- "keywords": []
+ "keywords": [
+ "mad",
+ "smiley"
+ ],
+ "moji": "🤐"
},
"zzz": {
"unicode": "1F4A4",
"unicode_alternates": [],
"name": "sleeping symbol",
"shortname": ":zzz:",
- "category": "emoticons",
+ "category": "people",
"aliases": [],
"aliases_ascii": [],
"keywords": [
"sleepy",
- "tired"
+ "tired",
+ "goodnight"
],
"moji": "💤"
}
diff --git a/generator_templates/active_record/migration/create_table_migration.rb b/generator_templates/active_record/migration/create_table_migration.rb
index 27acc75dcc4..aad8626a720 100644
--- a/generator_templates/active_record/migration/create_table_migration.rb
+++ b/generator_templates/active_record/migration/create_table_migration.rb
@@ -4,6 +4,14 @@
class <%= migration_class_name %> < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
+ # Set this constant to true if this migration requires downtime.
+ DOWNTIME = false
+
+ # When a migration requires downtime you **must** uncomment the following
+ # constant and define a short and easy to understand explanation as to why the
+ # migration requires downtime.
+ # DOWNTIME_REASON = ''
+
# When using the methods "add_concurrent_index" or "add_column_with_default"
# you must disable the use of transactions as these methods can not run in an
# existing transaction. When using "add_concurrent_index" make sure that this
diff --git a/generator_templates/active_record/migration/migration.rb b/generator_templates/active_record/migration/migration.rb
index 06bdea11367..825bc8bdf61 100644
--- a/generator_templates/active_record/migration/migration.rb
+++ b/generator_templates/active_record/migration/migration.rb
@@ -4,6 +4,14 @@
class <%= migration_class_name %> < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
+ # Set this constant to true if this migration requires downtime.
+ DOWNTIME = false
+
+ # When a migration requires downtime you **must** uncomment the following
+ # constant and define a short and easy to understand explanation as to why the
+ # migration requires downtime.
+ # DOWNTIME_REASON = ''
+
# When using the methods "add_concurrent_index" or "add_column_with_default"
# you must disable the use of transactions as these methods can not run in an
# existing transaction. When using "add_concurrent_index" make sure that this
diff --git a/lib/api/branches.rb b/lib/api/branches.rb
index d467eb9d474..66b853eb342 100644
--- a/lib/api/branches.rb
+++ b/lib/api/branches.rb
@@ -15,7 +15,8 @@ module API
# GET /projects/:id/repository/branches
get ":id/repository/branches" do
branches = user_project.repository.branches.sort_by(&:name)
- present branches, with: Entities::RepoObject, project: user_project
+
+ present branches, with: Entities::RepoBranch, project: user_project
end
# Get a single branch
@@ -28,7 +29,8 @@ module API
get ':id/repository/branches/:branch', requirements: { branch: /.+/ } do
@branch = user_project.repository.branches.find { |item| item.name == params[:branch] }
not_found!("Branch") unless @branch
- present @branch, with: Entities::RepoObject, project: user_project
+
+ present @branch, with: Entities::RepoBranch, project: user_project
end
# Protect a single branch
@@ -36,6 +38,8 @@ module API
# Parameters:
# id (required) - The ID of a project
# branch (required) - The name of the branch
+ # developers_can_push (optional) - Flag if developers can push to that branch
+ # developers_can_merge (optional) - Flag if developers can merge to that branch
# Example Request:
# PUT /projects/:id/repository/branches/:branch/protect
put ':id/repository/branches/:branch/protect',
@@ -43,11 +47,22 @@ module API
authorize_admin_project
@branch = user_project.repository.find_branch(params[:branch])
- not_found!("Branch") unless @branch
+ not_found!('Branch') unless @branch
protected_branch = user_project.protected_branches.find_by(name: @branch.name)
- user_project.protected_branches.create(name: @branch.name) unless protected_branch
+ developers_can_push = to_boolean(params[:developers_can_push])
+ developers_can_merge = to_boolean(params[:developers_can_merge])
+
+ if protected_branch
+ protected_branch.developers_can_push = developers_can_push unless developers_can_push.nil?
+ protected_branch.developers_can_merge = developers_can_merge unless developers_can_merge.nil?
+ protected_branch.save
+ else
+ user_project.protected_branches.create(name: @branch.name,
+ developers_can_push: developers_can_push || false,
+ developers_can_merge: developers_can_merge || false)
+ end
- present @branch, with: Entities::RepoObject, project: user_project
+ present @branch, with: Entities::RepoBranch, project: user_project
end
# Unprotect a single branch
@@ -66,7 +81,7 @@ module API
protected_branch = user_project.protected_branches.find_by(name: @branch.name)
protected_branch.destroy if protected_branch
- present @branch, with: Entities::RepoObject, project: user_project
+ present @branch, with: Entities::RepoBranch, project: user_project
end
# Create branch
@@ -84,7 +99,7 @@ module API
if result[:status] == :success
present result[:branch],
- with: Entities::RepoObject,
+ with: Entities::RepoBranch,
project: user_project
else
render_api_error!(result[:message], 400)
diff --git a/lib/api/builds.rb b/lib/api/builds.rb
index bb9e8f1ae6e..657d421fe97 100644
--- a/lib/api/builds.rb
+++ b/lib/api/builds.rb
@@ -70,7 +70,7 @@ module API
build = get_build!(params[:build_id])
- present_artifact!(build.artifacts_file)
+ present_artifacts!(build.artifacts_file)
end
# Download the artifacts file from ref_name and job
@@ -83,10 +83,12 @@ module API
# GET /projects/:id/artifacts/:ref_name/download?job=name
get ':id/builds/artifacts/:ref_name/download',
requirements: { ref_name: /.+/ } do
+ authorize_read_builds!
+
builds = user_project.latest_successful_builds_for(params[:ref_name])
latest_build = builds.find_by!(name: params[:job])
- present_artifact!(latest_build.artifacts_file)
+ present_artifacts!(latest_build.artifacts_file)
end
# Get a trace of a specific build of a project
@@ -198,7 +200,7 @@ module API
get_build(id) || not_found!
end
- def present_artifact!(artifacts_file)
+ def present_artifacts!(artifacts_file)
if !artifacts_file.file_storage?
redirect_to(build.artifacts_file.url)
elsif artifacts_file.exists?
diff --git a/lib/api/commit_statuses.rb b/lib/api/commit_statuses.rb
index acb4812b5cf..4df6ca8333e 100644
--- a/lib/api/commit_statuses.rb
+++ b/lib/api/commit_statuses.rb
@@ -24,7 +24,7 @@ module API
pipelines = user_project.pipelines.where(sha: params[:sha])
statuses = ::CommitStatus.where(pipeline: pipelines)
- statuses = statuses.latest unless parse_boolean(params[:all])
+ statuses = statuses.latest unless to_boolean(params[:all])
statuses = statuses.where(ref: params[:ref]) if params[:ref].present?
statuses = statuses.where(stage: params[:stage]) if params[:stage].present?
statuses = statuses.where(name: params[:name]) if params[:name].present?
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 3c79a00eb8c..d7e74582459 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -114,21 +114,23 @@ module API
end
end
- class RepoObject < Grape::Entity
+ class RepoBranch < Grape::Entity
expose :name
- expose :commit do |repo_obj, options|
- if repo_obj.respond_to?(:commit)
- repo_obj.commit
- elsif options[:project]
- options[:project].repository.commit(repo_obj.target)
- end
+ expose :commit do |repo_branch, options|
+ options[:project].repository.commit(repo_branch.target)
end
- expose :protected do |repo, options|
- if options[:project]
- options[:project].protected_branch? repo.name
- end
+ expose :protected do |repo_branch, options|
+ options[:project].protected_branch? repo_branch.name
+ end
+
+ expose :developers_can_push do |repo_branch, options|
+ options[:project].developers_can_push_to_protected_branch? repo_branch.name
+ end
+
+ expose :developers_can_merge do |repo_branch, options|
+ options[:project].developers_can_merge_to_protected_branch? repo_branch.name
end
end
@@ -425,27 +427,14 @@ module API
end
class RepoTag < Grape::Entity
- expose :name
- expose :message do |repo_obj, _options|
- if repo_obj.respond_to?(:message)
- repo_obj.message
- else
- nil
- end
- end
+ expose :name, :message
- expose :commit do |repo_obj, options|
- if repo_obj.respond_to?(:commit)
- repo_obj.commit
- elsif options[:project]
- options[:project].repository.commit(repo_obj.target)
- end
+ expose :commit do |repo_tag, options|
+ options[:project].repository.commit(repo_tag.target)
end
- expose :release, using: Entities::Release do |repo_obj, options|
- if options[:project]
- options[:project].releases.find_by(tag: repo_obj.name)
- end
+ expose :release, using: Entities::Release do |repo_tag, options|
+ options[:project].releases.find_by(tag: repo_tag.name)
end
end
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 77e407b54c5..130509cdad6 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -5,8 +5,11 @@ module API
SUDO_HEADER = "HTTP_SUDO"
SUDO_PARAM = :sudo
- def parse_boolean(value)
- [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(value)
+ def to_boolean(value)
+ return true if value =~ /^(true|t|yes|y|1|on)$/i
+ return false if value =~ /^(false|f|no|n|0|off)$/i
+
+ nil
end
def find_user_by_private_token
@@ -17,7 +20,7 @@ module API
def current_user
@current_user ||= (find_user_by_private_token || doorkeeper_guard)
- unless @current_user && Gitlab::UserAccess.allowed?(@current_user)
+ unless @current_user && Gitlab::UserAccess.new(@current_user).allowed?
return nil
end
@@ -290,7 +293,7 @@ module API
def filter_projects(projects)
# If the archived parameter is passed, limit results accordingly
if params[:archived].present?
- projects = projects.where(archived: parse_boolean(params[:archived]))
+ projects = projects.where(archived: to_boolean(params[:archived]))
end
if params[:search].present?
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 4fcdf8968c9..2b685621da9 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -242,7 +242,7 @@ module API
should_remove_source_branch: params[:should_remove_source_branch]
}
- if parse_boolean(params[:merge_when_build_succeeds]) && merge_request.pipeline && merge_request.pipeline.active?
+ if to_boolean(params[:merge_when_build_succeeds]) && merge_request.pipeline && merge_request.pipeline.active?
::MergeRequests::MergeWhenBuildSucceedsService.new(merge_request.target_project, current_user, merge_params).
execute(merge_request)
else
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 6d2a6f3946c..8fed7db8803 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -8,7 +8,7 @@ module API
def map_public_to_visibility_level(attrs)
publik = attrs.delete(:public)
if publik.present? && !attrs[:visibility_level].present?
- publik = parse_boolean(publik)
+ publik = to_boolean(publik)
# Since setting the public attribute to private could mean either
# private or internal, use the more conservative option, private.
attrs[:visibility_level] = (publik == true) ? Gitlab::VisibilityLevel::PUBLIC : Gitlab::VisibilityLevel::PRIVATE
diff --git a/lib/api/todos.rb b/lib/api/todos.rb
index 2a6bfa98ca4..26c24c3baff 100644
--- a/lib/api/todos.rb
+++ b/lib/api/todos.rb
@@ -75,7 +75,7 @@ module API
todos = find_todos
todos.each(&:done)
- present paginate(Kaminari.paginate_array(todos)), with: Entities::Todo, current_user: current_user
+ todos.length
end
end
end
diff --git a/lib/banzai/filter/autolink_filter.rb b/lib/banzai/filter/autolink_filter.rb
index fac7dad3243..9ed45707515 100644
--- a/lib/banzai/filter/autolink_filter.rb
+++ b/lib/banzai/filter/autolink_filter.rb
@@ -56,6 +56,8 @@ module Banzai
# period (e.g., http://localhost:3000/)
rinku = Rinku.auto_link(html, :urls, options, IGNORE_PARENTS.to_a, 1)
+ return if rinku == html
+
# Rinku returns a String, so parse it back to a Nokogiri::XML::Document
# for further processing.
@doc = parse_html(rinku)
diff --git a/lib/banzai/filter/relative_link_filter.rb b/lib/banzai/filter/relative_link_filter.rb
index c78da404607..21ed0410f7f 100644
--- a/lib/banzai/filter/relative_link_filter.rb
+++ b/lib/banzai/filter/relative_link_filter.rb
@@ -112,8 +112,7 @@ module Banzai
end
def current_commit
- @current_commit ||= context[:commit] ||
- ref ? repository.commit(ref) : repository.head_commit
+ @current_commit ||= context[:commit] || ref ? repository.commit(ref) : repository.head_commit
end
def relative_url_root
diff --git a/lib/ci/gitlab_ci_yaml_processor.rb b/lib/ci/gitlab_ci_yaml_processor.rb
index a48dc542b14..83afed9f49f 100644
--- a/lib/ci/gitlab_ci_yaml_processor.rb
+++ b/lib/ci/gitlab_ci_yaml_processor.rb
@@ -44,23 +44,51 @@ module Ci
end
def builds_for_ref(ref, tag = false, trigger_request = nil)
- jobs_for_ref(ref, tag, trigger_request).map do |name, job|
- build_job(name, job)
+ jobs_for_ref(ref, tag, trigger_request).map do |name, _|
+ build_attributes(name)
end
end
def builds_for_stage_and_ref(stage, ref, tag = false, trigger_request = nil)
- jobs_for_stage_and_ref(stage, ref, tag, trigger_request).map do |name, job|
- build_job(name, job)
+ jobs_for_stage_and_ref(stage, ref, tag, trigger_request).map do |name, _|
+ build_attributes(name)
end
end
def builds
- @jobs.map do |name, job|
- build_job(name, job)
+ @jobs.map do |name, _|
+ build_attributes(name)
end
end
+ def build_attributes(name)
+ job = @jobs[name.to_sym] || {}
+ {
+ stage_idx: @stages.index(job[:stage]),
+ stage: job[:stage],
+ ##
+ # Refactoring note:
+ # - before script behaves differently than after script
+ # - after script returns an array of commands
+ # - before script should be a concatenated command
+ commands: [job[:before_script] || @before_script, job[:script]].flatten.compact.join("\n"),
+ tag_list: job[:tags] || [],
+ name: name,
+ allow_failure: job[:allow_failure] || false,
+ when: job[:when] || 'on_success',
+ environment: job[:environment],
+ yaml_variables: yaml_variables(name),
+ options: {
+ image: job[:image] || @image,
+ services: job[:services] || @services,
+ artifacts: job[:artifacts],
+ cache: job[:cache] || @cache,
+ dependencies: job[:dependencies],
+ after_script: job[:after_script] || @after_script,
+ }.compact
+ }
+ end
+
private
def initial_parsing
@@ -89,33 +117,6 @@ module Ci
@jobs[name] = { stage: stage }.merge(job)
end
- def build_job(name, job)
- {
- stage_idx: @stages.index(job[:stage]),
- stage: job[:stage],
- ##
- # Refactoring note:
- # - before script behaves differently than after script
- # - after script returns an array of commands
- # - before script should be a concatenated command
- commands: [job[:before_script] || @before_script, job[:script]].flatten.compact.join("\n"),
- tag_list: job[:tags] || [],
- name: name,
- allow_failure: job[:allow_failure] || false,
- when: job[:when] || 'on_success',
- environment: job[:environment],
- yaml_variables: yaml_variables(name),
- options: {
- image: job[:image] || @image,
- services: job[:services] || @services,
- artifacts: job[:artifacts],
- cache: job[:cache] || @cache,
- dependencies: job[:dependencies],
- after_script: job[:after_script] || @after_script,
- }.compact
- }
- end
-
def yaml_variables(name)
variables = global_variables.merge(job_variables(name))
variables.map do |key, value|
@@ -194,8 +195,8 @@ module Ci
raise ValidationError, "#{name} job: allow_failure parameter should be an boolean"
end
- if job[:when] && !job[:when].in?(%w[on_success on_failure always])
- raise ValidationError, "#{name} job: when parameter should be on_success, on_failure or always"
+ if job[:when] && !job[:when].in?(%w[on_success on_failure always manual])
+ raise ValidationError, "#{name} job: when parameter should be on_success, on_failure, always or manual"
end
if job[:environment] && !validate_environment(job[:environment])
diff --git a/lib/gitlab/access.rb b/lib/gitlab/access.rb
index 831f1e635ba..de41ea415a6 100644
--- a/lib/gitlab/access.rb
+++ b/lib/gitlab/access.rb
@@ -14,9 +14,10 @@ module Gitlab
OWNER = 50
# Branch protection settings
- PROTECTION_NONE = 0
- PROTECTION_DEV_CAN_PUSH = 1
- PROTECTION_FULL = 2
+ PROTECTION_NONE = 0
+ PROTECTION_DEV_CAN_PUSH = 1
+ PROTECTION_FULL = 2
+ PROTECTION_DEV_CAN_MERGE = 3
class << self
def values
@@ -54,6 +55,7 @@ module Gitlab
def protection_options
{
"Not protected: Both developers and masters can push new commits, force push, or delete the branch." => PROTECTION_NONE,
+ "Protected against pushes: Developers cannot push new commits, but are allowed to accept merge requests to the branch." => PROTECTION_DEV_CAN_MERGE,
"Partially protected: Developers can push new commits, but cannot force push or delete the branch. Masters can do all of those." => PROTECTION_DEV_CAN_PUSH,
"Fully protected: Developers cannot push new commits, force push, or delete the branch. Only masters can do any of those." => PROTECTION_FULL,
}
diff --git a/lib/gitlab/award_emoji.rb b/lib/gitlab/award_emoji.rb
index c94bfc0e65f..39b43ab5489 100644
--- a/lib/gitlab/award_emoji.rb
+++ b/lib/gitlab/award_emoji.rb
@@ -1,24 +1,14 @@
module Gitlab
class AwardEmoji
CATEGORIES = {
- other: "Other",
objects: "Objects",
- places: "Places",
- travel_places: "Travel",
- emoticons: "Emoticons",
- objects_symbols: "Symbols",
+ travel: "Travel",
+ symbols: "Symbols",
nature: "Nature",
- celebration: "Celebration",
people: "People",
activity: "Activity",
flags: "Flags",
- food_drink: "Food"
- }.with_indifferent_access
-
- CATEGORY_ALIASES = {
- symbols: "objects_symbols",
- foods: "food_drink",
- travel: "travel_places"
+ food: "Food"
}.with_indifferent_access
def self.normalize_emoji_name(name)
@@ -35,7 +25,7 @@ module Gitlab
# Skip Fitzpatrick(tone) modifiers
next if data["category"] == "modifier"
- category = CATEGORY_ALIASES[data["category"]] || data["category"]
+ category = data["category"]
@emoji_by_category[category] << data
end
@@ -57,9 +47,9 @@ module Gitlab
def self.aliases
@aliases ||=
begin
- json_path = File.join(Rails.root, 'fixtures', 'emojis', 'aliases.json' )
- JSON.parse(File.read(json_path))
- end
+ json_path = File.join(Rails.root, 'fixtures', 'emojis', 'aliases.json')
+ JSON.parse(File.read(json_path))
+ end
end
# Returns an Array of Emoji names and their asset URLs.
diff --git a/lib/gitlab/checks/change_access.rb b/lib/gitlab/checks/change_access.rb
new file mode 100644
index 00000000000..5551fac4b8b
--- /dev/null
+++ b/lib/gitlab/checks/change_access.rb
@@ -0,0 +1,96 @@
+module Gitlab
+ module Checks
+ class ChangeAccess
+ attr_reader :user_access, :project
+
+ def initialize(change, user_access:, project:)
+ @oldrev, @newrev, @ref = change.split(' ')
+ @branch_name = branch_name(@ref)
+ @user_access = user_access
+ @project = project
+ end
+
+ def exec
+ error = protected_branch_checks || tag_checks || push_checks
+
+ if error
+ GitAccessStatus.new(false, error)
+ else
+ GitAccessStatus.new(true)
+ end
+ end
+
+ protected
+
+ def protected_branch_checks
+ return unless project.protected_branch?(@branch_name)
+
+ if forced_push? && user_access.cannot_do_action?(:force_push_code_to_protected_branches)
+ return "You are not allowed to force push code to a protected branch on this project."
+ elsif Gitlab::Git.blank_ref?(@newrev) && user_access.cannot_do_action?(:remove_protected_branches)
+ return "You are not allowed to delete protected branches from this project."
+ end
+
+ if matching_merge_request?
+ if user_access.can_merge_to_branch?(@branch_name) || user_access.can_push_to_branch?(@branch_name)
+ return
+ else
+ "You are not allowed to merge code into protected branches on this project."
+ end
+ else
+ if user_access.can_push_to_branch?(@branch_name)
+ return
+ else
+ "You are not allowed to push code to protected branches on this project."
+ end
+ end
+ end
+
+ def tag_checks
+ tag_ref = tag_name(@ref)
+
+ if tag_ref && protected_tag?(tag_ref) && user_access.cannot_do_action?(:admin_project)
+ "You are not allowed to change existing tags on this project."
+ end
+ end
+
+ def push_checks
+ if user_access.cannot_do_action?(:push_code)
+ "You are not allowed to push code to this project."
+ end
+ end
+
+ private
+
+ def protected_tag?(tag_name)
+ project.repository.tag_exists?(tag_name)
+ end
+
+ def forced_push?
+ Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev)
+ end
+
+ def matching_merge_request?
+ Checks::MatchingMergeRequest.new(@newrev, @branch_name, @project).match?
+ end
+
+ def branch_name(ref)
+ ref = @ref.to_s
+ if Gitlab::Git.branch_ref?(ref)
+ Gitlab::Git.ref_name(ref)
+ else
+ nil
+ end
+ end
+
+ def tag_name(ref)
+ ref = @ref.to_s
+ if Gitlab::Git.tag_ref?(ref)
+ Gitlab::Git.ref_name(ref)
+ else
+ nil
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/checks/force_push.rb b/lib/gitlab/checks/force_push.rb
new file mode 100644
index 00000000000..5fe86553bd0
--- /dev/null
+++ b/lib/gitlab/checks/force_push.rb
@@ -0,0 +1,17 @@
+module Gitlab
+ module Checks
+ class ForcePush
+ def self.force_push?(project, oldrev, newrev)
+ return false if project.empty_repo?
+
+ # Created or deleted branch
+ if Gitlab::Git.blank_ref?(oldrev) || Gitlab::Git.blank_ref?(newrev)
+ false
+ else
+ missed_ref, _ = Gitlab::Popen.popen(%W(#{Gitlab.config.git.bin_path} --git-dir=#{project.repository.path_to_repo} rev-list --max-count=1 #{oldrev} ^#{newrev}))
+ missed_ref.present?
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/checks/matching_merge_request.rb b/lib/gitlab/checks/matching_merge_request.rb
new file mode 100644
index 00000000000..849848515da
--- /dev/null
+++ b/lib/gitlab/checks/matching_merge_request.rb
@@ -0,0 +1,18 @@
+module Gitlab
+ module Checks
+ class MatchingMergeRequest
+ def initialize(newrev, branch_name, project)
+ @newrev = newrev
+ @branch_name = branch_name
+ @project = project
+ end
+
+ def match?
+ @project.merge_requests
+ .with_state(:locked)
+ .where(in_progress_merge_commit_sha: @newrev, target_branch: @branch_name)
+ .exists?
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/diff/file.rb b/lib/gitlab/diff/file.rb
index 7e01f7b61fb..b09ca1fb8b0 100644
--- a/lib/gitlab/diff/file.rb
+++ b/lib/gitlab/diff/file.rb
@@ -5,7 +5,7 @@ module Gitlab
delegate :new_file, :deleted_file, :renamed_file,
:old_path, :new_path, :a_mode, :b_mode,
- :submodule?, :too_large?, to: :diff, prefix: false
+ :submodule?, :too_large?, :collapsed?, to: :diff, prefix: false
def initialize(diff, repository:, diff_refs: nil)
@diff = diff
@@ -68,10 +68,6 @@ module Gitlab
@lines ||= Gitlab::Diff::Parser.new.parse(raw_diff.each_line).to_a
end
- def collapsed_by_default?
- diff.diff.bytesize > 10240 # 10 KB
- end
-
def highlighted_diff_lines
@highlighted_diff_lines ||= Gitlab::Diff::Highlight.new(self, repository: self.repository).highlight
end
diff --git a/lib/gitlab/diff/position.rb b/lib/gitlab/diff/position.rb
index 989fff8918e..2fdcf8d7838 100644
--- a/lib/gitlab/diff/position.rb
+++ b/lib/gitlab/diff/position.rb
@@ -73,8 +73,8 @@ module Gitlab
diff_refs.complete?
end
- def to_json
- JSON.generate(self.to_h)
+ def to_json(opts = nil)
+ JSON.generate(self.to_h, opts)
end
def type
diff --git a/lib/gitlab/downtime_check.rb b/lib/gitlab/downtime_check.rb
new file mode 100644
index 00000000000..ab9537ed7d7
--- /dev/null
+++ b/lib/gitlab/downtime_check.rb
@@ -0,0 +1,71 @@
+module Gitlab
+ # Checks if a set of migrations requires downtime or not.
+ class DowntimeCheck
+ # The constant containing the boolean that indicates if downtime is needed
+ # or not.
+ DOWNTIME_CONST = :DOWNTIME
+
+ # The constant that specifies the reason for the migration requiring
+ # downtime.
+ DOWNTIME_REASON_CONST = :DOWNTIME_REASON
+
+ # Checks the given migration paths and returns an Array of
+ # `Gitlab::DowntimeCheck::Message` instances.
+ #
+ # migrations - The migration file paths to check.
+ def check(migrations)
+ migrations.map do |path|
+ require(path)
+
+ migration_class = class_for_migration_file(path)
+
+ unless migration_class.const_defined?(DOWNTIME_CONST)
+ raise "The migration in #{path} does not specify if it requires " \
+ "downtime or not"
+ end
+
+ if online?(migration_class)
+ Message.new(path)
+ else
+ reason = downtime_reason(migration_class)
+
+ unless reason
+ raise "The migration in #{path} requires downtime but no reason " \
+ "was given"
+ end
+
+ Message.new(path, true, reason)
+ end
+ end
+ end
+
+ # Checks the given migrations and prints the results to STDOUT/STDERR.
+ #
+ # migrations - The migration file paths to check.
+ def check_and_print(migrations)
+ check(migrations).each do |message|
+ puts message.to_s # rubocop: disable Rails/Output
+ end
+ end
+
+ # Returns the class for the given migration file path.
+ def class_for_migration_file(path)
+ File.basename(path, File.extname(path)).split('_', 2).last.camelize.
+ constantize
+ end
+
+ # Returns true if the given migration can be performed without downtime.
+ def online?(migration)
+ migration.const_get(DOWNTIME_CONST) == false
+ end
+
+ # Returns the downtime reason, or nil if none was defined.
+ def downtime_reason(migration)
+ if migration.const_defined?(DOWNTIME_REASON_CONST)
+ migration.const_get(DOWNTIME_REASON_CONST)
+ else
+ nil
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/downtime_check/message.rb b/lib/gitlab/downtime_check/message.rb
new file mode 100644
index 00000000000..4446e921e0d
--- /dev/null
+++ b/lib/gitlab/downtime_check/message.rb
@@ -0,0 +1,28 @@
+module Gitlab
+ class DowntimeCheck
+ class Message
+ attr_reader :path, :offline, :reason
+
+ OFFLINE = "\e[32moffline\e[0m"
+ ONLINE = "\e[31monline\e[0m"
+
+ # path - The file path of the migration.
+ # offline - When set to `true` the migration will require downtime.
+ # reason - The reason as to why the migration requires downtime.
+ def initialize(path, offline = false, reason = nil)
+ @path = path
+ @offline = offline
+ @reason = reason
+ end
+
+ def to_s
+ label = offline ? OFFLINE : ONLINE
+
+ message = "[#{label}]: #{path}"
+ message += ": #{reason}" if reason
+
+ message
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/force_push_check.rb b/lib/gitlab/force_push_check.rb
deleted file mode 100644
index 93c6a5bb7f5..00000000000
--- a/lib/gitlab/force_push_check.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Gitlab
- class ForcePushCheck
- def self.force_push?(project, oldrev, newrev)
- return false if project.empty_repo?
-
- # Created or deleted branch
- if Gitlab::Git.blank_ref?(oldrev) || Gitlab::Git.blank_ref?(newrev)
- false
- else
- missed_refs, _ = Gitlab::Popen.popen(%W(#{Gitlab.config.git.bin_path} --git-dir=#{project.repository.path_to_repo} rev-list #{oldrev} ^#{newrev}))
- missed_refs.split("\n").size > 0
- end
- end
- end
-end
diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb
index 7679c7e4bb8..8e8f39d9cb2 100644
--- a/lib/gitlab/git_access.rb
+++ b/lib/gitlab/git_access.rb
@@ -1,52 +1,17 @@
+# Check a user's access to perform a git action. All public methods in this
+# class return an instance of `GitlabAccessStatus`
module Gitlab
class GitAccess
DOWNLOAD_COMMANDS = %w{ git-upload-pack git-upload-archive }
PUSH_COMMANDS = %w{ git-receive-pack }
- attr_reader :actor, :project, :protocol
+ attr_reader :actor, :project, :protocol, :user_access
def initialize(actor, project, protocol)
@actor = actor
@project = project
@protocol = protocol
- end
-
- def user
- return @user if defined?(@user)
-
- @user =
- case actor
- when User
- actor
- when DeployKey
- nil
- when Key
- actor.user
- end
- end
-
- def deploy_key
- actor if actor.is_a?(DeployKey)
- end
-
- def can_push_to_branch?(ref)
- return false unless user
-
- if project.protected_branch?(ref) && !project.developers_can_push_to_protected_branch?(ref)
- user.can?(:push_code_to_protected_branches, project)
- else
- user.can?(:push_code, project)
- end
- end
-
- def can_read_project?
- if user
- user.can?(:read_project, project)
- elsif deploy_key
- deploy_key.projects.include?(project)
- else
- false
- end
+ @user_access = UserAccess.new(user, project: project)
end
def check(cmd, changes = nil)
@@ -56,11 +21,11 @@ module Gitlab
return build_status_object(false, "No user or key was provided.")
end
- if user && !user_allowed?
+ if user && !user_access.allowed?
return build_status_object(false, "Your account has been blocked.")
end
- unless project && can_read_project?
+ unless project && (user_access.can_read_project? || deploy_key_can_read_project?)
return build_status_object(false, 'The project you were looking for could not be found.')
end
@@ -95,7 +60,7 @@ module Gitlab
end
def user_download_access_check
- unless user.can?(:download_code, project)
+ unless user_access.can_do_action?(:download_code)
return build_status_object(false, "You are not allowed to download code from this project.")
end
@@ -125,46 +90,8 @@ module Gitlab
build_status_object(true)
end
- def can_user_do_action?(action)
- @permission_cache ||= {}
- @permission_cache[action] ||= user.can?(action, project)
- end
-
def change_access_check(change)
- oldrev, newrev, ref = change.split(' ')
-
- action =
- if project.protected_branch?(branch_name(ref))
- protected_branch_action(oldrev, newrev, branch_name(ref))
- elsif (tag_ref = tag_name(ref)) && protected_tag?(tag_ref)
- # Prevent any changes to existing git tag unless user has permissions
- :admin_project
- else
- :push_code
- end
-
- unless can_user_do_action?(action)
- status =
- case action
- when :force_push_code_to_protected_branches
- build_status_object(false, "You are not allowed to force push code to a protected branch on this project.")
- when :remove_protected_branches
- build_status_object(false, "You are not allowed to deleted protected branches from this project.")
- when :push_code_to_protected_branches
- build_status_object(false, "You are not allowed to push code to protected branches on this project.")
- when :admin_project
- build_status_object(false, "You are not allowed to change existing tags on this project.")
- else # :push_code
- build_status_object(false, "You are not allowed to push code to this project.")
- end
- return status
- end
-
- build_status_object(true)
- end
-
- def forced_push?(oldrev, newrev)
- Gitlab::ForcePushCheck.force_push?(project, oldrev, newrev)
+ Checks::ChangeAccess.new(change, user_access: user_access, project: project).exec
end
def protocol_allowed?
@@ -173,48 +100,39 @@ module Gitlab
private
- def protected_branch_action(oldrev, newrev, branch_name)
- # we dont allow force push to protected branch
- if forced_push?(oldrev, newrev)
- :force_push_code_to_protected_branches
- elsif Gitlab::Git.blank_ref?(newrev)
- # and we dont allow remove of protected branch
- :remove_protected_branches
- elsif project.developers_can_push_to_protected_branch?(branch_name)
- :push_code
- else
- :push_code_to_protected_branches
- end
+ def matching_merge_request?(newrev, branch_name)
+ Checks::MatchingMergeRequest.new(newrev, branch_name, project).match?
end
- def protected_tag?(tag_name)
- project.repository.tag_exists?(tag_name)
- end
-
- def user_allowed?
- Gitlab::UserAccess.allowed?(user)
- end
-
- def branch_name(ref)
- ref = ref.to_s
- if Gitlab::Git.branch_ref?(ref)
- Gitlab::Git.ref_name(ref)
- else
- nil
- end
+ def deploy_key
+ actor if actor.is_a?(DeployKey)
end
- def tag_name(ref)
- ref = ref.to_s
- if Gitlab::Git.tag_ref?(ref)
- Gitlab::Git.ref_name(ref)
+ def deploy_key_can_read_project?
+ if deploy_key
+ return true if project.public?
+ deploy_key.projects.include?(project)
else
- nil
+ false
end
end
protected
+ def user
+ return @user if defined?(@user)
+
+ @user =
+ case actor
+ when User
+ actor
+ when DeployKey
+ nil
+ when Key
+ actor.user
+ end
+ end
+
def build_status_object(status, message = '')
GitAccessStatus.new(status, message)
end
diff --git a/lib/gitlab/git_access_status.rb b/lib/gitlab/git_access_status.rb
index 5a806ff6e0d..09bb01be694 100644
--- a/lib/gitlab/git_access_status.rb
+++ b/lib/gitlab/git_access_status.rb
@@ -8,8 +8,8 @@ module Gitlab
@message = message
end
- def to_json
- { status: @status, message: @message }.to_json
+ def to_json(opts = nil)
+ { status: @status, message: @message }.to_json(opts)
end
end
end
diff --git a/lib/gitlab/git_access_wiki.rb b/lib/gitlab/git_access_wiki.rb
index 8672cbc0ec4..f71d3575909 100644
--- a/lib/gitlab/git_access_wiki.rb
+++ b/lib/gitlab/git_access_wiki.rb
@@ -1,7 +1,7 @@
module Gitlab
class GitAccessWiki < GitAccess
def change_access_check(change)
- if user.can?(:create_wiki, project)
+ if user_access.can_do_action?(:create_wiki)
build_status_object(true)
else
build_status_object(false, "You are not allowed to write to this project's wiki.")
diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb
index d4f12cb1df9..c5a11148d33 100644
--- a/lib/gitlab/gon_helper.rb
+++ b/lib/gitlab/gon_helper.rb
@@ -5,7 +5,7 @@ module Gitlab
gon.default_avatar_url = URI::join(Gitlab.config.gitlab.url, ActionController::Base.helpers.image_path('no_avatar.png')).to_s
gon.max_file_size = current_application_settings.max_attachment_size
gon.relative_url_root = Gitlab.config.gitlab.relative_url_root
- gon.shortcuts_path = help_shortcuts_path
+ gon.shortcuts_path = help_page_path('shortcuts')
gon.user_color_scheme = Gitlab::ColorSchemes.for_user(current_user).css_class
gon.award_menu_url = emojis_path
diff --git a/lib/gitlab/import_export.rb b/lib/gitlab/import_export.rb
index bab2ea73c4f..d6d14bd98a0 100644
--- a/lib/gitlab/import_export.rb
+++ b/lib/gitlab/import_export.rb
@@ -2,7 +2,7 @@ module Gitlab
module ImportExport
extend self
- VERSION = '0.1.1'
+ VERSION = '0.1.2'
FILENAME_LIMIT = 50
def export_path(relative_path:)
diff --git a/lib/gitlab/import_export/avatar_restorer.rb b/lib/gitlab/import_export/avatar_restorer.rb
new file mode 100644
index 00000000000..352539eb594
--- /dev/null
+++ b/lib/gitlab/import_export/avatar_restorer.rb
@@ -0,0 +1,31 @@
+module Gitlab
+ module ImportExport
+ class AvatarRestorer
+
+ def initialize(project:, shared:)
+ @project = project
+ @shared = shared
+ end
+
+ def restore
+ return true unless avatar_export_file
+
+ @project.avatar = File.open(avatar_export_file)
+ @project.save!
+ rescue => e
+ @shared.error(e)
+ false
+ end
+
+ private
+
+ def avatar_export_file
+ @avatar_export_file ||= Dir["#{avatar_export_path}/*"].first
+ end
+
+ def avatar_export_path
+ File.join(@shared.export_path, 'avatar')
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/import_export/avatar_saver.rb b/lib/gitlab/import_export/avatar_saver.rb
new file mode 100644
index 00000000000..998c21e2586
--- /dev/null
+++ b/lib/gitlab/import_export/avatar_saver.rb
@@ -0,0 +1,31 @@
+module Gitlab
+ module ImportExport
+ class AvatarSaver
+ include Gitlab::ImportExport::CommandLineUtil
+
+ def initialize(project:, shared:)
+ @project = project
+ @shared = shared
+ end
+
+ def save
+ return true unless @project.avatar.exists?
+
+ copy_files(avatar_path, avatar_export_path)
+ rescue => e
+ @shared.error(e)
+ false
+ end
+
+ private
+
+ def avatar_export_path
+ File.join(@shared.export_path, 'avatar', @project.avatar_identifier)
+ end
+
+ def avatar_path
+ @project.avatar.path
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/import_export/command_line_util.rb b/lib/gitlab/import_export/command_line_util.rb
index 2249904145c..5dd0e34c18e 100644
--- a/lib/gitlab/import_export/command_line_util.rb
+++ b/lib/gitlab/import_export/command_line_util.rb
@@ -36,6 +36,15 @@ module Gitlab
def git_bin_path
Gitlab.config.git.bin_path
end
+
+ def copy_files(source, destination)
+ # if we are copying files, create the destination folder
+ destination_folder = File.file?(source) ? File.dirname(destination) : destination
+
+ FileUtils.mkdir_p(destination_folder)
+ FileUtils.copy_entry(source, destination)
+ true
+ end
end
end
end
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml
index 05f4ad527ac..15afe8174a4 100644
--- a/lib/gitlab/import_export/import_export.yml
+++ b/lib/gitlab/import_export/import_export.yml
@@ -53,7 +53,11 @@ included_attributes:
excluded_attributes:
snippets:
- :expired_at
+ merge_request_diff:
+ - :st_diffs
methods:
statuses:
- - :type \ No newline at end of file
+ - :type
+ merge_request_diff:
+ - :utf8_st_diffs \ No newline at end of file
diff --git a/lib/gitlab/import_export/importer.rb b/lib/gitlab/import_export/importer.rb
index 6b69a653f12..e9ee47fc090 100644
--- a/lib/gitlab/import_export/importer.rb
+++ b/lib/gitlab/import_export/importer.rb
@@ -9,7 +9,7 @@ module Gitlab
end
def execute
- if import_file && check_version! && [project_tree, repo_restorer, wiki_restorer, uploads_restorer].all?(&:restore)
+ if import_file && check_version! && [project_tree, avatar_restorer, repo_restorer, wiki_restorer, uploads_restorer].all?(&:restore)
project_tree.restored_project
else
raise Projects::ImportService::Error.new(@shared.errors.join(', '))
@@ -35,6 +35,10 @@ module Gitlab
project: @project)
end
+ def avatar_restorer
+ Gitlab::ImportExport::AvatarRestorer.new(project: project_tree.restored_project, shared: @shared)
+ end
+
def repo_restorer
Gitlab::ImportExport::RepoRestorer.new(path_to_bundle: repo_path,
shared: @shared,
diff --git a/lib/gitlab/import_export/relation_factory.rb b/lib/gitlab/import_export/relation_factory.rb
index 6ba25a31641..e41c7e6bf4f 100644
--- a/lib/gitlab/import_export/relation_factory.rb
+++ b/lib/gitlab/import_export/relation_factory.rb
@@ -33,6 +33,7 @@ module Gitlab
update_project_references
reset_ci_tokens if @relation_name == 'Ci::Trigger'
@relation_hash['data'].deep_symbolize_keys! if @relation_name == :events && @relation_hash['data']
+ set_st_diffs if @relation_name == :merge_request_diff
generate_imported_object
end
@@ -129,6 +130,10 @@ module Gitlab
def parsed_relation_hash
@relation_hash.reject { |k, _v| !relation_class.attribute_method?(k) }
end
+
+ def set_st_diffs
+ @relation_hash['st_diffs'] = @relation_hash.delete('utf8_st_diffs')
+ end
end
end
end
diff --git a/lib/gitlab/import_export/uploads_saver.rb b/lib/gitlab/import_export/uploads_saver.rb
index d6f4fa57510..62a2553675c 100644
--- a/lib/gitlab/import_export/uploads_saver.rb
+++ b/lib/gitlab/import_export/uploads_saver.rb
@@ -1,6 +1,8 @@
module Gitlab
module ImportExport
class UploadsSaver
+ include Gitlab::ImportExport::CommandLineUtil
+
def initialize(project:, shared:)
@project = project
@shared = shared
@@ -17,12 +19,6 @@ module Gitlab
private
- def copy_files(source, destination)
- FileUtils.mkdir_p(destination)
- FileUtils.copy_entry(source, destination)
- true
- end
-
def uploads_export_path
File.join(@shared.export_path, 'uploads')
end
diff --git a/lib/gitlab/user_access.rb b/lib/gitlab/user_access.rb
index d1b42c1f9b9..c0f85e9b3a8 100644
--- a/lib/gitlab/user_access.rb
+++ b/lib/gitlab/user_access.rb
@@ -1,7 +1,23 @@
module Gitlab
- module UserAccess
- def self.allowed?(user)
- return false if user.blocked?
+ class UserAccess
+ attr_reader :user, :project
+
+ def initialize(user, project: nil)
+ @user = user
+ @project = project
+ end
+
+ def can_do_action?(action)
+ @permission_cache ||= {}
+ @permission_cache[action] ||= user.can?(action, project)
+ end
+
+ def cannot_do_action?(action)
+ !can_do_action?(action)
+ end
+
+ def allowed?
+ return false if user.blank? || user.blocked?
if user.requires_ldap_check? && user.try_obtain_ldap_lease
return false unless Gitlab::LDAP::Access.allowed?(user)
@@ -9,5 +25,31 @@ module Gitlab
true
end
+
+ def can_push_to_branch?(ref)
+ return false unless user
+
+ if project.protected_branch?(ref) && !project.developers_can_push_to_protected_branch?(ref)
+ user.can?(:push_code_to_protected_branches, project)
+ else
+ user.can?(:push_code, project)
+ end
+ end
+
+ def can_merge_to_branch?(ref)
+ return false unless user
+
+ if project.protected_branch?(ref) && !project.developers_can_merge_to_protected_branch?(ref)
+ user.can?(:push_code_to_protected_branches, project)
+ else
+ user.can?(:push_code, project)
+ end
+ end
+
+ def can_read_project?
+ return false unless user
+
+ user.can?(:read_project, project)
+ end
end
end
diff --git a/lib/tasks/downtime_check.rake b/lib/tasks/downtime_check.rake
new file mode 100644
index 00000000000..30a2e9be5ce
--- /dev/null
+++ b/lib/tasks/downtime_check.rake
@@ -0,0 +1,26 @@
+desc 'Checks if migrations in a branch require downtime'
+task downtime_check: :environment do
+ # First we'll want to make sure we're comparing with the right upstream
+ # repository/branch.
+ current_branch = `git rev-parse --abbrev-ref HEAD`.strip
+
+ # Either the developer ran this task directly on the master branch, or they're
+ # making changes directly on the master branch.
+ if current_branch == 'master'
+ if defined?(Gitlab::License)
+ repo = 'gitlab-ee'
+ else
+ repo = 'gitlab-ce'
+ end
+
+ `git fetch https://gitlab.com/gitlab-org/#{repo}.git --depth 1`
+
+ compare_with = 'FETCH_HEAD'
+ # The developer is working on a different branch, in this case we can just
+ # compare with the master branch.
+ else
+ compare_with = 'master'
+ end
+
+ Rake::Task['gitlab:db:downtime_check'].invoke(compare_with)
+end
diff --git a/lib/tasks/gemojione.rake b/lib/tasks/gemojione.rake
index e930ace1041..993112aee3b 100644
--- a/lib/tasks/gemojione.rake
+++ b/lib/tasks/gemojione.rake
@@ -4,7 +4,7 @@ namespace :gemojione do
require 'digest/sha2'
require 'json'
- dir = Gemojione.index.images_path
+ dir = Gemojione.images_path
digests = []
aliases = Hash.new { |hash, key| hash[key] = [] }
aliases_path = File.join(Rails.root, 'fixtures', 'emojis', 'aliases.json')
@@ -50,9 +50,14 @@ namespace :gemojione do
SIZE = 20
RETINA = SIZE * 2
+ # Update these values to the width and height of the spritesheet when
+ # new emoji are added.
+ SPRITESHEET_WIDTH = 860
+ SPRITESHEET_HEIGHT = 840
+
Dir.mktmpdir do |tmpdir|
# Copy the Gemojione assets to the temporary folder for resizing
- FileUtils.cp_r(Gemojione.index.images_path, tmpdir)
+ FileUtils.cp_r(Gemojione.images_path, tmpdir)
Dir.chdir(tmpdir) do
Dir["**/*.png"].each do |png|
@@ -64,7 +69,7 @@ namespace :gemojione do
# Combine the resized assets into a packed sprite and re-generate the SCSS
SpriteFactory.cssurl = "image-url('$IMAGE')"
- SpriteFactory.run!(File.join(tmpdir, 'images'), {
+ SpriteFactory.run!(File.join(tmpdir, 'png'), {
output_style: style_path,
output_image: "app/assets/images/emoji.png",
selector: '.emoji-',
@@ -97,7 +102,7 @@ namespace :gemojione do
only screen and (min-resolution: 192dpi),
only screen and (min-resolution: 2dppx) {
background-image: image-url('emoji@2x.png');
- background-size: 840px 820px;
+ background-size: #{SPRITESHEET_WIDTH}px #{SPRITESHEET_HEIGHT}px;
}
}
CSS
@@ -107,7 +112,7 @@ namespace :gemojione do
# Now do it again but for Retina
Dir.mktmpdir do |tmpdir|
# Copy the Gemojione assets to the temporary folder for resizing
- FileUtils.cp_r(Gemojione.index.images_path, tmpdir)
+ FileUtils.cp_r(Gemojione.images_path, tmpdir)
Dir.chdir(tmpdir) do
Dir["**/*.png"].each do |png|
@@ -116,7 +121,7 @@ namespace :gemojione do
end
# Combine the resized assets into a packed sprite and re-generate the SCSS
- SpriteFactory.run!(File.join(tmpdir, 'images'), {
+ SpriteFactory.run!(File.join(tmpdir), {
output_image: "app/assets/images/emoji@2x.png",
style: false,
nocomments: true,
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
index e9a4e37ec48..60f4636e737 100644
--- a/lib/tasks/gitlab/check.rake
+++ b/lib/tasks/gitlab/check.rake
@@ -784,7 +784,7 @@ namespace :gitlab do
servers.each do |server|
puts "Server: #{server}"
Gitlab::LDAP::Adapter.open(server) do |adapter|
- users = adapter.users(adapter.config.uid, '*', 100)
+ users = adapter.users(adapter.config.uid, '*', limit)
users.each do |user|
puts "\tDN: #{user.dn}\t #{adapter.config.uid}: #{user.uid}"
end
diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake
index 7230b9485be..0ec19e1a625 100644
--- a/lib/tasks/gitlab/db.rake
+++ b/lib/tasks/gitlab/db.rake
@@ -46,5 +46,20 @@ namespace :gitlab do
Rake::Task['db:seed_fu'].invoke
end
end
+
+ desc 'Checks if migrations require downtime or not'
+ task :downtime_check, [:ref] => :environment do |_, args|
+ abort 'You must specify a Git reference to compare with' unless args[:ref]
+
+ require 'shellwords'
+
+ ref = Shellwords.escape(args[:ref])
+
+ migrations = `git diff #{ref}.. --name-only -- db/migrate`.lines.
+ map { |file| Rails.root.join(file.strip).to_s }.
+ select { |file| File.file?(file) }
+
+ Gitlab::DowntimeCheck.new.check_and_print(migrations)
+ end
end
end
diff --git a/lib/tasks/gitlab/track_deployment.rake b/lib/tasks/gitlab/track_deployment.rake
new file mode 100644
index 00000000000..84aa2e8507a
--- /dev/null
+++ b/lib/tasks/gitlab/track_deployment.rake
@@ -0,0 +1,9 @@
+namespace :gitlab do
+ desc 'GitLab | Tracks a deployment in GitLab Performance Monitoring'
+ task track_deployment: :environment do
+ metric = Gitlab::Metrics::Metric.
+ new('deployments', version: Gitlab::VERSION)
+
+ Gitlab::Metrics.submit_metrics([metric.to_hash])
+ end
+end
diff --git a/spec/controllers/help_controller_spec.rb b/spec/controllers/help_controller_spec.rb
index 267d511c2db..347bef1e129 100644
--- a/spec/controllers/help_controller_spec.rb
+++ b/spec/controllers/help_controller_spec.rb
@@ -63,4 +63,13 @@ describe HelpController do
end
end
end
+
+ describe 'GET #ui' do
+ context 'for UI Development Kit' do
+ it 'renders found' do
+ get :ui
+ expect(response).to have_http_status(200)
+ end
+ end
+ end
end
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index 1b1b1bdf52d..3edce4d339c 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -43,6 +43,26 @@ describe ProjectsController do
end
end
+ context "project with empty repo" do
+ let(:empty_project) { create(:project_empty_repo, :public) }
+
+ before { sign_in(user) }
+
+ User.project_views.keys.each do |project_view|
+ context "with #{project_view} view set" do
+ before do
+ user.update_attributes(project_view: project_view)
+
+ get :show, namespace_id: empty_project.namespace.path, id: empty_project.path
+ end
+
+ it "renders the empty project view" do
+ expect(response).to render_template('empty')
+ end
+ end
+ end
+ end
+
context "rendering default project view" do
render_views
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index 5fb671df570..5e19e403c6b 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -3,6 +3,8 @@ include ActionDispatch::TestProcess
FactoryGirl.define do
factory :ci_build, class: Ci::Build do
name 'test'
+ stage 'test'
+ stage_idx 0
ref 'master'
tag false
created_at 'Di 29. Okt 09:50:00 CET 2013'
@@ -43,6 +45,11 @@ FactoryGirl.define do
status 'pending'
end
+ trait :manual do
+ status 'skipped'
+ self.when 'manual'
+ end
+
trait :allowed_to_fail do
allow_failure true
end
diff --git a/spec/features/environments_spec.rb b/spec/features/environments_spec.rb
index 7fb28f4174b..9c018be14b7 100644
--- a/spec/features/environments_spec.rb
+++ b/spec/features/environments_spec.rb
@@ -13,6 +13,7 @@ feature 'Environments', feature: true do
describe 'when showing environments' do
given!(:environment) { }
given!(:deployment) { }
+ given!(:manual) { }
before do
visit namespace_project_environments_path(project.namespace, project)
@@ -43,6 +44,24 @@ feature 'Environments', feature: true do
scenario 'does show deployment SHA' do
expect(page).to have_link(deployment.short_sha)
end
+
+ context 'with build and manual actions' do
+ given(:pipeline) { create(:ci_pipeline, project: project) }
+ given(:build) { create(:ci_build, pipeline: pipeline) }
+ given(:deployment) { create(:deployment, environment: environment, deployable: build) }
+ given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') }
+
+ scenario 'does show a play button' do
+ expect(page).to have_link(manual.name.humanize)
+ end
+
+ scenario 'does allow to play manual action' do
+ expect(manual).to be_skipped
+ expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count }
+ expect(page).to have_content(manual.name)
+ expect(manual.reload).to be_pending
+ end
+ end
end
end
@@ -54,6 +73,7 @@ feature 'Environments', feature: true do
describe 'when showing the environment' do
given(:environment) { create(:environment, project: project) }
given!(:deployment) { }
+ given!(:manual) { }
before do
visit namespace_project_environment_path(project.namespace, project, environment)
@@ -77,7 +97,8 @@ feature 'Environments', feature: true do
end
context 'with build' do
- given(:build) { create(:ci_build, project: project) }
+ given(:pipeline) { create(:ci_pipeline, project: project) }
+ given(:build) { create(:ci_build, pipeline: pipeline) }
given(:deployment) { create(:deployment, environment: environment, deployable: build) }
scenario 'does show build name' do
@@ -87,6 +108,21 @@ feature 'Environments', feature: true do
scenario 'does show retry button' do
expect(page).to have_link('Retry')
end
+
+ context 'with manual action' do
+ given(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy to production') }
+
+ scenario 'does show a play button' do
+ expect(page).to have_link(manual.name.humanize)
+ end
+
+ scenario 'does allow to play manual action' do
+ expect(manual).to be_skipped
+ expect{ click_link(manual.name.humanize) }.not_to change { Ci::Pipeline.count }
+ expect(page).to have_content(manual.name)
+ expect(manual.reload).to be_pending
+ end
+ end
end
end
end
diff --git a/spec/features/expand_collapse_diffs_spec.rb b/spec/features/expand_collapse_diffs_spec.rb
index 78bc888f2a6..688f68d3cff 100644
--- a/spec/features/expand_collapse_diffs_spec.rb
+++ b/spec/features/expand_collapse_diffs_spec.rb
@@ -3,10 +3,11 @@ require 'spec_helper'
feature 'Expand and collapse diffs', js: true, feature: true do
include WaitForAjax
+ let(:branch) { 'expand-collapse-diffs' }
+
before do
login_as :admin
project = create(:project)
- branch = 'expand-collapse-diffs'
# Ensure that undiffable.md is in .gitattributes
project.repository.copy_gitattributes(branch)
@@ -167,6 +168,46 @@ feature 'Expand and collapse diffs', js: true, feature: true do
end
end
+ context 'visiting a commit without collapsed diffs' do
+ let(:branch) { 'feature' }
+
+ it 'does not show Expand all button' do
+ expect(page).not_to have_link('Expand all')
+ end
+ end
+
+ context 'visiting a commit with more than safe files' do
+ let(:branch) { 'expand-collapse-files' }
+
+ # safe-files -> 100 | safe-lines -> 5000 | commit-files -> 105
+ it 'does collapsing from the safe number of files to the end on small files' do
+ expect(page).to have_link('Expand all')
+
+ expect(page).to have_selector('.diff-content', count: 105)
+ expect(page).to have_selector('.diff-collapsed', count: 5)
+
+ %w(file-95.txt file-96.txt file-97.txt file-98.txt file-99.txt).each do |filename|
+ expect(find("[data-blob-diff-path*='#{filename}']")).to have_selector('.diff-collapsed')
+ end
+ end
+ end
+
+ context 'visiting a commit with more than safe lines' do
+ let(:branch) { 'expand-collapse-lines' }
+
+ # safe-files -> 100 | safe-lines -> 5000 | commit_files -> 8 (each 1250 lines)
+ it 'does collapsing from the safe number of lines to the end' do
+ expect(page).to have_link('Expand all')
+
+ expect(page).to have_selector('.diff-content', count: 6)
+ expect(page).to have_selector('.diff-collapsed', count: 2)
+
+ %w(file-4.txt file-5.txt).each do |filename|
+ expect(find("[data-blob-diff-path*='#{filename}']")).to have_selector('.diff-collapsed')
+ end
+ end
+ end
+
context 'expanding all diffs' do
before do
click_link('Expand all')
diff --git a/spec/features/groups/members/user_requests_access_spec.rb b/spec/features/groups/members/user_requests_access_spec.rb
index d1a6a98ab72..b3baa2ab57c 100644
--- a/spec/features/groups/members/user_requests_access_spec.rb
+++ b/spec/features/groups/members/user_requests_access_spec.rb
@@ -12,6 +12,13 @@ feature 'Groups > Members > User requests access', feature: true do
visit group_path(group)
end
+ scenario 'request access feature is disabled' do
+ group.update_attributes(request_access_enabled: false)
+ visit group_path(group)
+
+ expect(page).not_to have_content 'Request Access'
+ end
+
scenario 'user can request access to a group' do
perform_enqueued_jobs { click_link 'Request Access' }
diff --git a/spec/features/pipelines_settings_spec.rb b/spec/features/pipelines_settings_spec.rb
new file mode 100644
index 00000000000..dcc364a3d01
--- /dev/null
+++ b/spec/features/pipelines_settings_spec.rb
@@ -0,0 +1,35 @@
+require 'spec_helper'
+
+feature "Pipelines settings", feature: true do
+ include GitlabRoutingHelper
+
+ let(:project) { create(:empty_project) }
+ let(:user) { create(:user) }
+ let(:role) { :developer }
+
+ background do
+ login_as(user)
+ project.team << [user, role]
+ visit namespace_project_pipelines_settings_path(project.namespace, project)
+ end
+
+ context 'for developer' do
+ given(:role) { :developer }
+
+ scenario 'to be disallowed to view' do
+ expect(page.status_code).to eq(404)
+ end
+ end
+
+ context 'for master' do
+ given(:role) { :master }
+
+ scenario 'be allowed to change' do
+ fill_in('Test coverage parsing', with: 'coverage_regex')
+ click_on 'Save changes'
+
+ expect(page.status_code).to eq(200)
+ expect(page).to have_field('Test coverage parsing', with: 'coverage_regex')
+ end
+ end
+end
diff --git a/spec/features/pipelines_spec.rb b/spec/features/pipelines_spec.rb
index e7ee0aaea3c..7f861db1969 100644
--- a/spec/features/pipelines_spec.rb
+++ b/spec/features/pipelines_spec.rb
@@ -62,6 +62,20 @@ describe "Pipelines" do
end
end
+ context 'with manual actions' do
+ let!(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'manual build', stage: 'test', commands: 'test') }
+
+ before { visit namespace_project_pipelines_path(project.namespace, project) }
+
+ it { expect(page).to have_link('Manual build') }
+
+ context 'when playing' do
+ before { click_link('Manual build') }
+
+ it { expect(manual.reload).to be_pending }
+ end
+ end
+
context 'for generic statuses' do
context 'when running' do
let!(:running) { create(:generic_commit_status, status: 'running', pipeline: pipeline, stage: 'test') }
@@ -117,6 +131,7 @@ describe "Pipelines" do
@success = create(:ci_build, :success, pipeline: pipeline, stage: 'build', name: 'build')
@failed = create(:ci_build, :failed, pipeline: pipeline, stage: 'test', name: 'test', commands: 'test')
@running = create(:ci_build, :running, pipeline: pipeline, stage: 'deploy', name: 'deploy')
+ @manual = create(:ci_build, :manual, pipeline: pipeline, stage: 'deploy', name: 'manual build')
@external = create(:generic_commit_status, status: 'success', pipeline: pipeline, name: 'jenkins', stage: 'external')
end
@@ -131,6 +146,7 @@ describe "Pipelines" do
expect(page).to have_content(@external.id)
expect(page).to have_content('Retry failed')
expect(page).to have_content('Cancel running')
+ expect(page).to have_link('Play')
end
context 'retrying builds' do
@@ -154,6 +170,12 @@ describe "Pipelines" do
it { expect(page).to have_selector('.ci-canceled') }
end
end
+
+ context 'playing manual build' do
+ before { click_link('Play') }
+
+ it { expect(@manual.reload).to be_pending }
+ end
end
describe 'POST /:project/pipelines' do
diff --git a/spec/features/projects/badges/list_spec.rb b/spec/features/projects/badges/list_spec.rb
index 01e90618a98..75166bca119 100644
--- a/spec/features/projects/badges/list_spec.rb
+++ b/spec/features/projects/badges/list_spec.rb
@@ -6,7 +6,7 @@ feature 'list of badges' do
project = create(:project)
project.team << [user, :master]
login_as(user)
- visit namespace_project_badges_path(project.namespace, project)
+ visit namespace_project_pipelines_settings_path(project.namespace, project)
end
scenario 'user displays list of badges' do
diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb
index f2fe3ef364d..56ede8eb5be 100644
--- a/spec/features/projects/members/user_requests_access_spec.rb
+++ b/spec/features/projects/members/user_requests_access_spec.rb
@@ -11,6 +11,13 @@ feature 'Projects > Members > User requests access', feature: true do
visit namespace_project_path(project.namespace, project)
end
+ scenario 'request access feature is disabled' do
+ project.update_attributes(request_access_enabled: false)
+ visit namespace_project_path(project.namespace, project)
+
+ expect(page).not_to have_content 'Request Access'
+ end
+
scenario 'user can request access to a project' do
perform_enqueued_jobs { click_link 'Request Access' }
diff --git a/spec/features/projects/slack_service/slack_service_spec.rb b/spec/features/projects/slack_service/slack_service_spec.rb
new file mode 100644
index 00000000000..16541f51d98
--- /dev/null
+++ b/spec/features/projects/slack_service/slack_service_spec.rb
@@ -0,0 +1,26 @@
+require 'spec_helper'
+
+feature 'Projects > Slack service > Setup events', feature: true do
+ let(:user) { create(:user) }
+ let(:service) { SlackService.new }
+ let(:project) { create(:project, slack_service: service) }
+
+ background do
+ service.fields
+ service.update_attributes(push_channel: 1, issue_channel: 2, merge_request_channel: 3, note_channel: 4, tag_push_channel: 5, build_channel: 6, wiki_page_channel: 7)
+ project.team << [user, :master]
+ login_as(user)
+ end
+
+ scenario 'user can filter events by channel' do
+ visit edit_namespace_project_service_path(project.namespace, project, service)
+
+ expect(page.find_field("service_push_channel").value).to have_content '1'
+ expect(page.find_field("service_issue_channel").value).to have_content '2'
+ expect(page.find_field("service_merge_request_channel").value).to have_content '3'
+ expect(page.find_field("service_note_channel").value).to have_content '4'
+ expect(page.find_field("service_tag_push_channel").value).to have_content '5'
+ expect(page.find_field("service_build_channel").value).to have_content '6'
+ expect(page.find_field("service_wiki_page_channel").value).to have_content '7'
+ end
+end
diff --git a/spec/helpers/ci_status_helper_spec.rb b/spec/helpers/ci_status_helper_spec.rb
index 45199d0f09d..637b02d9388 100644
--- a/spec/helpers/ci_status_helper_spec.rb
+++ b/spec/helpers/ci_status_helper_spec.rb
@@ -7,7 +7,13 @@ describe CiStatusHelper do
let(:failed_commit) { double("Ci::Pipeline", status: 'failed') }
describe 'ci_icon_for_status' do
- it { expect(helper.ci_icon_for_status(success_commit.status)).to include('fa-check') }
- it { expect(helper.ci_icon_for_status(failed_commit.status)).to include('fa-close') }
+ it 'renders to correct svg on success' do
+ expect(helper).to receive(:render).with('shared/icons/icon_status_success.svg', anything)
+ helper.ci_icon_for_status(success_commit.status)
+ end
+ it 'renders the correct svg on failure' do
+ expect(helper).to receive(:render).with('shared/icons/icon_status_failed.svg', anything)
+ helper.ci_icon_for_status(failed_commit.status)
+ end
end
end
diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb
index 4b134a48410..c2fd2c8a533 100644
--- a/spec/helpers/diff_helper_spec.rb
+++ b/spec/helpers/diff_helper_spec.rb
@@ -30,12 +30,31 @@ describe DiffHelper do
expect(helper.diff_view).to eq 'inline'
end
end
-
+
describe 'diff_options' do
- it 'should return hard limit for a diff' do
+ it 'should return hard limit for a diff if force diff is true' do
allow(controller).to receive(:params) { { force_show_diff: true } }
expect(diff_options).to include(Commit.max_diff_options)
end
+
+ it 'should return hard limit for a diff if expand_all_diffs is true' do
+ allow(controller).to receive(:params) { { expand_all_diffs: true } }
+ expect(diff_options).to include(Commit.max_diff_options)
+ end
+
+ it 'should return no collapse false' do
+ expect(diff_options).to include(no_collapse: false)
+ end
+
+ it 'should return no collapse true if expand_all_diffs' do
+ allow(controller).to receive(:params) { { expand_all_diffs: true } }
+ expect(diff_options).to include(no_collapse: true)
+ end
+
+ it 'should return no collapse true if action name diff_for_path' do
+ allow(controller).to receive(:action_name) { 'diff_for_path' }
+ expect(diff_options).to include(no_collapse: true)
+ end
end
describe 'unfold_bottom_class' do
diff --git a/spec/helpers/time_helper_spec.rb b/spec/helpers/time_helper_spec.rb
index 3f62527c5bb..413ead944b9 100644
--- a/spec/helpers/time_helper_spec.rb
+++ b/spec/helpers/time_helper_spec.rb
@@ -1,7 +1,7 @@
require 'spec_helper'
describe TimeHelper do
- describe "#duration_in_words" do
+ describe "#time_interval_in_words" do
it "returns minutes and seconds" do
intervals_in_words = {
100 => "1 minute 40 seconds",
@@ -11,26 +11,23 @@ describe TimeHelper do
}
intervals_in_words.each do |interval, expectation|
- expect(duration_in_words(Time.now + interval, Time.now)).to eq(expectation)
+ expect(time_interval_in_words(interval)).to eq(expectation)
end
end
-
- it "calculates interval from now if there is no finished_at" do
- expect(duration_in_words(nil, Time.now - 5)).to eq("5 seconds")
- end
end
- describe "#time_interval_in_words" do
+ describe "#duration_in_numbers" do
it "returns minutes and seconds" do
- intervals_in_words = {
- 100 => "1 minute 40 seconds",
- 121 => "2 minutes 1 second",
- 3721 => "62 minutes 1 second",
- 0 => "0 seconds"
+ duration_in_numbers = {
+ [100, 0] => "01:40",
+ [121, 0] => "02:01",
+ [3721, 0] => "01:02:01",
+ [0, 0] => "00:00",
+ [nil, Time.now.to_i - 42] => "00:42"
}
- intervals_in_words.each do |interval, expectation|
- expect(time_interval_in_words(interval)).to eq(expectation)
+ duration_in_numbers.each do |interval, expectation|
+ expect(duration_in_numbers(*interval)).to eq(expectation)
end
end
end
diff --git a/spec/lib/banzai/filter/autolink_filter_spec.rb b/spec/lib/banzai/filter/autolink_filter_spec.rb
index 84c2ddf444e..dca7f997570 100644
--- a/spec/lib/banzai/filter/autolink_filter_spec.rb
+++ b/spec/lib/banzai/filter/autolink_filter_spec.rb
@@ -15,6 +15,16 @@ describe Banzai::Filter::AutolinkFilter, lib: true do
expect(filter(act).to_html).to eq exp
end
+ context 'when the input contains no links' do
+ it 'does not parse_html back the rinku returned value' do
+ act = HTML::Pipeline.parse('<p>This text contains no links to autolink</p>')
+
+ expect_any_instance_of(described_class).not_to receive(:parse_html)
+
+ filter(act).to_html
+ end
+ end
+
context 'Rinku schemes' do
it 'autolinks http' do
doc = filter("See #{link}")
@@ -58,6 +68,16 @@ describe Banzai::Filter::AutolinkFilter, lib: true do
expect(filter(act).to_html).to eq exp
end
end
+
+ context 'when the input contains link' do
+ it 'does parse_html back the rinku returned value' do
+ act = HTML::Pipeline.parse("<p>See #{link}</p>")
+
+ expect_any_instance_of(described_class).to receive(:parse_html).at_least(:once).and_call_original
+
+ filter(act).to_html
+ end
+ end
end
context 'other schemes' do
diff --git a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
index ad6587b4c25..d20fd4ab7dd 100644
--- a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
+++ b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
@@ -1141,7 +1141,7 @@ EOT
config = YAML.dump({ rspec: { script: "test", when: 1 } })
expect do
GitlabCiYamlProcessor.new(config, path)
- end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: when parameter should be on_success, on_failure or always")
+ end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: when parameter should be on_success, on_failure, always or manual")
end
it "returns errors if job artifacts:name is not an a string" do
diff --git a/spec/lib/gitlab/badge/build_spec.rb b/spec/lib/gitlab/badge/build_spec.rb
index 2034445a197..f3b522a02f5 100644
--- a/spec/lib/gitlab/badge/build_spec.rb
+++ b/spec/lib/gitlab/badge/build_spec.rb
@@ -113,7 +113,7 @@ describe Gitlab::Badge::Build do
sha: sha,
ref: branch)
- create(:ci_build, pipeline: pipeline)
+ create(:ci_build, pipeline: pipeline, stage: 'notify')
end
def status_node(data, status)
diff --git a/spec/lib/gitlab/diff/file_spec.rb b/spec/lib/gitlab/diff/file_spec.rb
index 0460dcf4658..e883a6eb9c2 100644
--- a/spec/lib/gitlab/diff/file_spec.rb
+++ b/spec/lib/gitlab/diff/file_spec.rb
@@ -32,4 +32,18 @@ describe Gitlab::Diff::File, lib: true do
expect(diff_file.too_large?).to eq(false)
end
end
+
+ describe '#collapsed?' do
+ it 'returns true for a file that is quite big' do
+ expect(diff).to receive(:collapsed?).and_return(true)
+
+ expect(diff_file.collapsed?).to eq(true)
+ end
+
+ it 'returns false for a file that is small enough' do
+ expect(diff).to receive(:collapsed?).and_return(false)
+
+ expect(diff_file.collapsed?).to eq(false)
+ end
+ end
end
diff --git a/spec/lib/gitlab/diff/position_spec.rb b/spec/lib/gitlab/diff/position_spec.rb
index cf28628cb96..10537bea008 100644
--- a/spec/lib/gitlab/diff/position_spec.rb
+++ b/spec/lib/gitlab/diff/position_spec.rb
@@ -338,4 +338,28 @@ describe Gitlab::Diff::Position, lib: true do
end
end
end
+
+ describe "#to_json" do
+ let(:hash) do
+ {
+ old_path: "files/ruby/popen.rb",
+ new_path: "files/ruby/popen.rb",
+ old_line: nil,
+ new_line: 14,
+ base_sha: nil,
+ head_sha: nil,
+ start_sha: nil
+ }
+ end
+
+ let(:diff_position) { described_class.new(hash) }
+
+ it "returns the position as JSON" do
+ expect(JSON.parse(diff_position.to_json)).to eq(hash.stringify_keys)
+ end
+
+ it "works when nested under another hash" do
+ expect(JSON.parse(JSON.generate(pos: diff_position))).to eq('pos' => hash.stringify_keys)
+ end
+ end
end
diff --git a/spec/lib/gitlab/diff/position_tracer_spec.rb b/spec/lib/gitlab/diff/position_tracer_spec.rb
index 08312e60f4a..c268f84c759 100644
--- a/spec/lib/gitlab/diff/position_tracer_spec.rb
+++ b/spec/lib/gitlab/diff/position_tracer_spec.rb
@@ -1639,7 +1639,8 @@ describe Gitlab::Diff::PositionTracer, lib: true do
committer: committer
}
- repository.merge(current_user, second_create_file_commit.sha, branch_name, options)
+ merge_request = create(:merge_request, source_branch: second_create_file_commit.sha, target_branch: branch_name, source_project: project)
+ repository.merge(current_user, merge_request, options)
project.commit(branch_name)
end
diff --git a/spec/lib/gitlab/downtime_check/message_spec.rb b/spec/lib/gitlab/downtime_check/message_spec.rb
new file mode 100644
index 00000000000..93094cda776
--- /dev/null
+++ b/spec/lib/gitlab/downtime_check/message_spec.rb
@@ -0,0 +1,17 @@
+require 'spec_helper'
+
+describe Gitlab::DowntimeCheck::Message do
+ describe '#to_s' do
+ it 'returns an ANSI formatted String for an offline migration' do
+ message = described_class.new('foo.rb', true, 'hello')
+
+ expect(message.to_s).to eq("[\e[32moffline\e[0m]: foo.rb: hello")
+ end
+
+ it 'returns an ANSI formatted String for an online migration' do
+ message = described_class.new('foo.rb')
+
+ expect(message.to_s).to eq("[\e[31monline\e[0m]: foo.rb")
+ end
+ end
+end
diff --git a/spec/lib/gitlab/downtime_check_spec.rb b/spec/lib/gitlab/downtime_check_spec.rb
new file mode 100644
index 00000000000..42d895e548e
--- /dev/null
+++ b/spec/lib/gitlab/downtime_check_spec.rb
@@ -0,0 +1,113 @@
+require 'spec_helper'
+
+describe Gitlab::DowntimeCheck do
+ subject { described_class.new }
+ let(:path) { 'foo.rb' }
+
+ describe '#check' do
+ before do
+ expect(subject).to receive(:require).with(path)
+ end
+
+ context 'when a migration does not specify if downtime is required' do
+ it 'raises RuntimeError' do
+ expect(subject).to receive(:class_for_migration_file).
+ with(path).
+ and_return(Class.new)
+
+ expect { subject.check([path]) }.
+ to raise_error(RuntimeError, /it requires downtime/)
+ end
+ end
+
+ context 'when a migration requires downtime' do
+ context 'when no reason is specified' do
+ it 'raises RuntimeError' do
+ stub_const('TestMigration::DOWNTIME', true)
+
+ expect(subject).to receive(:class_for_migration_file).
+ with(path).
+ and_return(TestMigration)
+
+ expect { subject.check([path]) }.
+ to raise_error(RuntimeError, /no reason was given/)
+ end
+ end
+
+ context 'when a reason is specified' do
+ it 'returns an Array of messages' do
+ stub_const('TestMigration::DOWNTIME', true)
+ stub_const('TestMigration::DOWNTIME_REASON', 'foo')
+
+ expect(subject).to receive(:class_for_migration_file).
+ with(path).
+ and_return(TestMigration)
+
+ messages = subject.check([path])
+
+ expect(messages).to be_an_instance_of(Array)
+ expect(messages[0]).to be_an_instance_of(Gitlab::DowntimeCheck::Message)
+
+ message = messages[0]
+
+ expect(message.path).to eq(path)
+ expect(message.offline).to eq(true)
+ expect(message.reason).to eq('foo')
+ end
+ end
+ end
+ end
+
+ describe '#check_and_print' do
+ it 'checks the migrations and prints the results to STDOUT' do
+ stub_const('TestMigration::DOWNTIME', true)
+ stub_const('TestMigration::DOWNTIME_REASON', 'foo')
+
+ expect(subject).to receive(:require).with(path)
+
+ expect(subject).to receive(:class_for_migration_file).
+ with(path).
+ and_return(TestMigration)
+
+ expect(subject).to receive(:puts).with(an_instance_of(String))
+
+ subject.check_and_print([path])
+ end
+ end
+
+ describe '#class_for_migration_file' do
+ it 'returns the class for a migration file path' do
+ expect(subject.class_for_migration_file('123_string.rb')).to eq(String)
+ end
+ end
+
+ describe '#online?' do
+ it 'returns true when a migration can be performed online' do
+ stub_const('TestMigration::DOWNTIME', false)
+
+ expect(subject.online?(TestMigration)).to eq(true)
+ end
+
+ it 'returns false when a migration can not be performed online' do
+ stub_const('TestMigration::DOWNTIME', true)
+
+ expect(subject.online?(TestMigration)).to eq(false)
+ end
+ end
+
+ describe '#downtime_reason' do
+ context 'when a reason is defined' do
+ it 'returns the downtime reason' do
+ stub_const('TestMigration::DOWNTIME_REASON', 'hello')
+
+ expect(subject.downtime_reason(TestMigration)).to eq('hello')
+ end
+ end
+
+ context 'when a reason is not defined' do
+ it 'returns nil' do
+ expect(subject.downtime_reason(Class.new)).to be_nil
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb
index c79ba11f782..ae064a878b0 100644
--- a/spec/lib/gitlab/git_access_spec.rb
+++ b/spec/lib/gitlab/git_access_spec.rb
@@ -6,67 +6,6 @@ describe Gitlab::GitAccess, lib: true do
let(:user) { create(:user) }
let(:actor) { user }
- describe 'can_push_to_branch?' do
- describe 'push to none protected branch' do
- it "returns true if user is a master" do
- project.team << [user, :master]
- expect(access.can_push_to_branch?("random_branch")).to be_truthy
- end
-
- it "returns true if user is a developer" do
- project.team << [user, :developer]
- expect(access.can_push_to_branch?("random_branch")).to be_truthy
- end
-
- it "returns false if user is a reporter" do
- project.team << [user, :reporter]
- expect(access.can_push_to_branch?("random_branch")).to be_falsey
- end
- end
-
- describe 'push to protected branch' do
- before do
- @branch = create :protected_branch, project: project
- end
-
- it "returns true if user is a master" do
- project.team << [user, :master]
- expect(access.can_push_to_branch?(@branch.name)).to be_truthy
- end
-
- it "returns false if user is a developer" do
- project.team << [user, :developer]
- expect(access.can_push_to_branch?(@branch.name)).to be_falsey
- end
-
- it "returns false if user is a reporter" do
- project.team << [user, :reporter]
- expect(access.can_push_to_branch?(@branch.name)).to be_falsey
- end
- end
-
- describe 'push to protected branch if allowed for developers' do
- before do
- @branch = create :protected_branch, project: project, developers_can_push: true
- end
-
- it "returns true if user is a master" do
- project.team << [user, :master]
- expect(access.can_push_to_branch?(@branch.name)).to be_truthy
- end
-
- it "returns true if user is a developer" do
- project.team << [user, :developer]
- expect(access.can_push_to_branch?(@branch.name)).to be_truthy
- end
-
- it "returns false if user is a reporter" do
- project.team << [user, :reporter]
- expect(access.can_push_to_branch?(@branch.name)).to be_falsey
- end
- end
- end
-
describe '#check with single protocols allowed' do
def disable_protocol(protocol)
settings = ::ApplicationSetting.create_from_defaults
@@ -105,12 +44,12 @@ describe Gitlab::GitAccess, lib: true do
end
describe 'download_access_check' do
+ subject { access.check('git-upload-pack') }
+
describe 'master permissions' do
before { project.team << [user, :master] }
context 'pull code' do
- subject { access.download_access_check }
-
it { expect(subject.allowed?).to be_truthy }
end
end
@@ -119,8 +58,6 @@ describe Gitlab::GitAccess, lib: true do
before { project.team << [user, :guest] }
context 'pull code' do
- subject { access.download_access_check }
-
it { expect(subject.allowed?).to be_falsey }
end
end
@@ -132,16 +69,12 @@ describe Gitlab::GitAccess, lib: true do
end
context 'pull code' do
- subject { access.download_access_check }
-
it { expect(subject.allowed?).to be_falsey }
end
end
describe 'without acccess to project' do
context 'pull code' do
- subject { access.download_access_check }
-
it { expect(subject.allowed?).to be_falsey }
end
end
@@ -151,110 +84,208 @@ describe Gitlab::GitAccess, lib: true do
let(:actor) { key }
context 'pull code' do
- before { key.projects << project }
- subject { access.download_access_check }
+ context 'when project is authorized' do
+ before { key.projects << project }
- it { expect(subject.allowed?).to be_truthy }
+ it { expect(subject).to be_allowed }
+ end
+
+ context 'when unauthorized' do
+ context 'from public project' do
+ let(:project) { create(:project, :public) }
+
+ it { expect(subject).to be_allowed }
+ end
+
+ context 'from internal project' do
+ let(:project) { create(:project, :internal) }
+
+ it { expect(subject).not_to be_allowed }
+ end
+
+ context 'from private project' do
+ let(:project) { create(:project, :internal) }
+
+ it { expect(subject).not_to be_allowed }
+ end
+ end
end
end
end
describe 'push_access_check' do
- def protect_feature_branch
- create(:protected_branch, name: 'feature', project: project)
- end
+ before { merge_into_protected_branch }
+ let(:unprotected_branch) { FFaker::Internet.user_name }
- def changes
- {
- push_new_branch: "#{Gitlab::Git::BLANK_SHA} 570e7b2ab refs/heads/wow",
+ let(:changes) do
+ { push_new_branch: "#{Gitlab::Git::BLANK_SHA} 570e7b2ab refs/heads/wow",
push_master: '6f6d7e7ed 570e7b2ab refs/heads/master',
push_protected_branch: '6f6d7e7ed 570e7b2ab refs/heads/feature',
push_remove_protected_branch: "570e7b2ab #{Gitlab::Git::BLANK_SHA} "\
'refs/heads/feature',
push_tag: '6f6d7e7ed 570e7b2ab refs/tags/v1.0.0',
push_new_tag: "#{Gitlab::Git::BLANK_SHA} 570e7b2ab refs/tags/v7.8.9",
- push_all: ['6f6d7e7ed 570e7b2ab refs/heads/master', '6f6d7e7ed 570e7b2ab refs/heads/feature']
- }
+ push_all: ['6f6d7e7ed 570e7b2ab refs/heads/master', '6f6d7e7ed 570e7b2ab refs/heads/feature'],
+ merge_into_protected_branch: "0b4bc9a #{merge_into_protected_branch} refs/heads/feature" }
end
- def self.permissions_matrix
- {
- master: {
- push_new_branch: true,
- push_master: true,
- push_protected_branch: true,
- push_remove_protected_branch: false,
- push_tag: true,
- push_new_tag: true,
- push_all: true,
- },
-
- developer: {
- push_new_branch: true,
- push_master: true,
- push_protected_branch: false,
- push_remove_protected_branch: false,
- push_tag: false,
- push_new_tag: true,
- push_all: false,
- },
-
- reporter: {
- push_new_branch: false,
- push_master: false,
- push_protected_branch: false,
- push_remove_protected_branch: false,
- push_tag: false,
- push_new_tag: false,
- push_all: false,
- },
-
- guest: {
- push_new_branch: false,
- push_master: false,
- push_protected_branch: false,
- push_remove_protected_branch: false,
- push_tag: false,
- push_new_tag: false,
- push_all: false,
- }
- }
+ def stub_git_hooks
+ # Running the `pre-receive` hook is expensive, and not necessary for this test.
+ allow_any_instance_of(GitHooksService).to receive(:execute).and_yield
end
- def self.updated_permissions_matrix
- updated_permissions_matrix = permissions_matrix.dup
- updated_permissions_matrix[:developer][:push_protected_branch] = true
- updated_permissions_matrix[:developer][:push_all] = true
- updated_permissions_matrix
+ def merge_into_protected_branch
+ @protected_branch_merge_commit ||= begin
+ stub_git_hooks
+ project.repository.add_branch(user, unprotected_branch, 'feature')
+ target_branch = project.repository.lookup('feature')
+ source_branch = project.repository.commit_file(user, FFaker::InternetSE.login_user_name, FFaker::HipsterIpsum.paragraph, FFaker::HipsterIpsum.sentence, unprotected_branch, false)
+ rugged = project.repository.rugged
+ author = { email: "email@example.com", time: Time.now, name: "Example Git User" }
+
+ merge_index = rugged.merge_commits(target_branch, source_branch)
+ Rugged::Commit.create(rugged, author: author, committer: author, message: "commit message", parents: [target_branch, source_branch], tree: merge_index.write_tree(rugged))
+ end
end
- permissions_matrix.keys.each do |role|
- describe "#{role} access" do
- before { protect_feature_branch }
- before { project.team << [user, role] }
+ def self.run_permission_checks(permissions_matrix)
+ permissions_matrix.keys.each do |role|
+ describe "#{role} access" do
+ before { project.team << [user, role] }
- permissions_matrix[role].each do |action, allowed|
- context action do
- subject { access.push_access_check(changes[action]) }
+ permissions_matrix[role].each do |action, allowed|
+ context action do
+ subject { access.push_access_check(changes[action]) }
- it { expect(subject.allowed?).to allowed ? be_truthy : be_falsey }
+ it { expect(subject.allowed?).to allowed ? be_truthy : be_falsey }
+ end
end
end
end
end
- context "with enabled developers push to protected branches " do
- updated_permissions_matrix.keys.each do |role|
- describe "#{role} access" do
- before { create(:protected_branch, name: 'feature', developers_can_push: true, project: project) }
- before { project.team << [user, role] }
+ permissions_matrix = {
+ master: {
+ push_new_branch: true,
+ push_master: true,
+ push_protected_branch: true,
+ push_remove_protected_branch: false,
+ push_tag: true,
+ push_new_tag: true,
+ push_all: true,
+ merge_into_protected_branch: true
+ },
+
+ developer: {
+ push_new_branch: true,
+ push_master: true,
+ push_protected_branch: false,
+ push_remove_protected_branch: false,
+ push_tag: false,
+ push_new_tag: true,
+ push_all: false,
+ merge_into_protected_branch: false
+ },
+
+ reporter: {
+ push_new_branch: false,
+ push_master: false,
+ push_protected_branch: false,
+ push_remove_protected_branch: false,
+ push_tag: false,
+ push_new_tag: false,
+ push_all: false,
+ merge_into_protected_branch: false
+ },
+
+ guest: {
+ push_new_branch: false,
+ push_master: false,
+ push_protected_branch: false,
+ push_remove_protected_branch: false,
+ push_tag: false,
+ push_new_tag: false,
+ push_all: false,
+ merge_into_protected_branch: false
+ }
+ }
- updated_permissions_matrix[role].each do |action, allowed|
- context action do
- subject { access.push_access_check(changes[action]) }
+ [['feature', 'exact'], ['feat*', 'wildcard']].each do |protected_branch_name, protected_branch_type|
+ context do
+ before { create(:protected_branch, name: protected_branch_name, project: project) }
- it { expect(subject.allowed?).to allowed ? be_truthy : be_falsey }
+ run_permission_checks(permissions_matrix)
+ end
+
+ context "when 'developers can push' is turned on for the #{protected_branch_type} protected branch" do
+ before { create(:protected_branch, name: protected_branch_name, developers_can_push: true, project: project) }
+
+ run_permission_checks(permissions_matrix.deep_merge(developer: { push_protected_branch: true, push_all: true, merge_into_protected_branch: true }))
+ end
+
+ context "when 'developers can merge' is turned on for the #{protected_branch_type} protected branch" do
+ before { create(:protected_branch, name: protected_branch_name, developers_can_merge: true, project: project) }
+
+ context "when a merge request exists for the given source/target branch" do
+ context "when the merge request is in progress" do
+ before do
+ create(:merge_request, source_project: project, source_branch: unprotected_branch, target_branch: 'feature', state: 'locked', in_progress_merge_commit_sha: merge_into_protected_branch)
end
+
+ run_permission_checks(permissions_matrix.deep_merge(developer: { merge_into_protected_branch: true }))
+ end
+
+ context "when the merge request is not in progress" do
+ before do
+ create(:merge_request, source_project: project, source_branch: unprotected_branch, target_branch: 'feature', in_progress_merge_commit_sha: nil)
+ end
+
+ run_permission_checks(permissions_matrix.deep_merge(developer: { merge_into_protected_branch: false }))
+ end
+ end
+
+ context "when a merge request does not exist for the given source/target branch" do
+ run_permission_checks(permissions_matrix.deep_merge(developer: { merge_into_protected_branch: false }))
+ end
+ end
+
+ context "when 'developers can merge' and 'developers can push' are turned on for the #{protected_branch_type} protected branch" do
+ before { create(:protected_branch, name: protected_branch_name, developers_can_merge: true, developers_can_push: true, project: project) }
+
+ run_permission_checks(permissions_matrix.deep_merge(developer: { push_protected_branch: true, push_all: true, merge_into_protected_branch: true }))
+ end
+ end
+
+ describe 'deploy key permissions' do
+ let(:key) { create(:deploy_key) }
+ let(:actor) { key }
+
+ context 'push code' do
+ subject { access.check('git-receive-pack') }
+
+ context 'when project is authorized' do
+ before { key.projects << project }
+
+ it { expect(subject).not_to be_allowed }
+ end
+
+ context 'when unauthorized' do
+ context 'to public project' do
+ let(:project) { create(:project, :public) }
+
+ it { expect(subject).not_to be_allowed }
+ end
+
+ context 'to internal project' do
+ let(:project) { create(:project, :internal) }
+
+ it { expect(subject).not_to be_allowed }
+ end
+
+ context 'to private project' do
+ let(:project) { create(:project, :internal) }
+
+ it { expect(subject).not_to be_allowed }
end
end
end
diff --git a/spec/lib/gitlab/import_export/avatar_restorer_spec.rb b/spec/lib/gitlab/import_export/avatar_restorer_spec.rb
new file mode 100644
index 00000000000..5ae178414cc
--- /dev/null
+++ b/spec/lib/gitlab/import_export/avatar_restorer_spec.rb
@@ -0,0 +1,25 @@
+require 'spec_helper'
+
+describe Gitlab::ImportExport::AvatarRestorer, lib: true do
+ let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: 'test') }
+ let(:project) { create(:empty_project) }
+
+ before do
+ allow_any_instance_of(described_class).to receive(:avatar_export_file)
+ .and_return(Rails.root + "spec/fixtures/dk.png")
+ end
+
+ after do
+ project.remove_avatar!
+ end
+
+ it 'restores a project avatar' do
+ expect(described_class.new(project: project, shared: shared).restore).to be true
+ end
+
+ it 'saves the avatar into the project' do
+ described_class.new(project: project, shared: shared).restore
+
+ expect(project.reload.avatar.file.exists?).to be true
+ end
+end
diff --git a/spec/lib/gitlab/import_export/avatar_saver_spec.rb b/spec/lib/gitlab/import_export/avatar_saver_spec.rb
new file mode 100644
index 00000000000..d6ee94442cb
--- /dev/null
+++ b/spec/lib/gitlab/import_export/avatar_saver_spec.rb
@@ -0,0 +1,27 @@
+require 'spec_helper'
+
+describe Gitlab::ImportExport::AvatarSaver, lib: true do
+ let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: 'test') }
+ let(:export_path) { "#{Dir::tmpdir}/project_tree_saver_spec" }
+ let(:project_with_avatar) { create(:empty_project, avatar: fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png")) }
+ let(:project) { create(:empty_project) }
+
+ before do
+ FileUtils.mkdir_p("#{shared.export_path}/avatar/")
+ allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path)
+ end
+
+ after do
+ FileUtils.rm_rf("#{shared.export_path}/avatar")
+ end
+
+ it 'saves a project avatar' do
+ described_class.new(project: project_with_avatar, shared: shared).save
+
+ expect(File).to exist("#{shared.export_path}/avatar/dk.png")
+ end
+
+ it 'is fine not to have an avatar' do
+ expect(described_class.new(project: project, shared: shared).save).to be true
+ end
+end
diff --git a/spec/lib/gitlab/import_export/project.json b/spec/lib/gitlab/import_export/project.json
index 4113d829c3c..b1a5d72c624 100644
--- a/spec/lib/gitlab/import_export/project.json
+++ b/spec/lib/gitlab/import_export/project.json
@@ -2765,7 +2765,7 @@
"committer_email": "dmitriy.zaporozhets@gmail.com"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "Binary files a/.DS_Store and /dev/null differ\n",
"new_path": ".DS_Store",
@@ -3138,7 +3138,7 @@
"committer_email": "dmitriy.zaporozhets@gmail.com"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "--- /dev/null\n+++ b/files/ruby/feature.rb\n@@ -0,0 +1,5 @@\n+class Feature\n+ def foo\n+ puts 'bar'\n+ end\n+end\n",
"new_path": "files/ruby/feature.rb",
@@ -3423,7 +3423,7 @@
"committer_email": "james@jameslopez.es"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "--- /dev/null\n+++ b/test\n",
"new_path": "test",
@@ -3960,7 +3960,7 @@
"committer_email": "dmitriy.zaporozhets@gmail.com"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "Binary files a/.DS_Store and /dev/null differ\n",
"new_path": ".DS_Store",
@@ -4597,7 +4597,7 @@
"committer_email": "marmis85@gmail.com"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "--- a/CHANGELOG\n+++ b/CHANGELOG\n@@ -1,4 +1,6 @@\n-v 6.7.0\n+v6.8.0\n+\n+v6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edit file button to MergeRequest diff\n - Public groups (Jason Hollingsworth)\n",
"new_path": "CHANGELOG",
@@ -5108,7 +5108,7 @@
"committer_email": "stanhu@packetzoom.com"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "--- a/CHANGELOG\n+++ b/CHANGELOG\n@@ -1,4 +1,6 @@\n-v 6.7.0\n+v6.8.0\n+\n+v6.7.0\n - Add support for Gemnasium as a Project Service (Olivier Gonzalez)\n - Add edit file button to MergeRequest diff\n - Public groups (Jason Hollingsworth)\n",
"new_path": "CHANGELOG",
@@ -5434,7 +5434,7 @@
"id": 11,
"state": "empty",
"st_commits": null,
- "st_diffs": [
+ "utf8_st_diffs": [
],
"merge_request_id": 11,
@@ -5961,7 +5961,7 @@
"committer_email": "dmitriy.zaporozhets@gmail.com"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "Binary files a/.DS_Store and /dev/null differ\n",
"new_path": ".DS_Store",
@@ -6400,7 +6400,7 @@
"committer_email": "james@jameslopez.es"
}
],
- "st_diffs": [
+ "utf8_st_diffs": [
{
"diff": "--- /dev/null\n+++ b/test\n",
"new_path": "test",
diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
index 877be300262..6ae20c943b1 100644
--- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
@@ -2,6 +2,7 @@ require 'spec_helper'
describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
describe 'restore project tree' do
+
let(:user) { create(:user) }
let(:namespace) { create(:namespace, owner: user) }
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: "", project_path: 'path') }
@@ -53,6 +54,12 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
expect(event.note.noteable.project).not_to be_nil
end
end
+
+ it 'has the correct data for merge request st_diffs' do
+ # makes sure we are renaming the custom method +utf8_st_diffs+ into +st_diffs+
+
+ expect { restored_project_json }.to change(MergeRequestDiff.where.not(st_diffs: nil), :count).by(9)
+ end
end
end
end
diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
index 1424de9e60b..057ef6e76a0 100644
--- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
@@ -102,12 +102,17 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
it 'has ci pipeline notes' do
expect(saved_project_json['pipelines'].first['notes']).not_to be_empty
end
+
+ it 'does not complain about non UTF-8 characters in MR diffs' do
+ ActiveRecord::Base.connection.execute("UPDATE merge_request_diffs SET st_diffs = '---\n- :diff: !binary |-\n LS0tIC9kZXYvbnVsbAorKysgYi9pbWFnZXMvbnVjb3IucGRmCkBAIC0wLDAg\n KzEsMTY3OSBAQAorJVBERi0xLjUNJeLjz9MNCisxIDAgb2JqDTw8L01ldGFk\n YXR'")
+
+ expect(project_tree_saver.save).to be true
+ end
end
end
def setup_project
issue = create(:issue, assignee: user)
- merge_request = create(:merge_request)
label = create(:label)
snippet = create(:project_snippet)
release = create(:release)
@@ -115,12 +120,12 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
project = create(:project,
:public,
issues: [issue],
- merge_requests: [merge_request],
labels: [label],
snippets: [snippet],
releases: [release]
)
+ merge_request = create(:merge_request, source_project: project)
commit_status = create(:commit_status, project: project)
ci_pipeline = create(:ci_pipeline,
diff --git a/spec/lib/gitlab/user_access_spec.rb b/spec/lib/gitlab/user_access_spec.rb
new file mode 100644
index 00000000000..aa9ec243498
--- /dev/null
+++ b/spec/lib/gitlab/user_access_spec.rb
@@ -0,0 +1,88 @@
+require 'spec_helper'
+
+describe Gitlab::UserAccess, lib: true do
+ let(:access) { Gitlab::UserAccess.new(user, project: project) }
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+
+ describe 'can_push_to_branch?' do
+ describe 'push to none protected branch' do
+ it 'returns true if user is a master' do
+ project.team << [user, :master]
+ expect(access.can_push_to_branch?('random_branch')).to be_truthy
+ end
+
+ it 'returns true if user is a developer' do
+ project.team << [user, :developer]
+ expect(access.can_push_to_branch?('random_branch')).to be_truthy
+ end
+
+ it 'returns false if user is a reporter' do
+ project.team << [user, :reporter]
+ expect(access.can_push_to_branch?('random_branch')).to be_falsey
+ end
+ end
+
+ describe 'push to protected branch' do
+ let(:branch) { create :protected_branch, project: project }
+
+ it 'returns true if user is a master' do
+ project.team << [user, :master]
+ expect(access.can_push_to_branch?(branch.name)).to be_truthy
+ end
+
+ it 'returns false if user is a developer' do
+ project.team << [user, :developer]
+ expect(access.can_push_to_branch?(branch.name)).to be_falsey
+ end
+
+ it 'returns false if user is a reporter' do
+ project.team << [user, :reporter]
+ expect(access.can_push_to_branch?(branch.name)).to be_falsey
+ end
+ end
+
+ describe 'push to protected branch if allowed for developers' do
+ before do
+ @branch = create :protected_branch, project: project, developers_can_push: true
+ end
+
+ it 'returns true if user is a master' do
+ project.team << [user, :master]
+ expect(access.can_push_to_branch?(@branch.name)).to be_truthy
+ end
+
+ it 'returns true if user is a developer' do
+ project.team << [user, :developer]
+ expect(access.can_push_to_branch?(@branch.name)).to be_truthy
+ end
+
+ it 'returns false if user is a reporter' do
+ project.team << [user, :reporter]
+ expect(access.can_push_to_branch?(@branch.name)).to be_falsey
+ end
+ end
+
+ describe 'merge to protected branch if allowed for developers' do
+ before do
+ @branch = create :protected_branch, project: project, developers_can_merge: true
+ end
+
+ it 'returns true if user is a master' do
+ project.team << [user, :master]
+ expect(access.can_merge_to_branch?(@branch.name)).to be_truthy
+ end
+
+ it 'returns true if user is a developer' do
+ project.team << [user, :developer]
+ expect(access.can_merge_to_branch?(@branch.name)).to be_truthy
+ end
+
+ it 'returns false if user is a reporter' do
+ project.team << [user, :reporter]
+ expect(access.can_merge_to_branch?(@branch.name)).to be_falsey
+ end
+ end
+
+ end
+end
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb
index 355cb8fdfff..950580fdee3 100644
--- a/spec/models/build_spec.rb
+++ b/spec/models/build_spec.rb
@@ -6,7 +6,7 @@ describe Ci::Build, models: true do
let(:pipeline) do
create(:ci_pipeline, project: project,
sha: project.commit.id,
- ref: 'fix',
+ ref: project.default_branch,
status: 'success')
end
@@ -193,77 +193,185 @@ describe Ci::Build, models: true do
end
describe '#variables' do
+ let(:container_registry_enabled) { false }
+ let(:predefined_variables) do
+ [
+ { key: 'CI', value: 'true', public: true },
+ { key: 'GITLAB_CI', value: 'true', public: true },
+ { key: 'CI_BUILD_ID', value: build.id.to_s, public: true },
+ { key: 'CI_BUILD_TOKEN', value: build.token, public: false },
+ { key: 'CI_BUILD_REF', value: build.sha, public: true },
+ { key: 'CI_BUILD_BEFORE_SHA', value: build.before_sha, public: true },
+ { key: 'CI_BUILD_REF_NAME', value: 'master', public: true },
+ { key: 'CI_BUILD_NAME', value: 'test', public: true },
+ { key: 'CI_BUILD_STAGE', value: 'test', public: true },
+ { key: 'CI_SERVER_NAME', value: 'GitLab', public: true },
+ { key: 'CI_SERVER_VERSION', value: Gitlab::VERSION, public: true },
+ { key: 'CI_SERVER_REVISION', value: Gitlab::REVISION, public: true },
+ { key: 'CI_PROJECT_ID', value: project.id.to_s, public: true },
+ { key: 'CI_PROJECT_NAME', value: project.path, public: true },
+ { key: 'CI_PROJECT_PATH', value: project.path_with_namespace, public: true },
+ { key: 'CI_PROJECT_NAMESPACE', value: project.namespace.path, public: true },
+ { key: 'CI_PROJECT_URL', value: project.web_url, public: true },
+ { key: 'CI_PIPELINE_ID', value: pipeline.id.to_s, public: true }
+ ]
+ end
+
+ before do
+ stub_container_registry_config(enabled: container_registry_enabled, host_port: 'registry.example.com')
+ end
+
+ subject { build.variables }
+
context 'returns variables' do
- subject { build.variables }
+ before do
+ build.yaml_variables = []
+ end
- let(:predefined_variables) do
- [
- { key: :CI_BUILD_NAME, value: 'test', public: true },
- { key: :CI_BUILD_STAGE, value: 'stage', public: true },
- ]
+ it { is_expected.to eq(predefined_variables) }
+ end
+
+ context 'when build is for tag' do
+ let(:tag_variable) do
+ { key: 'CI_BUILD_TAG', value: 'master', public: true }
end
- let(:yaml_variables) do
- [
- { key: :DB_NAME, value: 'postgres', public: true }
- ]
+ before do
+ build.update_attributes(tag: true)
+ end
+
+ it { is_expected.to include(tag_variable) }
+ end
+
+ context 'when secure variable is defined' do
+ let(:secure_variable) do
+ { key: 'SECRET_KEY', value: 'secret_value', public: false }
end
before do
- build.update_attributes(stage: 'stage', yaml_variables: yaml_variables)
+ build.project.variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value')
end
- it { is_expected.to eq(predefined_variables + yaml_variables) }
+ it { is_expected.to include(secure_variable) }
+ end
- context 'for tag' do
- let(:tag_variable) do
- [
- { key: :CI_BUILD_TAG, value: 'master', public: true }
- ]
- end
+ context 'when build is for triggers' do
+ let(:trigger) { create(:ci_trigger, project: project) }
+ let(:trigger_request) { create(:ci_trigger_request_with_variables, pipeline: pipeline, trigger: trigger) }
+ let(:user_trigger_variable) do
+ { key: :TRIGGER_KEY, value: 'TRIGGER_VALUE', public: false }
+ end
+ let(:predefined_trigger_variable) do
+ { key: 'CI_BUILD_TRIGGERED', value: 'true', public: true }
+ end
- before do
- build.update_attributes(tag: true)
- end
+ before do
+ build.trigger_request = trigger_request
+ end
- it { is_expected.to eq(tag_variable + predefined_variables + yaml_variables) }
+ it { is_expected.to include(user_trigger_variable) }
+ it { is_expected.to include(predefined_trigger_variable) }
+ end
+
+ context 'when yaml_variables are undefined' do
+ before do
+ build.yaml_variables = nil
end
- context 'and secure variables' do
- let(:secure_variables) do
- [
- { key: 'SECRET_KEY', value: 'secret_value', public: false }
- ]
+ context 'use from gitlab-ci.yml' do
+ before do
+ stub_ci_pipeline_yaml_file(config)
end
- before do
- build.project.variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value')
+ context 'if config is not found' do
+ let(:config) { nil }
+
+ it { is_expected.to eq(predefined_variables) }
end
- it { is_expected.to eq(predefined_variables + yaml_variables + secure_variables) }
+ context 'if config does not have a questioned job' do
+ let(:config) do
+ YAML.dump({
+ test_other: {
+ script: 'Hello World'
+ }
+ })
+ end
- context 'and trigger variables' do
- let(:trigger) { create(:ci_trigger, project: project) }
- let(:trigger_request) { create(:ci_trigger_request_with_variables, pipeline: pipeline, trigger: trigger) }
- let(:trigger_variables) do
- [
- { key: :TRIGGER_KEY, value: 'TRIGGER_VALUE', public: false }
- ]
+ it { is_expected.to eq(predefined_variables) }
+ end
+
+ context 'if config has variables' do
+ let(:config) do
+ YAML.dump({
+ test: {
+ script: 'Hello World',
+ variables: {
+ KEY: 'value'
+ }
+ }
+ })
end
- let(:predefined_trigger_variable) do
- [
- { key: :CI_BUILD_TRIGGERED, value: 'true', public: true }
- ]
+ let(:variables) do
+ [{ key: :KEY, value: 'value', public: true }]
end
- before do
- build.trigger_request = trigger_request
- end
+ it { is_expected.to eq(predefined_variables + variables) }
+ end
+ end
+ end
+
+ context 'when container registry is enabled' do
+ let(:container_registry_enabled) { true }
+ let(:ci_registry) do
+ { key: 'CI_REGISTRY', value: 'registry.example.com', public: true }
+ end
+ let(:ci_registry_image) do
+ { key: 'CI_REGISTRY_IMAGE', value: project.container_registry_repository_url, public: true }
+ end
+
+ context 'and is disabled for project' do
+ before do
+ project.update(container_registry_enabled: false)
+ end
- it { is_expected.to eq(predefined_variables + predefined_trigger_variable + yaml_variables + secure_variables + trigger_variables) }
+ it { is_expected.to include(ci_registry) }
+ it { is_expected.not_to include(ci_registry_image) }
+ end
+
+ context 'and is enabled for project' do
+ before do
+ project.update(container_registry_enabled: true)
end
+
+ it { is_expected.to include(ci_registry) }
+ it { is_expected.to include(ci_registry_image) }
end
end
+
+ context 'when runner is assigned to build' do
+ let(:runner) { create(:ci_runner, description: 'description', tag_list: ['docker', 'linux']) }
+
+ before do
+ build.update(runner: runner)
+ end
+
+ it { is_expected.to include({ key: 'CI_RUNNER_ID', value: runner.id.to_s, public: true }) }
+ it { is_expected.to include({ key: 'CI_RUNNER_DESCRIPTION', value: 'description', public: true }) }
+ it { is_expected.to include({ key: 'CI_RUNNER_TAGS', value: 'docker, linux', public: true }) }
+ end
+
+ context 'returns variables in valid order' do
+ before do
+ allow(build).to receive(:predefined_variables) { ['predefined'] }
+ allow(project).to receive(:predefined_variables) { ['project'] }
+ allow(pipeline).to receive(:predefined_variables) { ['pipeline'] }
+ allow(build).to receive(:yaml_variables) { ['yaml'] }
+ allow(project).to receive(:secret_variables) { ['secret'] }
+ end
+
+ it { is_expected.to eq(%w[predefined project pipeline yaml secret]) }
+ end
end
describe '#has_tags?' do
@@ -662,6 +770,136 @@ describe Ci::Build, models: true do
build.run!
end
+ it { expect(build).not_to be_retryable }
+ end
+
+ context 'when build is finished' do
+ before do
+ build.success!
+ end
+
+ it { expect(build).to be_retryable }
+ end
+ end
+
+ describe '#manual?' do
+ before do
+ build.update(when: value)
+ end
+
+ subject { build.manual? }
+
+ context 'when is set to manual' do
+ let(:value) { 'manual' }
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'when set to something else' do
+ let(:value) { 'something else' }
+
+ it { is_expected.to be_falsey }
+ end
+ end
+
+ describe '#other_actions' do
+ let(:build) { create(:ci_build, :manual, pipeline: pipeline) }
+ let!(:other_build) { create(:ci_build, :manual, pipeline: pipeline, name: 'other action') }
+
+ subject { build.other_actions }
+
+ it 'returns other actions' do
+ is_expected.to contain_exactly(other_build)
+ end
+
+ context 'when build is retried' do
+ let!(:new_build) { Ci::Build.retry(build) }
+
+ it 'does not return any of them' do
+ is_expected.not_to include(build, new_build)
+ end
+ end
+
+ context 'when other build is retried' do
+ let!(:retried_build) { Ci::Build.retry(other_build) }
+
+ it 'returns a retried build' do
+ is_expected.to contain_exactly(retried_build)
+ end
+ end
+ end
+
+ describe '#play' do
+ let(:build) { create(:ci_build, :manual, pipeline: pipeline) }
+
+ subject { build.play }
+
+ it 'enques a build' do
+ is_expected.to be_pending
+ is_expected.to eq(build)
+ end
+
+ context 'for success build' do
+ before { build.queue }
+
+ it 'creates a new build' do
+ is_expected.to be_pending
+ is_expected.not_to eq(build)
+ end
+ end
+ end
+
+ describe '#when' do
+ subject { build.when }
+
+ context 'if is undefined' do
+ before do
+ build.when = nil
+ end
+
+ context 'use from gitlab-ci.yml' do
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ context 'if config is not found' do
+ let(:config) { nil }
+
+ it { is_expected.to eq('on_success') }
+ end
+
+ context 'if config does not have a questioned job' do
+ let(:config) do
+ YAML.dump({
+ test_other: {
+ script: 'Hello World'
+ }
+ })
+ end
+
+ it { is_expected.to eq('on_success') }
+ end
+
+ context 'if config has when' do
+ let(:config) do
+ YAML.dump({
+ test: {
+ script: 'Hello World',
+ when: 'always'
+ }
+ })
+ end
+
+ it { is_expected.to eq('always') }
+ end
+ end
+ end
+ end
+
+ describe '#retryable?' do
+ context 'when build is running' do
+ before { build.run! }
+
it 'returns false' do
expect(build).not_to be_retryable
end
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index 10db79bd15f..a3bd8fdf30b 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -260,6 +260,70 @@ describe Ci::Pipeline, models: true do
expect(pipeline.reload.status).to eq('canceled')
end
end
+
+ context 'when listing manual actions' do
+ let(:yaml) do
+ {
+ stages: ["build", "test", "staging", "production", "cleanup"],
+ build: {
+ stage: "build",
+ script: "BUILD",
+ },
+ test: {
+ stage: "test",
+ script: "TEST",
+ },
+ staging: {
+ stage: "staging",
+ script: "PUBLISH",
+ },
+ production: {
+ stage: "production",
+ script: "PUBLISH",
+ when: "manual",
+ },
+ cleanup: {
+ stage: "cleanup",
+ script: "TIDY UP",
+ when: "always",
+ },
+ clear_cache: {
+ stage: "cleanup",
+ script: "CLEAR CACHE",
+ when: "manual",
+ }
+ }
+ end
+
+ it 'returns only for skipped builds' do
+ # currently all builds are created
+ expect(create_builds).to be_truthy
+ expect(manual_actions).to be_empty
+
+ # succeed stage build
+ pipeline.builds.running_or_pending.each(&:success)
+ expect(manual_actions).to be_empty
+
+ # succeed stage test
+ pipeline.builds.running_or_pending.each(&:success)
+ expect(manual_actions).to be_empty
+
+ # succeed stage staging and skip stage production
+ pipeline.builds.running_or_pending.each(&:success)
+ expect(manual_actions).to be_many # production and clear cache
+
+ # succeed stage cleanup
+ pipeline.builds.running_or_pending.each(&:success)
+
+ # after processing a pipeline we should have 6 builds, 5 succeeded
+ expect(pipeline.builds.count).to eq(6)
+ expect(pipeline.builds.success.count).to eq(4)
+ end
+
+ def manual_actions
+ pipeline.manual_actions
+ end
+ end
end
context 'when no builds created' do
@@ -416,4 +480,28 @@ describe Ci::Pipeline, models: true do
end
end
end
+
+ describe '#manual_actions' do
+ subject { pipeline.manual_actions }
+
+ it 'when none defined' do
+ is_expected.to be_empty
+ end
+
+ context 'when action defined' do
+ let!(:manual) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy') }
+
+ it 'returns one action' do
+ is_expected.to contain_exactly(manual)
+ end
+
+ context 'there are multiple of the same name' do
+ let!(:manual2) { create(:ci_build, :manual, pipeline: pipeline, name: 'deploy') }
+
+ it 'returns latest one' do
+ is_expected.to contain_exactly(manual2)
+ end
+ end
+ end
+ end
end
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index b273018707f..7df3df4bb9e 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -11,6 +11,7 @@ describe Deployment, models: true do
it { is_expected.to delegate_method(:name).to(:environment).with_prefix }
it { is_expected.to delegate_method(:commit).to(:project) }
it { is_expected.to delegate_method(:commit_title).to(:commit).as(:try) }
+ it { is_expected.to delegate_method(:manual_actions).to(:deployable).as(:try) }
it { is_expected.to validate_presence_of(:ref) }
it { is_expected.to validate_presence_of(:sha) }
diff --git a/spec/models/project_services/builds_email_service_spec.rb b/spec/models/project_services/builds_email_service_spec.rb
index 236df8f047d..ca2cd8aa551 100644
--- a/spec/models/project_services/builds_email_service_spec.rb
+++ b/spec/models/project_services/builds_email_service_spec.rb
@@ -23,6 +23,44 @@ describe BuildsEmailService do
end
end
+ describe '#test_data' do
+ let(:build) { create(:ci_build) }
+ let(:project) { build.project }
+ let(:user) { create(:user) }
+
+ before { project.team << [user, :developer] }
+
+ it 'builds test data' do
+ data = subject.test_data(project)
+
+ expect(data[:object_kind]).to eq("build")
+ end
+ end
+
+ describe '#test' do
+ it 'sends email' do
+ data = Gitlab::BuildDataBuilder.build(create(:ci_build))
+ subject.recipients = 'test@gitlab.com'
+
+ expect(BuildEmailWorker).to receive(:perform_async)
+
+ subject.test(data)
+ end
+
+ context 'notify only failed builds is true' do
+ it 'sends email' do
+ data = Gitlab::BuildDataBuilder.build(create(:ci_build))
+ data[:build_status] = "success"
+ subject.recipients = 'test@gitlab.com'
+
+ expect(subject).not_to receive(:notify_only_broken_builds)
+ expect(BuildEmailWorker).to receive(:perform_async)
+
+ subject.test(data)
+ end
+ end
+ end
+
describe '#execute' do
it 'sends email' do
subject.recipients = 'test@gitlab.com'
diff --git a/spec/models/project_services/slack_service_spec.rb b/spec/models/project_services/slack_service_spec.rb
index 155f3e74e0d..df511b1bc4c 100644
--- a/spec/models/project_services/slack_service_spec.rb
+++ b/spec/models/project_services/slack_service_spec.rb
@@ -124,6 +124,7 @@ describe SlackService, models: true do
and_return(
double(:slack_service).as_null_object
)
+
slack.execute(push_sample_data)
end
@@ -136,6 +137,76 @@ describe SlackService, models: true do
)
slack.execute(push_sample_data)
end
+
+ context "event channels" do
+ it "uses the right channel for push event" do
+ slack.update_attributes(push_channel: "random")
+
+ expect(Slack::Notifier).to receive(:new).
+ with(webhook_url, channel: "random").
+ and_return(
+ double(:slack_service).as_null_object
+ )
+
+ slack.execute(push_sample_data)
+ end
+
+ it "uses the right channel for merge request event" do
+ slack.update_attributes(merge_request_channel: "random")
+
+ expect(Slack::Notifier).to receive(:new).
+ with(webhook_url, channel: "random").
+ and_return(
+ double(:slack_service).as_null_object
+ )
+
+ slack.execute(@merge_sample_data)
+ end
+
+ it "uses the right channel for issue event" do
+ slack.update_attributes(issue_channel: "random")
+
+ expect(Slack::Notifier).to receive(:new).
+ with(webhook_url, channel: "random").
+ and_return(
+ double(:slack_service).as_null_object
+ )
+
+ slack.execute(@issues_sample_data)
+ end
+
+ it "uses the right channel for wiki event" do
+ slack.update_attributes(wiki_page_channel: "random")
+
+ expect(Slack::Notifier).to receive(:new).
+ with(webhook_url, channel: "random").
+ and_return(
+ double(:slack_service).as_null_object
+ )
+
+ slack.execute(@wiki_page_sample_data)
+ end
+
+ context "note event" do
+ let(:issue_note) do
+ create(:note_on_issue, project: project, note: "issue note")
+ end
+
+ it "uses the right channel" do
+ slack.update_attributes(note_channel: "random")
+
+ note_data = Gitlab::NoteDataBuilder.build(issue_note, user)
+
+ expect(Slack::Notifier).to receive(:new).
+ with(webhook_url, channel: "random").
+ and_return(
+ double(:slack_service).as_null_object
+ )
+
+ slack.execute(note_data)
+ end
+ end
+ end
end
describe "Note events" do
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 53b420d808f..5629c75665a 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -458,6 +458,47 @@ describe Project, models: true do
end
end
+ describe "#cache_has_external_wiki" do
+ let(:project) { create(:project) }
+
+ it "stores true if there is an external wiki" do
+ services = double(:service, external_wikis: [ExternalWikiService.new])
+ expect(project).to receive(:services).and_return(services)
+
+ expect do
+ project.cache_has_external_wiki
+ end.to change { project.has_external_wiki }.to(true)
+ end
+
+ it "stores false if there is no external wiki" do
+ services = double(:service, external_wikis: [])
+ expect(project).to receive(:services).and_return(services)
+
+ expect do
+ project.cache_has_external_wiki
+ end.to change { project.has_external_wiki }.to(false)
+ end
+
+ it "changes to true if an external wiki service is created later" do
+ expect do
+ project.cache_has_external_wiki
+ end.to change { project.has_external_wiki }.to(false)
+
+ expect do
+ create(:service, type: "ExternalWikiService", project: project)
+ end.to change { project.has_external_wiki }.to(true)
+ end
+
+ it "changes to false if an external wiki service is destroyed later" do
+ service = create(:service, type: "ExternalWikiService", project: project)
+ expect(project.has_external_wiki).to be_truthy
+
+ expect do
+ service.destroy
+ end.to change { project.has_external_wiki }.to(false)
+ end
+ end
+
describe '#open_branches' do
let(:project) { create(:project) }
@@ -1114,6 +1155,85 @@ describe Project, models: true do
end
end
+ describe '#latest_successful_builds_for' do
+ def create_pipeline(status = 'success')
+ create(:ci_pipeline, project: project,
+ sha: project.commit.sha,
+ ref: project.default_branch,
+ status: status)
+ end
+
+ def create_build(new_pipeline = pipeline, name = 'test')
+ create(:ci_build, :success, :artifacts,
+ pipeline: new_pipeline,
+ status: new_pipeline.status,
+ name: name)
+ end
+
+ let(:project) { create(:project) }
+ let(:pipeline) { create_pipeline }
+
+ context 'with many builds' do
+ it 'gives the latest builds from latest pipeline' do
+ pipeline1 = create_pipeline
+ pipeline2 = create_pipeline
+ build1_p2 = create_build(pipeline2, 'test')
+ create_build(pipeline1, 'test')
+ create_build(pipeline1, 'test2')
+ build2_p2 = create_build(pipeline2, 'test2')
+
+ latest_builds = project.latest_successful_builds_for
+
+ expect(latest_builds).to contain_exactly(build2_p2, build1_p2)
+ end
+ end
+
+ context 'with succeeded pipeline' do
+ let!(:build) { create_build }
+
+ context 'standalone pipeline' do
+ it 'returns builds for ref for default_branch' do
+ builds = project.latest_successful_builds_for
+
+ expect(builds).to contain_exactly(build)
+ end
+
+ it 'returns empty relation if the build cannot be found' do
+ builds = project.latest_successful_builds_for('TAIL')
+
+ expect(builds).to be_kind_of(ActiveRecord::Relation)
+ expect(builds).to be_empty
+ end
+ end
+
+ context 'with some pending pipeline' do
+ before do
+ create_build(create_pipeline('pending'))
+ end
+
+ it 'gives the latest build from latest pipeline' do
+ latest_build = project.latest_successful_builds_for
+
+ expect(latest_build).to contain_exactly(build)
+ end
+ end
+ end
+
+ context 'with pending pipeline' do
+ before do
+ pipeline.update(status: 'pending')
+ create_build(pipeline)
+ end
+
+ it 'returns empty relation' do
+ builds = project.latest_successful_builds_for
+
+ expect(builds).to be_kind_of(ActiveRecord::Relation)
+ expect(builds).to be_empty
+ end
+ end
+ end
+
describe '.where_paths_in' do
context 'without any paths' do
it 'returns an empty relation' do
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index b39b958450c..59c5732c075 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -4,16 +4,17 @@ describe Repository, models: true do
include RepoHelpers
TestBlob = Struct.new(:name)
- let(:repository) { create(:project).repository }
+ let(:project) { create(:project) }
+ let(:repository) { project.repository }
let(:user) { create(:user) }
let(:commit_options) do
author = repository.user_to_committer(user)
{ message: 'Test message', committer: author, author: author }
end
let(:merge_commit) do
- source_sha = repository.find_branch('feature').target
- merge_commit_sha = repository.merge(user, source_sha, 'master', commit_options)
- repository.commit(merge_commit_sha)
+ merge_request = create(:merge_request, source_branch: 'feature', target_branch: 'master', source_project: project)
+ merge_commit_id = repository.merge(user, merge_request, commit_options)
+ repository.commit(merge_commit_id)
end
describe '#branch_names_contains' do
@@ -129,6 +130,36 @@ describe Repository, models: true do
end
end
+ describe :commit_file do
+ it 'commits change to a file successfully' do
+ expect do
+ repository.commit_file(user, 'CHANGELOG', 'Changelog!',
+ 'Updates file content',
+ 'master', true)
+ end.to change { repository.commits('master').count }.by(1)
+
+ blob = repository.blob_at('master', 'CHANGELOG')
+
+ expect(blob.data).to eq('Changelog!')
+ end
+ end
+
+ describe :update_file do
+ it 'updates filename successfully' do
+ expect do
+ repository.update_file(user, 'NEWLICENSE', 'Copyright!',
+ branch: 'master',
+ previous_path: 'LICENSE',
+ message: 'Changes filename')
+ end.to change { repository.commits('master').count }.by(1)
+
+ files = repository.ls_files('master')
+
+ expect(files).not_to include('LICENSE')
+ expect(files).to include('NEWLICENSE')
+ end
+ end
+
describe "search_files" do
let(:results) { repository.search_files('feature', 'master') }
subject { results }
@@ -718,6 +749,30 @@ describe Repository, models: true do
repository.before_delete
end
+ it 'flushes the tags cache' do
+ expect(repository).to receive(:expire_tags_cache)
+
+ repository.before_delete
+ end
+
+ it 'flushes the tag count cache' do
+ expect(repository).to receive(:expire_tag_count_cache)
+
+ repository.before_delete
+ end
+
+ it 'flushes the branches cache' do
+ expect(repository).to receive(:expire_branches_cache)
+
+ repository.before_delete
+ end
+
+ it 'flushes the branch count cache' do
+ expect(repository).to receive(:expire_branch_count_cache)
+
+ repository.before_delete
+ end
+
it 'flushes the root ref cache' do
expect(repository).to receive(:expire_root_ref_cache)
@@ -748,6 +803,30 @@ describe Repository, models: true do
repository.before_delete
end
+ it 'flushes the tags cache' do
+ expect(repository).to receive(:expire_tags_cache)
+
+ repository.before_delete
+ end
+
+ it 'flushes the tag count cache' do
+ expect(repository).to receive(:expire_tag_count_cache)
+
+ repository.before_delete
+ end
+
+ it 'flushes the branches cache' do
+ expect(repository).to receive(:expire_branches_cache)
+
+ repository.before_delete
+ end
+
+ it 'flushes the branch count cache' do
+ expect(repository).to receive(:expire_branch_count_cache)
+
+ repository.before_delete
+ end
+
it 'flushes the root ref cache' do
expect(repository).to receive(:expire_root_ref_cache)
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index fc74488ac0e..3bf82cf2668 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -887,16 +887,25 @@ describe User, models: true do
end
describe '#authorized_projects' do
- let!(:user) { create(:user) }
- let!(:private_project) { create(:project, :private) }
+ context 'with a minimum access level' do
+ it 'includes projects for which the user is an owner' do
+ user = create(:user)
+ project = create(:empty_project, :private, namespace: user.namespace)
- before do
- private_project.team << [user, Gitlab::Access::MASTER]
- end
+ expect(user.authorized_projects(Gitlab::Access::REPORTER))
+ .to contain_exactly(project)
+ end
- subject { user.authorized_projects }
+ it 'includes projects for which the user is a master' do
+ user = create(:user)
+ project = create(:empty_project, :private)
+
+ project.team << [user, Gitlab::Access::MASTER]
- it { is_expected.to eq([private_project]) }
+ expect(user.authorized_projects(Gitlab::Access::REPORTER))
+ .to contain_exactly(project)
+ end
+ end
end
describe '#ci_authorized_runners' do
diff --git a/spec/requests/api/api_helpers_spec.rb b/spec/requests/api/api_helpers_spec.rb
index 83025953889..831889afb6c 100644
--- a/spec/requests/api/api_helpers_spec.rb
+++ b/spec/requests/api/api_helpers_spec.rb
@@ -49,7 +49,7 @@ describe API::Helpers, api: true do
it "should return nil for a user without access" do
env[API::Helpers::PRIVATE_TOKEN_HEADER] = user.private_token
- allow(Gitlab::UserAccess).to receive(:allowed?).and_return(false)
+ allow_any_instance_of(Gitlab::UserAccess).to receive(:allowed?).and_return(false)
expect(current_user).to be_nil
end
@@ -73,7 +73,7 @@ describe API::Helpers, api: true do
it "should return nil for a user without access" do
env[API::Helpers::PRIVATE_TOKEN_HEADER] = personal_access_token.token
- allow(Gitlab::UserAccess).to receive(:allowed?).and_return(false)
+ allow_any_instance_of(Gitlab::UserAccess).to receive(:allowed?).and_return(false)
expect(current_user).to be_nil
end
@@ -211,4 +211,27 @@ describe API::Helpers, api: true do
expect(sudo_identifier).to eq(' 123')
end
end
+
+ describe '.to_boolean' do
+ it 'converts a valid string to a boolean' do
+ expect(to_boolean('true')).to be_truthy
+ expect(to_boolean('YeS')).to be_truthy
+ expect(to_boolean('t')).to be_truthy
+ expect(to_boolean('1')).to be_truthy
+ expect(to_boolean('ON')).to be_truthy
+ expect(to_boolean('FaLse')).to be_falsy
+ expect(to_boolean('F')).to be_falsy
+ expect(to_boolean('NO')).to be_falsy
+ expect(to_boolean('n')).to be_falsy
+ expect(to_boolean('0')).to be_falsy
+ expect(to_boolean('oFF')).to be_falsy
+ end
+
+ it 'converts an invalid string to nil' do
+ expect(to_boolean('fals')).to be_nil
+ expect(to_boolean('yeah')).to be_nil
+ expect(to_boolean('')).to be_nil
+ expect(to_boolean(nil)).to be_nil
+ end
+ end
end
diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb
index b11ca26ee68..719da27f919 100644
--- a/spec/requests/api/branches_spec.rb
+++ b/spec/requests/api/branches_spec.rb
@@ -32,6 +32,8 @@ describe API::API, api: true do
expect(json_response['name']).to eq(branch_name)
expect(json_response['commit']['id']).to eq(branch_sha)
expect(json_response['protected']).to eq(false)
+ expect(json_response['developers_can_push']).to eq(false)
+ expect(json_response['developers_can_merge']).to eq(false)
end
it "should return a 403 error if guest" do
@@ -45,14 +47,95 @@ describe API::API, api: true do
end
end
- describe "PUT /projects/:id/repository/branches/:branch/protect" do
- it "should protect a single branch" do
+ describe 'PUT /projects/:id/repository/branches/:branch/protect' do
+ it 'protects a single branch' do
put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user)
+
expect(response).to have_http_status(200)
+ expect(json_response['name']).to eq(branch_name)
+ expect(json_response['commit']['id']).to eq(branch_sha)
+ expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(false)
+ expect(json_response['developers_can_merge']).to eq(false)
+ end
+
+ it 'protects a single branch and developers can push' do
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user),
+ developers_can_push: true
+
+ expect(response).to have_http_status(200)
+ expect(json_response['name']).to eq(branch_name)
+ expect(json_response['commit']['id']).to eq(branch_sha)
+ expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(true)
+ expect(json_response['developers_can_merge']).to eq(false)
+ end
+ it 'protects a single branch and developers can merge' do
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user),
+ developers_can_merge: true
+
+ expect(response).to have_http_status(200)
expect(json_response['name']).to eq(branch_name)
expect(json_response['commit']['id']).to eq(branch_sha)
expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(false)
+ expect(json_response['developers_can_merge']).to eq(true)
+ end
+
+ it 'protects a single branch and developers can push and merge' do
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user),
+ developers_can_push: true, developers_can_merge: true
+
+ expect(response).to have_http_status(200)
+ expect(json_response['name']).to eq(branch_name)
+ expect(json_response['commit']['id']).to eq(branch_sha)
+ expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(true)
+ expect(json_response['developers_can_merge']).to eq(true)
+ end
+
+ it 'protects a single branch and developers cannot push and merge' do
+ put api("/projects/#{project.id}/repository/branches/#{branch_name}/protect", user),
+ developers_can_push: 'tru', developers_can_merge: 'tr'
+
+ expect(response).to have_http_status(200)
+ expect(json_response['name']).to eq(branch_name)
+ expect(json_response['commit']['id']).to eq(branch_sha)
+ expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(false)
+ expect(json_response['developers_can_merge']).to eq(false)
+ end
+
+ context 'on a protected branch' do
+ let(:protected_branch) { 'foo' }
+
+ before do
+ project.repository.add_branch(user, protected_branch, 'master')
+ create(:protected_branch, project: project, name: protected_branch, developers_can_push: true, developers_can_merge: true)
+ end
+
+ it 'updates that a developer can push' do
+ put api("/projects/#{project.id}/repository/branches/#{protected_branch}/protect", user),
+ developers_can_push: false, developers_can_merge: false
+
+ expect(response).to have_http_status(200)
+ expect(json_response['name']).to eq(protected_branch)
+ expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(false)
+ expect(json_response['developers_can_merge']).to eq(false)
+ end
+
+ it 'does not update that a developer can push' do
+ put api("/projects/#{project.id}/repository/branches/#{protected_branch}/protect", user),
+ developers_can_push: 'foobar', developers_can_merge: 'foo'
+
+ expect(response).to have_http_status(200)
+ expect(json_response['name']).to eq(protected_branch)
+ expect(json_response['protected']).to eq(true)
+ expect(json_response['developers_can_push']).to eq(true)
+ expect(json_response['developers_can_merge']).to eq(true)
+ end
end
it "should return a 404 error if branch not found" do
diff --git a/spec/requests/api/builds_spec.rb b/spec/requests/api/builds_spec.rb
index fb0f066498a..56eb9cd8f8d 100644
--- a/spec/requests/api/builds_spec.rb
+++ b/spec/requests/api/builds_spec.rb
@@ -6,12 +6,12 @@ describe API::API, api: true do
let(:user) { create(:user) }
let(:api_user) { user }
- let(:user2) { create(:user) }
- let(:project) { create(:project, creator_id: user.id) }
- let(:developer) { create(:project_member, :developer, user: user, project: project) }
- let(:reporter) { create(:project_member, :reporter, user: user2, project: project) }
- let(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.id) }
- let(:build) { create(:ci_build, pipeline: pipeline) }
+ let!(:project) { create(:project, creator_id: user.id) }
+ let!(:developer) { create(:project_member, :developer, user: user, project: project) }
+ let(:reporter) { create(:project_member, :reporter, project: project) }
+ let(:guest) { create(:project_member, :guest, project: project) }
+ let!(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.id, ref: project.default_branch) }
+ let!(:build) { create(:ci_build, pipeline: pipeline) }
describe 'GET /projects/:id/builds ' do
let(:query) { '' }
@@ -188,44 +188,94 @@ describe API::API, api: true do
end
describe 'GET /projects/:id/artifacts/:ref_name/download?job=name' do
- include_context 'artifacts from ref and build name'
+ let(:api_user) { reporter.user }
+ let(:build) { create(:ci_build, :success, :artifacts, pipeline: pipeline) }
- def path_from_ref(ref = pipeline.ref, job = build.name)
- api("/projects/#{project.id}/builds/artifacts/#{ref}/download?job=#{job}", user)
+ def path_for_ref(ref = pipeline.ref, job = build.name)
+ api("/projects/#{project.id}/builds/artifacts/#{ref}/download?job=#{job}", api_user)
end
- context '401' do
- let(:user) { nil }
+ context 'when not logged in' do
+ let(:api_user) { nil }
before do
- get path_from_ref
+ get path_for_ref
end
- it 'gives 401 for unauthorized user' do
+ it 'gives 401' do
expect(response).to have_http_status(401)
end
end
- context '404' do
- def verify
- expect(response).to have_http_status(404)
+ context 'when logging as guest' do
+ let(:api_user) { guest.user }
+
+ before do
+ get path_for_ref
+ end
+
+ it 'gives 403' do
+ expect(response).to have_http_status(403)
+ end
+ end
+
+ context 'non-existing build' do
+ shared_examples 'not found' do
+ it { expect(response).to have_http_status(:not_found) }
end
- it_behaves_like 'artifacts from ref with 404'
+ context 'has no such ref' do
+ before do
+ get path_for_ref('TAIL', build.name)
+ end
+
+ it_behaves_like 'not found'
+ end
+
+ context 'has no such build' do
+ before do
+ get path_for_ref(pipeline.ref, 'NOBUILD')
+ end
+
+ it_behaves_like 'not found'
+ end
end
- context '200' do
- def verify
- download_headers =
+ context 'find proper build' do
+ shared_examples 'a valid file' do
+ let(:download_headers) do
{ 'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' =>
"attachment; filename=#{build.artifacts_file.filename}" }
+ end
- expect(response).to have_http_status(200)
- expect(response.headers).to include(download_headers)
+ it { expect(response).to have_http_status(200) }
+ it { expect(response.headers).to include(download_headers) }
+ end
+
+ context 'with regular branch' do
+ before do
+ pipeline.update(ref: 'master',
+ sha: project.commit('master').sha)
+
+ get path_for_ref('master')
+ end
+
+ it_behaves_like 'a valid file'
end
- it_behaves_like 'artifacts from ref successfully'
+ context 'with branch name containing slash' do
+ before do
+ pipeline.update(ref: 'improve/awesome',
+ sha: project.commit('improve/awesome').sha)
+ end
+
+ before do
+ get path_for_ref('improve/awesome')
+ end
+
+ it_behaves_like 'a valid file'
+ end
end
end
@@ -233,8 +283,6 @@ describe API::API, api: true do
let(:build) { create(:ci_build, :trace, pipeline: pipeline) }
before do
- developer
-
get api("/projects/#{project.id}/builds/#{build.id}/trace", api_user)
end
@@ -271,7 +319,7 @@ describe API::API, api: true do
end
context 'user without :update_build permission' do
- let(:api_user) { user2 }
+ let(:api_user) { reporter.user }
it 'should not cancel build' do
expect(response).to have_http_status(403)
@@ -308,7 +356,7 @@ describe API::API, api: true do
end
context 'user without :update_build permission' do
- let(:api_user) { user2 }
+ let(:api_user) { reporter.user }
it 'should not retry build' do
expect(response).to have_http_status(403)
diff --git a/spec/requests/api/todos_spec.rb b/spec/requests/api/todos_spec.rb
index 92a4fa216cd..3ccd0af652f 100644
--- a/spec/requests/api/todos_spec.rb
+++ b/spec/requests/api/todos_spec.rb
@@ -134,8 +134,7 @@ describe API::Todos, api: true do
delete api('/todos', john_doe)
expect(response.status).to eq(200)
- expect(json_response).to be_an Array
- expect(json_response.length).to eq(3)
+ expect(response.body).to eq('3')
expect(pending_1.reload).to be_done
expect(pending_2.reload).to be_done
expect(pending_3.reload).to be_done
diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb
index e7cbc3dd3a7..1c7c60ec644 100644
--- a/spec/requests/ci/api/builds_spec.rb
+++ b/spec/requests/ci/api/builds_spec.rb
@@ -73,12 +73,12 @@ describe Ci::API::API do
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
expect(response).to have_http_status(201)
- expect(json_response["variables"]).to eq([
+ expect(json_response["variables"]).to include(
{ "key" => "CI_BUILD_NAME", "value" => "spinach", "public" => true },
{ "key" => "CI_BUILD_STAGE", "value" => "test", "public" => true },
{ "key" => "DB_NAME", "value" => "postgres", "public" => true },
{ "key" => "SECRET_KEY", "value" => "secret_value", "public" => false }
- ])
+ )
end
it "returns variables for triggers" do
@@ -92,14 +92,14 @@ describe Ci::API::API do
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
expect(response).to have_http_status(201)
- expect(json_response["variables"]).to eq([
+ expect(json_response["variables"]).to include(
{ "key" => "CI_BUILD_NAME", "value" => "spinach", "public" => true },
{ "key" => "CI_BUILD_STAGE", "value" => "test", "public" => true },
{ "key" => "CI_BUILD_TRIGGERED", "value" => "true", "public" => true },
{ "key" => "DB_NAME", "value" => "postgres", "public" => true },
{ "key" => "SECRET_KEY", "value" => "secret_value", "public" => false },
- { "key" => "TRIGGER_KEY", "value" => "TRIGGER_VALUE", "public" => false },
- ])
+ { "key" => "TRIGGER_KEY", "value" => "TRIGGER_VALUE", "public" => false }
+ )
end
it "returns dependent builds" do
diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb
index 2c755919456..0a52c1ab933 100644
--- a/spec/routing/routing_spec.rb
+++ b/spec/routing/routing_spec.rb
@@ -116,12 +116,9 @@ describe HelpController, "routing" do
expect(get(path)).to route_to('help#show',
path: 'workflow/protected_branches/protected_branches1',
format: 'png')
- path = '/help/shortcuts'
- expect(get(path)).to route_to('help#show',
- path: 'shortcuts')
+
path = '/help/ui'
- expect(get(path)).to route_to('help#show',
- path: 'ui')
+ expect(get(path)).to route_to('help#ui')
end
end
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index afabeed4a80..47c0580e0f0 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -224,7 +224,7 @@ describe GitPushService, services: true do
it "when pushing a branch for the first time" do
expect(project).to receive(:execute_hooks)
expect(project.default_branch).to eq("master")
- expect(project.protected_branches).to receive(:create).with({ name: "master", developers_can_push: false })
+ expect(project.protected_branches).to receive(:create).with({ name: "master", developers_can_push: false, developers_can_merge: false })
execute_service(project, user, @blankrev, 'newrev', 'refs/heads/master' )
end
@@ -242,7 +242,17 @@ describe GitPushService, services: true do
expect(project).to receive(:execute_hooks)
expect(project.default_branch).to eq("master")
- expect(project.protected_branches).to receive(:create).with({ name: "master", developers_can_push: true })
+ expect(project.protected_branches).to receive(:create).with({ name: "master", developers_can_push: true, developers_can_merge: false })
+
+ execute_service(project, user, @blankrev, 'newrev', 'refs/heads/master')
+ end
+
+ it "when pushing a branch for the first time with default branch protection set to 'developers can merge'" do
+ stub_application_setting(default_branch_protection: Gitlab::Access::PROTECTION_DEV_CAN_MERGE)
+
+ expect(project).to receive(:execute_hooks)
+ expect(project.default_branch).to eq("master")
+ expect(project.protected_branches).to receive(:create).with({ name: "master", developers_can_push: false, developers_can_merge: true })
execute_service(project, user, @blankrev, 'newrev', 'refs/heads/master' )
end
diff --git a/spec/services/issues/bulk_update_service_spec.rb b/spec/services/issues/bulk_update_service_spec.rb
index 4a689e64dc5..ba3a4dfc048 100644
--- a/spec/services/issues/bulk_update_service_spec.rb
+++ b/spec/services/issues/bulk_update_service_spec.rb
@@ -262,4 +262,42 @@ describe Issues::BulkUpdateService, services: true do
end
end
end
+
+ describe :subscribe_issues do
+ let(:issues) { create_list(:issue, 5, project: project) }
+ let(:params) do
+ {
+ subscription_event: 'subscribe',
+ issues_ids: issues.map(&:id).join(',')
+ }
+ end
+
+ it 'subscribes the given user' do
+ issues.each do |issue|
+ expect(issue.subscribed?(user)).to be_truthy
+ end
+ end
+ end
+
+ describe :unsubscribe_issues do
+ let(:issues) { create_list(:closed_issue, 5, project: project) }
+ let(:params) do
+ {
+ subscription_event: 'unsubscribe',
+ issues_ids: issues.map(&:id).join(',')
+ }
+ end
+
+ before do
+ issues.each do |issue|
+ issue.subscriptions.create(user: user, subscribed: true)
+ end
+ end
+
+ it 'unsubscribes the given user' do
+ issues.each do |issue|
+ expect(issue.subscribed?(user)).to be_falsey
+ end
+ end
+ end
end
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 06f56d85aa8..ce643b3f860 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -88,8 +88,7 @@ describe MergeRequests::RefreshService, services: true do
# Merge master -> feature branch
author = { email: 'test@gitlab.com', time: Time.now, name: "Me" }
commit_options = { message: 'Test message', committer: author, author: author }
- master_commit = @project.repository.commit('master')
- @project.repository.merge(@user, master_commit.id, 'feature', commit_options)
+ @project.repository.merge(@user, @merge_request, commit_options)
commit = @project.repository.commit('feature')
service.new(@project, @user).execute(@oldrev, commit.id, 'refs/heads/feature')
reload_mrs
diff --git a/spec/support/api_helpers.rb b/spec/support/api_helpers.rb
index 1b3cafb497c..68b196d9033 100644
--- a/spec/support/api_helpers.rb
+++ b/spec/support/api_helpers.rb
@@ -24,8 +24,11 @@ module ApiHelpers
(path.index('?') ? '' : '?') +
# Append private_token if given a User object
- (user.respond_to?(:private_token) ?
- "&private_token=#{user.private_token}" : "")
+ if user.respond_to?(:private_token)
+ "&private_token=#{user.private_token}"
+ else
+ ''
+ end
end
def ci_api(path, user = nil)
@@ -35,8 +38,11 @@ module ApiHelpers
(path.index('?') ? '' : '?') +
# Append private_token if given a User object
- (user.respond_to?(:private_token) ?
- "&private_token=#{user.private_token}" : "")
+ if user.respond_to?(:private_token)
+ "&private_token=#{user.private_token}"
+ else
+ ''
+ end
end
def json_response
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb
index bb6c84262f6..83f2ad96fd8 100644
--- a/spec/support/test_env.rb
+++ b/spec/support/test_env.rb
@@ -18,7 +18,9 @@ module TestEnv
'orphaned-branch' => '45127a9',
'binary-encoding' => '7b1cf43',
'gitattributes' => '5a62481',
- 'expand-collapse-diffs' => '4842455'
+ 'expand-collapse-diffs' => '4842455',
+ 'expand-collapse-files' => '025db92',
+ 'expand-collapse-lines' => '238e82d'
}
# gitlab-test-fork is a fork of gitlab-fork, but we don't necessarily
diff --git a/spec/views/projects/builds/show.html.haml_spec.rb b/spec/views/projects/builds/show.html.haml_spec.rb
index cd18d19ef5e..42220a20c75 100644
--- a/spec/views/projects/builds/show.html.haml_spec.rb
+++ b/spec/views/projects/builds/show.html.haml_spec.rb
@@ -3,8 +3,12 @@ require 'spec_helper'
describe 'projects/builds/show' do
include Devise::TestHelpers
- let(:build) { create(:ci_build) }
- let(:project) { build.project }
+ let(:project) { create(:project) }
+ let(:pipeline) do
+ create(:ci_pipeline, project: project,
+ sha: project.commit.id)
+ end
+ let(:build) { create(:ci_build, pipeline: pipeline) }
before do
assign(:build, build)
@@ -34,4 +38,15 @@ describe 'projects/builds/show' do
expect(rendered).to have_link('Retry')
end
end
+
+ describe 'commit title in sidebar' do
+ let(:commit_title) { project.commit.title }
+
+ it 'shows commit title and not show commit message' do
+ render
+
+ expect(rendered).to have_css('p.build-light-text.append-bottom-0',
+ text: /\A\n#{Regexp.escape(commit_title)}\n\Z/)
+ end
+ end
end