brakeman 6.2.2 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +26 -0
  3. data/README.md +1 -1
  4. data/bundle/load.rb +10 -8
  5. data/bundle/ruby/3.1.0/gems/csv-3.3.3/LICENSE.txt +33 -0
  6. data/bundle/ruby/3.1.0/gems/csv-3.3.3/NEWS.md +990 -0
  7. data/bundle/ruby/3.1.0/gems/csv-3.3.3/README.md +55 -0
  8. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/core_ext/array.rb +9 -0
  9. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/core_ext/string.rb +9 -0
  10. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/fields_converter.rb +96 -0
  11. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/input_record_separator.rb +18 -0
  12. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/parser.rb +1302 -0
  13. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/row.rb +757 -0
  14. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/table.rb +1055 -0
  15. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/version.rb +6 -0
  16. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv/writer.rb +209 -0
  17. data/bundle/ruby/3.1.0/gems/csv-3.3.3/lib/csv.rb +3017 -0
  18. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/Changelog.md +4 -0
  19. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/Gemfile +1 -0
  20. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/list_renderer.rb +2 -2
  21. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/menu.rb +7 -5
  22. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/version.rb +1 -1
  23. data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline.rb +17 -12
  24. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/config.rb +22 -26
  25. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/history.rb +3 -3
  26. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io/ansi.rb +64 -111
  27. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io/dumb.rb +16 -2
  28. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io/windows.rb +77 -60
  29. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/io.rb +14 -0
  30. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/base.rb +10 -4
  31. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/emacs.rb +96 -96
  32. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/vi_command.rb +182 -182
  33. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/vi_insert.rb +137 -137
  34. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_stroke.rb +26 -16
  35. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/line_editor.rb +238 -404
  36. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/unicode.rb +415 -0
  37. data/bundle/ruby/3.1.0/gems/reline-0.6.0/lib/reline/version.rb +3 -0
  38. data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline.rb +18 -18
  39. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/NEWS.md +74 -0
  40. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/baseparser.rb +78 -48
  41. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/pullparser.rb +4 -0
  42. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/rexml.rb +1 -1
  43. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/source.rb +61 -6
  44. data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/text.rb +15 -40
  45. data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/History.rdoc +6 -0
  46. data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/lib/ruby2ruby.rb +7 -4
  47. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/History.rdoc +6 -0
  48. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/sexp.rb +1 -1
  49. data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/sexp_processor.rb +1 -1
  50. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/History.rdoc +149 -0
  51. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/README.md +417 -0
  52. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/cell.rb +9 -9
  53. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/row.rb +18 -4
  54. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/lib/terminal-table/separator.rb +66 -0
  55. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/lib/terminal-table/style.rb +284 -0
  56. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/table.rb +49 -18
  57. data/bundle/ruby/3.1.0/gems/terminal-table-4.0.0/lib/terminal-table/util.rb +13 -0
  58. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/version.rb +1 -1
  59. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table.rb +2 -2
  60. data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/terminal-table.gemspec +3 -4
  61. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/creole.rb +2 -0
  62. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/liquid.rb +0 -3
  63. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/mapping.rb +3 -3
  64. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/rdoc.rb +0 -8
  65. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/template.rb +178 -27
  66. data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt.rb +9 -4
  67. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/CHANGELOG.md +291 -0
  68. data/bundle/ruby/3.1.0/gems/{unicode-display_width-1.8.0 → unicode-display_width-3.1.4}/MIT-LICENSE.txt +1 -1
  69. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/README.md +194 -0
  70. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/data/display_width.marshal.gz +0 -0
  71. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/constants.rb +10 -0
  72. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/emoji_support.rb +52 -0
  73. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/index.rb +34 -0
  74. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/no_string_ext.rb +8 -0
  75. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/reline_ext.rb +14 -0
  76. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width/string_ext.rb +9 -0
  77. data/bundle/ruby/3.1.0/gems/unicode-display_width-3.1.4/lib/unicode/display_width.rb +247 -0
  78. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/CHANGELOG.md +191 -0
  79. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/CODE_OF_CONDUCT.md +74 -0
  80. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/Gemfile +7 -0
  81. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/Gemfile.lock +33 -0
  82. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/MIT-LICENSE.txt +20 -0
  83. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/README.md +205 -0
  84. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/data/emoji.marshal.gz +0 -0
  85. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/data/generate_constants.rb +344 -0
  86. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/constants.rb +49 -0
  87. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex.rb +8 -0
  88. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_basic.rb +8 -0
  89. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_emoji_keycap.rb +8 -0
  90. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe.rb +8 -0
  91. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_mqe_uqe.rb +8 -0
  92. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_include_text.rb +8 -0
  93. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto.rb +8 -0
  94. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_picto_no_emoji.rb +8 -0
  95. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_possible.rb +8 -0
  96. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_component.rb +8 -0
  97. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_emoji.rb +8 -0
  98. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier.rb +8 -0
  99. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_modifier_base.rb +8 -0
  100. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_prop_presentation.rb +8 -0
  101. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text.rb +8 -0
  102. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_text_presentation.rb +8 -0
  103. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid.rb +8 -0
  104. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_valid_include_text.rb +8 -0
  105. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed.rb +8 -0
  106. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated/regex_well_formed_include_text.rb +8 -0
  107. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex.rb +8 -0
  108. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_basic.rb +8 -0
  109. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_emoji_keycap.rb +8 -0
  110. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe.rb +8 -0
  111. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_mqe_uqe.rb +8 -0
  112. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_include_text.rb +8 -0
  113. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto.rb +8 -0
  114. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_picto_no_emoji.rb +8 -0
  115. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_possible.rb +8 -0
  116. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_component.rb +8 -0
  117. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_emoji.rb +8 -0
  118. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier.rb +8 -0
  119. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_modifier_base.rb +8 -0
  120. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_prop_presentation.rb +8 -0
  121. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text.rb +8 -0
  122. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_text_presentation.rb +8 -0
  123. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid.rb +8 -0
  124. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_valid_include_text.rb +8 -0
  125. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed.rb +8 -0
  126. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/generated_native/regex_well_formed_include_text.rb +8 -0
  127. data/bundle/ruby/3.1.0/gems/{unicode-display_width-1.8.0/lib/unicode/display_width → unicode-emoji-4.0.4/lib/unicode/emoji}/index.rb +5 -3
  128. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/lazy_constants.rb +56 -0
  129. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji/list.rb +13 -0
  130. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/lib/unicode/emoji.rb +111 -0
  131. data/bundle/ruby/3.1.0/gems/unicode-emoji-4.0.4/unicode-emoji.gemspec +22 -0
  132. data/lib/brakeman/app_tree.rb +29 -19
  133. data/lib/brakeman/checks/check_deserialize.rb +4 -1
  134. data/lib/brakeman/checks/check_evaluation.rb +45 -8
  135. data/lib/brakeman/checks/check_model_attr_accessible.rb +1 -0
  136. data/lib/brakeman/checks/check_weak_rsa_key.rb +1 -1
  137. data/lib/brakeman/file_parser.rb +2 -1
  138. data/lib/brakeman/options.rb +12 -5
  139. data/lib/brakeman/processors/alias_processor.rb +9 -4
  140. data/lib/brakeman/processors/lib/file_type_detector.rb +9 -7
  141. data/lib/brakeman/report/ignore/config.rb +0 -1
  142. data/lib/brakeman/report/report_sarif.rb +122 -2
  143. data/lib/brakeman/rescanner.rb +40 -390
  144. data/lib/brakeman/scanner.rb +84 -51
  145. data/lib/brakeman/tracker/file_cache.rb +83 -0
  146. data/lib/brakeman/tracker.rb +19 -2
  147. data/lib/brakeman/version.rb +1 -1
  148. data/lib/brakeman.rb +19 -2
  149. metadata +265 -199
  150. data/bundle/ruby/3.1.0/gems/reline-0.5.10/lib/reline/terminfo.rb +0 -158
  151. data/bundle/ruby/3.1.0/gems/reline-0.5.10/lib/reline/unicode.rb +0 -671
  152. data/bundle/ruby/3.1.0/gems/reline-0.5.10/lib/reline/version.rb +0 -3
  153. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/History.rdoc +0 -85
  154. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/README.rdoc +0 -247
  155. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/lib/terminal-table/separator.rb +0 -14
  156. data/bundle/ruby/3.1.0/gems/terminal-table-1.8.0/lib/terminal-table/style.rb +0 -79
  157. data/bundle/ruby/3.1.0/gems/tilt-2.4.0/lib/tilt/erubis.rb +0 -51
  158. data/bundle/ruby/3.1.0/gems/tilt-2.4.0/lib/tilt/maruku.rb +0 -10
  159. data/bundle/ruby/3.1.0/gems/tilt-2.4.0/lib/tilt/wikicloth.rb +0 -12
  160. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/CHANGELOG.md +0 -137
  161. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/README.md +0 -124
  162. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/data/display_width.marshal.gz +0 -0
  163. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/constants.rb +0 -8
  164. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/no_string_ext.rb +0 -7
  165. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width/string_ext.rb +0 -17
  166. data/bundle/ruby/3.1.0/gems/unicode-display_width-1.8.0/lib/unicode/display_width.rb +0 -51
  167. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/AUTHORS +0 -0
  168. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/COPYING +0 -0
  169. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/LICENSE +0 -0
  170. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/README.md +0 -0
  171. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/TODO +0 -0
  172. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/highline.gemspec +0 -0
  173. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/builtin_styles.rb +0 -0
  174. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/color_scheme.rb +0 -0
  175. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/compatibility.rb +0 -0
  176. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/custom_errors.rb +0 -0
  177. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/import.rb +0 -0
  178. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/io_console_compatible.rb +0 -0
  179. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/list.rb +0 -0
  180. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/menu/item.rb +0 -0
  181. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/paginator.rb +0 -0
  182. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/question/answer_converter.rb +0 -0
  183. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/question.rb +0 -0
  184. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/question_asker.rb +0 -0
  185. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/simulate.rb +0 -0
  186. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/statement.rb +0 -0
  187. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/string.rb +0 -0
  188. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/string_extensions.rb +0 -0
  189. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/style.rb +0 -0
  190. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/template_renderer.rb +0 -0
  191. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal/io_console.rb +0 -0
  192. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal/ncurses.rb +0 -0
  193. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal/unix_stty.rb +0 -0
  194. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/terminal.rb +0 -0
  195. /data/bundle/ruby/3.1.0/gems/{highline-3.1.1 → highline-3.1.2}/lib/highline/wrapper.rb +0 -0
  196. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/BSDL +0 -0
  197. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/COPYING +0 -0
  198. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/README.md +0 -0
  199. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/face.rb +0 -0
  200. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor/composite.rb +0 -0
  201. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/key_actor.rb +0 -0
  202. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/kill_ring.rb +0 -0
  203. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/lib/reline/unicode/east_asian_width.rb +0 -0
  204. /data/bundle/ruby/3.1.0/gems/{reline-0.5.10 → reline-0.6.0}/license_of_rb-readline +0 -0
  205. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/LICENSE.txt +0 -0
  206. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/README.md +0 -0
  207. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/attlistdecl.rb +0 -0
  208. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/attribute.rb +0 -0
  209. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/cdata.rb +0 -0
  210. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/child.rb +0 -0
  211. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/comment.rb +0 -0
  212. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/doctype.rb +0 -0
  213. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/document.rb +0 -0
  214. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/attlistdecl.rb +0 -0
  215. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/dtd.rb +0 -0
  216. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/elementdecl.rb +0 -0
  217. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/entitydecl.rb +0 -0
  218. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/dtd/notationdecl.rb +0 -0
  219. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/element.rb +0 -0
  220. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/encoding.rb +0 -0
  221. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/entity.rb +0 -0
  222. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/formatters/default.rb +0 -0
  223. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/formatters/pretty.rb +0 -0
  224. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/formatters/transitive.rb +0 -0
  225. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/functions.rb +0 -0
  226. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/instruction.rb +0 -0
  227. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/light/node.rb +0 -0
  228. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/namespace.rb +0 -0
  229. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/node.rb +0 -0
  230. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/output.rb +0 -0
  231. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parent.rb +0 -0
  232. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parseexception.rb +0 -0
  233. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/lightparser.rb +0 -0
  234. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/sax2parser.rb +0 -0
  235. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/streamparser.rb +0 -0
  236. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/treeparser.rb +0 -0
  237. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/ultralightparser.rb +0 -0
  238. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/parsers/xpathparser.rb +0 -0
  239. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/quickpath.rb +0 -0
  240. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/sax2listener.rb +0 -0
  241. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/security.rb +0 -0
  242. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/streamlistener.rb +0 -0
  243. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/undefinednamespaceexception.rb +0 -0
  244. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/validation/relaxng.rb +0 -0
  245. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/validation/validation.rb +0 -0
  246. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/validation/validationexception.rb +0 -0
  247. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xmldecl.rb +0 -0
  248. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xmltokens.rb +0 -0
  249. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xpath.rb +0 -0
  250. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml/xpath_parser.rb +0 -0
  251. /data/bundle/ruby/3.1.0/gems/{rexml-3.3.8 → rexml-3.4.1}/lib/rexml.rb +0 -0
  252. /data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/Manifest.txt +0 -0
  253. /data/bundle/ruby/3.1.0/gems/{ruby2ruby-2.5.1 → ruby2ruby-2.5.2}/README.rdoc +0 -0
  254. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/Manifest.txt +0 -0
  255. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/README.rdoc +0 -0
  256. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/composite_sexp_processor.rb +0 -0
  257. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/pt_testcase.rb +0 -0
  258. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/sexp_matcher.rb +0 -0
  259. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/strict_sexp.rb +0 -0
  260. /data/bundle/ruby/3.1.0/gems/{sexp_processor-4.17.2 → sexp_processor-4.17.3}/lib/unique.rb +0 -0
  261. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/Gemfile +0 -0
  262. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/LICENSE.txt +0 -0
  263. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/Manifest +0 -0
  264. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/Todo.rdoc +0 -0
  265. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/import.rb +0 -0
  266. /data/bundle/ruby/3.1.0/gems/{terminal-table-1.8.0 → terminal-table-4.0.0}/lib/terminal-table/table_helper.rb +0 -0
  267. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/COPYING +0 -0
  268. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_emacs_org.rb +0 -0
  269. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_handlebars.rb +0 -0
  270. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_jbuilder.rb +0 -0
  271. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/_org.rb +0 -0
  272. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/asciidoc.rb +0 -0
  273. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/babel.rb +0 -0
  274. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/builder.rb +0 -0
  275. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/cli.rb +0 -0
  276. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/coffee.rb +0 -0
  277. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/commonmarker.rb +0 -0
  278. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/csv.rb +0 -0
  279. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/erb.rb +0 -0
  280. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/erubi.rb +0 -0
  281. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/etanni.rb +0 -0
  282. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/haml.rb +0 -0
  283. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/kramdown.rb +0 -0
  284. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/livescript.rb +0 -0
  285. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/markaby.rb +0 -0
  286. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/nokogiri.rb +0 -0
  287. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/pandoc.rb +0 -0
  288. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/pipeline.rb +0 -0
  289. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/plain.rb +0 -0
  290. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/prawn.rb +0 -0
  291. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/radius.rb +0 -0
  292. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/rdiscount.rb +0 -0
  293. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/redcarpet.rb +0 -0
  294. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/redcloth.rb +0 -0
  295. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/rst-pandoc.rb +0 -0
  296. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/sass.rb +0 -0
  297. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/slim.rb +0 -0
  298. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/string.rb +0 -0
  299. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/typescript.rb +0 -0
  300. /data/bundle/ruby/3.1.0/gems/{tilt-2.4.0 → tilt-2.6.0}/lib/tilt/yajl.rb +0 -0
@@ -0,0 +1,344 @@
1
+ require_relative '../lib/unicode/emoji/constants'
2
+ require_relative '../lib/unicode/emoji/index'
3
+ require_relative '../lib/unicode/emoji/lazy_constants'
4
+
5
+ include Unicode::Emoji
6
+
7
+ def write_regexes(regexes, dirpath)
8
+ regexes.each do |const_name, regex|
9
+ write_regex(const_name, regex, dirpath)
10
+ end
11
+ end
12
+
13
+ def write_regex(const_name, regex, dirpath)
14
+ filename = const_name.to_s.downcase
15
+ filepath = File.join(dirpath, "#{filename}.rb")
16
+
17
+ File.write(filepath, <<~CONTENT)
18
+ # This file was generated by a script, please do not edit it by hand.
19
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
20
+
21
+ module Unicode
22
+ module Emoji
23
+ #{const_name} = #{regex.inspect}
24
+ end
25
+ end
26
+ CONTENT
27
+ puts "#{const_name} written to #{filepath}"
28
+ end
29
+
30
+ # Converts [1, 2, 3, 5, 6, 20, 21, 22, 23, 100] (it does not need to be sorted) to [[1, 2, 3], [5, 6], [20, 21, 22, 23], [100]]
31
+ def groupify(arr)
32
+ arr = arr.sort
33
+ prev = nil
34
+ arr.slice_before do |el|
35
+ (prev.nil? || el != prev + 1).tap { prev = el }
36
+ end
37
+ end
38
+
39
+ # Converts [1, 2, 3, 5, 6, 20, 21, 22, 23, 100] (it does not need to be sorted) to [1..3, 5, 6, 20..23, 100]
40
+ def rangify(arr)
41
+ groupify(arr).map do |group|
42
+ group.size < 3 ? group : Range.new(group.first, group.last)
43
+ end.flatten
44
+ end
45
+
46
+ def pack(ord)
47
+ Regexp.escape(Array(ord).pack("U*"))
48
+ end
49
+
50
+ def join(*strings)
51
+ "(?:" + strings.join("|") + ")"
52
+ end
53
+
54
+ def character_class(ords_with_ranges)
55
+ "[" + ords_with_ranges.map{ |ord_or_range|
56
+ ord_or_range.is_a?(Range) ?
57
+ pack(ord_or_range.first) + "-" + pack(ord_or_range.last) :
58
+ pack(ord_or_range)
59
+ }.join +
60
+ "]"
61
+ end
62
+
63
+ def pack_and_join(ords)
64
+ if ords.any? { |e| e.is_a?(Array) }
65
+ join(*ords.map { |ord| pack(ord) })
66
+ else
67
+ character_class(rangify(ords))
68
+ end
69
+ end
70
+
71
+ def compile(emoji_character:, emoji_modifier:, emoji_modifier_base:, emoji_component:, emoji_presentation:, text_presentation:, picto:, picto_no_emoji:)
72
+ visual_component = pack_and_join(VISUAL_COMPONENT)
73
+
74
+ emoji_presentation_sequence = \
75
+ join(
76
+ text_presentation + pack(EMOJI_VARIATION_SELECTOR),
77
+ emoji_presentation + "(?!" + pack(TEXT_VARIATION_SELECTOR) + ")" + pack(EMOJI_VARIATION_SELECTOR) + "?",
78
+ )
79
+
80
+ non_component_emoji_presentation_sequence = \
81
+ "(?!" + emoji_component + ")" + emoji_presentation_sequence
82
+
83
+ basic_emoji = \
84
+ join(
85
+ non_component_emoji_presentation_sequence,
86
+ visual_component,
87
+ )
88
+
89
+ text_keycap_sequence = \
90
+ pack_and_join(EMOJI_KEYCAPS) + pack(EMOJI_KEYCAP_SUFFIX)
91
+
92
+ text_presentation_sequence = \
93
+ join(
94
+ text_presentation + "(?!" + join(emoji_modifier, pack(EMOJI_VARIATION_SELECTOR)) + ")" + pack(TEXT_VARIATION_SELECTOR) + "?",
95
+ emoji_presentation + pack(TEXT_VARIATION_SELECTOR),
96
+ )
97
+
98
+ text_emoji = \
99
+ join(
100
+ "(?!" + emoji_component + ")" + text_presentation_sequence,
101
+ text_keycap_sequence,
102
+ )
103
+
104
+ emoji_modifier_sequence = \
105
+ emoji_modifier_base + emoji_modifier
106
+
107
+ emoji_keycap_sequence = \
108
+ pack_and_join(EMOJI_KEYCAPS) + pack([EMOJI_VARIATION_SELECTOR, EMOJI_KEYCAP_SUFFIX])
109
+
110
+ emoji_valid_flag_sequence = \
111
+ pack_and_join(VALID_REGION_FLAGS)
112
+
113
+ emoji_well_formed_flag_sequence = \
114
+ '\p{RI}{2}'
115
+
116
+ emoji_core_sequence = \
117
+ join(
118
+ emoji_keycap_sequence,
119
+ emoji_modifier_sequence,
120
+ non_component_emoji_presentation_sequence,
121
+ )
122
+
123
+ # Sort to make sure complex sequences match first
124
+ emoji_rgi_tag_sequence = \
125
+ pack_and_join(RECOMMENDED_SUBDIVISION_FLAGS.sort_by(&:length).reverse)
126
+
127
+ emoji_valid_tag_sequence = \
128
+ "(?:" +
129
+ pack(EMOJI_TAG_BASE_FLAG) +
130
+ "(?:" + VALID_SUBDIVISIONS.sort_by(&:length).reverse.map{ |sd|
131
+ sd.tr("\u{30}-\u{39}\u{61}-\u{7A}", "\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}")
132
+ }.join("|") + ")" +
133
+ pack(CANCEL_TAG) +
134
+ ")"
135
+
136
+ emoji_well_formed_tag_sequence = \
137
+ "(?:" +
138
+ join(
139
+ non_component_emoji_presentation_sequence,
140
+ emoji_modifier_sequence,
141
+ ) +
142
+ pack_and_join(SPEC_TAGS) + "{1,30}" +
143
+ pack(CANCEL_TAG) +
144
+ ")"
145
+
146
+ # Sort to make sure complex sequences match first
147
+ emoji_rgi_zwj_sequence = \
148
+ pack_and_join(RECOMMENDED_ZWJ_SEQUENCES.sort_by(&:length).reverse)
149
+
150
+ # FQE+MQE: Make VS16 optional after ZWJ has appeared
151
+ emoji_rgi_include_mqe_zwj_sequence = emoji_rgi_zwj_sequence.gsub(
152
+ /#{ pack(ZWJ) }[^|]+?\K#{ pack(EMOJI_VARIATION_SELECTOR) }/,
153
+ pack(EMOJI_VARIATION_SELECTOR) + "?"
154
+ )
155
+
156
+ # FQE+MQE+UQE: Make all VS16 optional
157
+ emoji_rgi_include_mqe_uqe_zwj_sequence = emoji_rgi_zwj_sequence.gsub(
158
+ pack(EMOJI_VARIATION_SELECTOR),
159
+ pack(EMOJI_VARIATION_SELECTOR) + "?",
160
+ )
161
+
162
+ emoji_valid_zwj_element = \
163
+ join(
164
+ emoji_modifier_sequence,
165
+ emoji_presentation_sequence,
166
+ emoji_character,
167
+ )
168
+
169
+ emoji_valid_zwj_sequence = \
170
+ "(?:" +
171
+ "(?:" + emoji_valid_zwj_element + pack(ZWJ) + ")+" + emoji_valid_zwj_element +
172
+ ")"
173
+
174
+ emoji_rgi_sequence = \
175
+ join(
176
+ emoji_rgi_zwj_sequence,
177
+ emoji_rgi_tag_sequence,
178
+ emoji_valid_flag_sequence,
179
+ emoji_core_sequence,
180
+ visual_component,
181
+ )
182
+
183
+ emoji_rgi_sequence_include_text = \
184
+ join(
185
+ emoji_rgi_zwj_sequence,
186
+ emoji_rgi_tag_sequence,
187
+ emoji_valid_flag_sequence,
188
+ emoji_core_sequence,
189
+ visual_component,
190
+ text_emoji,
191
+ )
192
+
193
+ emoji_rgi_include_mqe_sequence = \
194
+ join(
195
+ emoji_rgi_include_mqe_zwj_sequence,
196
+ emoji_rgi_tag_sequence,
197
+ emoji_valid_flag_sequence,
198
+ emoji_core_sequence,
199
+ visual_component,
200
+ )
201
+
202
+ emoji_rgi_include_mqe_uqe_sequence = \
203
+ join(
204
+ emoji_rgi_include_mqe_uqe_zwj_sequence,
205
+ text_emoji, # also uqe
206
+ emoji_rgi_tag_sequence,
207
+ emoji_valid_flag_sequence,
208
+ emoji_core_sequence,
209
+ visual_component,
210
+ )
211
+
212
+ emoji_valid_sequence = \
213
+ join(
214
+ emoji_valid_zwj_sequence,
215
+ emoji_valid_tag_sequence,
216
+ emoji_valid_flag_sequence,
217
+ emoji_core_sequence,
218
+ visual_component,
219
+ )
220
+
221
+ emoji_valid_sequence_include_text = \
222
+ join(
223
+ emoji_valid_zwj_sequence,
224
+ emoji_valid_tag_sequence,
225
+ emoji_valid_flag_sequence,
226
+ emoji_core_sequence,
227
+ visual_component,
228
+ text_emoji,
229
+ )
230
+
231
+ emoji_well_formed_sequence = \
232
+ join(
233
+ emoji_valid_zwj_sequence,
234
+ emoji_well_formed_tag_sequence,
235
+ emoji_well_formed_flag_sequence,
236
+ emoji_core_sequence,
237
+ visual_component,
238
+ )
239
+
240
+ emoji_well_formed_sequence_include_text = \
241
+ join(
242
+ emoji_valid_zwj_sequence,
243
+ emoji_well_formed_tag_sequence,
244
+ emoji_well_formed_flag_sequence,
245
+ emoji_core_sequence,
246
+ visual_component,
247
+ text_emoji,
248
+ )
249
+
250
+ emoji_possible_modification = \
251
+ join(
252
+ emoji_modifier,
253
+ pack([EMOJI_VARIATION_SELECTOR, EMOJI_KEYCAP_SUFFIX]) + "?",
254
+ "[󠀠-󠁾]+󠁿" # raw tags
255
+ )
256
+
257
+ emoji_possible_zwj_element = \
258
+ join(
259
+ emoji_well_formed_flag_sequence,
260
+ emoji_character + emoji_possible_modification + "?"
261
+ )
262
+
263
+ emoji_possible = \
264
+ emoji_possible_zwj_element + "(?:" + pack(ZWJ) + emoji_possible_zwj_element + ")*"
265
+
266
+ regexes = {}
267
+
268
+ # Matches basic singleton emoji and all kind of sequences, but restrict zwj and tag sequences to known sequences (rgi)
269
+ regexes[:REGEX] = Regexp.compile(emoji_rgi_sequence)
270
+
271
+ # rgi + singleton text
272
+ regexes[:REGEX_INCLUDE_TEXT] = Regexp.compile(emoji_rgi_sequence_include_text)
273
+
274
+ # Matches basic singleton emoji and all kind of sequences, but restrict zwj and tag sequences to known sequences (rgi)
275
+ # Also make VS16 optional if not at first emoji character
276
+ regexes[:REGEX_INCLUDE_MQE] = Regexp.compile(emoji_rgi_include_mqe_sequence)
277
+
278
+ # Matches basic singleton emoji and all kind of sequences, but restrict zwj and tag sequences to known sequences (rgi)
279
+ # Also make VS16 optional even at first emoji character
280
+ regexes[:REGEX_INCLUDE_MQE_UQE] = Regexp.compile(emoji_rgi_include_mqe_uqe_sequence)
281
+
282
+ # Matches basic singleton emoji and all kind of valid sequences
283
+ regexes[:REGEX_VALID] = Regexp.compile(emoji_valid_sequence)
284
+
285
+ # valid + singleton text
286
+ regexes[:REGEX_VALID_INCLUDE_TEXT] = Regexp.compile(emoji_valid_sequence_include_text)
287
+
288
+ # Matches basic singleton emoji and all kind of sequences
289
+ regexes[:REGEX_WELL_FORMED] = Regexp.compile(emoji_well_formed_sequence)
290
+
291
+ # well-formed + singleton text
292
+ regexes[:REGEX_WELL_FORMED_INCLUDE_TEXT] = Regexp.compile(emoji_well_formed_sequence_include_text)
293
+
294
+ # Quick test which might lead to false positves
295
+ # See https://www.unicode.org/reports/tr51/#EBNF_and_Regex
296
+ regexes[:REGEX_POSSIBLE] = Regexp.compile(emoji_possible)
297
+
298
+ # Matches only basic single, non-textual emoji, ignores some components like simple digits
299
+ regexes[:REGEX_BASIC] = Regexp.compile(basic_emoji)
300
+
301
+ # Matches only basic single, textual emoji, ignores components like modifiers or simple digits
302
+ regexes[:REGEX_TEXT] = Regexp.compile(text_emoji)
303
+ regexes[:REGEX_TEXT_PRESENTATION] = Regexp.compile(text_presentation)
304
+
305
+ # Export regexes for Emoji properties so they can be used with newer Unicode than Ruby's
306
+ regexes[:REGEX_PROP_EMOJI] = Regexp.compile(emoji_character)
307
+ regexes[:REGEX_PROP_MODIFIER] = Regexp.compile(emoji_modifier)
308
+ regexes[:REGEX_PROP_MODIFIER_BASE] = Regexp.compile(emoji_modifier_base)
309
+ regexes[:REGEX_PROP_COMPONENT] = Regexp.compile(emoji_component)
310
+ regexes[:REGEX_PROP_PRESENTATION] = Regexp.compile(emoji_presentation)
311
+
312
+ # Same goes for ExtendedPictographic
313
+ regexes[:REGEX_PICTO] = Regexp.compile(picto)
314
+ regexes[:REGEX_PICTO_NO_EMOJI] = Regexp.compile(picto_no_emoji)
315
+
316
+ # Emoji keycaps
317
+ regexes[:REGEX_EMOJI_KEYCAP] = Regexp.compile(emoji_keycap_sequence)
318
+
319
+ regexes
320
+ end
321
+
322
+ regexes = compile(
323
+ emoji_character: pack_and_join(EMOJI_CHAR),
324
+ emoji_modifier: pack_and_join(EMOJI_MODIFIERS),
325
+ emoji_modifier_base: pack_and_join(EMOJI_MODIFIER_BASES),
326
+ emoji_component: pack_and_join(EMOJI_COMPONENT),
327
+ emoji_presentation: pack_and_join(EMOJI_PRESENTATION),
328
+ text_presentation: pack_and_join(TEXT_PRESENTATION),
329
+ picto: pack_and_join(EXTENDED_PICTOGRAPHIC),
330
+ picto_no_emoji: pack_and_join(EXTENDED_PICTOGRAPHIC_NO_EMOJI)
331
+ )
332
+ write_regexes(regexes, File.expand_path("../lib/unicode/emoji/generated", __dir__))
333
+
334
+ native_regexes = compile(
335
+ emoji_character: "\\p{Emoji}",
336
+ emoji_modifier: "\\p{EMod}",
337
+ emoji_modifier_base: "\\p{EBase}",
338
+ emoji_component: "\\p{EComp}",
339
+ emoji_presentation: "\\p{EPres}",
340
+ text_presentation: "[\\p{Emoji}&&\\P{EPres}]",
341
+ picto: "\\p{ExtPict}",
342
+ picto_no_emoji: "[\\p{ExtPict}&&\\P{Emoji}]"
343
+ )
344
+ write_regexes(native_regexes, File.expand_path("../lib/unicode/emoji/generated_native", __dir__))
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unicode
4
+ module Emoji
5
+ VERSION = "4.0.4"
6
+ EMOJI_VERSION = "16.0"
7
+ CLDR_VERSION = "46"
8
+ DATA_DIRECTORY = File.expand_path('../../../data', __dir__).freeze
9
+ INDEX_FILENAME = (DATA_DIRECTORY + "/emoji.marshal.gz").freeze
10
+
11
+ # Unicode properties, see https://www.unicode.org/Public/16.0.0/ucd/emoji/emoji-data.txt
12
+ PROPERTY_NAMES = {
13
+ E: "Emoji",
14
+ B: "Emoji_Modifier_Base",
15
+ M: "Emoji_Modifier",
16
+ C: "Emoji_Component",
17
+ P: "Emoji_Presentation",
18
+ X: "Extended_Pictographic",
19
+ }.freeze
20
+
21
+ # Variation Selector 16 (VS16), enables emoji presentation mode for preceding codepoint
22
+ EMOJI_VARIATION_SELECTOR = 0xFE0F
23
+
24
+ # Variation Selector 15 (VS15), enables text presentation mode for preceding codepoint
25
+ TEXT_VARIATION_SELECTOR = 0xFE0E
26
+
27
+ # First codepoint of tag-based subdivision flags
28
+ EMOJI_TAG_BASE_FLAG = 0x1F3F4
29
+
30
+ # Last codepoint of tag-based subdivision flags
31
+ CANCEL_TAG = 0xE007F
32
+
33
+ # Tags characters allowed in tag-based subdivision flags
34
+ SPEC_TAGS = [*0xE0030..0xE0039, *0xE0061..0xE007A].freeze
35
+
36
+ # Combining Enclosing Keycap character
37
+ EMOJI_KEYCAP_SUFFIX = 0x20E3
38
+
39
+ # Zero-width-joiner to enable combination of multiple Emoji in a sequence
40
+ ZWJ = 0x200D
41
+
42
+ # Two regional indicators make up a region
43
+ REGIONAL_INDICATORS = [*0x1F1E6..0x1F1FF].freeze
44
+
45
+ # The current list of Emoji components that should have a visual representation
46
+ # Currently skin tone modifiers + hair components
47
+ VISUAL_COMPONENT = [*0x1F3FB..0x1F3FF, *0x1F9B0..0x1F9B3].freeze
48
+ end
49
+ end
@@ -0,0 +1,8 @@
1
+ # This file was generated by a script, please do not edit it by hand.
2
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
3
+
4
+ module Unicode
5
+ module Emoji
6
+ REGEX = /(?:(?:👨🏿‍❤️‍💋‍👨🏼|👨🏿‍❤️‍💋‍👨🏻|👩🏾‍❤️‍💋‍👨🏼|👩🏼‍❤️‍💋‍👩🏻|👩🏾‍❤️‍💋‍👩🏿|🧑🏾‍❤️‍💋‍🧑🏼|👩🏿‍❤️‍💋‍👨🏻|🧑🏽‍❤️‍💋‍🧑🏿|🧑🏾‍❤️‍💋‍🧑🏽|🧑🏽‍❤️‍💋‍🧑🏾|👨🏾‍❤️‍💋‍👨🏿|👨🏾‍❤️‍💋‍👨🏾|👨🏾‍❤️‍💋‍👨🏽|👨🏾‍❤️‍💋‍👨🏼|👨🏾‍❤️‍💋‍👨🏻|👩🏻‍❤️‍💋‍👩🏽|👩🏼‍❤️‍💋‍👩🏼|👩🏻‍❤️‍💋‍👨🏻|👩🏻‍❤️‍💋‍👨🏼|👩🏼‍❤️‍💋‍👩🏽|👩🏻‍❤️‍💋‍👩🏼|🧑🏼‍❤️‍💋‍🧑🏻|👨🏽‍❤️‍💋‍👨🏿|👨🏽‍❤️‍💋‍👨🏾|👨🏽‍❤️‍💋‍👨🏽|👩🏽‍❤️‍💋‍👨🏿|👩🏽‍❤️‍💋‍👩🏻|👩🏼‍❤️‍💋‍👨🏽|🧑🏾‍❤️‍💋‍🧑🏻|🧑🏼‍❤️‍💋‍🧑🏿|👩🏼‍❤️‍💋‍👨🏾|👩🏿‍❤️‍💋‍👩🏿|👩🏿‍❤️‍💋‍👩🏾|👩🏿‍❤️‍💋‍👩🏽|👩🏽‍❤️‍💋‍👩🏿|👩🏿‍❤️‍💋‍👩🏼|👩🏿‍❤️‍💋‍👩🏻|👩🏿‍❤️‍💋‍👨🏿|👩🏿‍❤️‍💋‍👨🏾|👩🏿‍❤️‍💋‍👨🏽|👩🏻‍❤️‍💋‍👩🏿|👩🏽‍❤️‍💋‍👨🏼|👩🏻‍❤️‍💋‍👩🏾|👩🏾‍❤️‍💋‍👨🏻|👩🏽‍❤️‍💋‍👨🏻|👩🏽‍❤️‍💋‍👩🏾|👩🏿‍❤️‍💋‍👨🏼|👨🏿‍❤️‍💋‍👨🏿|👨🏿‍❤️‍💋‍👨🏾|👨🏿‍❤️‍💋‍👨🏽|👨🏽‍❤️‍💋‍👨🏼|👩🏾‍❤️‍💋‍👩🏾|🧑🏿‍❤️‍💋‍🧑🏻|👩🏻‍❤️‍💋‍👨🏿|👨🏻‍❤️‍💋‍👨🏿|👨🏻‍❤️‍💋‍👨🏾|👨🏻‍❤️‍💋‍👨🏽|👨🏻‍❤️‍💋‍👨🏼|👨🏻‍❤️‍💋‍👨🏻|👩🏻‍❤️‍💋‍👩🏻|🧑🏻‍❤️‍💋‍🧑🏿|👩🏼‍❤️‍💋‍👩🏾|👩🏽‍❤️‍💋‍👨🏽|🧑🏼‍❤️‍💋‍🧑🏽|👩🏽‍❤️‍💋‍👨🏾|👩🏼‍❤️‍💋‍👨🏻|👩🏼‍❤️‍💋‍👨🏼|🧑🏻‍❤️‍💋‍🧑🏾|🧑🏽‍❤️‍💋‍🧑🏼|👩🏼‍❤️‍💋‍👩🏿|🧑🏽‍❤️‍💋‍🧑🏻|🧑🏻‍❤️‍💋‍🧑🏼|👩🏽‍❤️‍💋‍👩🏼|🧑🏻‍❤️‍💋‍🧑🏽|👩🏻‍❤️‍💋‍👨🏽|👩🏻‍❤️‍💋‍👨🏾|👩🏾‍❤️‍💋‍👨🏽|👨🏼‍❤️‍💋‍👨🏿|👨🏼‍❤️‍💋‍👨🏾|🧑🏾‍❤️‍💋‍🧑🏿|👩🏼‍❤️‍💋‍👨🏿|🧑🏿‍❤️‍💋‍🧑🏽|🧑🏼‍❤️‍💋‍🧑🏾|👨🏼‍❤️‍💋‍👨🏽|🧑🏿‍❤️‍💋‍🧑🏾|👨🏼‍❤️‍💋‍👨🏼|👨🏽‍❤️‍💋‍👨🏻|👨🏼‍❤️‍💋‍👨🏻|👩🏾‍❤️‍💋‍👨🏾|🧑🏿‍❤️‍💋‍🧑🏼|👩🏾‍❤️‍💋‍👨🏿|👩🏾‍❤️‍💋‍👩🏻|👩🏾‍❤️‍💋‍👩🏼|👩🏾‍❤️‍💋‍👩🏽|👩🏽‍❤️‍💋‍👩🏽|👩🏻‍❤️‍👨🏿|👩🏻‍❤️‍👨🏾|👩🏻‍❤️‍👩🏻|👩🏽‍❤️‍👩🏼|👩🏼‍❤️‍👨🏼|👩🏽‍❤️‍👩🏿|👩🏽‍❤️‍👩🏾|👩🏽‍❤️‍👨🏻|👩🏽‍❤️‍👩🏽|👩🏽‍❤️‍👨🏼|👩🏾‍❤️‍👨🏽|👩🏼‍❤️‍👨🏻|👩🏾‍❤️‍👨🏾|🧑🏿‍❤️‍🧑🏽|🧑🏿‍❤️‍🧑🏼|🧑🏿‍❤️‍🧑🏻|🧎🏻‍♀️‍➡️|🧎🏿‍♂️‍➡️|🚶🏻‍♂️‍➡️|🧎🏿‍♀️‍➡️|🧑🏾‍❤️‍🧑🏻|🧎🏾‍♂️‍➡️|🧎🏻‍♂️‍➡️|🧎🏾‍♀️‍➡️|🧎🏽‍♂️‍➡️|🧑🏾‍❤️‍🧑🏼|🧎🏽‍♀️‍➡️|🧑🏾‍❤️‍🧑🏿|🧎🏼‍♂️‍➡️|🧑🏾‍❤️‍🧑🏽|👩🏻‍❤️‍👩🏼|👩🏻‍❤️‍👩🏽|🧑🏻‍❤️‍🧑🏼|🧑🏻‍❤️‍🧑🏽|👩🏾‍❤️‍👨🏿|🧑🏻‍❤️‍🧑🏾|👩🏾‍❤️‍👩🏻|👩🏾‍❤️‍👩🏼|👩🏾‍❤️‍👩🏽|👩🏾‍❤️‍👩🏾|👩🏾‍❤️‍👩🏿|👩🏻‍❤️‍👩🏾|👩🏻‍❤️‍👩🏿|👩🏽‍❤️‍👩🏻|👩🏽‍❤️‍👨🏿|🧑🏻‍❤️‍🧑🏿|🧑🏿‍❤️‍🧑🏾|👩🏿‍❤️‍👩🏻|👩🏿‍❤️‍👩🏼|👩🏿‍❤️‍👩🏽|👩🏼‍❤️‍👩🏿|👨🏽‍❤️‍👨🏻|👨🏽‍❤️‍👨🏼|👨🏽‍❤️‍👨🏽|👨🏽‍❤️‍👨🏾|👨🏽‍❤️‍👨🏿|👩🏼‍❤️‍👩🏾|👩🏿‍❤️‍👩🏾|👩🏿‍❤️‍👩🏿|🚶🏽‍♂️‍➡️|👨🏾‍❤️‍👨🏻|👨🏾‍❤️‍👨🏼|👨🏾‍❤️‍👨🏽|👨🏾‍❤️‍👨🏾|👨🏾‍❤️‍👨🏿|🚶🏽‍♀️‍➡️|👨🏿‍❤️‍👨🏻|👨🏿‍❤️‍👨🏼|👨‍❤️‍💋‍👨|🚶🏾‍♀️‍➡️|🚶🏾‍♂️‍➡️|🚶🏿‍♀️‍➡️|🚶🏿‍♂️‍➡️|🏃🏿‍♂️‍➡️|👩🏿‍❤️‍👨🏻|👨🏻‍❤️‍👨🏻|👨🏻‍❤️‍👨🏼|👨🏻‍❤️‍👨🏽|👨🏻‍❤️‍👨🏾|👨🏻‍❤️‍👨🏿|👩🏿‍❤️‍👨🏼|👩🏿‍❤️‍👨🏽|👩🏿‍❤️‍👨🏾|👩🏿‍❤️‍👨🏿|👨🏼‍❤️‍👨🏻|👨🏼‍❤️‍👨🏼|👨🏼‍❤️‍👨🏽|👨🏼‍❤️‍👨🏾|🧑🏼‍❤️‍🧑🏾|🧑🏽‍❤️‍🧑🏾|🏃🏼‍♂️‍➡️|🏃🏼‍♀️‍➡️|👩🏽‍❤️‍👨🏽|🏃🏻‍♂️‍➡️|👩🏽‍❤️‍👨🏾|🧑🏽‍❤️‍🧑🏿|👩🏼‍❤️‍👨🏾|👩🏼‍❤️‍👨🏽|🚶🏼‍♂️‍➡️|🧑🏼‍❤️‍🧑🏽|🏃🏻‍♀️‍➡️|👩🏻‍❤️‍👨🏻|👩🏻‍❤️‍👨🏼|🧑🏼‍❤️‍🧑🏻|👩🏾‍❤️‍👨🏻|🚶🏼‍♀️‍➡️|👩🏾‍❤️‍👨🏼|👩🏻‍❤️‍👨🏽|👨🏼‍❤️‍👨🏿|👨🏿‍❤️‍👨🏽|👨🏿‍❤️‍👨🏾|👨🏿‍❤️‍👨🏿|🧑🏽‍❤️‍🧑🏻|🧑🏽‍❤️‍🧑🏼|👩🏼‍❤️‍👩🏽|🏃🏿‍♀️‍➡️|🏃🏾‍♂️‍➡️|👩‍❤️‍💋‍👨|🧎🏼‍♀️‍➡️|👩🏼‍❤️‍👨🏿|👩🏼‍❤️‍👩🏻|🏃🏽‍♀️‍➡️|🧑🏼‍❤️‍🧑🏿|🚶🏻‍♀️‍➡️|🏃🏽‍♂️‍➡️|🏃🏾‍♀️‍➡️|👩🏼‍❤️‍👩🏼|👩‍❤️‍💋‍👩|👩🏻‍🤝‍👨🏾|👩🏻‍🤝‍👨🏿|🧑🏼‍🤝‍🧑🏻|🧑🏼‍🤝‍🧑🏼|🧑🏻‍🦯‍➡️|🧑🏼‍🤝‍🧑🏽|🧑🏼‍🤝‍🧑🏾|👩🏾‍🤝‍👨🏼|👩🏿‍🤝‍👩🏾|👩🏿‍🤝‍👩🏽|👩🏿‍🤝‍👩🏼|👩🏿‍🤝‍👩🏻|👩🏿‍🤝‍👨🏾|👩🏿‍🤝‍👨🏽|👩🏿‍🤝‍👨🏼|👩🏿‍🤝‍👨🏻|🧑🏽‍🦯‍➡️|🧑🏽‍🦼‍➡️|🧑🏽‍🦽‍➡️|🧑🏾‍🦯‍➡️|👩🏾‍🤝‍👩🏿|👩🏾‍🤝‍👩🏽|👩🏾‍🤝‍👩🏼|👩🏾‍🤝‍👩🏻|👩🏾‍🤝‍👨🏿|🧑🏻‍🦼‍➡️|🧑🏻‍🦽‍➡️|🧑🏾‍🦽‍➡️|👩🏾‍🤝‍👨🏻|👩🏻‍🤝‍👩🏼|👩🏻‍🤝‍👩🏽|🧑🏻‍🤝‍🧑🏿|🧑🏻‍🤝‍🧑🏾|🧑🏻‍🤝‍🧑🏽|🧑🏻‍🤝‍🧑🏼|🧑🏻‍🤝‍🧑🏻|👩🏻‍🤝‍👩🏾|👩🏻‍🤝‍👩🏿|🧑‍🧑‍🧒‍🧒|🧑🏼‍🦯‍➡️|🧑🏾‍🦼‍➡️|🧑🏼‍🦼‍➡️|🧑🏼‍🦽‍➡️|👨🏾‍🤝‍👨🏼|👨🏾‍🤝‍👨🏽|👨🏾‍🤝‍👨🏿|👨🏿‍🤝‍👨🏻|👨🏿‍🤝‍👨🏼|👨🏿‍🤝‍👨🏽|👨🏿‍🤝‍👨🏾|👨🏽‍🦽‍➡️|👨🏽‍🦼‍➡️|👨🏿‍🦯‍➡️|👨🏽‍🦯‍➡️|👨🏿‍🦼‍➡️|👨🏿‍🦽‍➡️|👩🏼‍🤝‍👨🏿|👨🏼‍🦽‍➡️|👩🏼‍🤝‍👨🏾|👩🏼‍🤝‍👩🏾|👨🏼‍🦼‍➡️|👩‍👩‍👦‍👦|👩🏼‍🤝‍👩🏿|👨🏼‍🦯‍➡️|👩🏻‍🦯‍➡️|👩🏻‍🦼‍➡️|👩🏻‍🦽‍➡️|👩🏽‍🤝‍👩🏼|👩‍👩‍👧‍👦|👩🏽‍🤝‍👩🏾|👨🏾‍🦯‍➡️|👨🏾‍🦼‍➡️|👨🏾‍🦽‍➡️|👩🏼‍🤝‍👩🏽|👩🏼‍🤝‍👩🏻|👨‍👨‍👦‍👦|👩🏽‍🤝‍👩🏿|👨‍👨‍👧‍👦|👨‍👨‍👧‍👧|👨‍👩‍👦‍👦|👨‍👩‍👧‍👦|👨‍👩‍👧‍👧|👨🏻‍🤝‍👨🏼|👨🏻‍🤝‍👨🏽|👨🏻‍🤝‍👨🏾|👨🏻‍🤝‍👨🏿|👨🏼‍🤝‍👨🏻|👨🏼‍🤝‍👨🏽|👨🏼‍🤝‍👨🏾|👨🏼‍🤝‍👨🏿|👨🏽‍🤝‍👨🏻|👨🏽‍🤝‍👨🏼|👨🏽‍🤝‍👨🏾|👨🏽‍🤝‍👨🏿|🧑🏿‍🤝‍🧑🏽|🧑🏿‍🤝‍🧑🏼|🧑🏿‍🤝‍🧑🏻|👩🏿‍🦯‍➡️|👩🏿‍🦼‍➡️|👩🏿‍🦽‍➡️|👩🏽‍🤝‍👨🏾|👩🏽‍🤝‍👨🏿|🧑🏾‍🤝‍🧑🏿|🧑🏾‍🤝‍🧑🏾|🧑🏾‍🤝‍🧑🏽|🧑🏾‍🤝‍🧑🏼|🧑🏾‍🤝‍🧑🏻|🧎‍♂️‍➡️|🧎‍♀️‍➡️|🧑🏽‍🤝‍🧑🏿|🧑🏽‍🤝‍🧑🏾|🧑🏽‍🤝‍🧑🏽|🧑🏽‍🤝‍🧑🏼|🧑🏽‍🤝‍🧑🏻|🚶‍♀️‍➡️|🚶‍♂️‍➡️|👩🏻‍🤝‍👨🏼|👩🏻‍🤝‍👨🏽|🧑🏼‍🤝‍🧑🏿|👩🏾‍🤝‍👨🏽|👨🏾‍🤝‍👨🏻|👩‍👩‍👧‍👧|👨🏻‍🦽‍➡️|👨🏻‍🦼‍➡️|👨🏻‍🦯‍➡️|👩🏼‍🦯‍➡️|👩🏼‍🦼‍➡️|👩🏼‍🦽‍➡️|👩🏽‍🤝‍👩🏻|👩🏼‍🤝‍👨🏽|👩🏼‍🤝‍👨🏻|🏃‍♂️‍➡️|🏃‍♀️‍➡️|👩🏽‍🦯‍➡️|👩🏽‍🦼‍➡️|👩🏽‍🦽‍➡️|🧑🏿‍🦽‍➡️|🧑🏿‍🦼‍➡️|🧑🏿‍🦯‍➡️|👩🏽‍🤝‍👨🏻|👩🏾‍🦯‍➡️|👩🏽‍🤝‍👨🏼|👩🏾‍🦼‍➡️|👩🏾‍🦽‍➡️|🧑🏿‍🤝‍🧑🏿|🧑🏿‍🤝‍🧑🏾|🧑‍🦯‍➡️|👨‍🦽‍➡️|🧑‍🦼‍➡️|🧑‍🦽‍➡️|👨‍🦼‍➡️|👩‍🦯‍➡️|👩‍❤️‍👩|👩‍🦼‍➡️|👩‍❤️‍👨|👩‍🦽‍➡️|👨‍🦯‍➡️|👨‍❤️‍👨|🏊🏻‍♀️|👱🏼‍♀️|👱🏼‍♂️|👱🏽‍♀️|👱🏽‍♂️|👱🏻‍♂️|👱🏾‍♀️|👱🏻‍♀️|🏊🏻‍♂️|🏊🏼‍♀️|🏊🏼‍♂️|🏊🏽‍♀️|🏊🏽‍♂️|👰🏿‍♂️|🏊🏾‍♀️|👰🏿‍♀️|🏄🏼‍♀️|🏄🏼‍♂️|🏄🏽‍♀️|👳🏾‍♂️|👳🏾‍♀️|👳🏽‍♂️|👳🏽‍♀️|🏄🏽‍♂️|🏄🏾‍♀️|🏄🏾‍♂️|👳🏼‍♂️|🏄🏿‍♀️|👳🏼‍♀️|👳🏻‍♂️|👳🏻‍♀️|👱🏿‍♂️|🏄🏿‍♂️|👱🏿‍♀️|👱🏾‍♂️|🏌️‍♂️|🏌️‍♀️|🏌🏿‍♂️|🏌🏿‍♀️|🏌🏾‍♂️|🏌🏾‍♀️|🏌🏽‍♂️|🏋🏻‍♂️|🏋🏼‍♀️|🏌🏽‍♀️|🏌🏼‍♂️|🏋🏼‍♂️|🏌🏼‍♀️|🏌🏻‍♂️|🏌🏻‍♀️|🏋️‍♂️|🏋️‍♀️|🏋🏿‍♂️|🏋🏿‍♀️|🏋🏾‍♂️|🏋🏾‍♀️|🏋🏽‍♂️|👰🏾‍♂️|🏊🏾‍♂️|🏊🏿‍♀️|🏊🏿‍♂️|🏋🏻‍♀️|👰🏾‍♀️|👰🏽‍♂️|👰🏽‍♀️|👰🏼‍♂️|👰🏼‍♀️|👰🏻‍♂️|👰🏻‍♀️|👮🏿‍♂️|👮🏿‍♀️|👮🏾‍♂️|👮🏾‍♀️|👮🏽‍♂️|👮🏽‍♀️|👮🏼‍♂️|👮🏼‍♀️|👮🏻‍♂️|👮🏻‍♀️|👩🏾‍⚖️|👩🏾‍✈️|🏃🏽‍➡️|🏃🏼‍➡️|🏃🏻‍➡️|🫱🏿‍🫲🏾|🫱🏿‍🫲🏽|🫱🏿‍🫲🏼|🫱🏿‍🫲🏻|🫱🏾‍🫲🏿|🫱🏾‍🫲🏽|🫱🏾‍🫲🏼|🫱🏾‍🫲🏻|🫱🏽‍🫲🏿|🫱🏽‍🫲🏾|🫱🏽‍🫲🏼|🫱🏽‍🫲🏻|🫱🏼‍🫲🏿|👩🏿‍⚕️|👩🏿‍⚖️|👩🏿‍✈️|🫱🏼‍🫲🏾|🫱🏼‍🫲🏽|🫱🏼‍🫲🏻|🫱🏻‍🫲🏿|🫱🏻‍🫲🏾|🫱🏻‍🫲🏽|👨🏿‍⚕️|👨🏿‍⚖️|👨🏿‍✈️|👨🏾‍✈️|👨🏾‍⚖️|👨🏾‍⚕️|👨🏽‍✈️|👨🏽‍⚖️|👨🏽‍⚕️|👩🏻‍⚕️|👩🏻‍⚖️|👩🏻‍✈️|👩🏼‍⚕️|👩🏼‍⚖️|👩🏼‍✈️|👨🏼‍✈️|👨🏼‍⚖️|👨🏼‍⚕️|👩🏽‍⚕️|👩🏽‍⚖️|👩🏽‍✈️|👨🏻‍✈️|👨🏻‍⚖️|👨🏻‍⚕️|🏃🏿‍➡️|🏃🏾‍➡️|👩🏾‍⚕️|🧑🏿‍⚖️|🧑🏿‍✈️|⛹🏻‍♀️|⛹🏻‍♂️|⛹🏼‍♀️|⛹🏼‍♂️|⛹🏽‍♀️|⛹🏽‍♂️|⛹🏾‍♀️|⛹🏾‍♂️|⛹🏿‍♀️|⛹🏿‍♂️|⛹️‍♀️|⛹️‍♂️|🏃🏻‍♀️|🏃🏻‍♂️|🏃🏼‍♀️|🏃🏼‍♂️|🏃🏽‍♀️|🏃🏽‍♂️|🏃🏾‍♀️|🏃🏾‍♂️|🏃🏿‍♀️|🏃🏿‍♂️|🏄🏻‍♀️|🏄🏻‍♂️|🏋🏽‍♀️|🫱🏻‍🫲🏼|🚶🏻‍➡️|🚶🏼‍➡️|🚶🏽‍➡️|🚶🏾‍➡️|🚶🏿‍➡️|🧎🏻‍➡️|🧎🏼‍➡️|🧎🏽‍➡️|🧎🏾‍➡️|🧎🏿‍➡️|🧑🏻‍⚕️|🧑🏻‍⚖️|🧑🏻‍✈️|🧑🏼‍⚕️|🧑🏼‍⚖️|🧑🏼‍✈️|🧑‍🧒‍🧒|🧑‍🧑‍🧒|🧑‍🤝‍🧑|🧑🏽‍⚕️|🧑🏽‍⚖️|🧑🏽‍✈️|🧑🏾‍⚕️|🧑🏾‍⚖️|🧑🏾‍✈️|🧎🏼‍♀️|🧎🏻‍♂️|🧎🏻‍♀️|🧍🏿‍♂️|🧍🏿‍♀️|🧍🏾‍♂️|🧍🏾‍♀️|🧍🏽‍♂️|🧍🏽‍♀️|🧍🏼‍♂️|🧍🏼‍♀️|🧍🏻‍♂️|🧍🏻‍♀️|🦹🏿‍♂️|🦹🏿‍♀️|🦹🏾‍♂️|🦹🏾‍♀️|🦹🏽‍♂️|🦹🏽‍♀️|🦹🏼‍♂️|🦹🏼‍♀️|🦹🏻‍♂️|🦹🏻‍♀️|🦸🏿‍♂️|🧔🏾‍♀️|🧔🏽‍♂️|🧔🏽‍♀️|🧔🏼‍♂️|🧔🏼‍♀️|🧔🏻‍♂️|🧔🏻‍♀️|🧏🏿‍♂️|🧏🏿‍♀️|🧏🏾‍♂️|🧏🏾‍♀️|🧏🏽‍♂️|🧏🏽‍♀️|🧏🏼‍♂️|🧏🏼‍♀️|🧏🏻‍♂️|🧏🏻‍♀️|🧎🏿‍♂️|🧎🏿‍♀️|🧎🏾‍♂️|🧎🏾‍♀️|🧎🏽‍♂️|🧎🏽‍♀️|🧎🏼‍♂️|🦸🏿‍♀️|🤽🏼‍♂️|🤽🏼‍♀️|🤽🏻‍♂️|🤽🏻‍♀️|🤹🏿‍♂️|🤹🏿‍♀️|🤹🏾‍♂️|🤹🏾‍♀️|🤹🏽‍♂️|🤹🏽‍♀️|🤹🏼‍♂️|🤹🏼‍♀️|🤹🏻‍♂️|🤹🏻‍♀️|🤸🏿‍♂️|🤸🏿‍♀️|🤸🏾‍♂️|🤸🏾‍♀️|🤸🏽‍♂️|🤸🏽‍♀️|🤸🏼‍♂️|🤸🏼‍♀️|🤸🏻‍♂️|🤸🏻‍♀️|🦸🏾‍♂️|🦸🏾‍♀️|🦸🏽‍♂️|🦸🏽‍♀️|🦸🏼‍♂️|🦸🏼‍♀️|🦸🏻‍♂️|🦸🏻‍♀️|🤾🏿‍♂️|🤾🏿‍♀️|🤾🏾‍♂️|🤾🏾‍♀️|🤾🏽‍♂️|🤾🏽‍♀️|🤾🏼‍♂️|🤾🏼‍♀️|🤾🏻‍♂️|🤾🏻‍♀️|🤽🏿‍♂️|🤽🏿‍♀️|🤽🏾‍♂️|🤽🏾‍♀️|🤽🏽‍♂️|🤽🏽‍♀️|🧜🏿‍♂️|🧜🏿‍♀️|🧜🏾‍♂️|🧜🏾‍♀️|🧜🏽‍♂️|🧜🏽‍♀️|🧜🏼‍♂️|🧜🏼‍♀️|🧜🏻‍♂️|🧜🏻‍♀️|🧛🏿‍♂️|🧛🏿‍♀️|🧛🏾‍♂️|🧛🏾‍♀️|🧛🏽‍♂️|🧛🏽‍♀️|🧛🏼‍♂️|🧛🏼‍♀️|🧛🏻‍♂️|🧛🏻‍♀️|🧚🏿‍♂️|🧚🏿‍♀️|🧚🏾‍♂️|🧚🏾‍♀️|👨‍👦‍👦|👨‍👧‍👦|👨‍👧‍👧|👁️‍🗨️|👨‍👨‍👦|👨‍👨‍👧|👨‍👩‍👦|🏳️‍⚧️|👨‍👩‍👧|👩‍👦‍👦|👩‍👧‍👦|👩‍👧‍👧|👩‍👩‍👦|🧝🏿‍♂️|🧝🏿‍♀️|🧝🏾‍♂️|🧝🏾‍♀️|🧝🏽‍♂️|🧝🏽‍♀️|🧝🏼‍♂️|🧝🏼‍♀️|🧝🏻‍♂️|🧝🏻‍♀️|👩‍👩‍👧|🧚🏽‍♂️|🧘🏻‍♀️|🧗🏿‍♂️|🧗🏿‍♀️|🧗🏾‍♂️|🧗🏾‍♀️|🧗🏽‍♂️|🧗🏽‍♀️|🧗🏼‍♂️|🧗🏼‍♀️|🧗🏻‍♂️|🧗🏻‍♀️|🧖🏿‍♂️|🧖🏿‍♀️|🧖🏾‍♂️|🧖🏾‍♀️|🧖🏽‍♂️|🧖🏽‍♀️|🧖🏼‍♂️|🧖🏼‍♀️|🧖🏻‍♂️|🧖🏻‍♀️|🧔🏿‍♂️|🧔🏿‍♀️|🧔🏾‍♂️|🧚🏽‍♀️|🧚🏼‍♂️|🧚🏼‍♀️|🧚🏻‍♂️|🧚🏻‍♀️|🧙🏿‍♂️|🧙🏿‍♀️|🧙🏾‍♂️|🧙🏾‍♀️|🧙🏽‍♂️|🧙🏽‍♀️|🧙🏼‍♂️|🧙🏼‍♀️|🧙🏻‍♂️|🧙🏻‍♀️|🧘🏿‍♂️|🧘🏿‍♀️|🧘🏾‍♂️|🧘🏾‍♀️|🧘🏽‍♂️|🧘🏽‍♀️|🧘🏼‍♂️|🧘🏼‍♀️|🧘🏻‍♂️|🙅🏿‍♀️|🙅🏾‍♂️|🙅🏾‍♀️|🙅🏽‍♂️|🙅🏽‍♀️|🙅🏼‍♂️|🙅🏼‍♀️|🙅🏻‍♂️|🙅🏻‍♀️|🕵️‍♂️|🕵️‍♀️|🕵🏿‍♂️|🕵🏿‍♀️|🕵🏾‍♂️|🕵🏾‍♀️|🕵🏽‍♂️|🕵🏽‍♀️|🕵🏼‍♂️|🕵🏼‍♀️|🕵🏻‍♂️|🕵🏻‍♀️|💇🏿‍♂️|💇🏿‍♀️|💇🏾‍♂️|🙋🏼‍♀️|🙋🏻‍♂️|🙋🏻‍♀️|🙇🏿‍♂️|🙇🏿‍♀️|🙇🏾‍♂️|🙇🏾‍♀️|🙇🏽‍♂️|🙇🏽‍♀️|🙇🏼‍♂️|🙇🏼‍♀️|🙇🏻‍♂️|🙇🏻‍♀️|🙆🏿‍♂️|🙆🏿‍♀️|🙆🏾‍♂️|🙆🏾‍♀️|🙆🏽‍♂️|🙆🏽‍♀️|🙆🏼‍♂️|🙆🏼‍♀️|🙆🏻‍♂️|🙆🏻‍♀️|🙅🏿‍♂️|💇🏾‍♀️|💂🏻‍♂️|💂🏻‍♀️|💁🏿‍♂️|💁🏿‍♀️|💁🏾‍♂️|💁🏾‍♀️|💁🏽‍♂️|💁🏽‍♀️|💁🏼‍♂️|💁🏼‍♀️|💁🏻‍♂️|💁🏻‍♀️|👷🏿‍♂️|👷🏿‍♀️|👷🏾‍♂️|👷🏾‍♀️|👷🏽‍♂️|👷🏽‍♀️|👷🏼‍♂️|👷🏼‍♀️|👷🏻‍♂️|👷🏻‍♀️|👳🏿‍♂️|👳🏿‍♀️|💇🏽‍♂️|💇🏽‍♀️|💇🏼‍♂️|💇🏼‍♀️|💇🏻‍♂️|💇🏻‍♀️|💆🏿‍♂️|💆🏿‍♀️|💆🏾‍♂️|💆🏾‍♀️|💆🏽‍♂️|💆🏽‍♀️|💆🏼‍♂️|💆🏼‍♀️|💆🏻‍♂️|💆🏻‍♀️|💂🏿‍♂️|💂🏿‍♀️|💂🏾‍♂️|💂🏾‍♀️|💂🏽‍♂️|💂🏽‍♀️|💂🏼‍♂️|💂🏼‍♀️|🤦🏽‍♀️|🤦🏼‍♂️|🤦🏼‍♀️|🤦🏻‍♂️|🤦🏻‍♀️|🚶🏿‍♂️|🚶🏿‍♀️|🚶🏾‍♂️|🚶🏾‍♀️|🚶🏽‍♂️|🚶🏽‍♀️|🚶🏼‍♂️|🚶🏼‍♀️|🚶🏻‍♂️|🚶🏻‍♀️|🚵🏿‍♂️|🚵🏿‍♀️|🚵🏾‍♂️|🚵🏾‍♀️|🚵🏽‍♂️|🚵🏽‍♀️|🚵🏼‍♂️|🚵🏼‍♀️|🚵🏻‍♂️|🚵🏻‍♀️|🤷🏿‍♂️|🤷🏿‍♀️|🤷🏾‍♂️|🤷🏾‍♀️|🤷🏽‍♂️|🤷🏽‍♀️|🤷🏼‍♂️|🤷🏼‍♀️|🤷🏻‍♂️|🤷🏻‍♀️|🤵🏿‍♂️|🤵🏿‍♀️|🤵🏾‍♂️|🤵🏾‍♀️|🤵🏽‍♂️|🤵🏽‍♀️|🤵🏼‍♂️|🤵🏼‍♀️|🤵🏻‍♂️|🤵🏻‍♀️|🤦🏿‍♂️|🤦🏿‍♀️|🤦🏾‍♂️|🤦🏾‍♀️|🤦🏽‍♂️|🚴🏿‍♂️|🙎🏼‍♀️|🙎🏼‍♂️|🚣🏿‍♂️|🙎🏽‍♀️|🚣🏿‍♀️|🙋🏿‍♀️|🙋🏿‍♂️|🚣🏾‍♂️|🚣🏾‍♀️|🚣🏽‍♂️|🚣🏽‍♀️|🚣🏼‍♂️|🚣🏼‍♀️|🚣🏻‍♂️|🙍🏻‍♀️|🚣🏻‍♀️|🙍🏻‍♂️|🙎🏿‍♂️|🙎🏽‍♂️|🙍🏼‍♀️|🙎🏾‍♀️|🙍🏼‍♂️|🙍🏽‍♀️|🙍🏽‍♂️|🙎🏾‍♂️|🙎🏿‍♀️|🚴🏿‍♀️|🚴🏾‍♂️|🚴🏾‍♀️|🧑🏿‍⚕️|🙋🏼‍♂️|🙍🏾‍♂️|🙋🏽‍♀️|🙋🏽‍♂️|🚴🏽‍♂️|🚴🏽‍♀️|🚴🏼‍♂️|🚴🏼‍♀️|🙋🏾‍♀️|🚴🏻‍♂️|🙋🏾‍♂️|🚴🏻‍♀️|🙍🏿‍♀️|🙍🏿‍♂️|🙎🏻‍♀️|🙎🏻‍♂️|🙍🏾‍♀️|👨🏽‍💻|👨🏽‍💼|👨🏽‍🔧|👨🏽‍🏭|👨🏽‍🏫|👨🏽‍🎨|👨🏽‍🎤|👨🏾‍🚀|👨🏾‍🔬|👨🏾‍🔧|👨🏾‍💼|👨🏾‍💻|👨🏾‍🏭|👨🏾‍🏫|👨🏾‍🎨|👨🏾‍🎤|👨🏾‍🎓|👨🏾‍🍼|👨🏾‍🍳|👨🏾‍🌾|👨🏽‍🦽|👨🏽‍🦼|👨🏽‍🦯|👨🏽‍🚒|👨🏽‍🚀|👨🏽‍🔬|🏃‍➡️|👨🏻‍🦽|👨🏻‍🦼|👨🏻‍🦯|👨🏻‍🚒|👨🏻‍🚀|👨🏻‍🔬|👨🏻‍🔧|👨🏻‍💼|👨🏻‍💻|👨🏻‍🏭|👨🏻‍🏫|👨🏻‍🎨|👨🏻‍🎤|👨🏻‍🎓|👨🏻‍🍼|👨🏻‍🍳|👨🏻‍🌾|👨‍⚕️|👨‍⚖️|👨‍✈️|👨🏽‍🎓|👨🏽‍🍼|👨🏽‍🍳|👨🏽‍🌾|👨🏼‍🦽|👨🏼‍🦼|👨🏼‍🦯|👨🏼‍🚒|👨🏼‍🚀|👨🏼‍🔬|👨🏼‍🔧|👨🏼‍💼|👨🏼‍💻|👨🏼‍🏭|👨🏼‍🏫|👨🏼‍🎨|👨🏼‍🎤|👨🏼‍🎓|👨🏼‍🍼|👨🏼‍🍳|🙇‍♂️|🙇‍♀️|🙆‍♂️|🙆‍♀️|🙅‍♂️|🙅‍♀️|💇‍♂️|💇‍♀️|💆‍♂️|💆‍♀️|💂‍♂️|💂‍♀️|💁‍♂️|💁‍♀️|👷‍♂️|👷‍♀️|👳‍♂️|👳‍♀️|👱‍♂️|👱‍♀️|👰‍♂️|👰‍♀️|👯‍♂️|👯‍♀️|👮‍♂️|👮‍♀️|🤼‍♂️|🤼‍♀️|🤹‍♂️|🤹‍♀️|🤸‍♂️|🤸‍♀️|🤷‍♂️|🤷‍♀️|🤵‍♂️|🤵‍♀️|🤦‍♂️|🤦‍♀️|🚶‍♂️|🚶‍♀️|🚵‍♂️|🚵‍♀️|🚴‍♂️|🚴‍♀️|🚣‍♂️|🚣‍♀️|🙎‍♂️|🙎‍♀️|🙍‍♂️|🙍‍♀️|🙋‍♂️|🙋‍♀️|🏊‍♂️|🧑🏾‍🚒|🧑🏾‍🚀|🧑🏾‍🔬|🧑🏾‍🔧|🧑🏾‍💼|🧑🏾‍💻|🧑🏾‍🏭|🧑🏾‍🏫|🧑🏾‍🎨|🧑🏾‍🎤|🧑🏾‍🎓|🧑🏾‍🎄|🧑🏾‍🍼|🧑🏾‍🍳|🧑🏾‍🌾|🧑🏽‍🦽|🧑🏽‍🦼|🧑🏽‍🦯|🧑🏽‍🚒|🧑🏽‍🚀|🧑🏽‍🔬|🧑🏽‍🔧|🧑🏽‍💼|🧑🏽‍💻|🧑🏽‍🏭|🧑🏽‍🏫|🏊‍♀️|🏄‍♂️|🏄‍♀️|🏃‍♂️|🏃‍♀️|🧑🏿‍🦽|🧑🏿‍🦼|🧑🏿‍🦯|🧑🏿‍🚒|🧑🏿‍🚀|🧑🏿‍🔬|🧑🏿‍🔧|🧑🏿‍💼|🧑🏿‍💻|🧑🏿‍🏭|🧑🏿‍🏫|🧑🏿‍🎨|🧑🏿‍🎤|🧑🏿‍🎓|🧑🏿‍🎄|🧑🏿‍🍼|🧑🏿‍🍳|🧑🏿‍🌾|🧑🏾‍🦽|🧑🏾‍🦼|🧑🏾‍🦯|🧑🏻‍🦲|🧑🏻‍🦱|🧑🏻‍🦰|👩🏿‍🦳|👩🏿‍🦲|👩🏿‍🦱|👩🏿‍🦰|👩🏾‍🦳|👩🏾‍🦲|👩🏾‍🦱|👩🏾‍🦰|👩🏽‍🦳|👩🏽‍🦲|👩🏽‍🦱|👩🏽‍🦰|👩🏼‍🦳|👩🏼‍🦲|👩🏼‍🦱|👩🏼‍🦰|👩🏻‍🦳|👩🏻‍🦲|👩🏻‍🦱|👩🏻‍🦰|👨🏿‍🦳|👨🏿‍🦲|👨🏿‍🦱|🙂‍↕️|🙂‍↔️|😶‍🌫️|🐻‍❄️|🏴‍☠️|🏳️‍🌈|❤️‍🩹|❤️‍🔥|⛓️‍💥|🧑🏿‍🦳|🧑🏿‍🦲|🧑🏿‍🦱|🧑🏿‍🦰|🧑🏾‍🦳|🧑🏾‍🦲|🧑🏾‍🦱|🧑🏾‍🦰|🧑🏽‍🦳|🧑🏽‍🦲|🧑🏽‍🦱|🧑🏽‍🦰|🧑🏼‍🦳|🧑🏼‍🦲|🧑🏼‍🦱|🧑🏼‍🦰|🧑🏻‍🦳|👨🏿‍🦰|🧚‍♂️|🧚‍♀️|🧙‍♂️|🧙‍♀️|🧘‍♂️|🧘‍♀️|🧗‍♂️|🧗‍♀️|🧖‍♂️|🧖‍♀️|🧔‍♂️|🧔‍♀️|🧏‍♂️|🧏‍♀️|🧎‍♂️|🧎‍♀️|🧍‍♂️|🧍‍♀️|🦹‍♂️|🦹‍♀️|🦸‍♂️|🦸‍♀️|🤾‍♂️|🤾‍♀️|🤽‍♂️|🤽‍♀️|👨🏾‍🦳|👨🏾‍🦲|👨🏾‍🦱|👨🏾‍🦰|👨🏽‍🦳|👨🏽‍🦲|👨🏽‍🦱|👨🏽‍🦰|👨🏼‍🦳|👨🏼‍🦲|👨🏼‍🦱|👨🏼‍🦰|👨🏻‍🦳|👨🏻‍🦲|👨🏻‍🦱|👨🏻‍🦰|🧟‍♂️|🧟‍♀️|🧞‍♂️|🧞‍♀️|🧝‍♂️|🧝‍♀️|🧜‍♂️|🧜‍♀️|🧛‍♂️|🧛‍♀️|👩🏽‍🏭|👩🏽‍🏫|👩🏽‍🎨|👩🏽‍🎤|👩🏽‍🎓|👩🏽‍🍼|👩🏽‍🍳|👩🏽‍🌾|👩🏼‍🦽|👩🏼‍🦼|👩🏼‍🦯|👩🏼‍🚒|👩🏼‍🚀|👩🏼‍🔬|👩🏼‍🔧|👩🏼‍💼|👩🏼‍💻|👩🏼‍🏭|👩🏼‍🏫|👩🏼‍🎨|👩🏼‍🎤|👩🏼‍🎓|👩🏾‍🚀|👩🏾‍🔬|👩🏾‍🔧|👩🏾‍💼|👩🏾‍💻|👩🏾‍🏭|👩🏾‍🏫|👩🏾‍🎨|👩🏾‍🎤|👩🏾‍🎓|👩🏾‍🍼|👩🏾‍🍳|👩🏾‍🌾|👩🏽‍🦽|👩🏽‍🦼|👩🏽‍🦯|👩🏽‍🚒|👩🏽‍🚀|👩🏽‍🔬|👩🏽‍🔧|👩🏽‍💼|👩🏽‍💻|👩‍⚕️|👨🏿‍🦽|👨🏿‍🦼|👨🏿‍🦯|👨🏿‍🚒|👨🏿‍🚀|👨🏿‍🔬|👨🏿‍🔧|👨🏿‍💼|👨🏿‍💻|👨🏿‍🏭|👨🏿‍🏫|👨🏿‍🎨|👨🏿‍🎤|👨🏿‍🎓|👨🏿‍🍼|👨🏿‍🍳|👨🏿‍🌾|👨🏾‍🦽|👨🏾‍🦼|👨🏾‍🦯|👨🏾‍🚒|👩🏼‍🍼|👩🏼‍🍳|👩🏼‍🌾|👩🏻‍🦽|👩🏻‍🦼|👩🏻‍🦯|👩🏻‍🚒|👩🏻‍🚀|👩🏻‍🔬|👩🏻‍🔧|👩🏻‍💼|👩🏻‍💻|👩🏻‍🏭|👩🏻‍🏫|👩🏻‍🎨|👩🏻‍🎤|👩🏻‍🎓|👩🏻‍🍼|👩🏻‍🍳|👩🏻‍🌾|👩‍✈️|👩‍⚖️|🧑🏼‍🍼|🧑🏼‍🍳|🧑🏼‍🌾|🧑🏻‍🦽|🧑🏻‍🦼|🧑🏻‍🦯|🧑🏻‍🚒|🧑🏻‍🚀|🧑🏻‍🔬|🧑🏻‍🔧|🧑🏻‍💼|🧑🏻‍💻|🧑🏻‍🏭|🧑🏻‍🏫|🧑🏻‍🎨|🧑🏻‍🎤|🧑🏻‍🎓|🧑🏻‍🎄|🧑🏻‍🍼|🧑🏻‍🍳|🧑🏻‍🌾|🧑‍✈️|🧑🏽‍🎨|🧑🏽‍🎤|🧑🏽‍🎓|🧑🏽‍🎄|🧑🏽‍🍼|🧑🏽‍🍳|🧑🏽‍🌾|🧑🏼‍🦽|🧑🏼‍🦼|🧑🏼‍🦯|🧑🏼‍🚒|🧑🏼‍🚀|🧑🏼‍🔬|🧑🏼‍🔧|🧑🏼‍💼|🧑🏼‍💻|🧑🏼‍🏭|🧑🏼‍🏫|🧑🏼‍🎨|🧑🏼‍🎤|🧑🏼‍🎓|🧑‍⚖️|🧑‍⚕️|🧎‍➡️|🚶‍➡️|👩🏿‍🦽|👩🏿‍🦼|👩🏿‍🦯|👩🏿‍🚒|👩🏿‍🚀|👩🏿‍🔬|👩🏿‍🔧|👩🏿‍💼|👩🏿‍💻|👩🏿‍🏭|👩🏿‍🏫|👩🏿‍🎨|👩🏿‍🎤|👩🏿‍🎓|👩🏿‍🍼|👩🏿‍🍳|👩🏿‍🌾|👩🏾‍🦽|👩🏾‍🦼|👩🏾‍🦯|👩🏾‍🚒|🧑🏼‍🎄|👨🏼‍🌾|🧑‍🧒|👩‍👧|🧑‍💻|👩‍👦|👨‍🦰|👨‍🦱|👨‍🦲|👨‍🦳|🧑‍💼|👨‍🌾|👨‍🍳|👨‍🍼|👨‍🎓|👨‍🎤|👨‍🎨|👩‍🌾|👩‍🍳|👩‍🍼|👩‍🎓|🧑‍🌾|👨‍👦|🧑‍🍳|👨‍👧|😵‍💫|😮‍💨|🧑‍🍼|🐦‍🔥|🐦‍⬛|🐕‍🦺|🐈‍⬛|🧑‍🎄|🧑‍🎓|🍋‍🟩|🍄‍🟫|🧑‍🎤|🧑‍🎨|🧑‍🏫|🧑‍🏭|👨‍💻|👨‍💼|👨‍🔧|👨‍🔬|👨‍🚀|👩‍🦳|👩‍🦲|👩‍🦱|👩‍🦰|👨‍🚒|👨‍🦯|🧑‍🔧|👨‍🦼|🧑‍🔬|👨‍🦽|🧑‍🚀|🧑‍🚒|🧑‍🦯|🧑‍🦼|🧑‍🦳|🧑‍🦲|🧑‍🦱|🧑‍🦰|👩‍🎤|👩‍🎨|👩‍🏫|👩‍🏭|👩‍💻|👩‍💼|👩‍🔧|👩‍🔬|👩‍🚀|👩‍🚒|👩‍🦯|👩‍🦼|👩‍🦽|👨‍🏫|👨‍🏭|🧑‍🦽)|(?:🏴󠁧󠁢󠁷󠁬󠁳󠁿|🏴󠁧󠁢󠁳󠁣󠁴󠁿|🏴󠁧󠁢󠁥󠁮󠁧󠁿)|(?:🇦🇨|🇦🇩|🇦🇪|🇦🇫|🇦🇬|🇦🇮|🇦🇱|🇦🇲|🇦🇴|🇦🇶|🇦🇷|🇦🇸|🇦🇹|🇦🇺|🇦🇼|🇦🇽|🇦🇿|🇧🇦|🇧🇧|🇧🇩|🇧🇪|🇧🇫|🇧🇬|🇧🇭|🇧🇮|🇧🇯|🇧🇱|🇧🇲|🇧🇳|🇧🇴|🇧🇶|🇧🇷|🇧🇸|🇧🇹|🇧🇻|🇧🇼|🇧🇾|🇧🇿|🇨🇦|🇨🇨|🇨🇩|🇨🇫|🇨🇬|🇨🇭|🇨🇮|🇨🇰|🇨🇱|🇨🇲|🇨🇳|🇨🇴|🇨🇵|🇨🇶|🇨🇷|🇨🇺|🇨🇻|🇨🇼|🇨🇽|🇨🇾|🇨🇿|🇩🇪|🇩🇬|🇩🇯|🇩🇰|🇩🇲|🇩🇴|🇩🇿|🇪🇦|🇪🇨|🇪🇪|🇪🇬|🇪🇭|🇪🇷|🇪🇸|🇪🇹|🇪🇺|🇫🇮|🇫🇯|🇫🇰|🇫🇲|🇫🇴|🇫🇷|🇬🇦|🇬🇧|🇬🇩|🇬🇪|🇬🇫|🇬🇬|🇬🇭|🇬🇮|🇬🇱|🇬🇲|🇬🇳|🇬🇵|🇬🇶|🇬🇷|🇬🇸|🇬🇹|🇬🇺|🇬🇼|🇬🇾|🇭🇰|🇭🇲|🇭🇳|🇭🇷|🇭🇹|🇭🇺|🇮🇨|🇮🇩|🇮🇪|🇮🇱|🇮🇲|🇮🇳|🇮🇴|🇮🇶|🇮🇷|🇮🇸|🇮🇹|🇯🇪|🇯🇲|🇯🇴|🇯🇵|🇰🇪|🇰🇬|🇰🇭|🇰🇮|🇰🇲|🇰🇳|🇰🇵|🇰🇷|🇰🇼|🇰🇾|🇰🇿|🇱🇦|🇱🇧|🇱🇨|🇱🇮|🇱🇰|🇱🇷|🇱🇸|🇱🇹|🇱🇺|🇱🇻|🇱🇾|🇲🇦|🇲🇨|🇲🇩|🇲🇪|🇲🇫|🇲🇬|🇲🇭|🇲🇰|🇲🇱|🇲🇲|🇲🇳|🇲🇴|🇲🇵|🇲🇶|🇲🇷|🇲🇸|🇲🇹|🇲🇺|🇲🇻|🇲🇼|🇲🇽|🇲🇾|🇲🇿|🇳🇦|🇳🇨|🇳🇪|🇳🇫|🇳🇬|🇳🇮|🇳🇱|🇳🇴|🇳🇵|🇳🇷|🇳🇺|🇳🇿|🇴🇲|🇵🇦|🇵🇪|🇵🇫|🇵🇬|🇵🇭|🇵🇰|🇵🇱|🇵🇲|🇵🇳|🇵🇷|🇵🇸|🇵🇹|🇵🇼|🇵🇾|🇶🇦|🇷🇪|🇷🇴|🇷🇸|🇷🇺|🇷🇼|🇸🇦|🇸🇧|🇸🇨|🇸🇩|🇸🇪|🇸🇬|🇸🇭|🇸🇮|🇸🇯|🇸🇰|🇸🇱|🇸🇲|🇸🇳|🇸🇴|🇸🇷|🇸🇸|🇸🇹|🇸🇻|🇸🇽|🇸🇾|🇸🇿|🇹🇦|🇹🇨|🇹🇩|🇹🇫|🇹🇬|🇹🇭|🇹🇯|🇹🇰|🇹🇱|🇹🇲|🇹🇳|🇹🇴|🇹🇷|🇹🇹|🇹🇻|🇹🇼|🇹🇿|🇺🇦|🇺🇬|🇺🇲|🇺🇳|🇺🇸|🇺🇾|🇺🇿|🇻🇦|🇻🇨|🇻🇪|🇻🇬|🇻🇮|🇻🇳|🇻🇺|🇼🇫|🇼🇸|🇽🇰|🇾🇪|🇾🇹|🇿🇦|🇿🇲|🇿🇼)|(?:[\#\*0-9]️⃣|[☝⛹✊-✍🎅🏂-🏄🏇🏊-🏌👂👃👆-👐👦-👸👼💁-💃💅-💇💏💑💪🕴🕵🕺🖐🖕🖖🙅-🙇🙋-🙏🚣🚴-🚶🛀🛌🤌🤏🤘-🤟🤦🤰-🤹🤼-🤾🥷🦵🦶🦸🦹🦻🧍-🧏🧑-🧝🫃-🫅🫰-🫸][🏻-🏿]|(?![\#\*0-9‍⃣️🇦-🇿🏻-🏿🦰-🦳󠀠-󠁿])(?:[\#\*0-9©®‼⁉™ℹ↔-↙↩↪⌨⏏⏭-⏯⏱⏲⏸-⏺Ⓜ▪▫▶◀◻◼☀-☄☎☑☘☝☠☢☣☦☪☮☯☸-☺♀♂♟♠♣♥♦♨♻♾⚒⚔-⚗⚙⚛⚜⚠⚧⚰⚱⛈⛏⛑⛓⛩⛰⛱⛴⛷-⛹✂✈✉✌✍✏✒✔✖✝✡✳✴❄❇❣❤➡⤴⤵⬅-⬇〰〽㊗㊙🅰🅱🅾🅿🈂🈷🌡🌤-🌬🌶🍽🎖🎗🎙-🎛🎞🎟🏋-🏎🏔-🏟🏳🏵🏷🐿👁📽🕉🕊🕯🕰🕳-🕹🖇🖊-🖍🖐🖥🖨🖱🖲🖼🗂-🗄🗑-🗓🗜-🗞🗡🗣🗨🗯🗳🗺🛋🛍-🛏🛠-🛥🛩🛰🛳]️|[⌚⌛⏩-⏬⏰⏳◽◾☔☕♈-♓♿⚓⚡⚪⚫⚽⚾⛄⛅⛎⛔⛪⛲⛳⛵⛺⛽✅✊✋✨❌❎❓-❕❗➕-➗➰➿⬛⬜⭐⭕🀄🃏🆎🆑-🆚🇦-🇿🈁🈚🈯🈲-🈶🈸-🈺🉐🉑🌀-🌠🌭-🌵🌷-🍼🍾-🎓🎠-🏊🏏-🏓🏠-🏰🏴🏸-🐾👀👂-📼📿-🔽🕋-🕎🕐-🕧🕺🖕🖖🖤🗻-🙏🚀-🛅🛌🛐-🛒🛕-🛗🛜-🛟🛫🛬🛴-🛼🟠-🟫🟰🤌-🤺🤼-🥅🥇-🧿🩰-🩼🪀-🪉🪏-🫆🫎-🫜🫟-🫩🫰-🫸](?!︎)️?))|[🏻-🏿🦰-🦳])/
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # This file was generated by a script, please do not edit it by hand.
2
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
3
+
4
+ module Unicode
5
+ module Emoji
6
+ REGEX_BASIC = /(?:(?![\#\*0-9‍⃣️🇦-🇿🏻-🏿🦰-🦳󠀠-󠁿])(?:[\#\*0-9©®‼⁉™ℹ↔-↙↩↪⌨⏏⏭-⏯⏱⏲⏸-⏺Ⓜ▪▫▶◀◻◼☀-☄☎☑☘☝☠☢☣☦☪☮☯☸-☺♀♂♟♠♣♥♦♨♻♾⚒⚔-⚗⚙⚛⚜⚠⚧⚰⚱⛈⛏⛑⛓⛩⛰⛱⛴⛷-⛹✂✈✉✌✍✏✒✔✖✝✡✳✴❄❇❣❤➡⤴⤵⬅-⬇〰〽㊗㊙🅰🅱🅾🅿🈂🈷🌡🌤-🌬🌶🍽🎖🎗🎙-🎛🎞🎟🏋-🏎🏔-🏟🏳🏵🏷🐿👁📽🕉🕊🕯🕰🕳-🕹🖇🖊-🖍🖐🖥🖨🖱🖲🖼🗂-🗄🗑-🗓🗜-🗞🗡🗣🗨🗯🗳🗺🛋🛍-🛏🛠-🛥🛩🛰🛳]️|[⌚⌛⏩-⏬⏰⏳◽◾☔☕♈-♓♿⚓⚡⚪⚫⚽⚾⛄⛅⛎⛔⛪⛲⛳⛵⛺⛽✅✊✋✨❌❎❓-❕❗➕-➗➰➿⬛⬜⭐⭕🀄🃏🆎🆑-🆚🇦-🇿🈁🈚🈯🈲-🈶🈸-🈺🉐🉑🌀-🌠🌭-🌵🌷-🍼🍾-🎓🎠-🏊🏏-🏓🏠-🏰🏴🏸-🐾👀👂-📼📿-🔽🕋-🕎🕐-🕧🕺🖕🖖🖤🗻-🙏🚀-🛅🛌🛐-🛒🛕-🛗🛜-🛟🛫🛬🛴-🛼🟠-🟫🟰🤌-🤺🤼-🥅🥇-🧿🩰-🩼🪀-🪉🪏-🫆🫎-🫜🫟-🫩🫰-🫸](?!︎)️?)|[🏻-🏿🦰-🦳])/
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # This file was generated by a script, please do not edit it by hand.
2
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
3
+
4
+ module Unicode
5
+ module Emoji
6
+ REGEX_EMOJI_KEYCAP = /[\#\*0-9]️⃣/
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # This file was generated by a script, please do not edit it by hand.
2
+ # See `$ rake generate_constants` and data/generate_constants.rb for more info.
3
+
4
+ module Unicode
5
+ module Emoji
6
+ REGEX_INCLUDE_MQE = /(?:(?:👨🏿‍❤️?‍💋‍👨🏼|👨🏿‍❤️?‍💋‍👨🏻|👩🏾‍❤️?‍💋‍👨🏼|👩🏼‍❤️?‍💋‍👩🏻|👩🏾‍❤️?‍💋‍👩🏿|🧑🏾‍❤️?‍💋‍🧑🏼|👩🏿‍❤️?‍💋‍👨🏻|🧑🏽‍❤️?‍💋‍🧑🏿|🧑🏾‍❤️?‍💋‍🧑🏽|🧑🏽‍❤️?‍💋‍🧑🏾|👨🏾‍❤️?‍💋‍👨🏿|👨🏾‍❤️?‍💋‍👨🏾|👨🏾‍❤️?‍💋‍👨🏽|👨🏾‍❤️?‍💋‍👨🏼|👨🏾‍❤️?‍💋‍👨🏻|👩🏻‍❤️?‍💋‍👩🏽|👩🏼‍❤️?‍💋‍👩🏼|👩🏻‍❤️?‍💋‍👨🏻|👩🏻‍❤️?‍💋‍👨🏼|👩🏼‍❤️?‍💋‍👩🏽|👩🏻‍❤️?‍💋‍👩🏼|🧑🏼‍❤️?‍💋‍🧑🏻|👨🏽‍❤️?‍💋‍👨🏿|👨🏽‍❤️?‍💋‍👨🏾|👨🏽‍❤️?‍💋‍👨🏽|👩🏽‍❤️?‍💋‍👨🏿|👩🏽‍❤️?‍💋‍👩🏻|👩🏼‍❤️?‍💋‍👨🏽|🧑🏾‍❤️?‍💋‍🧑🏻|🧑🏼‍❤️?‍💋‍🧑🏿|👩🏼‍❤️?‍💋‍👨🏾|👩🏿‍❤️?‍💋‍👩🏿|👩🏿‍❤️?‍💋‍👩🏾|👩🏿‍❤️?‍💋‍👩🏽|👩🏽‍❤️?‍💋‍👩🏿|👩🏿‍❤️?‍💋‍👩🏼|👩🏿‍❤️?‍💋‍👩🏻|👩🏿‍❤️?‍💋‍👨🏿|👩🏿‍❤️?‍💋‍👨🏾|👩🏿‍❤️?‍💋‍👨🏽|👩🏻‍❤️?‍💋‍👩🏿|👩🏽‍❤️?‍💋‍👨🏼|👩🏻‍❤️?‍💋‍👩🏾|👩🏾‍❤️?‍💋‍👨🏻|👩🏽‍❤️?‍💋‍👨🏻|👩🏽‍❤️?‍💋‍👩🏾|👩🏿‍❤️?‍💋‍👨🏼|👨🏿‍❤️?‍💋‍👨🏿|👨🏿‍❤️?‍💋‍👨🏾|👨🏿‍❤️?‍💋‍👨🏽|👨🏽‍❤️?‍💋‍👨🏼|👩🏾‍❤️?‍💋‍👩🏾|🧑🏿‍❤️?‍💋‍🧑🏻|👩🏻‍❤️?‍💋‍👨🏿|👨🏻‍❤️?‍💋‍👨🏿|👨🏻‍❤️?‍💋‍👨🏾|👨🏻‍❤️?‍💋‍👨🏽|👨🏻‍❤️?‍💋‍👨🏼|👨🏻‍❤️?‍💋‍👨🏻|👩🏻‍❤️?‍💋‍👩🏻|🧑🏻‍❤️?‍💋‍🧑🏿|👩🏼‍❤️?‍💋‍👩🏾|👩🏽‍❤️?‍💋‍👨🏽|🧑🏼‍❤️?‍💋‍🧑🏽|👩🏽‍❤️?‍💋‍👨🏾|👩🏼‍❤️?‍💋‍👨🏻|👩🏼‍❤️?‍💋‍👨🏼|🧑🏻‍❤️?‍💋‍🧑🏾|🧑🏽‍❤️?‍💋‍🧑🏼|👩🏼‍❤️?‍💋‍👩🏿|🧑🏽‍❤️?‍💋‍🧑🏻|🧑🏻‍❤️?‍💋‍🧑🏼|👩🏽‍❤️?‍💋‍👩🏼|🧑🏻‍❤️?‍💋‍🧑🏽|👩🏻‍❤️?‍💋‍👨🏽|👩🏻‍❤️?‍💋‍👨🏾|👩🏾‍❤️?‍💋‍👨🏽|👨🏼‍❤️?‍💋‍👨🏿|👨🏼‍❤️?‍💋‍👨🏾|🧑🏾‍❤️?‍💋‍🧑🏿|👩🏼‍❤️?‍💋‍👨🏿|🧑🏿‍❤️?‍💋‍🧑🏽|🧑🏼‍❤️?‍💋‍🧑🏾|👨🏼‍❤️?‍💋‍👨🏽|🧑🏿‍❤️?‍💋‍🧑🏾|👨🏼‍❤️?‍💋‍👨🏼|👨🏽‍❤️?‍💋‍👨🏻|👨🏼‍❤️?‍💋‍👨🏻|👩🏾‍❤️?‍💋‍👨🏾|🧑🏿‍❤️?‍💋‍🧑🏼|👩🏾‍❤️?‍💋‍👨🏿|👩🏾‍❤️?‍💋‍👩🏻|👩🏾‍❤️?‍💋‍👩🏼|👩🏾‍❤️?‍💋‍👩🏽|👩🏽‍❤️?‍💋‍👩🏽|👩🏻‍❤️?‍👨🏿|👩🏻‍❤️?‍👨🏾|👩🏻‍❤️?‍👩🏻|👩🏽‍❤️?‍👩🏼|👩🏼‍❤️?‍👨🏼|👩🏽‍❤️?‍👩🏿|👩🏽‍❤️?‍👩🏾|👩🏽‍❤️?‍👨🏻|👩🏽‍❤️?‍👩🏽|👩🏽‍❤️?‍👨🏼|👩🏾‍❤️?‍👨🏽|👩🏼‍❤️?‍👨🏻|👩🏾‍❤️?‍👨🏾|🧑🏿‍❤️?‍🧑🏽|🧑🏿‍❤️?‍🧑🏼|🧑🏿‍❤️?‍🧑🏻|🧎🏻‍♀️?‍➡️?|🧎🏿‍♂️?‍➡️?|🚶🏻‍♂️?‍➡️?|🧎🏿‍♀️?‍➡️?|🧑🏾‍❤️?‍🧑🏻|🧎🏾‍♂️?‍➡️?|🧎🏻‍♂️?‍➡️?|🧎🏾‍♀️?‍➡️?|🧎🏽‍♂️?‍➡️?|🧑🏾‍❤️?‍🧑🏼|🧎🏽‍♀️?‍➡️?|🧑🏾‍❤️?‍🧑🏿|🧎🏼‍♂️?‍➡️?|🧑🏾‍❤️?‍🧑🏽|👩🏻‍❤️?‍👩🏼|👩🏻‍❤️?‍👩🏽|🧑🏻‍❤️?‍🧑🏼|🧑🏻‍❤️?‍🧑🏽|👩🏾‍❤️?‍👨🏿|🧑🏻‍❤️?‍🧑🏾|👩🏾‍❤️?‍👩🏻|👩🏾‍❤️?‍👩🏼|👩🏾‍❤️?‍👩🏽|👩🏾‍❤️?‍👩🏾|👩🏾‍❤️?‍👩🏿|👩🏻‍❤️?‍👩🏾|👩🏻‍❤️?‍👩🏿|👩🏽‍❤️?‍👩🏻|👩🏽‍❤️?‍👨🏿|🧑🏻‍❤️?‍🧑🏿|🧑🏿‍❤️?‍🧑🏾|👩🏿‍❤️?‍👩🏻|👩🏿‍❤️?‍👩🏼|👩🏿‍❤️?‍👩🏽|👩🏼‍❤️?‍👩🏿|👨🏽‍❤️?‍👨🏻|👨🏽‍❤️?‍👨🏼|👨🏽‍❤️?‍👨🏽|👨🏽‍❤️?‍👨🏾|👨🏽‍❤️?‍👨🏿|👩🏼‍❤️?‍👩🏾|👩🏿‍❤️?‍👩🏾|👩🏿‍❤️?‍👩🏿|🚶🏽‍♂️?‍➡️?|👨🏾‍❤️?‍👨🏻|👨🏾‍❤️?‍👨🏼|👨🏾‍❤️?‍👨🏽|👨🏾‍❤️?‍👨🏾|👨🏾‍❤️?‍👨🏿|🚶🏽‍♀️?‍➡️?|👨🏿‍❤️?‍👨🏻|👨🏿‍❤️?‍👨🏼|👨‍❤️?‍💋‍👨|🚶🏾‍♀️?‍➡️?|🚶🏾‍♂️?‍➡️?|🚶🏿‍♀️?‍➡️?|🚶🏿‍♂️?‍➡️?|🏃🏿‍♂️?‍➡️?|👩🏿‍❤️?‍👨🏻|👨🏻‍❤️?‍👨🏻|👨🏻‍❤️?‍👨🏼|👨🏻‍❤️?‍👨🏽|👨🏻‍❤️?‍👨🏾|👨🏻‍❤️?‍👨🏿|👩🏿‍❤️?‍👨🏼|👩🏿‍❤️?‍👨🏽|👩🏿‍❤️?‍👨🏾|👩🏿‍❤️?‍👨🏿|👨🏼‍❤️?‍👨🏻|👨🏼‍❤️?‍👨🏼|👨🏼‍❤️?‍👨🏽|👨🏼‍❤️?‍👨🏾|🧑🏼‍❤️?‍🧑🏾|🧑🏽‍❤️?‍🧑🏾|🏃🏼‍♂️?‍➡️?|🏃🏼‍♀️?‍➡️?|👩🏽‍❤️?‍👨🏽|🏃🏻‍♂️?‍➡️?|👩🏽‍❤️?‍👨🏾|🧑🏽‍❤️?‍🧑🏿|👩🏼‍❤️?‍👨🏾|👩🏼‍❤️?‍👨🏽|🚶🏼‍♂️?‍➡️?|🧑🏼‍❤️?‍🧑🏽|🏃🏻‍♀️?‍➡️?|👩🏻‍❤️?‍👨🏻|👩🏻‍❤️?‍👨🏼|🧑🏼‍❤️?‍🧑🏻|👩🏾‍❤️?‍👨🏻|🚶🏼‍♀️?‍➡️?|👩🏾‍❤️?‍👨🏼|👩🏻‍❤️?‍👨🏽|👨🏼‍❤️?‍👨🏿|👨🏿‍❤️?‍👨🏽|👨🏿‍❤️?‍👨🏾|👨🏿‍❤️?‍👨🏿|🧑🏽‍❤️?‍🧑🏻|🧑🏽‍❤️?‍🧑🏼|👩🏼‍❤️?‍👩🏽|🏃🏿‍♀️?‍➡️?|🏃🏾‍♂️?‍➡️?|👩‍❤️?‍💋‍👨|🧎🏼‍♀️?‍➡️?|👩🏼‍❤️?‍👨🏿|👩🏼‍❤️?‍👩🏻|🏃🏽‍♀️?‍➡️?|🧑🏼‍❤️?‍🧑🏿|🚶🏻‍♀️?‍➡️?|🏃🏽‍♂️?‍➡️?|🏃🏾‍♀️?‍➡️?|👩🏼‍❤️?‍👩🏼|👩‍❤️?‍💋‍👩|👩🏻‍🤝‍👨🏾|👩🏻‍🤝‍👨🏿|🧑🏼‍🤝‍🧑🏻|🧑🏼‍🤝‍🧑🏼|🧑🏻‍🦯‍➡️?|🧑🏼‍🤝‍🧑🏽|🧑🏼‍🤝‍🧑🏾|👩🏾‍🤝‍👨🏼|👩🏿‍🤝‍👩🏾|👩🏿‍🤝‍👩🏽|👩🏿‍🤝‍👩🏼|👩🏿‍🤝‍👩🏻|👩🏿‍🤝‍👨🏾|👩🏿‍🤝‍👨🏽|👩🏿‍🤝‍👨🏼|👩🏿‍🤝‍👨🏻|🧑🏽‍🦯‍➡️?|🧑🏽‍🦼‍➡️?|🧑🏽‍🦽‍➡️?|🧑🏾‍🦯‍➡️?|👩🏾‍🤝‍👩🏿|👩🏾‍🤝‍👩🏽|👩🏾‍🤝‍👩🏼|👩🏾‍🤝‍👩🏻|👩🏾‍🤝‍👨🏿|🧑🏻‍🦼‍➡️?|🧑🏻‍🦽‍➡️?|🧑🏾‍🦽‍➡️?|👩🏾‍🤝‍👨🏻|👩🏻‍🤝‍👩🏼|👩🏻‍🤝‍👩🏽|🧑🏻‍🤝‍🧑🏿|🧑🏻‍🤝‍🧑🏾|🧑🏻‍🤝‍🧑🏽|🧑🏻‍🤝‍🧑🏼|🧑🏻‍🤝‍🧑🏻|👩🏻‍🤝‍👩🏾|👩🏻‍🤝‍👩🏿|🧑‍🧑‍🧒‍🧒|🧑🏼‍🦯‍➡️?|🧑🏾‍🦼‍➡️?|🧑🏼‍🦼‍➡️?|🧑🏼‍🦽‍➡️?|👨🏾‍🤝‍👨🏼|👨🏾‍🤝‍👨🏽|👨🏾‍🤝‍👨🏿|👨🏿‍🤝‍👨🏻|👨🏿‍🤝‍👨🏼|👨🏿‍🤝‍👨🏽|👨🏿‍🤝‍👨🏾|👨🏽‍🦽‍➡️?|👨🏽‍🦼‍➡️?|👨🏿‍🦯‍➡️?|👨🏽‍🦯‍➡️?|👨🏿‍🦼‍➡️?|👨🏿‍🦽‍➡️?|👩🏼‍🤝‍👨🏿|👨🏼‍🦽‍➡️?|👩🏼‍🤝‍👨🏾|👩🏼‍🤝‍👩🏾|👨🏼‍🦼‍➡️?|👩‍👩‍👦‍👦|👩🏼‍🤝‍👩🏿|👨🏼‍🦯‍➡️?|👩🏻‍🦯‍➡️?|👩🏻‍🦼‍➡️?|👩🏻‍🦽‍➡️?|👩🏽‍🤝‍👩🏼|👩‍👩‍👧‍👦|👩🏽‍🤝‍👩🏾|👨🏾‍🦯‍➡️?|👨🏾‍🦼‍➡️?|👨🏾‍🦽‍➡️?|👩🏼‍🤝‍👩🏽|👩🏼‍🤝‍👩🏻|👨‍👨‍👦‍👦|👩🏽‍🤝‍👩🏿|👨‍👨‍👧‍👦|👨‍👨‍👧‍👧|👨‍👩‍👦‍👦|👨‍👩‍👧‍👦|👨‍👩‍👧‍👧|👨🏻‍🤝‍👨🏼|👨🏻‍🤝‍👨🏽|👨🏻‍🤝‍👨🏾|👨🏻‍🤝‍👨🏿|👨🏼‍🤝‍👨🏻|👨🏼‍🤝‍👨🏽|👨🏼‍🤝‍👨🏾|👨🏼‍🤝‍👨🏿|👨🏽‍🤝‍👨🏻|👨🏽‍🤝‍👨🏼|👨🏽‍🤝‍👨🏾|👨🏽‍🤝‍👨🏿|🧑🏿‍🤝‍🧑🏽|🧑🏿‍🤝‍🧑🏼|🧑🏿‍🤝‍🧑🏻|👩🏿‍🦯‍➡️?|👩🏿‍🦼‍➡️?|👩🏿‍🦽‍➡️?|👩🏽‍🤝‍👨🏾|👩🏽‍🤝‍👨🏿|🧑🏾‍🤝‍🧑🏿|🧑🏾‍🤝‍🧑🏾|🧑🏾‍🤝‍🧑🏽|🧑🏾‍🤝‍🧑🏼|🧑🏾‍🤝‍🧑🏻|🧎‍♂️?‍➡️?|🧎‍♀️?‍➡️?|🧑🏽‍🤝‍🧑🏿|🧑🏽‍🤝‍🧑🏾|🧑🏽‍🤝‍🧑🏽|🧑🏽‍🤝‍🧑🏼|🧑🏽‍🤝‍🧑🏻|🚶‍♀️?‍➡️?|🚶‍♂️?‍➡️?|👩🏻‍🤝‍👨🏼|👩🏻‍🤝‍👨🏽|🧑🏼‍🤝‍🧑🏿|👩🏾‍🤝‍👨🏽|👨🏾‍🤝‍👨🏻|👩‍👩‍👧‍👧|👨🏻‍🦽‍➡️?|👨🏻‍🦼‍➡️?|👨🏻‍🦯‍➡️?|👩🏼‍🦯‍➡️?|👩🏼‍🦼‍➡️?|👩🏼‍🦽‍➡️?|👩🏽‍🤝‍👩🏻|👩🏼‍🤝‍👨🏽|👩🏼‍🤝‍👨🏻|🏃‍♂️?‍➡️?|🏃‍♀️?‍➡️?|👩🏽‍🦯‍➡️?|👩🏽‍🦼‍➡️?|👩🏽‍🦽‍➡️?|🧑🏿‍🦽‍➡️?|🧑🏿‍🦼‍➡️?|🧑🏿‍🦯‍➡️?|👩🏽‍🤝‍👨🏻|👩🏾‍🦯‍➡️?|👩🏽‍🤝‍👨🏼|👩🏾‍🦼‍➡️?|👩🏾‍🦽‍➡️?|🧑🏿‍🤝‍🧑🏿|🧑🏿‍🤝‍🧑🏾|🧑‍🦯‍➡️?|👨‍🦽‍➡️?|🧑‍🦼‍➡️?|🧑‍🦽‍➡️?|👨‍🦼‍➡️?|👩‍🦯‍➡️?|👩‍❤️?‍👩|👩‍🦼‍➡️?|👩‍❤️?‍👨|👩‍🦽‍➡️?|👨‍🦯‍➡️?|👨‍❤️?‍👨|🏊🏻‍♀️?|👱🏼‍♀️?|👱🏼‍♂️?|👱🏽‍♀️?|👱🏽‍♂️?|👱🏻‍♂️?|👱🏾‍♀️?|👱🏻‍♀️?|🏊🏻‍♂️?|🏊🏼‍♀️?|🏊🏼‍♂️?|🏊🏽‍♀️?|🏊🏽‍♂️?|👰🏿‍♂️?|🏊🏾‍♀️?|👰🏿‍♀️?|🏄🏼‍♀️?|🏄🏼‍♂️?|🏄🏽‍♀️?|👳🏾‍♂️?|👳🏾‍♀️?|👳🏽‍♂️?|👳🏽‍♀️?|🏄🏽‍♂️?|🏄🏾‍♀️?|🏄🏾‍♂️?|👳🏼‍♂️?|🏄🏿‍♀️?|👳🏼‍♀️?|👳🏻‍♂️?|👳🏻‍♀️?|👱🏿‍♂️?|🏄🏿‍♂️?|👱🏿‍♀️?|👱🏾‍♂️?|🏌️‍♂️?|🏌️‍♀️?|🏌🏿‍♂️?|🏌🏿‍♀️?|🏌🏾‍♂️?|🏌🏾‍♀️?|🏌🏽‍♂️?|🏋🏻‍♂️?|🏋🏼‍♀️?|🏌🏽‍♀️?|🏌🏼‍♂️?|🏋🏼‍♂️?|🏌🏼‍♀️?|🏌🏻‍♂️?|🏌🏻‍♀️?|🏋️‍♂️?|🏋️‍♀️?|🏋🏿‍♂️?|🏋🏿‍♀️?|🏋🏾‍♂️?|🏋🏾‍♀️?|🏋🏽‍♂️?|👰🏾‍♂️?|🏊🏾‍♂️?|🏊🏿‍♀️?|🏊🏿‍♂️?|🏋🏻‍♀️?|👰🏾‍♀️?|👰🏽‍♂️?|👰🏽‍♀️?|👰🏼‍♂️?|👰🏼‍♀️?|👰🏻‍♂️?|👰🏻‍♀️?|👮🏿‍♂️?|👮🏿‍♀️?|👮🏾‍♂️?|👮🏾‍♀️?|👮🏽‍♂️?|👮🏽‍♀️?|👮🏼‍♂️?|👮🏼‍♀️?|👮🏻‍♂️?|👮🏻‍♀️?|👩🏾‍⚖️?|👩🏾‍✈️?|🏃🏽‍➡️?|🏃🏼‍➡️?|🏃🏻‍➡️?|🫱🏿‍🫲🏾|🫱🏿‍🫲🏽|🫱🏿‍🫲🏼|🫱🏿‍🫲🏻|🫱🏾‍🫲🏿|🫱🏾‍🫲🏽|🫱🏾‍🫲🏼|🫱🏾‍🫲🏻|🫱🏽‍🫲🏿|🫱🏽‍🫲🏾|🫱🏽‍🫲🏼|🫱🏽‍🫲🏻|🫱🏼‍🫲🏿|👩🏿‍⚕️?|👩🏿‍⚖️?|👩🏿‍✈️?|🫱🏼‍🫲🏾|🫱🏼‍🫲🏽|🫱🏼‍🫲🏻|🫱🏻‍🫲🏿|🫱🏻‍🫲🏾|🫱🏻‍🫲🏽|👨🏿‍⚕️?|👨🏿‍⚖️?|👨🏿‍✈️?|👨🏾‍✈️?|👨🏾‍⚖️?|👨🏾‍⚕️?|👨🏽‍✈️?|👨🏽‍⚖️?|👨🏽‍⚕️?|👩🏻‍⚕️?|👩🏻‍⚖️?|👩🏻‍✈️?|👩🏼‍⚕️?|👩🏼‍⚖️?|👩🏼‍✈️?|👨🏼‍✈️?|👨🏼‍⚖️?|👨🏼‍⚕️?|👩🏽‍⚕️?|👩🏽‍⚖️?|👩🏽‍✈️?|👨🏻‍✈️?|👨🏻‍⚖️?|👨🏻‍⚕️?|🏃🏿‍➡️?|🏃🏾‍➡️?|👩🏾‍⚕️?|🧑🏿‍⚖️?|🧑🏿‍✈️?|⛹🏻‍♀️?|⛹🏻‍♂️?|⛹🏼‍♀️?|⛹🏼‍♂️?|⛹🏽‍♀️?|⛹🏽‍♂️?|⛹🏾‍♀️?|⛹🏾‍♂️?|⛹🏿‍♀️?|⛹🏿‍♂️?|⛹️‍♀️?|⛹️‍♂️?|🏃🏻‍♀️?|🏃🏻‍♂️?|🏃🏼‍♀️?|🏃🏼‍♂️?|🏃🏽‍♀️?|🏃🏽‍♂️?|🏃🏾‍♀️?|🏃🏾‍♂️?|🏃🏿‍♀️?|🏃🏿‍♂️?|🏄🏻‍♀️?|🏄🏻‍♂️?|🏋🏽‍♀️?|🫱🏻‍🫲🏼|🚶🏻‍➡️?|🚶🏼‍➡️?|🚶🏽‍➡️?|🚶🏾‍➡️?|🚶🏿‍➡️?|🧎🏻‍➡️?|🧎🏼‍➡️?|🧎🏽‍➡️?|🧎🏾‍➡️?|🧎🏿‍➡️?|🧑🏻‍⚕️?|🧑🏻‍⚖️?|🧑🏻‍✈️?|🧑🏼‍⚕️?|🧑🏼‍⚖️?|🧑🏼‍✈️?|🧑‍🧒‍🧒|🧑‍🧑‍🧒|🧑‍🤝‍🧑|🧑🏽‍⚕️?|🧑🏽‍⚖️?|🧑🏽‍✈️?|🧑🏾‍⚕️?|🧑🏾‍⚖️?|🧑🏾‍✈️?|🧎🏼‍♀️?|🧎🏻‍♂️?|🧎🏻‍♀️?|🧍🏿‍♂️?|🧍🏿‍♀️?|🧍🏾‍♂️?|🧍🏾‍♀️?|🧍🏽‍♂️?|🧍🏽‍♀️?|🧍🏼‍♂️?|🧍🏼‍♀️?|🧍🏻‍♂️?|🧍🏻‍♀️?|🦹🏿‍♂️?|🦹🏿‍♀️?|🦹🏾‍♂️?|🦹🏾‍♀️?|🦹🏽‍♂️?|🦹🏽‍♀️?|🦹🏼‍♂️?|🦹🏼‍♀️?|🦹🏻‍♂️?|🦹🏻‍♀️?|🦸🏿‍♂️?|🧔🏾‍♀️?|🧔🏽‍♂️?|🧔🏽‍♀️?|🧔🏼‍♂️?|🧔🏼‍♀️?|🧔🏻‍♂️?|🧔🏻‍♀️?|🧏🏿‍♂️?|🧏🏿‍♀️?|🧏🏾‍♂️?|🧏🏾‍♀️?|🧏🏽‍♂️?|🧏🏽‍♀️?|🧏🏼‍♂️?|🧏🏼‍♀️?|🧏🏻‍♂️?|🧏🏻‍♀️?|🧎🏿‍♂️?|🧎🏿‍♀️?|🧎🏾‍♂️?|🧎🏾‍♀️?|🧎🏽‍♂️?|🧎🏽‍♀️?|🧎🏼‍♂️?|🦸🏿‍♀️?|🤽🏼‍♂️?|🤽🏼‍♀️?|🤽🏻‍♂️?|🤽🏻‍♀️?|🤹🏿‍♂️?|🤹🏿‍♀️?|🤹🏾‍♂️?|🤹🏾‍♀️?|🤹🏽‍♂️?|🤹🏽‍♀️?|🤹🏼‍♂️?|🤹🏼‍♀️?|🤹🏻‍♂️?|🤹🏻‍♀️?|🤸🏿‍♂️?|🤸🏿‍♀️?|🤸🏾‍♂️?|🤸🏾‍♀️?|🤸🏽‍♂️?|🤸🏽‍♀️?|🤸🏼‍♂️?|🤸🏼‍♀️?|🤸🏻‍♂️?|🤸🏻‍♀️?|🦸🏾‍♂️?|🦸🏾‍♀️?|🦸🏽‍♂️?|🦸🏽‍♀️?|🦸🏼‍♂️?|🦸🏼‍♀️?|🦸🏻‍♂️?|🦸🏻‍♀️?|🤾🏿‍♂️?|🤾🏿‍♀️?|🤾🏾‍♂️?|🤾🏾‍♀️?|🤾🏽‍♂️?|🤾🏽‍♀️?|🤾🏼‍♂️?|🤾🏼‍♀️?|🤾🏻‍♂️?|🤾🏻‍♀️?|🤽🏿‍♂️?|🤽🏿‍♀️?|🤽🏾‍♂️?|🤽🏾‍♀️?|🤽🏽‍♂️?|🤽🏽‍♀️?|🧜🏿‍♂️?|🧜🏿‍♀️?|🧜🏾‍♂️?|🧜🏾‍♀️?|🧜🏽‍♂️?|🧜🏽‍♀️?|🧜🏼‍♂️?|🧜🏼‍♀️?|🧜🏻‍♂️?|🧜🏻‍♀️?|🧛🏿‍♂️?|🧛🏿‍♀️?|🧛🏾‍♂️?|🧛🏾‍♀️?|🧛🏽‍♂️?|🧛🏽‍♀️?|🧛🏼‍♂️?|🧛🏼‍♀️?|🧛🏻‍♂️?|🧛🏻‍♀️?|🧚🏿‍♂️?|🧚🏿‍♀️?|🧚🏾‍♂️?|🧚🏾‍♀️?|👨‍👦‍👦|👨‍👧‍👦|👨‍👧‍👧|👁️‍🗨️?|👨‍👨‍👦|👨‍👨‍👧|👨‍👩‍👦|🏳️‍⚧️?|👨‍👩‍👧|👩‍👦‍👦|👩‍👧‍👦|👩‍👧‍👧|👩‍👩‍👦|🧝🏿‍♂️?|🧝🏿‍♀️?|🧝🏾‍♂️?|🧝🏾‍♀️?|🧝🏽‍♂️?|🧝🏽‍♀️?|🧝🏼‍♂️?|🧝🏼‍♀️?|🧝🏻‍♂️?|🧝🏻‍♀️?|👩‍👩‍👧|🧚🏽‍♂️?|🧘🏻‍♀️?|🧗🏿‍♂️?|🧗🏿‍♀️?|🧗🏾‍♂️?|🧗🏾‍♀️?|🧗🏽‍♂️?|🧗🏽‍♀️?|🧗🏼‍♂️?|🧗🏼‍♀️?|🧗🏻‍♂️?|🧗🏻‍♀️?|🧖🏿‍♂️?|🧖🏿‍♀️?|🧖🏾‍♂️?|🧖🏾‍♀️?|🧖🏽‍♂️?|🧖🏽‍♀️?|🧖🏼‍♂️?|🧖🏼‍♀️?|🧖🏻‍♂️?|🧖🏻‍♀️?|🧔🏿‍♂️?|🧔🏿‍♀️?|🧔🏾‍♂️?|🧚🏽‍♀️?|🧚🏼‍♂️?|🧚🏼‍♀️?|🧚🏻‍♂️?|🧚🏻‍♀️?|🧙🏿‍♂️?|🧙🏿‍♀️?|🧙🏾‍♂️?|🧙🏾‍♀️?|🧙🏽‍♂️?|🧙🏽‍♀️?|🧙🏼‍♂️?|🧙🏼‍♀️?|🧙🏻‍♂️?|🧙🏻‍♀️?|🧘🏿‍♂️?|🧘🏿‍♀️?|🧘🏾‍♂️?|🧘🏾‍♀️?|🧘🏽‍♂️?|🧘🏽‍♀️?|🧘🏼‍♂️?|🧘🏼‍♀️?|🧘🏻‍♂️?|🙅🏿‍♀️?|🙅🏾‍♂️?|🙅🏾‍♀️?|🙅🏽‍♂️?|🙅🏽‍♀️?|🙅🏼‍♂️?|🙅🏼‍♀️?|🙅🏻‍♂️?|🙅🏻‍♀️?|🕵️‍♂️?|🕵️‍♀️?|🕵🏿‍♂️?|🕵🏿‍♀️?|🕵🏾‍♂️?|🕵🏾‍♀️?|🕵🏽‍♂️?|🕵🏽‍♀️?|🕵🏼‍♂️?|🕵🏼‍♀️?|🕵🏻‍♂️?|🕵🏻‍♀️?|💇🏿‍♂️?|💇🏿‍♀️?|💇🏾‍♂️?|🙋🏼‍♀️?|🙋🏻‍♂️?|🙋🏻‍♀️?|🙇🏿‍♂️?|🙇🏿‍♀️?|🙇🏾‍♂️?|🙇🏾‍♀️?|🙇🏽‍♂️?|🙇🏽‍♀️?|🙇🏼‍♂️?|🙇🏼‍♀️?|🙇🏻‍♂️?|🙇🏻‍♀️?|🙆🏿‍♂️?|🙆🏿‍♀️?|🙆🏾‍♂️?|🙆🏾‍♀️?|🙆🏽‍♂️?|🙆🏽‍♀️?|🙆🏼‍♂️?|🙆🏼‍♀️?|🙆🏻‍♂️?|🙆🏻‍♀️?|🙅🏿‍♂️?|💇🏾‍♀️?|💂🏻‍♂️?|💂🏻‍♀️?|💁🏿‍♂️?|💁🏿‍♀️?|💁🏾‍♂️?|💁🏾‍♀️?|💁🏽‍♂️?|💁🏽‍♀️?|💁🏼‍♂️?|💁🏼‍♀️?|💁🏻‍♂️?|💁🏻‍♀️?|👷🏿‍♂️?|👷🏿‍♀️?|👷🏾‍♂️?|👷🏾‍♀️?|👷🏽‍♂️?|👷🏽‍♀️?|👷🏼‍♂️?|👷🏼‍♀️?|👷🏻‍♂️?|👷🏻‍♀️?|👳🏿‍♂️?|👳🏿‍♀️?|💇🏽‍♂️?|💇🏽‍♀️?|💇🏼‍♂️?|💇🏼‍♀️?|💇🏻‍♂️?|💇🏻‍♀️?|💆🏿‍♂️?|💆🏿‍♀️?|💆🏾‍♂️?|💆🏾‍♀️?|💆🏽‍♂️?|💆🏽‍♀️?|💆🏼‍♂️?|💆🏼‍♀️?|💆🏻‍♂️?|💆🏻‍♀️?|💂🏿‍♂️?|💂🏿‍♀️?|💂🏾‍♂️?|💂🏾‍♀️?|💂🏽‍♂️?|💂🏽‍♀️?|💂🏼‍♂️?|💂🏼‍♀️?|🤦🏽‍♀️?|🤦🏼‍♂️?|🤦🏼‍♀️?|🤦🏻‍♂️?|🤦🏻‍♀️?|🚶🏿‍♂️?|🚶🏿‍♀️?|🚶🏾‍♂️?|🚶🏾‍♀️?|🚶🏽‍♂️?|🚶🏽‍♀️?|🚶🏼‍♂️?|🚶🏼‍♀️?|🚶🏻‍♂️?|🚶🏻‍♀️?|🚵🏿‍♂️?|🚵🏿‍♀️?|🚵🏾‍♂️?|🚵🏾‍♀️?|🚵🏽‍♂️?|🚵🏽‍♀️?|🚵🏼‍♂️?|🚵🏼‍♀️?|🚵🏻‍♂️?|🚵🏻‍♀️?|🤷🏿‍♂️?|🤷🏿‍♀️?|🤷🏾‍♂️?|🤷🏾‍♀️?|🤷🏽‍♂️?|🤷🏽‍♀️?|🤷🏼‍♂️?|🤷🏼‍♀️?|🤷🏻‍♂️?|🤷🏻‍♀️?|🤵🏿‍♂️?|🤵🏿‍♀️?|🤵🏾‍♂️?|🤵🏾‍♀️?|🤵🏽‍♂️?|🤵🏽‍♀️?|🤵🏼‍♂️?|🤵🏼‍♀️?|🤵🏻‍♂️?|🤵🏻‍♀️?|🤦🏿‍♂️?|🤦🏿‍♀️?|🤦🏾‍♂️?|🤦🏾‍♀️?|🤦🏽‍♂️?|🚴🏿‍♂️?|🙎🏼‍♀️?|🙎🏼‍♂️?|🚣🏿‍♂️?|🙎🏽‍♀️?|🚣🏿‍♀️?|🙋🏿‍♀️?|🙋🏿‍♂️?|🚣🏾‍♂️?|🚣🏾‍♀️?|🚣🏽‍♂️?|🚣🏽‍♀️?|🚣🏼‍♂️?|🚣🏼‍♀️?|🚣🏻‍♂️?|🙍🏻‍♀️?|🚣🏻‍♀️?|🙍🏻‍♂️?|🙎🏿‍♂️?|🙎🏽‍♂️?|🙍🏼‍♀️?|🙎🏾‍♀️?|🙍🏼‍♂️?|🙍🏽‍♀️?|🙍🏽‍♂️?|🙎🏾‍♂️?|🙎🏿‍♀️?|🚴🏿‍♀️?|🚴🏾‍♂️?|🚴🏾‍♀️?|🧑🏿‍⚕️?|🙋🏼‍♂️?|🙍🏾‍♂️?|🙋🏽‍♀️?|🙋🏽‍♂️?|🚴🏽‍♂️?|🚴🏽‍♀️?|🚴🏼‍♂️?|🚴🏼‍♀️?|🙋🏾‍♀️?|🚴🏻‍♂️?|🙋🏾‍♂️?|🚴🏻‍♀️?|🙍🏿‍♀️?|🙍🏿‍♂️?|🙎🏻‍♀️?|🙎🏻‍♂️?|🙍🏾‍♀️?|👨🏽‍💻|👨🏽‍💼|👨🏽‍🔧|👨🏽‍🏭|👨🏽‍🏫|👨🏽‍🎨|👨🏽‍🎤|👨🏾‍🚀|👨🏾‍🔬|👨🏾‍🔧|👨🏾‍💼|👨🏾‍💻|👨🏾‍🏭|👨🏾‍🏫|👨🏾‍🎨|👨🏾‍🎤|👨🏾‍🎓|👨🏾‍🍼|👨🏾‍🍳|👨🏾‍🌾|👨🏽‍🦽|👨🏽‍🦼|👨🏽‍🦯|👨🏽‍🚒|👨🏽‍🚀|👨🏽‍🔬|🏃‍➡️?|👨🏻‍🦽|👨🏻‍🦼|👨🏻‍🦯|👨🏻‍🚒|👨🏻‍🚀|👨🏻‍🔬|👨🏻‍🔧|👨🏻‍💼|👨🏻‍💻|👨🏻‍🏭|👨🏻‍🏫|👨🏻‍🎨|👨🏻‍🎤|👨🏻‍🎓|👨🏻‍🍼|👨🏻‍🍳|👨🏻‍🌾|👨‍⚕️?|👨‍⚖️?|👨‍✈️?|👨🏽‍🎓|👨🏽‍🍼|👨🏽‍🍳|👨🏽‍🌾|👨🏼‍🦽|👨🏼‍🦼|👨🏼‍🦯|👨🏼‍🚒|👨🏼‍🚀|👨🏼‍🔬|👨🏼‍🔧|👨🏼‍💼|👨🏼‍💻|👨🏼‍🏭|👨🏼‍🏫|👨🏼‍🎨|👨🏼‍🎤|👨🏼‍🎓|👨🏼‍🍼|👨🏼‍🍳|🙇‍♂️?|🙇‍♀️?|🙆‍♂️?|🙆‍♀️?|🙅‍♂️?|🙅‍♀️?|💇‍♂️?|💇‍♀️?|💆‍♂️?|💆‍♀️?|💂‍♂️?|💂‍♀️?|💁‍♂️?|💁‍♀️?|👷‍♂️?|👷‍♀️?|👳‍♂️?|👳‍♀️?|👱‍♂️?|👱‍♀️?|👰‍♂️?|👰‍♀️?|👯‍♂️?|👯‍♀️?|👮‍♂️?|👮‍♀️?|🤼‍♂️?|🤼‍♀️?|🤹‍♂️?|🤹‍♀️?|🤸‍♂️?|🤸‍♀️?|🤷‍♂️?|🤷‍♀️?|🤵‍♂️?|🤵‍♀️?|🤦‍♂️?|🤦‍♀️?|🚶‍♂️?|🚶‍♀️?|🚵‍♂️?|🚵‍♀️?|🚴‍♂️?|🚴‍♀️?|🚣‍♂️?|🚣‍♀️?|🙎‍♂️?|🙎‍♀️?|🙍‍♂️?|🙍‍♀️?|🙋‍♂️?|🙋‍♀️?|🏊‍♂️?|🧑🏾‍🚒|🧑🏾‍🚀|🧑🏾‍🔬|🧑🏾‍🔧|🧑🏾‍💼|🧑🏾‍💻|🧑🏾‍🏭|🧑🏾‍🏫|🧑🏾‍🎨|🧑🏾‍🎤|🧑🏾‍🎓|🧑🏾‍🎄|🧑🏾‍🍼|🧑🏾‍🍳|🧑🏾‍🌾|🧑🏽‍🦽|🧑🏽‍🦼|🧑🏽‍🦯|🧑🏽‍🚒|🧑🏽‍🚀|🧑🏽‍🔬|🧑🏽‍🔧|🧑🏽‍💼|🧑🏽‍💻|🧑🏽‍🏭|🧑🏽‍🏫|🏊‍♀️?|🏄‍♂️?|🏄‍♀️?|🏃‍♂️?|🏃‍♀️?|🧑🏿‍🦽|🧑🏿‍🦼|🧑🏿‍🦯|🧑🏿‍🚒|🧑🏿‍🚀|🧑🏿‍🔬|🧑🏿‍🔧|🧑🏿‍💼|🧑🏿‍💻|🧑🏿‍🏭|🧑🏿‍🏫|🧑🏿‍🎨|🧑🏿‍🎤|🧑🏿‍🎓|🧑🏿‍🎄|🧑🏿‍🍼|🧑🏿‍🍳|🧑🏿‍🌾|🧑🏾‍🦽|🧑🏾‍🦼|🧑🏾‍🦯|🧑🏻‍🦲|🧑🏻‍🦱|🧑🏻‍🦰|👩🏿‍🦳|👩🏿‍🦲|👩🏿‍🦱|👩🏿‍🦰|👩🏾‍🦳|👩🏾‍🦲|👩🏾‍🦱|👩🏾‍🦰|👩🏽‍🦳|👩🏽‍🦲|👩🏽‍🦱|👩🏽‍🦰|👩🏼‍🦳|👩🏼‍🦲|👩🏼‍🦱|👩🏼‍🦰|👩🏻‍🦳|👩🏻‍🦲|👩🏻‍🦱|👩🏻‍🦰|👨🏿‍🦳|👨🏿‍🦲|👨🏿‍🦱|🙂‍↕️?|🙂‍↔️?|😶‍🌫️?|🐻‍❄️?|🏴‍☠️?|🏳️‍🌈|❤️‍🩹|❤️‍🔥|⛓️‍💥|🧑🏿‍🦳|🧑🏿‍🦲|🧑🏿‍🦱|🧑🏿‍🦰|🧑🏾‍🦳|🧑🏾‍🦲|🧑🏾‍🦱|🧑🏾‍🦰|🧑🏽‍🦳|🧑🏽‍🦲|🧑🏽‍🦱|🧑🏽‍🦰|🧑🏼‍🦳|🧑🏼‍🦲|🧑🏼‍🦱|🧑🏼‍🦰|🧑🏻‍🦳|👨🏿‍🦰|🧚‍♂️?|🧚‍♀️?|🧙‍♂️?|🧙‍♀️?|🧘‍♂️?|🧘‍♀️?|🧗‍♂️?|🧗‍♀️?|🧖‍♂️?|🧖‍♀️?|🧔‍♂️?|🧔‍♀️?|🧏‍♂️?|🧏‍♀️?|🧎‍♂️?|🧎‍♀️?|🧍‍♂️?|🧍‍♀️?|🦹‍♂️?|🦹‍♀️?|🦸‍♂️?|🦸‍♀️?|🤾‍♂️?|🤾‍♀️?|🤽‍♂️?|🤽‍♀️?|👨🏾‍🦳|👨🏾‍🦲|👨🏾‍🦱|👨🏾‍🦰|👨🏽‍🦳|👨🏽‍🦲|👨🏽‍🦱|👨🏽‍🦰|👨🏼‍🦳|👨🏼‍🦲|👨🏼‍🦱|👨🏼‍🦰|👨🏻‍🦳|👨🏻‍🦲|👨🏻‍🦱|👨🏻‍🦰|🧟‍♂️?|🧟‍♀️?|🧞‍♂️?|🧞‍♀️?|🧝‍♂️?|🧝‍♀️?|🧜‍♂️?|🧜‍♀️?|🧛‍♂️?|🧛‍♀️?|👩🏽‍🏭|👩🏽‍🏫|👩🏽‍🎨|👩🏽‍🎤|👩🏽‍🎓|👩🏽‍🍼|👩🏽‍🍳|👩🏽‍🌾|👩🏼‍🦽|👩🏼‍🦼|👩🏼‍🦯|👩🏼‍🚒|👩🏼‍🚀|👩🏼‍🔬|👩🏼‍🔧|👩🏼‍💼|👩🏼‍💻|👩🏼‍🏭|👩🏼‍🏫|👩🏼‍🎨|👩🏼‍🎤|👩🏼‍🎓|👩🏾‍🚀|👩🏾‍🔬|👩🏾‍🔧|👩🏾‍💼|👩🏾‍💻|👩🏾‍🏭|👩🏾‍🏫|👩🏾‍🎨|👩🏾‍🎤|👩🏾‍🎓|👩🏾‍🍼|👩🏾‍🍳|👩🏾‍🌾|👩🏽‍🦽|👩🏽‍🦼|👩🏽‍🦯|👩🏽‍🚒|👩🏽‍🚀|👩🏽‍🔬|👩🏽‍🔧|👩🏽‍💼|👩🏽‍💻|👩‍⚕️?|👨🏿‍🦽|👨🏿‍🦼|👨🏿‍🦯|👨🏿‍🚒|👨🏿‍🚀|👨🏿‍🔬|👨🏿‍🔧|👨🏿‍💼|👨🏿‍💻|👨🏿‍🏭|👨🏿‍🏫|👨🏿‍🎨|👨🏿‍🎤|👨🏿‍🎓|👨🏿‍🍼|👨🏿‍🍳|👨🏿‍🌾|👨🏾‍🦽|👨🏾‍🦼|👨🏾‍🦯|👨🏾‍🚒|👩🏼‍🍼|👩🏼‍🍳|👩🏼‍🌾|👩🏻‍🦽|👩🏻‍🦼|👩🏻‍🦯|👩🏻‍🚒|👩🏻‍🚀|👩🏻‍🔬|👩🏻‍🔧|👩🏻‍💼|👩🏻‍💻|👩🏻‍🏭|👩🏻‍🏫|👩🏻‍🎨|👩🏻‍🎤|👩🏻‍🎓|👩🏻‍🍼|👩🏻‍🍳|👩🏻‍🌾|👩‍✈️?|👩‍⚖️?|🧑🏼‍🍼|🧑🏼‍🍳|🧑🏼‍🌾|🧑🏻‍🦽|🧑🏻‍🦼|🧑🏻‍🦯|🧑🏻‍🚒|🧑🏻‍🚀|🧑🏻‍🔬|🧑🏻‍🔧|🧑🏻‍💼|🧑🏻‍💻|🧑🏻‍🏭|🧑🏻‍🏫|🧑🏻‍🎨|🧑🏻‍🎤|🧑🏻‍🎓|🧑🏻‍🎄|🧑🏻‍🍼|🧑🏻‍🍳|🧑🏻‍🌾|🧑‍✈️?|🧑🏽‍🎨|🧑🏽‍🎤|🧑🏽‍🎓|🧑🏽‍🎄|🧑🏽‍🍼|🧑🏽‍🍳|🧑🏽‍🌾|🧑🏼‍🦽|🧑🏼‍🦼|🧑🏼‍🦯|🧑🏼‍🚒|🧑🏼‍🚀|🧑🏼‍🔬|🧑🏼‍🔧|🧑🏼‍💼|🧑🏼‍💻|🧑🏼‍🏭|🧑🏼‍🏫|🧑🏼‍🎨|🧑🏼‍🎤|🧑🏼‍🎓|🧑‍⚖️?|🧑‍⚕️?|🧎‍➡️?|🚶‍➡️?|👩🏿‍🦽|👩🏿‍🦼|👩🏿‍🦯|👩🏿‍🚒|👩🏿‍🚀|👩🏿‍🔬|👩🏿‍🔧|👩🏿‍💼|👩🏿‍💻|👩🏿‍🏭|👩🏿‍🏫|👩🏿‍🎨|👩🏿‍🎤|👩🏿‍🎓|👩🏿‍🍼|👩🏿‍🍳|👩🏿‍🌾|👩🏾‍🦽|👩🏾‍🦼|👩🏾‍🦯|👩🏾‍🚒|🧑🏼‍🎄|👨🏼‍🌾|🧑‍🧒|👩‍👧|🧑‍💻|👩‍👦|👨‍🦰|👨‍🦱|👨‍🦲|👨‍🦳|🧑‍💼|👨‍🌾|👨‍🍳|👨‍🍼|👨‍🎓|👨‍🎤|👨‍🎨|👩‍🌾|👩‍🍳|👩‍🍼|👩‍🎓|🧑‍🌾|👨‍👦|🧑‍🍳|👨‍👧|😵‍💫|😮‍💨|🧑‍🍼|🐦‍🔥|🐦‍⬛|🐕‍🦺|🐈‍⬛|🧑‍🎄|🧑‍🎓|🍋‍🟩|🍄‍🟫|🧑‍🎤|🧑‍🎨|🧑‍🏫|🧑‍🏭|👨‍💻|👨‍💼|👨‍🔧|👨‍🔬|👨‍🚀|👩‍🦳|👩‍🦲|👩‍🦱|👩‍🦰|👨‍🚒|👨‍🦯|🧑‍🔧|👨‍🦼|🧑‍🔬|👨‍🦽|🧑‍🚀|🧑‍🚒|🧑‍🦯|🧑‍🦼|🧑‍🦳|🧑‍🦲|🧑‍🦱|🧑‍🦰|👩‍🎤|👩‍🎨|👩‍🏫|👩‍🏭|👩‍💻|👩‍💼|👩‍🔧|👩‍🔬|👩‍🚀|👩‍🚒|👩‍🦯|👩‍🦼|👩‍🦽|👨‍🏫|👨‍🏭|🧑‍🦽)|(?:🏴󠁧󠁢󠁷󠁬󠁳󠁿|🏴󠁧󠁢󠁳󠁣󠁴󠁿|🏴󠁧󠁢󠁥󠁮󠁧󠁿)|(?:🇦🇨|🇦🇩|🇦🇪|🇦🇫|🇦🇬|🇦🇮|🇦🇱|🇦🇲|🇦🇴|🇦🇶|🇦🇷|🇦🇸|🇦🇹|🇦🇺|🇦🇼|🇦🇽|🇦🇿|🇧🇦|🇧🇧|🇧🇩|🇧🇪|🇧🇫|🇧🇬|🇧🇭|🇧🇮|🇧🇯|🇧🇱|🇧🇲|🇧🇳|🇧🇴|🇧🇶|🇧🇷|🇧🇸|🇧🇹|🇧🇻|🇧🇼|🇧🇾|🇧🇿|🇨🇦|🇨🇨|🇨🇩|🇨🇫|🇨🇬|🇨🇭|🇨🇮|🇨🇰|🇨🇱|🇨🇲|🇨🇳|🇨🇴|🇨🇵|🇨🇶|🇨🇷|🇨🇺|🇨🇻|🇨🇼|🇨🇽|🇨🇾|🇨🇿|🇩🇪|🇩🇬|🇩🇯|🇩🇰|🇩🇲|🇩🇴|🇩🇿|🇪🇦|🇪🇨|🇪🇪|🇪🇬|🇪🇭|🇪🇷|🇪🇸|🇪🇹|🇪🇺|🇫🇮|🇫🇯|🇫🇰|🇫🇲|🇫🇴|🇫🇷|🇬🇦|🇬🇧|🇬🇩|🇬🇪|🇬🇫|🇬🇬|🇬🇭|🇬🇮|🇬🇱|🇬🇲|🇬🇳|🇬🇵|🇬🇶|🇬🇷|🇬🇸|🇬🇹|🇬🇺|🇬🇼|🇬🇾|🇭🇰|🇭🇲|🇭🇳|🇭🇷|🇭🇹|🇭🇺|🇮🇨|🇮🇩|🇮🇪|🇮🇱|🇮🇲|🇮🇳|🇮🇴|🇮🇶|🇮🇷|🇮🇸|🇮🇹|🇯🇪|🇯🇲|🇯🇴|🇯🇵|🇰🇪|🇰🇬|🇰🇭|🇰🇮|🇰🇲|🇰🇳|🇰🇵|🇰🇷|🇰🇼|🇰🇾|🇰🇿|🇱🇦|🇱🇧|🇱🇨|🇱🇮|🇱🇰|🇱🇷|🇱🇸|🇱🇹|🇱🇺|🇱🇻|🇱🇾|🇲🇦|🇲🇨|🇲🇩|🇲🇪|🇲🇫|🇲🇬|🇲🇭|🇲🇰|🇲🇱|🇲🇲|🇲🇳|🇲🇴|🇲🇵|🇲🇶|🇲🇷|🇲🇸|🇲🇹|🇲🇺|🇲🇻|🇲🇼|🇲🇽|🇲🇾|🇲🇿|🇳🇦|🇳🇨|🇳🇪|🇳🇫|🇳🇬|🇳🇮|🇳🇱|🇳🇴|🇳🇵|🇳🇷|🇳🇺|🇳🇿|🇴🇲|🇵🇦|🇵🇪|🇵🇫|🇵🇬|🇵🇭|🇵🇰|🇵🇱|🇵🇲|🇵🇳|🇵🇷|🇵🇸|🇵🇹|🇵🇼|🇵🇾|🇶🇦|🇷🇪|🇷🇴|🇷🇸|🇷🇺|🇷🇼|🇸🇦|🇸🇧|🇸🇨|🇸🇩|🇸🇪|🇸🇬|🇸🇭|🇸🇮|🇸🇯|🇸🇰|🇸🇱|🇸🇲|🇸🇳|🇸🇴|🇸🇷|🇸🇸|🇸🇹|🇸🇻|🇸🇽|🇸🇾|🇸🇿|🇹🇦|🇹🇨|🇹🇩|🇹🇫|🇹🇬|🇹🇭|🇹🇯|🇹🇰|🇹🇱|🇹🇲|🇹🇳|🇹🇴|🇹🇷|🇹🇹|🇹🇻|🇹🇼|🇹🇿|🇺🇦|🇺🇬|🇺🇲|🇺🇳|🇺🇸|🇺🇾|🇺🇿|🇻🇦|🇻🇨|🇻🇪|🇻🇬|🇻🇮|🇻🇳|🇻🇺|🇼🇫|🇼🇸|🇽🇰|🇾🇪|🇾🇹|🇿🇦|🇿🇲|🇿🇼)|(?:[\#\*0-9]️⃣|[☝⛹✊-✍🎅🏂-🏄🏇🏊-🏌👂👃👆-👐👦-👸👼💁-💃💅-💇💏💑💪🕴🕵🕺🖐🖕🖖🙅-🙇🙋-🙏🚣🚴-🚶🛀🛌🤌🤏🤘-🤟🤦🤰-🤹🤼-🤾🥷🦵🦶🦸🦹🦻🧍-🧏🧑-🧝🫃-🫅🫰-🫸][🏻-🏿]|(?![\#\*0-9‍⃣️🇦-🇿🏻-🏿🦰-🦳󠀠-󠁿])(?:[\#\*0-9©®‼⁉™ℹ↔-↙↩↪⌨⏏⏭-⏯⏱⏲⏸-⏺Ⓜ▪▫▶◀◻◼☀-☄☎☑☘☝☠☢☣☦☪☮☯☸-☺♀♂♟♠♣♥♦♨♻♾⚒⚔-⚗⚙⚛⚜⚠⚧⚰⚱⛈⛏⛑⛓⛩⛰⛱⛴⛷-⛹✂✈✉✌✍✏✒✔✖✝✡✳✴❄❇❣❤➡⤴⤵⬅-⬇〰〽㊗㊙🅰🅱🅾🅿🈂🈷🌡🌤-🌬🌶🍽🎖🎗🎙-🎛🎞🎟🏋-🏎🏔-🏟🏳🏵🏷🐿👁📽🕉🕊🕯🕰🕳-🕹🖇🖊-🖍🖐🖥🖨🖱🖲🖼🗂-🗄🗑-🗓🗜-🗞🗡🗣🗨🗯🗳🗺🛋🛍-🛏🛠-🛥🛩🛰🛳]️|[⌚⌛⏩-⏬⏰⏳◽◾☔☕♈-♓♿⚓⚡⚪⚫⚽⚾⛄⛅⛎⛔⛪⛲⛳⛵⛺⛽✅✊✋✨❌❎❓-❕❗➕-➗➰➿⬛⬜⭐⭕🀄🃏🆎🆑-🆚🇦-🇿🈁🈚🈯🈲-🈶🈸-🈺🉐🉑🌀-🌠🌭-🌵🌷-🍼🍾-🎓🎠-🏊🏏-🏓🏠-🏰🏴🏸-🐾👀👂-📼📿-🔽🕋-🕎🕐-🕧🕺🖕🖖🖤🗻-🙏🚀-🛅🛌🛐-🛒🛕-🛗🛜-🛟🛫🛬🛴-🛼🟠-🟫🟰🤌-🤺🤼-🥅🥇-🧿🩰-🩼🪀-🪉🪏-🫆🫎-🫜🫟-🫩🫰-🫸](?!︎)️?))|[🏻-🏿🦰-🦳])/
7
+ end
8
+ end