diff --git a/appveyor.yml b/appveyor.yml
index fa362083..6615be7a 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,11 +1,15 @@
version: 10.0.{build}
image: Visual Studio 2017
configuration: Release
-
+environment:
+ COVERALLS_REPO_TOKEN:
+ secure: /SEtLgIE6ZrJaWBC1xFZIeESiwfwiXEk9N4pSJ53rFhqBZC2sXJg7ZxZ1DBhnZGu
install:
- ps: >-
cd src
+ dotnet tool install -g coveralls.net --version 1.0.0
+
nuget restore Markdig.sln
$env:MARKDIG_BUILD_NUMBER = ([int]$env:APPVEYOR_BUILD_NUMBER).ToString("000")
@@ -31,22 +35,35 @@ build:
project: src/Markdig.sln
verbosity: minimal
-after_build:
-- cmd: >-
- dotnet run --project SpecFileGen/SpecFileGen.csproj -c Release
+after_build: >
+ dotnet SpecFileGen/bin/Release/netcoreapp2.2/SpecFileGen.dll
- dotnet test -v n Markdig.Tests
+test_script:
+- cmd: >-
+ dotnet test Markdig.Tests -c Release --no-build
+
+ dotnet test Markdig.Tests -c Debug
+
+ dotnet test Markdig.Tests -c Release -f netcoreapp2.1 /p:CollectCoverage=true /p:Include=\"[Markdig]*\" /p:CoverletOutputFormat=opencover /p:CoverletOutput=../../coverage.xml
+
+after_test:
+- ps: >-
+ if($env:APPVEYOR_REPO_BRANCH -eq "master") {
+ cd ..
+ if (Test-Path "./coverage.xml") {
+ csmacnz.Coveralls --opencover -i "./coverage.xml" --repoToken $env:COVERALLS_REPO_TOKEN --basePath "$env:APPVEYOR_BUILD_FOLDER" --useRelativePath --commitId $env:APPVEYOR_REPO_COMMIT --commitBranch $env:APPVEYOR_REPO_BRANCH --commitAuthor $env:APPVEYOR_REPO_COMMIT_AUTHOR --commitEmail $env:APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL --commitMessage $env:APPVEYOR_REPO_COMMIT_MESSAGE --jobId $env:APPVEYOR_BUILD_NUMBER --serviceName appveyor
+ }
+ cd src
+ }
before_package:
- cmd: >-
msbuild /t:pack /p:VersionSuffix="%MARKDIG_VERSION_SUFFIX%" /p:Configuration=Release Markdig/Markdig.csproj
- msbuild /t:Clean Markdig/Markdig.csproj
-
- msbuild /t:pack /p:VersionSuffix="%MARKDIG_VERSION_SUFFIX%" /p:Configuration=Release;SignAssembly=true Markdig/Markdig.csproj
+ msbuild /t:pack /p:VersionSuffix="%MARKDIG_VERSION_SUFFIX%" /p:Configuration=Release Markdig.Signed/Markdig.Signed.csproj
artifacts:
-- path: src\Markdig\Bin\Release\*.nupkg
+- path: src\**\*.nupkg
name: Markdig Nugets
deploy:
diff --git a/changelog.md b/changelog.md
index d4ab4f57..7d862f4a 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,9 +1,11 @@
# Changelog
-## WIP
-- Fix regression when escaping HTML characters ([(PR #340)](https://github.com/lunet-io/markdig/pull/340))
- Add `IHostProvider` for medialink customization (#337), support protocol-less url (#135) ([(PR #341)](https://github.com/lunet-io/markdig/pull/341))
+## 0.17.1 (04 July 2019)
+- Fix regression when escaping HTML characters ([(PR #340)](https://github.com/lunet-io/markdig/pull/340))
+- Update Emoji Dictionary ([(PR #346)](https://github.com/lunet-io/markdig/pull/346))
+
## 0.17.0 (10 May 2019)
- Update to latest CommonMark specs 0.29 ([(PR #327)](https://github.com/lunet-io/markdig/pull/327))
- Add `AutoLinkOptions` with `OpenInNewWindow`, `UseHttpsForWWWLinks` ([(PR #327)](https://github.com/lunet-io/markdig/pull/327))
diff --git a/readme.md b/readme.md
index db956a21..1609703e 100644
--- a/readme.md
+++ b/readme.md
@@ -1,4 +1,4 @@
-# Markdig [](https://ci.appveyor.com/project/xoofx/markdig) [](https://www.nuget.org/packages/Markdig/) [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FRGHXBTP442JL)
+# Markdig [](https://ci.appveyor.com/project/xoofx/markdig) [](https://coveralls.io/github/lunet-io/markdig?branch=master) [](https://www.nuget.org/packages/Markdig/) [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FRGHXBTP442JL)
diff --git a/src/Markdig.Benchmarks/Markdig.Benchmarks.csproj b/src/Markdig.Benchmarks/Markdig.Benchmarks.csproj
index 899ed8a8..8907cb3f 100644
--- a/src/Markdig.Benchmarks/Markdig.Benchmarks.csproj
+++ b/src/Markdig.Benchmarks/Markdig.Benchmarks.csproj
@@ -1,43 +1,12 @@
-
-
https://foo.bar/path/\#m4mv5W0GYKZpGvfA.97
"; + + TestParser.TestSpec($"<{input}>", expected); + TestParser.TestSpec(input, expected, "autolinks|advanced"); + } + [Test] public void TestAltTextIsCorrectlyEscaped() { diff --git a/src/Markdig.Tests/Specs/GenericAttributesSpecs.generated.cs b/src/Markdig.Tests/Specs/GenericAttributesSpecs.generated.cs index eee04658..17b1a766 100644 --- a/src/Markdig.Tests/Specs/GenericAttributesSpecs.generated.cs +++ b/src/Markdig.Tests/Specs/GenericAttributesSpecs.generated.cs @@ -1,4 +1,4 @@ -// Generated: 2019-04-05 16:06:14 +// Generated: 2019-08-01 13:57:17 // -------------------------------- // Generic Attributes @@ -79,5 +79,28 @@ namespace Markdig.Tests.Specs.GenericAttributes Console.WriteLine("Example 2\nSection Extensions / Generic Attributes\n"); TestParser.TestSpec("{#fenced-id .fenced-class}\n~~~\nThis is a fenced with attached attributes\n~~~ ", "This is a fenced with attached attributes\n", "attributes|advanced");
}
+
+ // Attribute values can be one character long
+ [Test]
+ public void ExtensionsGenericAttributes_Example003()
+ {
+ // Example 3
+ // Section: Extensions / Generic Attributes
+ //
+ // The following Markdown:
+ // [Foo](url){data-x=1}
+ //
+ // [Foo](url){data-x='1'}
+ //
+ // [Foo](url){data-x=11}
+ //
+ // Should be rendered as:
+ //
+ //
+ //
+
+ Console.WriteLine("Example 3\nSection Extensions / Generic Attributes\n");
+ TestParser.TestSpec("[Foo](url){data-x=1}\n\n[Foo](url){data-x='1'}\n\n[Foo](url){data-x=11}", "\n\n", "attributes|advanced");
+ }
}
}
diff --git a/src/Markdig.Tests/Specs/GenericAttributesSpecs.md b/src/Markdig.Tests/Specs/GenericAttributesSpecs.md
index 1cb7bd00..a0c46e40 100644
--- a/src/Markdig.Tests/Specs/GenericAttributesSpecs.md
+++ b/src/Markdig.Tests/Specs/GenericAttributesSpecs.md
@@ -47,3 +47,17 @@ This is a fenced with attached attributes
This is a fenced with attached attributes
````````````````````````````````
+
+Attribute values can be one character long
+
+```````````````````````````````` example
+[Foo](url){data-x=1}
+
+[Foo](url){data-x='1'}
+
+[Foo](url){data-x=11}
+.
+
+
+
+````````````````````````````````
diff --git a/src/Markdig.Tests/Specs/SmartyPantsSpecs.generated.cs b/src/Markdig.Tests/Specs/SmartyPantsSpecs.generated.cs
index 8f63391d..37bb9a6b 100644
--- a/src/Markdig.Tests/Specs/SmartyPantsSpecs.generated.cs
+++ b/src/Markdig.Tests/Specs/SmartyPantsSpecs.generated.cs
@@ -1,4 +1,4 @@
-// Generated: 2019-04-05 16:06:14
+// Generated: 2019-08-01 12:33:23
// --------------------------------
// Smarty Pants
@@ -140,13 +140,13 @@ namespace Markdig.Tests.Specs.SmartyPants
// Section: Extensions / SmartyPants Quotes
//
// The following Markdown:
- // This is a 'text <This is a ‘text <<with’ a another text>>
+ //This is ‘a “text 'with” a another text’
Console.WriteLine("Example 8\nSection Extensions / SmartyPants Quotes\n"); - TestParser.TestSpec("This is a 'text <This is a ‘text <<with’ a another text>>
", "pipetables+smartypants|advanced+smartypants"); + TestParser.TestSpec("This is 'a \"text 'with\" a another text'", "This is ‘a “text 'with” a another text’
", "pipetables+smartypants|advanced+smartypants"); } [Test] @@ -156,20 +156,36 @@ namespace Markdig.Tests.Specs.SmartyPants // Section: Extensions / SmartyPants Quotes // // The following Markdown: + // This is a 'text <This is a ‘text <<with’ a another text>>
+ + Console.WriteLine("Example 9\nSection Extensions / SmartyPants Quotes\n"); + TestParser.TestSpec("This is a 'text <This is a ‘text <<with’ a another text>>
", "pipetables+smartypants|advanced+smartypants"); + } + + [Test] + public void ExtensionsSmartyPantsQuotes_Example010() + { + // Example 10 + // Section: Extensions / SmartyPants Quotes + // + // The following Markdown: // This is a <This is a «text 'with» a another text'
- Console.WriteLine("Example 9\nSection Extensions / SmartyPants Quotes\n"); + Console.WriteLine("Example 10\nSection Extensions / SmartyPants Quotes\n"); TestParser.TestSpec("This is a <This is a «text 'with» a another text'
", "pipetables+smartypants|advanced+smartypants"); } // Quotes requires to have the same rules than emphasis `_` regarding left/right frankling rules: [Test] - public void ExtensionsSmartyPantsQuotes_Example010() + public void ExtensionsSmartyPantsQuotes_Example011() { - // Example 10 + // Example 11 // Section: Extensions / SmartyPants Quotes // // The following Markdown: @@ -178,24 +194,8 @@ namespace Markdig.Tests.Specs.SmartyPants // Should be rendered as: //It's not quotes'
- Console.WriteLine("Example 10\nSection Extensions / SmartyPants Quotes\n"); - TestParser.TestSpec("It's not quotes'", "It's not quotes'
", "pipetables+smartypants|advanced+smartypants"); - } - - [Test] - public void ExtensionsSmartyPantsQuotes_Example011() - { - // Example 11 - // Section: Extensions / SmartyPants Quotes - // - // The following Markdown: - // They are ' not matching quotes ' - // - // Should be rendered as: - //They are ' not matching quotes '
- Console.WriteLine("Example 11\nSection Extensions / SmartyPants Quotes\n"); - TestParser.TestSpec("They are ' not matching quotes '", "They are ' not matching quotes '
", "pipetables+smartypants|advanced+smartypants"); + TestParser.TestSpec("It's not quotes'", "It's not quotes'
", "pipetables+smartypants|advanced+smartypants"); } [Test] @@ -205,20 +205,36 @@ namespace Markdig.Tests.Specs.SmartyPants // Section: Extensions / SmartyPants Quotes // // The following Markdown: + // They are ' not matching quotes ' + // + // Should be rendered as: + //They are ' not matching quotes '
+ + Console.WriteLine("Example 12\nSection Extensions / SmartyPants Quotes\n"); + TestParser.TestSpec("They are ' not matching quotes '", "They are ' not matching quotes '
", "pipetables+smartypants|advanced+smartypants"); + } + + [Test] + public void ExtensionsSmartyPantsQuotes_Example013() + { + // Example 13 + // Section: Extensions / SmartyPants Quotes + // + // The following Markdown: // They are' not matching 'quotes // // Should be rendered as: //They are' not matching 'quotes
- Console.WriteLine("Example 12\nSection Extensions / SmartyPants Quotes\n"); + Console.WriteLine("Example 13\nSection Extensions / SmartyPants Quotes\n"); TestParser.TestSpec("They are' not matching 'quotes", "They are' not matching 'quotes
", "pipetables+smartypants|advanced+smartypants"); } // An emphasis starting inside left/right quotes will span over the right quote: [Test] - public void ExtensionsSmartyPantsQuotes_Example013() + public void ExtensionsSmartyPantsQuotes_Example014() { - // Example 13 + // Example 14 // Section: Extensions / SmartyPants Quotes // // The following Markdown: @@ -227,9 +243,26 @@ namespace Markdig.Tests.Specs.SmartyPants // Should be rendered as: //This is “a text” with an emphasis
- Console.WriteLine("Example 13\nSection Extensions / SmartyPants Quotes\n"); + Console.WriteLine("Example 14\nSection Extensions / SmartyPants Quotes\n"); TestParser.TestSpec("This is \"a *text\" with an emphasis*", "This is “a text” with an emphasis
", "pipetables+smartypants|advanced+smartypants"); } + + // Multiple sets of quotes can be used + [Test] + public void ExtensionsSmartyPantsQuotes_Example015() + { + // Example 15 + // Section: Extensions / SmartyPants Quotes + // + // The following Markdown: + // "aaa" "bbb" "ccc" "ddd" + // + // Should be rendered as: + //“aaa” “bbb” “ccc” “ddd”
+ + Console.WriteLine("Example 15\nSection Extensions / SmartyPants Quotes\n"); + TestParser.TestSpec("\"aaa\" \"bbb\" \"ccc\" \"ddd\"", "“aaa” “bbb” “ccc” “ddd”
", "pipetables+smartypants|advanced+smartypants"); + } } [TestFixture] @@ -237,9 +270,9 @@ namespace Markdig.Tests.Specs.SmartyPants { // ## SmartyPants Separators [Test] - public void ExtensionsSmartyPantsSeparators_Example014() + public void ExtensionsSmartyPantsSeparators_Example016() { - // Example 14 + // Example 16 // Section: Extensions / SmartyPants Separators // // The following Markdown: @@ -248,14 +281,14 @@ namespace Markdig.Tests.Specs.SmartyPants // Should be rendered as: //This is a – text
- Console.WriteLine("Example 14\nSection Extensions / SmartyPants Separators\n"); + Console.WriteLine("Example 16\nSection Extensions / SmartyPants Separators\n"); TestParser.TestSpec("This is a -- text", "This is a – text
", "pipetables+smartypants|advanced+smartypants"); } [Test] - public void ExtensionsSmartyPantsSeparators_Example015() + public void ExtensionsSmartyPantsSeparators_Example017() { - // Example 15 + // Example 17 // Section: Extensions / SmartyPants Separators // // The following Markdown: @@ -264,14 +297,14 @@ namespace Markdig.Tests.Specs.SmartyPants // Should be rendered as: //This is a — text
- Console.WriteLine("Example 15\nSection Extensions / SmartyPants Separators\n"); + Console.WriteLine("Example 17\nSection Extensions / SmartyPants Separators\n"); TestParser.TestSpec("This is a --- text", "This is a — text
", "pipetables+smartypants|advanced+smartypants"); } [Test] - public void ExtensionsSmartyPantsSeparators_Example016() + public void ExtensionsSmartyPantsSeparators_Example018() { - // Example 16 + // Example 18 // Section: Extensions / SmartyPants Separators // // The following Markdown: @@ -280,15 +313,15 @@ namespace Markdig.Tests.Specs.SmartyPants // Should be rendered as: //This is a en ellipsis…
- Console.WriteLine("Example 16\nSection Extensions / SmartyPants Separators\n"); + Console.WriteLine("Example 18\nSection Extensions / SmartyPants Separators\n"); TestParser.TestSpec("This is a en ellipsis...", "This is a en ellipsis…
", "pipetables+smartypants|advanced+smartypants"); } // Check that a smartypants are not breaking pipetable parsing: [Test] - public void ExtensionsSmartyPantsSeparators_Example017() + public void ExtensionsSmartyPantsSeparators_Example019() { - // Example 17 + // Example 19 // Section: Extensions / SmartyPants Separators // // The following Markdown: @@ -312,15 +345,15 @@ namespace Markdig.Tests.Specs.SmartyPants // // - Console.WriteLine("Example 17\nSection Extensions / SmartyPants Separators\n"); + Console.WriteLine("Example 19\nSection Extensions / SmartyPants Separators\n"); TestParser.TestSpec("a | b\n-- | --\n0 | 1", "| a | \nb | \n
|---|---|
| 0 | \n1 | \n
A “quote” with a —
- Console.WriteLine("Example 18\nSection Extensions / SmartyPants Separators\n"); + Console.WriteLine("Example 20\nSection Extensions / SmartyPants Separators\n"); TestParser.TestSpec("A \"quote\" with a ---", "A “quote” with a —
", "pipetables+smartypants|advanced+smartypants"); } } diff --git a/src/Markdig.Tests/Specs/SmartyPantsSpecs.md b/src/Markdig.Tests/Specs/SmartyPantsSpecs.md index b0243f0b..3ed37a42 100644 --- a/src/Markdig.Tests/Specs/SmartyPantsSpecs.md +++ b/src/Markdig.Tests/Specs/SmartyPantsSpecs.md @@ -52,6 +52,12 @@ This is a "text 'with" a another text'This is a “text 'with” a another text'
```````````````````````````````` +```````````````````````````````` example +This is 'a "text 'with" a another text' +. +This is ‘a “text 'with” a another text’
+```````````````````````````````` + ```````````````````````````````` example This is a 'text <This is “a text” with an emphasis
```````````````````````````````` +Multiple sets of quotes can be used + +```````````````````````````````` example +"aaa" "bbb" "ccc" "ddd" +. +“aaa” “bbb” “ccc” “ddd”
+```````````````````````````````` + ## SmartyPants Separators ```````````````````````````````` example diff --git a/src/Markdig.Tests/TestParser.cs b/src/Markdig.Tests/TestParser.cs index 82b185d4..b437503f 100644 --- a/src/Markdig.Tests/TestParser.cs +++ b/src/Markdig.Tests/TestParser.cs @@ -33,9 +33,9 @@ namespace Markdig.Tests // If file creation times aren't preserved by git, add some leeway // If specs have come from git, assume that they were regenerated since CI would fail otherwise - testTime = testTime.AddSeconds(2); + testTime = testTime.AddMinutes(3); - // This might not catch a changed spec every time, but should most of the time. Otherwise CI will catch it + // This might not catch a changed spec every time, but should at least sometimes. Otherwise CI will catch it // This could also trigger, if a user has modified the spec file but reverted the change - can't think of a good workaround Assert.Less(specTime, testTime, diff --git a/src/Markdig/Extensions/Emoji/EmojiParser.cs b/src/Markdig/Extensions/Emoji/EmojiParser.cs index 73666c13..e565fa90 100644 --- a/src/Markdig/Extensions/Emoji/EmojiParser.cs +++ b/src/Markdig/Extensions/Emoji/EmojiParser.cs @@ -3,7 +3,7 @@ // See the license.txt file in the project root for more information. using System; -using System.Collections.Generic; +using System.Collections.Generic; using Markdig.Helpers; using Markdig.Parsers; @@ -47,9 +47,9 @@ namespace Markdig.Extensions.Emoji public override bool Match(InlineProcessor processor, ref StringSlice slice) { // Previous char must be a space - if (!slice.PeekCharExtra(-1).IsWhiteSpaceOrZero()) - { - return false; + if (!slice.PeekCharExtra(-1).IsWhiteSpaceOrZero()) + { + return false; } // Try to match an emoji @@ -75,8 +75,8 @@ namespace Markdig.Extensions.Emoji slice.Start += match.Key.Length; return true; - } - + } + #region Emojis and Smileys static EmojiParser() { @@ -961,6 +961,733 @@ namespace Markdig.Extensions.Emoji { ":custom_arrow_left_strong:", "⇐"}, { ":custom_arrow_right_strong:", "⇒"}, { ":custom_arrow_left_right_strong:", "⇔"}, + {":rofl:","🤣"}, + {":slightly_smiling_face:","🙂"}, + {":upside_down_face:","🙃"}, + {":star_struck:","🤩"}, + {":zany_face:","🤪"}, + {":money_mouth_face:","🤑"}, + {":hugs:","🤗"}, + {":hand_over_mouth:","🤭"}, + {":shushing_face:","🤫"}, + {":thinking:","🤔"}, + {":zipper_mouth_face:","🤐"}, + {":raised_eyebrow:","🤨"}, + {":roll_eyes:","🙄"}, + {":lying_face:","🤥"}, + {":drooling_face:","🤤"}, + {":face_with_thermometer:","🤒"}, + {":face_with_head_bandage:","🤕"}, + {":nauseated_face:","🤢"}, + {":vomiting_face:","🤮"}, + {":sneezing_face:","🤧"}, + {":exploding_head:","🤯"}, + {":cowboy_hat_face:","🤠"}, + {":nerd_face:","🤓"}, + {":monocle_face:","🧐"}, + {":slightly_frowning_face:","🙁"}, + {":frowning_face:","☹️"}, + {":cursing_face:","🤬"}, + {":skull_and_crossbones:","☠️"}, + {":clown_face:","🤡"}, + {":robot:","🤖"}, + {":heavy_heart_exclamation:","❣️"}, + {":orange_heart:","🧡"}, + {":black_heart:","🖤"}, + {":hole:","🕳️"}, + {":eye_speech_bubble:","👁️🗨️"}, + {":left_speech_bubble:","🗨️"}, + {":right_anger_bubble:","🗯️"}, + {":raised_back_of_hand:","🤚"}, + {":raised_hand_with_fingers_splayed:","🖐️"}, + {":vulcan_salute:","🖖"}, + {":crossed_fingers:","🤞"}, + {":love_you_gesture:","🤟"}, + {":metal:","🤘"}, + {":call_me_hand:","🤙"}, + {":middle_finger:","🖕"}, + {":fist_raised:","✊"}, + {":fist_oncoming:","👊"}, + {":fist_left:","🤛"}, + {":fist_right:","🤜"}, + {":palms_up_together:","🤲"}, + {":handshake:","🤝"}, + {":writing_hand:","✍️"}, + {":selfie:","🤳"}, + {":brain:","🧠"}, + {":eye:","👁️"}, + {":child:","🧒"}, + {":adult:","🧑"}, + {":blond_haired_person:","👱"}, + {":bearded_person:","🧔"}, + {":blond_haired_man:","👱♂️"}, + {":blond_haired_woman:","👱♀️"}, + {":older_adult:","🧓"}, + {":frowning_person:","🙍"}, + {":frowning_man:","🙍♂️"}, + {":frowning_woman:","🙍♀️"}, + {":pouting_face:","🙎"}, + {":pouting_man:","🙎♂️"}, + {":pouting_woman:","🙎♀️"}, + {":no_good_man:","🙅♂️"}, + {":no_good_woman:","🙅♀️"}, + {":ok_person:","🙆"}, + {":ok_man:","🙆♂️"}, + {":tipping_hand_person:","💁"}, + {":tipping_hand_man:","💁♂️"}, + {":tipping_hand_woman:","💁♀️"}, + {":raising_hand_man:","🙋♂️"}, + {":raising_hand_woman:","🙋♀️"}, + {":bowing_man:","🙇♂️"}, + {":bowing_woman:","🙇♀️"}, + {":facepalm:","🤦"}, + {":man_facepalming:","🤦♂️"}, + {":woman_facepalming:","🤦♀️"}, + {":shrug:","🤷"}, + {":man_shrugging:","🤷♂️"}, + {":woman_shrugging:","🤷♀️"}, + {":man_health_worker:","👨⚕️"}, + {":woman_health_worker:","👩⚕️"}, + {":man_student:","👨🎓"}, + {":woman_student:","👩🎓"}, + {":man_teacher:","👨🏫"}, + {":woman_teacher:","👩🏫"}, + {":man_judge:","👨⚖️"}, + {":woman_judge:","👩⚖️"}, + {":man_farmer:","👨🌾"}, + {":woman_farmer:","👩🌾"}, + {":man_cook:","👨🍳"}, + {":woman_cook:","👩🍳"}, + {":man_mechanic:","👨🔧"}, + {":woman_mechanic:","👩🔧"}, + {":man_factory_worker:","👨🏭"}, + {":woman_factory_worker:","👩🏭"}, + {":man_office_worker:","👨💼"}, + {":woman_office_worker:","👩💼"}, + {":man_scientist:","👨🔬"}, + {":woman_scientist:","👩🔬"}, + {":man_technologist:","👨💻"}, + {":woman_technologist:","👩💻"}, + {":man_singer:","👨🎤"}, + {":woman_singer:","👩🎤"}, + {":man_artist:","👨🎨"}, + {":woman_artist:","👩🎨"}, + {":man_pilot:","👨✈️"}, + {":woman_pilot:","👩✈️"}, + {":man_astronaut:","👨🚀"}, + {":woman_astronaut:","👩🚀"}, + {":man_firefighter:","👨🚒"}, + {":woman_firefighter:","👩🚒"}, + {":police_officer:","👮"}, + {":policeman:","👮♂️"}, + {":policewoman:","👮♀️"}, + {":detective:","🕵️"}, + {":male_detective:","🕵️♂️"}, + {":female_detective:","🕵️♀️"}, + {":guard:","💂"}, + {":guardswoman:","💂♀️"}, + {":construction_worker_man:","👷♂️"}, + {":construction_worker_woman:","👷♀️"}, + {":prince:","🤴"}, + {":person_with_turban:","👳"}, + {":woman_with_turban:","👳♀️"}, + {":woman_with_headscarf:","🧕"}, + {":man_in_tuxedo:","🤵"}, + {":pregnant_woman:","🤰"}, + {":breast_feeding:","🤱"}, + {":mrs_claus:","🤶"}, + {":mage:","🧙"}, + {":mage_man:","🧙♂️"}, + {":mage_woman:","🧙♀️"}, + {":fairy:","🧚"}, + {":fairy_man:","🧚♂️"}, + {":fairy_woman:","🧚♀️"}, + {":vampire:","🧛"}, + {":vampire_man:","🧛♂️"}, + {":vampire_woman:","🧛♀️"}, + {":merperson:","🧜"}, + {":merman:","🧜♂️"}, + {":mermaid:","🧜♀️"}, + {":elf:","🧝"}, + {":elf_man:","🧝♂️"}, + {":elf_woman:","🧝♀️"}, + {":genie:","🧞"}, + {":genie_man:","🧞♂️"}, + {":genie_woman:","🧞♀️"}, + {":zombie:","🧟"}, + {":zombie_man:","🧟♂️"}, + {":zombie_woman:","🧟♀️"}, + {":massage_man:","💆♂️"}, + {":massage_woman:","💆♀️"}, + {":haircut_man:","💇♂️"}, + {":haircut_woman:","💇♀️"}, + {":walking_man:","🚶♂️"}, + {":walking_woman:","🚶♀️"}, + {":running_man:","🏃♂️"}, + {":running_woman:","🏃♀️"}, + {":woman_dancing:","💃"}, + {":man_dancing:","🕺"}, + {":business_suit_levitating:","🕴️"}, + {":dancing_men:","👯♂️"}, + {":dancing_women:","👯♀️"}, + {":sauna_person:","🧖"}, + {":sauna_man:","🧖♂️"}, + {":sauna_woman:","🧖♀️"}, + {":climbing:","🧗"}, + {":climbing_man:","🧗♂️"}, + {":climbing_woman:","🧗♀️"}, + {":person_fencing:","🤺"}, + {":skier:","⛷️"}, + {":golfing:","🏌️"}, + {":golfing_man:","🏌️♂️"}, + {":golfing_woman:","🏌️♀️"}, + {":surfing_man:","🏄♂️"}, + {":surfing_woman:","🏄♀️"}, + {":rowing_man:","🚣♂️"}, + {":rowing_woman:","🚣♀️"}, + {":swimming_man:","🏊♂️"}, + {":swimming_woman:","🏊♀️"}, + {":bouncing_ball_person:","⛹️"}, + {":bouncing_ball_man:","⛹️♂️"}, + {":bouncing_ball_woman:","⛹️♀️"}, + {":weight_lifting:","🏋️"}, + {":weight_lifting_man:","🏋️♂️"}, + {":weight_lifting_woman:","🏋️♀️"}, + {":biking_man:","🚴♂️"}, + {":biking_woman:","🚴♀️"}, + {":mountain_biking_man:","🚵♂️"}, + {":mountain_biking_woman:","🚵♀️"}, + {":cartwheeling:","🤸"}, + {":man_cartwheeling:","🤸♂️"}, + {":woman_cartwheeling:","🤸♀️"}, + {":wrestling:","🤼"}, + {":men_wrestling:","🤼♂️"}, + {":women_wrestling:","🤼♀️"}, + {":water_polo:","🤽"}, + {":man_playing_water_polo:","🤽♂️"}, + {":woman_playing_water_polo:","🤽♀️"}, + {":handball_person:","🤾"}, + {":man_playing_handball:","🤾♂️"}, + {":woman_playing_handball:","🤾♀️"}, + {":juggling_person:","🤹"}, + {":man_juggling:","🤹♂️"}, + {":woman_juggling:","🤹♀️"}, + {":lotus_position:","🧘"}, + {":lotus_position_man:","🧘♂️"}, + {":lotus_position_woman:","🧘♀️"}, + {":sleeping_bed:","🛌"}, + {":people_holding_hands:","🧑🤝🧑"}, + {":couplekiss_man_woman:","👩❤️💋👨"}, + {":couplekiss_man_man:","👨❤️💋👨"}, + {":couplekiss_woman_woman:","👩❤️💋👩"}, + {":couple_with_heart_woman_man:","👩❤️👨"}, + {":couple_with_heart_man_man:","👨❤️👨"}, + {":couple_with_heart_woman_woman:","👩❤️👩"}, + {":family_man_woman_boy:","👨👩👦"}, + {":family_man_woman_girl:","👨👩👧"}, + {":family_man_woman_girl_boy:","👨👩👧👦"}, + {":family_man_woman_boy_boy:","👨👩👦👦"}, + {":family_man_woman_girl_girl:","👨👩👧👧"}, + {":family_man_man_boy:","👨👨👦"}, + {":family_man_man_girl:","👨👨👧"}, + {":family_man_man_girl_boy:","👨👨👧👦"}, + {":family_man_man_boy_boy:","👨👨👦👦"}, + {":family_man_man_girl_girl:","👨👨👧👧"}, + {":family_woman_woman_boy:","👩👩👦"}, + {":family_woman_woman_girl:","👩👩👧"}, + {":family_woman_woman_girl_boy:","👩👩👧👦"}, + {":family_woman_woman_boy_boy:","👩👩👦👦"}, + {":family_woman_woman_girl_girl:","👩👩👧👧"}, + {":family_man_boy:","👨👦"}, + {":family_man_boy_boy:","👨👦👦"}, + {":family_man_girl:","👨👧"}, + {":family_man_girl_boy:","👨👧👦"}, + {":family_man_girl_girl:","👨👧👧"}, + {":family_woman_boy:","👩👦"}, + {":family_woman_boy_boy:","👩👦👦"}, + {":family_woman_girl:","👩👧"}, + {":family_woman_girl_boy:","👩👧👦"}, + {":family_woman_girl_girl:","👩👧👧"}, + {":speaking_head:","🗣️"}, + {":gorilla:","🦍"}, + {":fox_face:","🦊"}, + {":lion:","🦁"}, + {":unicorn:","🦄"}, + {":zebra:","🦓"}, + {":deer:","🦌"}, + {":giraffe:","🦒"}, + {":rhinoceros:","🦏"}, + {":chipmunk:","🐿️"}, + {":hedgehog:","🦔"}, + {":bat:","🦇"}, + {":turkey:","🦃"}, + {":dove:","🕊️"}, + {":eagle:","🦅"}, + {":duck:","🦆"}, + {":owl:","🦉"}, + {":lizard:","🦎"}, + {":sauropod:","🦕"}, + {":t-rex:","🦖"}, + {":shark:","🦈"}, + {":butterfly:","🦋"}, + {":cricket:","🦗"}, + {":spider:","🕷️"}, + {":spider_web:","🕸️"}, + {":scorpion:","🦂"}, + {":rosette:","🏵️"}, + {":wilted_flower:","🥀"}, + {":shamrock:","☘️"}, + {":kiwi_fruit:","🥝"}, + {":coconut:","🥥"}, + {":avocado:","🥑"}, + {":potato:","🥔"}, + {":carrot:","🥕"}, + {":hot_pepper:","🌶️"}, + {":cucumber:","🥒"}, + {":broccoli:","🥦"}, + {":peanuts:","🥜"}, + {":croissant:","🥐"}, + {":baguette_bread:","🥖"}, + {":pretzel:","🥨"}, + {":pancakes:","🥞"}, + {":cheese:","🧀"}, + {":cut_of_meat:","🥩"}, + {":bacon:","🥓"}, + {":hotdog:","🌭"}, + {":sandwich:","🥪"}, + {":taco:","🌮"}, + {":burrito:","🌯"}, + {":stuffed_flatbread:","🥙"}, + {":fried_egg:","🍳"}, + {":shallow_pan_of_food:","🥘"}, + {":bowl_with_spoon:","🥣"}, + {":green_salad:","🥗"}, + {":popcorn:","🍿"}, + {":canned_food:","🥫"}, + {":dumpling:","🥟"}, + {":fortune_cookie:","🥠"}, + {":takeout_box:","🥡"}, + {":crab:","🦀"}, + {":shrimp:","🦐"}, + {":squid:","🦑"}, + {":pie:","🥧"}, + {":milk_glass:","🥛"}, + {":champagne:","🍾"}, + {":clinking_glasses:","🥂"}, + {":tumbler_glass:","🥃"}, + {":cup_with_straw:","🥤"}, + {":chopsticks:","🥢"}, + {":plate_with_cutlery:","🍽️"}, + {":spoon:","🥄"}, + {":amphora:","🏺"}, + {":world_map:","🗺️"}, + {":mountain_snow:","🏔️"}, + {":mountain:","⛰️"}, + {":camping:","🏕️"}, + {":beach_umbrella:","🏖️"}, + {":desert:","🏜️"}, + {":desert_island:","🏝️"}, + {":national_park:","🏞️"}, + {":stadium:","🏟️"}, + {":classical_building:","🏛️"}, + {":building_construction:","🏗️"}, + {":houses:","🏘️"}, + {":derelict_house:","🏚️"}, + {":mosque:","🕌"}, + {":synagogue:","🕍"}, + {":shinto_shrine:","⛩️"}, + {":kaaba:","🕋"}, + {":cityscape:","🏙️"}, + {":racing_car:","🏎️"}, + {":motorcycle:","🏍️"}, + {":motor_scooter:","🛵"}, + {":kick_scooter:","🛴"}, + {":motorway:","🛣️"}, + {":railway_track:","🛤️"}, + {":oil_drum:","🛢️"}, + {":stop_sign:","🛑"}, + {":canoe:","🛶"}, + {":passenger_ship:","🛳️"}, + {":ferry:","⛴️"}, + {":motor_boat:","🛥️"}, + {":small_airplane:","🛩️"}, + {":flight_departure:","🛫"}, + {":flight_arrival:","🛬"}, + {":artificial_satellite:","🛰️"}, + {":flying_saucer:","🛸"}, + {":bellhop_bell:","🛎️"}, + {":stopwatch:","⏱️"}, + {":timer_clock:","⏲️"}, + {":mantelpiece_clock:","🕰️"}, + {":thermometer:","🌡️"}, + {":cloud_with_lightning_and_rain:","⛈️"}, + {":sun_behind_small_cloud:","🌤️"}, + {":sun_behind_large_cloud:","🌥️"}, + {":sun_behind_rain_cloud:","🌦️"}, + {":cloud_with_rain:","🌧️"}, + {":cloud_with_snow:","🌨️"}, + {":cloud_with_lightning:","🌩️"}, + {":tornado:","🌪️"}, + {":fog:","🌫️"}, + {":wind_face:","🌬️"}, + {":open_umbrella:","☂️"}, + {":parasol_on_ground:","⛱️"}, + {":snowman_with_snow:","☃️"}, + {":comet:","☄️"}, + {":reminder_ribbon:","🎗️"}, + {":tickets:","🎟️"}, + {":medal_military:","🎖️"}, + {":medal_sports:","🏅"}, + {":1st_place_medal:","🥇"}, + {":2nd_place_medal:","🥈"}, + {":3rd_place_medal:","🥉"}, + {":volleyball:","🏐"}, + {":cricket_game:","🏏"}, + {":field_hockey:","🏑"}, + {":ice_hockey:","🏒"}, + {":ping_pong:","🏓"}, + {":badminton:","🏸"}, + {":boxing_glove:","🥊"}, + {":martial_arts_uniform:","🥋"}, + {":goal_net:","🥅"}, + {":ice_skate:","⛸️"}, + {":sled:","🛷"}, + {":curling_stone:","🥌"}, + {":joystick:","🕹️"}, + {":chess_pawn:","♟️"}, + {":framed_picture:","🖼️"}, + {":dark_sunglasses:","🕶️"}, + {":scarf:","🧣"}, + {":gloves:","🧤"}, + {":coat:","🧥"}, + {":socks:","🧦"}, + {":shopping:","🛍️"}, + {":billed_cap:","🧢"}, + {":rescue_worker_helmet:","⛑️"}, + {":prayer_beads:","📿"}, + {":studio_microphone:","🎙️"}, + {":level_slider:","🎚️"}, + {":control_knobs:","🎛️"}, + {":drum:","🥁"}, + {":desktop_computer:","🖥️"}, + {":printer:","🖨️"}, + {":keyboard:","⌨️"}, + {":computer_mouse:","🖱️"}, + {":trackball:","🖲️"}, + {":film_strip:","🎞️"}, + {":film_projector:","📽️"}, + {":camera_flash:","📸"}, + {":candle:","🕯️"}, + {":newspaper_roll:","🗞️"}, + {":label:","🏷️"}, + {":ballot_box:","🗳️"}, + {":fountain_pen:","🖋️"}, + {":pen:","🖊️"}, + {":paintbrush:","🖌️"}, + {":crayon:","🖍️"}, + {":card_index_dividers:","🗂️"}, + {":spiral_notepad:","🗒️"}, + {":spiral_calendar:","🗓️"}, + {":paperclips:","🖇️"}, + {":card_file_box:","🗃️"}, + {":file_cabinet:","🗄️"}, + {":wastebasket:","🗑️"}, + {":old_key:","🗝️"}, + {":pick:","⛏️"}, + {":hammer_and_pick:","⚒️"}, + {":hammer_and_wrench:","🛠️"}, + {":dagger:","🗡️"}, + {":crossed_swords:","⚔️"}, + {":bow_and_arrow:","🏹"}, + {":shield:","🛡️"}, + {":gear:","⚙️"}, + {":clamp:","🗜️"}, + {":balance_scale:","⚖️"}, + {":chains:","⛓️"}, + {":alembic:","⚗️"}, + {":bed:","🛏️"}, + {":couch_and_lamp:","🛋️"}, + {":shopping_cart:","🛒"}, + {":coffin:","⚰️"}, + {":funeral_urn:","⚱️"}, + {":radioactive:","☢️"}, + {":biohazard:","☣️"}, + {":place_of_worship:","🛐"}, + {":atom_symbol:","⚛️"}, + {":om:","🕉️"}, + {":star_of_david:","✡️"}, + {":wheel_of_dharma:","☸️"}, + {":yin_yang:","☯️"}, + {":latin_cross:","✝️"}, + {":orthodox_cross:","☦️"}, + {":star_and_crescent:","☪️"}, + {":peace_symbol:","☮️"}, + {":menorah:","🕎"}, + {":next_track_button:","⏭️"}, + {":play_or_pause_button:","⏯️"}, + {":previous_track_button:","⏮️"}, + {":pause_button:","⏸️"}, + {":stop_button:","⏹️"}, + {":record_button:","⏺️"}, + {":eject_button:","⏏️"}, + {":female_sign:","♀️"}, + {":male_sign:","♂️"}, + {":medical_symbol:","⚕️"}, + {":infinity:","♾️"}, + {":fleur_de_lis:","⚜️"}, + {":asterisk:","*️⃣"}, + {":black_flag:","🏴"}, + {":white_flag:","🏳️"}, + {":rainbow_flag:","🏳️🌈"}, + {":pirate_flag:","🏴☠️"}, + {":ascension_island:","🇦🇨"}, + {":andorra:","🇦🇩"}, + {":united_arab_emirates:","🇦🇪"}, + {":afghanistan:","🇦🇫"}, + {":antigua_barbuda:","🇦🇬"}, + {":anguilla:","🇦🇮"}, + {":albania:","🇦🇱"}, + {":armenia:","🇦🇲"}, + {":angola:","🇦🇴"}, + {":antarctica:","🇦🇶"}, + {":argentina:","🇦🇷"}, + {":american_samoa:","🇦🇸"}, + {":austria:","🇦🇹"}, + {":australia:","🇦🇺"}, + {":aruba:","🇦🇼"}, + {":aland_islands:","🇦🇽"}, + {":azerbaijan:","🇦🇿"}, + {":bosnia_herzegovina:","🇧🇦"}, + {":barbados:","🇧🇧"}, + {":bangladesh:","🇧🇩"}, + {":belgium:","🇧🇪"}, + {":burkina_faso:","🇧🇫"}, + {":bulgaria:","🇧🇬"}, + {":bahrain:","🇧🇭"}, + {":burundi:","🇧🇮"}, + {":benin:","🇧🇯"}, + {":st_barthelemy:","🇧🇱"}, + {":bermuda:","🇧🇲"}, + {":brunei:","🇧🇳"}, + {":bolivia:","🇧🇴"}, + {":caribbean_netherlands:","🇧🇶"}, + {":brazil:","🇧🇷"}, + {":bahamas:","🇧🇸"}, + {":bhutan:","🇧🇹"}, + {":bouvet_island:","🇧🇻"}, + {":botswana:","🇧🇼"}, + {":belarus:","🇧🇾"}, + {":belize:","🇧🇿"}, + {":canada:","🇨🇦"}, + {":cocos_islands:","🇨🇨"}, + {":congo_kinshasa:","🇨🇩"}, + {":central_african_republic:","🇨🇫"}, + {":congo_brazzaville:","🇨🇬"}, + {":switzerland:","🇨🇭"}, + {":cote_divoire:","🇨🇮"}, + {":cook_islands:","🇨🇰"}, + {":chile:","🇨🇱"}, + {":cameroon:","🇨🇲"}, + {":colombia:","🇨🇴"}, + {":clipperton_island:","🇨🇵"}, + {":costa_rica:","🇨🇷"}, + {":cuba:","🇨🇺"}, + {":cape_verde:","🇨🇻"}, + {":curacao:","🇨🇼"}, + {":christmas_island:","🇨🇽"}, + {":cyprus:","🇨🇾"}, + {":czech_republic:","🇨🇿"}, + {":diego_garcia:","🇩🇬"}, + {":djibouti:","🇩🇯"}, + {":denmark:","🇩🇰"}, + {":dominica:","🇩🇲"}, + {":dominican_republic:","🇩🇴"}, + {":algeria:","🇩🇿"}, + {":ceuta_melilla:","🇪🇦"}, + {":ecuador:","🇪🇨"}, + {":estonia:","🇪🇪"}, + {":egypt:","🇪🇬"}, + {":western_sahara:","🇪🇭"}, + {":eritrea:","🇪🇷"}, + {":ethiopia:","🇪🇹"}, + {":eu:","🇪🇺"}, + {":finland:","🇫🇮"}, + {":fiji:","🇫🇯"}, + {":falkland_islands:","🇫🇰"}, + {":micronesia:","🇫🇲"}, + {":faroe_islands:","🇫🇴"}, + {":gabon:","🇬🇦"}, + {":grenada:","🇬🇩"}, + {":georgia:","🇬🇪"}, + {":french_guiana:","🇬🇫"}, + {":guernsey:","🇬🇬"}, + {":ghana:","🇬🇭"}, + {":gibraltar:","🇬🇮"}, + {":greenland:","🇬🇱"}, + {":gambia:","🇬🇲"}, + {":guinea:","🇬🇳"}, + {":guadeloupe:","🇬🇵"}, + {":equatorial_guinea:","🇬🇶"}, + {":greece:","🇬🇷"}, + {":south_georgia_south_sandwich_islands:","🇬🇸"}, + {":guatemala:","🇬🇹"}, + {":guam:","🇬🇺"}, + {":guinea_bissau:","🇬🇼"}, + {":guyana:","🇬🇾"}, + {":hong_kong:","🇭🇰"}, + {":heard_mcdonald_islands:","🇭🇲"}, + {":honduras:","🇭🇳"}, + {":croatia:","🇭🇷"}, + {":haiti:","🇭🇹"}, + {":hungary:","🇭🇺"}, + {":canary_islands:","🇮🇨"}, + {":indonesia:","🇮🇩"}, + {":ireland:","🇮🇪"}, + {":israel:","🇮🇱"}, + {":isle_of_man:","🇮🇲"}, + {":india:","🇮🇳"}, + {":british_indian_ocean_territory:","🇮🇴"}, + {":iraq:","🇮🇶"}, + {":iran:","🇮🇷"}, + {":iceland:","🇮🇸"}, + {":jersey:","🇯🇪"}, + {":jamaica:","🇯🇲"}, + {":jordan:","🇯🇴"}, + {":kenya:","🇰🇪"}, + {":kyrgyzstan:","🇰🇬"}, + {":cambodia:","🇰🇭"}, + {":kiribati:","🇰🇮"}, + {":comoros:","🇰🇲"}, + {":st_kitts_nevis:","🇰🇳"}, + {":north_korea:","🇰🇵"}, + {":kuwait:","🇰🇼"}, + {":cayman_islands:","🇰🇾"}, + {":kazakhstan:","🇰🇿"}, + {":laos:","🇱🇦"}, + {":lebanon:","🇱🇧"}, + {":st_lucia:","🇱🇨"}, + {":liechtenstein:","🇱🇮"}, + {":sri_lanka:","🇱🇰"}, + {":liberia:","🇱🇷"}, + {":lesotho:","🇱🇸"}, + {":lithuania:","🇱🇹"}, + {":luxembourg:","🇱🇺"}, + {":latvia:","🇱🇻"}, + {":libya:","🇱🇾"}, + {":morocco:","🇲🇦"}, + {":monaco:","🇲🇨"}, + {":moldova:","🇲🇩"}, + {":montenegro:","🇲🇪"}, + {":st_martin:","🇲🇫"}, + {":madagascar:","🇲🇬"}, + {":marshall_islands:","🇲🇭"}, + {":macedonia:","🇲🇰"}, + {":mali:","🇲🇱"}, + {":myanmar:","🇲🇲"}, + {":mongolia:","🇲🇳"}, + {":macau:","🇲🇴"}, + {":northern_mariana_islands:","🇲🇵"}, + {":martinique:","🇲🇶"}, + {":mauritania:","🇲🇷"}, + {":montserrat:","🇲🇸"}, + {":malta:","🇲🇹"}, + {":mauritius:","🇲🇺"}, + {":maldives:","🇲🇻"}, + {":malawi:","🇲🇼"}, + {":mexico:","🇲🇽"}, + {":malaysia:","🇲🇾"}, + {":mozambique:","🇲🇿"}, + {":namibia:","🇳🇦"}, + {":new_caledonia:","🇳🇨"}, + {":niger:","🇳🇪"}, + {":norfolk_island:","🇳🇫"}, + {":nigeria:","🇳🇬"}, + {":nicaragua:","🇳🇮"}, + {":netherlands:","🇳🇱"}, + {":norway:","🇳🇴"}, + {":nepal:","🇳🇵"}, + {":nauru:","🇳🇷"}, + {":niue:","🇳🇺"}, + {":new_zealand:","🇳🇿"}, + {":oman:","🇴🇲"}, + {":panama:","🇵🇦"}, + {":peru:","🇵🇪"}, + {":french_polynesia:","🇵🇫"}, + {":papua_new_guinea:","🇵🇬"}, + {":philippines:","🇵🇭"}, + {":pakistan:","🇵🇰"}, + {":poland:","🇵🇱"}, + {":st_pierre_miquelon:","🇵🇲"}, + {":pitcairn_islands:","🇵🇳"}, + {":puerto_rico:","🇵🇷"}, + {":palestinian_territories:","🇵🇸"}, + {":portugal:","🇵🇹"}, + {":palau:","🇵🇼"}, + {":paraguay:","🇵🇾"}, + {":qatar:","🇶🇦"}, + {":reunion:","🇷🇪"}, + {":romania:","🇷🇴"}, + {":serbia:","🇷🇸"}, + {":rwanda:","🇷🇼"}, + {":saudi_arabia:","🇸🇦"}, + {":solomon_islands:","🇸🇧"}, + {":seychelles:","🇸🇨"}, + {":sudan:","🇸🇩"}, + {":sweden:","🇸🇪"}, + {":singapore:","🇸🇬"}, + {":st_helena:","🇸🇭"}, + {":slovenia:","🇸🇮"}, + {":svalbard_jan_mayen:","🇸🇯"}, + {":slovakia:","🇸🇰"}, + {":sierra_leone:","🇸🇱"}, + {":san_marino:","🇸🇲"}, + {":senegal:","🇸🇳"}, + {":somalia:","🇸🇴"}, + {":suriname:","🇸🇷"}, + {":south_sudan:","🇸🇸"}, + {":sao_tome_principe:","🇸🇹"}, + {":el_salvador:","🇸🇻"}, + {":sint_maarten:","🇸🇽"}, + {":syria:","🇸🇾"}, + {":swaziland:","🇸🇿"}, + {":tristan_da_cunha:","🇹🇦"}, + {":turks_caicos_islands:","🇹🇨"}, + {":chad:","🇹🇩"}, + {":french_southern_territories:","🇹🇫"}, + {":togo:","🇹🇬"}, + {":thailand:","🇹🇭"}, + {":tajikistan:","🇹🇯"}, + {":tokelau:","🇹🇰"}, + {":timor_leste:","🇹🇱"}, + {":turkmenistan:","🇹🇲"}, + {":tunisia:","🇹🇳"}, + {":tonga:","🇹🇴"}, + {":tr:","🇹🇷"}, + {":trinidad_tobago:","🇹🇹"}, + {":tuvalu:","🇹🇻"}, + {":taiwan:","🇹🇼"}, + {":tanzania:","🇹🇿"}, + {":ukraine:","🇺🇦"}, + {":uganda:","🇺🇬"}, + {":us_outlying_islands:","🇺🇲"}, + {":united_nations:","🇺🇳"}, + {":uruguay:","🇺🇾"}, + {":uzbekistan:","🇺🇿"}, + {":vatican_city:","🇻🇦"}, + {":st_vincent_grenadines:","🇻🇨"}, + {":venezuela:","🇻🇪"}, + {":british_virgin_islands:","🇻🇬"}, + {":us_virgin_islands:","🇻🇮"}, + {":vietnam:","🇻🇳"}, + {":vanuatu:","🇻🇺"}, + {":wallis_futuna:","🇼🇫"}, + {":samoa:","🇼🇸"}, + {":kosovo:","🇽🇰"}, + {":yemen:","🇾🇪"}, + {":mayotte:","🇾🇹"}, + {":south_africa:","🇿🇦"}, + {":zambia:","🇿🇲"}, + {":zimbabwe:","🇿🇼"} }; SmileyToEmojiDefault = new Dictionary