diff --git a/.gitignore b/.gitignore index 0dbeb4bb..383812c8 100644 --- a/.gitignore +++ b/.gitignore @@ -177,9 +177,11 @@ espeak-ng-data/config espeak-ng-data/dictsource espeak-ng-data/phsource espeak-ng-data/*_dict -espeak-ng-data/mbrola_ph/*_phtrans espeak-ng-data/intonations espeak-ng-data/phondata espeak-ng-data/phondata-manifest espeak-ng-data/phonindex espeak-ng-data/phontab + +espeak-ng-data/mbrola/ +espeak-ng-data/mbrola_ph/*_phtrans diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f12008d..8a4547f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,7 @@ updated languages: * af (Afrikaans) -- Christo de Klerk * de (German) -- Valdis Vitolins * du (Dutch) -- Leonard de Ruijter -* en (English) -- Reece Dunn : fixes and Unicode Emoji 5.0 support +* en (English) -- Reece Dunn. Thanks to Kendell Clark for identifying mispronunciations. * fa (Farsi/Persian) -- Shadyar Khodayari * fr (French) -- Valdis Vitolins; Reece Dunn * gu (Gujarati) -- Vardhan @@ -50,6 +50,10 @@ updated languages: * or (Oriya) -- Vardhan * ur (Urdu) -- Ejaz Shah +Unicode Emoji 5.0 support (from the Unicode Emoji, and CLDR data files): + +* en (English) -- Reece Dunn + ### 1.49.1 - 2017-01-21 * Vim syntax support for rule files. diff --git a/dictsource/en_emoji b/dictsource/en_emoji index 56813906..ecedc314 100644 --- a/dictsource/en_emoji +++ b/dictsource/en_emoji @@ -94,9 +94,7 @@ $textmode ☸ wheel of dharma // [2638] text|emoji ☹ frowning face // [2639] text|emoji ☺ smiling face // [263A] text|emoji -♀ woman $emoji_zwj // [2640] text|emoji Emoji_Gender ♀ female sign // [2640] text|emoji -♂ man $emoji_zwj // [2642] text|emoji Emoji_Gender ♂ male sign // [2642] text|emoji ♈ aries // [2648] ♉ taurus // [2649] @@ -120,9 +118,7 @@ $textmode ⚒ hammer and pick // [2692] text|emoji ⚓ anchor // [2693] ⚔ crossed swords // [2694] text|emoji -⚕ health worker $emoji_zwj // [2695] text|emoji ⚕ medical symbol // [2695] text|emoji -⚖ judge $emoji_zwj // [2696] text|emoji ⚖ balance scale // [2696] text|emoji ⚗ alembic // [2697] text|emoji ⚙ gear // [2699] text|emoji @@ -162,7 +158,6 @@ $textmode ✂ scissors // [2702] text|emoji ✅ white heavy check mark // [2705] -✈ pilot $emoji_zwj // [2708] text|emoji ✈ airplane // [2708] text|emoji ✉ envelope // [2709] text|emoji ✊ raised fist // [270A] @@ -326,7 +321,6 @@ $textmode 🌻 sunflower // [1F33B] 🌼 blossom // [1F33C] 🌽 ear of corn // [1F33D] -🌾 farmer $emoji_zwj // [1F33E] 🌾 sheaf of rice // [1F33E] 🌿 herb // [1F33F] 🍀 four leaf clover // [1F340] @@ -380,7 +374,6 @@ $textmode 🍰 shortcake // [1F370] 🍱 bento box // [1F371] 🍲 pot of food // [1F372] -🍳 cook $emoji_zwj // [1F373] 🍳 cooking // [1F373] 🍴 fork and knife // [1F374] 🍵 teacup without handle // [1F375] @@ -413,7 +406,6 @@ $textmode 🎐 wind chime // [1F390] 🎑 moon viewing ceremony // [1F391] 🎒 school backpack // [1F392] -🎓 student $emoji_zwj // [1F393] 🎓 graduation cap // [1F393] 🎖 military medal // [1F396] text|emoji 🎗 reminder ribbon // [1F397] text|emoji @@ -426,12 +418,10 @@ $textmode 🎡 ferris wheel // [1F3A1] 🎢 roller coaster // [1F3A2] 🎣 fishing pole // [1F3A3] -🎤 singer $emoji_zwj // [1F3A4] 🎤 microphone // [1F3A4] 🎥 movie camera // [1F3A5] 🎦 cinema // [1F3A6] 🎧 headphone // [1F3A7] -🎨 artist $emoji_zwj // [1F3A8] 🎨 artist palette // [1F3A8] 🎩 top hat // [1F3A9] 🎪 circus tent // [1F3AA] @@ -499,10 +489,8 @@ $textmode 🏨 hotel // [1F3E8] 🏩 love hotel // [1F3E9] 🏪 convenience store // [1F3EA] -🏫 teacher $emoji_zwj // [1F3EB] 🏫 school // [1F3EB] 🏬 department store // [1F3EC] -🏭 factory worker $emoji_zwj // [1F3ED] 🏭 factory // [1F3ED] 🏮 red paper lantern // [1F3EE] 🏯 japanese castle // [1F3EF] @@ -706,9 +694,7 @@ $textmode 💸 money with wings // [1F4B8] 💹 chart increasing with yen // [1F4B9] 💺 seat // [1F4BA] -💻 technologist $emoji_zwj // [1F4BB] 💻 laptop computer // [1F4BB] -💼 office worker $emoji_zwj // [1F4BC] 💼 briefcase // [1F4BC] 💽 computer disk // [1F4BD] 💾 floppy disk // [1F4BE] @@ -815,13 +801,11 @@ $textmode 🔤 input latin letters // [1F524] 🔥 fire // [1F525] 🔦 flashlight // [1F526] -🔧 mechanic $emoji_zwj // [1F527] 🔧 wrench // [1F527] 🔨 hammer // [1F528] 🔩 nut and bolt // [1F529] 🔪 kitchen knife // [1F52A] 🔫 pistol // [1F52B] -🔬 scientist $emoji_zwj // [1F52C] 🔬 microscope // [1F52C] 🔭 telescope // [1F52D] 🔮 crystal ball // [1F52E] @@ -1000,7 +984,6 @@ $textmode // 1F680..1F6FF : Transport and Map Symbols -🚀 astronaut $emoji_zwj // [1F680] 🚀 rocket // [1F680] 🚁 helicopter // [1F681] 🚂 locomotive // [1F682] @@ -1019,7 +1002,6 @@ $textmode 🚏 bus stop // [1F68F] 🚐 minibus // [1F690] 🚑 ambulance // [1F691] -🚒 firefighter $emoji_zwj // [1F692] 🚒 fire engine // [1F692] 🚓 police car // [1F693] 🚔 oncoming police car // [1F694] @@ -1234,7 +1216,7 @@ $textmode 🧥 coat // [1F9E5] 🧦 socks // [1F9E6] -// Country Flags (Regional Indicator Symbols) +// Country Flags (Regional Indicator Symbols) -- ISO 3166-1 Country Codes 🇦🇨 ascension island // [1F1E6 1F1E8] AC 🇦🇩 andorra // [1F1E6 1F1E9] AD @@ -1495,6 +1477,8 @@ $textmode 🇿🇲 zambia // [1F1FF 1F1F2] ZM 🇿🇼 zimbabwe // [1F1FF 1F1FC] ZW +// Subdivision Flags -- ISO 3166-2 Subdivision Codes + 🏴󠁧󠁢󠁥󠁮󠁧󠁿 england // [1F3F4 E0067 E0062 E0065 E006E E0067 E007F] 🏴󠁧󠁢󠁳󠁣󠁴󠁿 scotland // [1F3F4 E0067 E0062 E0073 E0063 E0074 E007F] 🏴󠁧󠁢󠁷󠁬󠁳󠁿 wales // [1F3F4 E0067 E0062 E0077 E006C E0073 E007F] @@ -1514,10 +1498,8 @@ $textmode 8️⃣ keycap eight // [0038 FE0F 20E3] 9️⃣ keycap nine // [0039 FE0F 20E3] -// Other Emoji ZWJ Sequences +// Emoji ZWJ Sequence: Family -🏳‍🌈 rainbow flag // [1F3F3 200D 1F308] -👁‍🗨 eye in speech bubble // [1F441 200D 1F5E8] 👩‍❤‍💋‍👨 kiss woman man // [1F469 200D 2764 200D 1F48B 200D 1F468] 👨‍❤‍💋‍👨 kiss man man // [1F468 200D 2764 200D 1F48B 200D 1F468] 👩‍❤‍💋‍👩 kiss woman woman // [1F469 200D 2764 200D 1F48B 200D 1F469] @@ -1550,6 +1532,141 @@ $textmode 👩‍👧‍👦 family woman girl boy // [1F469 200D 1F467 200D 1F466] 👩‍👧‍👧 family woman girl girl // [1F469 200D 1F467 200D 1F467] +// Emoji ZWJ Sequence: Gendered Role, with object + +👨‍⚕ man health worker // [1F468 200D 2695] +👩‍⚕ woman health worker // [1F469 200D 2695] +👨‍⚖ man judge // [1F468 200D 2696] +👩‍⚖ woman judge // [1F469 200D 2696] +👨‍✈ man pilot // [1F468 200D 2708] +👩‍✈ woman pilot // [1F469 200D 2708] +👨‍🌾 man farmer // [1F468 200D 1F33E] +👩‍🌾 woman farmer // [1F469 200D 1F33E] +👨‍🍳 man cook // [1F468 200D 1F373] +👩‍🍳 woman cook // [1F469 200D 1F373] +👨‍🎓 man student // [1F468 200D 1F393] +👩‍🎓 woman student // [1F469 200D 1F393] +👨‍🎤 man singer // [1F468 200D 1F3A4] +👩‍🎤 woman singer // [1F469 200D 1F3A4] +👨‍🎨 man artist // [1F468 200D 1F3A8] +👩‍🎨 woman artist // [1F469 200D 1F3A8] +👨‍🏫 man teacher // [1F468 200D 1F3EB] +👩‍🏫 woman teacher // [1F469 200D 1F3EB] +👨‍🏭 man factory worker // [1F468 200D 1F3ED] +👩‍🏭 woman factory worker // [1F469 200D 1F3ED] +👨‍💻 man technologist // [1F468 200D 1F4BB] +👩‍💻 woman technologist // [1F469 200D 1F4BB] +👨‍💼 man office worker // [1F468 200D 1F4BC] +👩‍💼 woman office worker // [1F469 200D 1F4BC] +👨‍🔧 man mechanic // [1F468 200D 1F527] +👩‍🔧 woman mechanic // [1F469 200D 1F527] +👨‍🔬 man scientist // [1F468 200D 1F52C] +👩‍🔬 woman scientist // [1F469 200D 1F52C] +👨‍🚀 man astronaut // [1F468 200D 1F680] +👩‍🚀 woman atronaut // [1F469 200D 1F680] +👨‍🚒 man firefighter // [1F468 200D 1F692] +👩‍🚒 woman firefighter // [1F469 200D 1F692] + +// Emoji ZWJ Sequence: Gendered Role + +👮‍♀ woman police officer // [1F46E 200D 2640] +👮‍♂ man police officer // [1F46E 200D 2642] +👱‍♀ blond-haired woman // [1F471 200D 2640] +👱‍♂ blond-haired man // [1F471 200D 2642] +👳‍♀ woman wearing turban // [1F473 200D 2640] +👳‍♂ man wearing turban // [1F473 200D 2642] +👷‍♀ woman construction worker // [1F477 200D 2640] +👷‍♂ man construction worker // [1F477 200D 2642] +💂‍♀ woman guard // [1F482 200D 2640] +💂‍♂ man guard // [1F482 200D 2642] +🕵️‍♀ woman detective // [1F575 200D 2640] +🕵️‍♂ man detective // [1F575 200D 2642] +🧙‍♀ woman mage // [1F9D9 200D 2640] +🧙‍♂ man mage // [1F9D9 200D 2642] +🧚‍♀ woman fairy // [1F9DA 200D 2640] +🧚‍♂ man fairy // [1F9DA 200D 2642] +🧛‍♀ woman vampire // [1F9DB 200D 2640] +🧛‍♂ man vampire // [1F9DB 200D 2642] +🧜‍♀ mermaid // [1F9DC 200D 2640] +🧜‍♂ merman // [1F9DC 200D 2642] +🧝‍♀ woman elf // [1F9DD 200D 2640] +🧝‍♂ man elf // [1F9DD 200D 2642] +🧞‍♀ woman genie // [1F9DE 200D 2640] +🧞‍♂ man genie // [1F9DE 200D 2642] +🧟‍♀ woman zombie // [1F9DF 200D 2640] +🧟‍♂ man zombie // [1F9DF 200D 2642] + +// Emoji ZWJ Sequence: Gendered Activity + +⛹‍♀ woman bouncing ball // [26F9 200D 2640] +⛹‍♂ man bouncing ball // [26F9 200D 2642] +🏃‍♀ woman running // [1F3C3 200D 2640] +🏃‍♂ man running // [1F3C3 200D 2642] +🏄‍♀ woman surfacing // [1F3C4 200D 2640] +🏄‍♂ man surfacing // [1F3C4 200D 2642] +🏊‍♀ woman swimming // [1F3CA 200D 2640] +🏊‍♂ man swimming // [1F3CA 200D 2642] +🏋️‍♀ woman lifting weights // [1F3CB 200D 2640] +🏋️‍♂ man lifting weights // [1F3CB 200D 2642] +🏌️‍♀ woman golfing // [1F3CC 200D 2640] +🏌️‍♂ man golfing // [1F3CC 200D 2642] +👯‍♀ woman with bunny ears partying // [1F46F 200D 2640] +👯‍♂ man with bunny ears partying // [1F46F 200D 2642] +💆‍♀ woman getting massage // [1F486 200D 2640] +💆‍♂ man getting massage // [1F486 200D 2642] +💇‍♀ woman getting haircut // [1F487 200D 2640] +💇‍♂ man getting haircut // [1F487 200D 2642] +🚣‍♀ woman rowing boat // [1F6A3 200D 2640] +🚣‍♂ man rowing boat // [1F6A3 200D 2642] +🚴‍♀ woman biking // [1F6B4 200D 2640] +🚴‍♂ man biking // [1F6B4 200D 2642] +🚵‍♀ woman mountain biking // [1F6B5 200D 2640] +🚵‍♂ man mountain biking // [1F6B5 200D 2642] +🚶‍♀ woman walking // [1F6B6 200D 2640] +🚶‍♂ man walking // [1F6B6 200D 2642] +🤸‍♀ woman cartwheeling // [1F938 200D 2640] +🤸‍♂ man cartwheeling // [1F938 200D 2642] +🤹‍♀ woman juggling // [1F939 200D 2640] +🤹‍♂ man juggling // [1F939 200D 2642] +🤼‍♀ woman wrestling // [1F93C 200D 2640] +🤼‍♂ man wrestling // [1F93C 200D 2642] +🤽‍♀ woman playing water polo // [1F93D 200D 2640] +🤽‍♂ man playing water polo // [1F93D 200D 2642] +🤾‍♀ woman playing handball // [1F93E 200D 2640] +🤾‍♂ man playing handball // [1F93E 200D 2642] +🧖‍♀ woman in steamy room // [1F9D6 200D 2640] +🧖‍♂ man in steamy room // [1F9D6 200D 2642] +🧗‍♀ woman climbing // [1F9D7 200D 2640] +🧗‍♂ man climbing // [1F9D7 200D 2642] +🧘‍♀ woman in lotus position // [1F9D8 200D 2640] +🧘‍♂ man in lotus position // [1F9D8 200D 2642] + +// Emoji ZWJ Sequence: Gendered Gestures + +💁‍♀ woman tipping hand // [1F481 200D 2640] +💁‍♂ man tipping hand // [1F481 200D 2642] +🙅‍♀ woman gesturing no // [1F645 200D 2640] +🙅‍♂ man gesturing no // [1F645 200D 2642] +🙆‍♀ woman gesturing ok // [1F646 200D 2640] +🙆‍♂ man gesturing ok // [1F646 200D 2642] +🙇‍♀ woman bowing // [1F647 200D 2640] +🙇‍♂ man bowing // [1F647 200D 2642] +🙋‍♀ woman raising hand // [1F64B 200D 2640] +🙋‍♂ man raising hand // [1F64B 200D 2642] +🙍‍♀ woman frowning // [1F64D 200D 2640] +🙍‍♂ man frowning // [1F64D 200D 2642] +🙎‍♀ woman pouting // [1F64E 200D 2640] +🙎‍♂ man pouting // [1F64E 200D 2642] +🤦‍♀ woman facepalming // [1F926 200D 2640] +🤦‍♂ man facepalming // [1F926 200D 2642] +🤷‍♀ woman shrugging // [1F937 200D 2640] +🤷‍♂ man shrugging // [1F937 200D 2642] + +// Emoji ZWJ Sequence: Other + +🏳‍🌈 rainbow flag // [1F3F3 200D 1F308] +👁‍🗨 eye in speech bubble // [1F441 200D 1F5E8] + // References: // [UCD] Unicode Character Database 9.0.0 [http://www.unicode.org/Public/9.0.0/ucd/] // [Emoji] Unicode Emoji 5.0 [http://www.unicode.org/Public/emoji/5.0/] @@ -1558,3 +1675,4 @@ $textmode // Sources: // 1. emoji-test.txt (Emoji) // 2. common/annotations/en.xml (CLDR) +// 3. emoji-zwj-sequences.txt (Emoji) diff --git a/dictsource/en_rules b/dictsource/en_rules index efa4a74e..a74b8b46 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -249,7 +249,7 @@ _) ab (ide a#b _l) ab (i eIb st) ab (il eIb - C) ab (ili+ @b + h) ab (ilim @b ab (ject ab ab (lativ ab able eIb@L @@ -4409,7 +4409,6 @@ multip) ly laI you) ng (er Ng ng (est Ng co) nge (st ndZE - nging (_ NgI2N cri) nging ndZI2N hi) nging ndZI2N u) nging (_ ndZI2N @@ -5718,7 +5717,7 @@ multip) ly laI re (pli rE re (prim rE _) re (prob rE - re (pt rE + re (ptY rE _) re (puta rE re (quis rE _) re (relP2 r,i: diff --git a/src/libespeak-ng/compiledict.c b/src/libespeak-ng/compiledict.c index 01335918..48c72797 100644 --- a/src/libespeak-ng/compiledict.c +++ b/src/libespeak-ng/compiledict.c @@ -116,7 +116,6 @@ MNEM_TAB mnem_flags[] = { { "$alt5", 19 }, { "$alt6", 20 }, { "$alt7", 21 }, - { "$emoji_zwj", 22 }, // alternate emoji pronunciation, when in a ZWJ sequence { "$combine", 23 }, // Combine with the next word diff --git a/src/libespeak-ng/translate.h b/src/libespeak-ng/translate.h index f27b92ae..89f3f680 100644 --- a/src/libespeak-ng/translate.h +++ b/src/libespeak-ng/translate.h @@ -58,7 +58,6 @@ extern "C" #define FLAG_ALT6_TRANS 0x100000 // language specific #define FLAG_ALT7_TRANS 0x200000 // language specific -#define FLAG_EMOJI_ZWJ 0x400000 // alternate emoji pronunciation, when in a ZWJ sequence #define FLAG_COMBINE 0x800000 // combine with the next word #define FLAG_ALLOW_DOT 0x01000000 // ignore '.' after word (abbreviation) #define FLAG_NEEDS_DOT 0x02000000 // only if the word is followed by a dot diff --git a/src/libespeak-ng/voices.c b/src/libespeak-ng/voices.c index cc4a6c16..6a9d68b2 100644 --- a/src/libespeak-ng/voices.c +++ b/src/libespeak-ng/voices.c @@ -829,9 +829,11 @@ voice_t *LoadVoice(const char *vname, int control) name2[0] = 0; sscanf(p, "%s %s %d", name1, name2, &srate); - if (LoadMbrolaTable(name1, name2, &srate) != ENS_OK) - fprintf(stderr, "mbrola voice not found\n"); - voice->samplerate = srate; + espeak_ng_STATUS status = LoadMbrolaTable(name1, name2, &srate); + if (status != ENS_OK) + espeak_ng_PrintStatusCodeMessage(status, stderr, NULL); + else + voice->samplerate = srate; } break; case V_KLATT: diff --git a/src/ucd-tools/data/espeak-ng/emoji-data.txt b/src/ucd-tools/data/espeak-ng/emoji-data.txt index a407b02d..3f3eb967 100644 --- a/src/ucd-tools/data/espeak-ng/emoji-data.txt +++ b/src/ucd-tools/data/espeak-ng/emoji-data.txt @@ -16,8 +16,8 @@ # The `Emoji_Gender` property is used on emoji codepoints to signify the gender # of the emoji with the form: # -# Emoji 200D Emoji_Gender -# Emoji Emoji_Modifier 200D Emoji_Gender +# Emoji_Gendered_Base 200D Emoji_Gender +# Emoji_Gendered_Base Emoji_Modifier 200D Emoji_Gender # # This file uses the same format as the PropList.txt file. # @@ -54,6 +54,53 @@ # ================================================ +26F9 ; Emoji_Gendered_Base # (⛹) person bouncing ball +1F3C3 ; Emoji_Gendered_Base # (🏃) person running +1F3C4 ; Emoji_Gendered_Base # (🏄) person surfacing +1F3CA ; Emoji_Gendered_Base # (🏊) person swimming +1F3CB ; Emoji_Gendered_Base # (🏋️) person lifting weights +1F3CC ; Emoji_Gendered_Base # (🏌️) person golfing +1F46E ; Emoji_Gendered_Base # (👮) police officer +1F46F ; Emoji_Gendered_Base # (👯) person with bunny ears partying +1F471 ; Emoji_Gendered_Base # (👱) blond haired person +1F473 ; Emoji_Gendered_Base # (👳) person wearing turban +1F477 ; Emoji_Gendered_Base # (👷) construction worker +1F481 ; Emoji_Gendered_Base # (💁) person tipping hand +1F482 ; Emoji_Gendered_Base # (💂) guard +1F486 ; Emoji_Gendered_Base # (💆) person getting massage +1F487 ; Emoji_Gendered_Base # (💇) person getting haircut +1F575 ; Emoji_Gendered_Base # (🕵️) detective +1F645 ; Emoji_Gendered_Base # (🙅) person gesturing NO +1F646 ; Emoji_Gendered_Base # (🙆) person gesturing OK +1F647 ; Emoji_Gendered_Base # (🙇) person bowing +1F64B ; Emoji_Gendered_Base # (🙋) person raising hand +1F64D ; Emoji_Gendered_Base # (🙍) person frowning +1F64E ; Emoji_Gendered_Base # (🙎) person pouting +1F6A3 ; Emoji_Gendered_Base # (🚣) person rowing boat +1F6B4 ; Emoji_Gendered_Base # (🚴) person biking +1F6B5 ; Emoji_Gendered_Base # (🚵) person mountain biking +1F6B6 ; Emoji_Gendered_Base # (🚶) person walking +1F926 ; Emoji_Gendered_Base # (🤦) person facepalming +1F937 ; Emoji_Gendered_Base # (🤷) person shrugging +1F938 ; Emoji_Gendered_Base # (🤸) person cartwheeling +1F939 ; Emoji_Gendered_Base # (🤹) person juggling +1F93C ; Emoji_Gendered_Base # (🤼) person wrestling +1F93D ; Emoji_Gendered_Base # (🤽) person playing water polo +1F93E ; Emoji_Gendered_Base # (🤾) person playing handball +1F9D6 ; Emoji_Gendered_Base # (🧖) person in steamy room +1F9D7 ; Emoji_Gendered_Base # (🧘) person in lotus position +1F9D9 ; Emoji_Gendered_Base # (🧙) mage +1F9DA ; Emoji_Gendered_Base # (🧚) fairy +1F9DB ; Emoji_Gendered_Base # (🧛) vampire +1F9DC ; Emoji_Gendered_Base # (🧜) merperson +1F9DD ; Emoji_Gendered_Base # (🧝) elf +1F9DE ; Emoji_Gendered_Base # (🧞) genie +1F9DF ; Emoji_Gendered_Base # (🧟) zombie + +# Total code points: 42 + +# ================================================ + 2640 ; Emoji_Gender # (♀) woman 2642 ; Emoji_Gender # (♂) man diff --git a/src/windows/installer/Product.wxs b/src/windows/installer/Product.wxs index e222c805..31de34da 100644 --- a/src/windows/installer/Product.wxs +++ b/src/windows/installer/Product.wxs @@ -883,6 +883,11 @@ + + + + + @@ -890,24 +895,12 @@ - - - - - - - - - - - - @@ -915,6 +908,17 @@ + + + + + + + + + + +