# SPDX-License-Identifier: MIT


# Import first-party Python modules.
from typing import Any, Dict

# The Avro Dictionary, implemented in Python.
DICT: Dict[str, Any] = {
    # Metadata.
    'meta': {
        'file_name': 'dictionary.py',
        'file_description': 'Provides Avro Dictionary in native Python.',
        'package': 'avro.py',
        'license': 'MIT License',
        'source': 'https://github.com/hitblast/avro.py/blob/main/avro/resources/dictionary.py',
        'adapted_by': 'HitBlast',
        'encoding': 'utf-8',
    },
    # Avro Keyboard mappings.
    'avro': {
        'patterns': [
            {'find': 'bhl', 'replace': 'ভ্ল'},
            {'find': 'psh', 'replace': 'পশ'},
            {'find': 'bdh', 'replace': 'ব্ধ', 'reverse': 'bdh'},
            {'find': 'bj', 'replace': 'ব্জ', 'reverse': 'bj'},
            {'find': 'bd', 'replace': 'ব্দ', 'reverse': 'bd'},
            {'find': 'bb', 'replace': 'ব্ব', 'reverse': 'bb'},
            {'find': 'bl', 'replace': 'ব্ল', 'reverse': 'bl'},
            {'find': 'bh', 'replace': 'ভ', 'reverse': 'bh'},
            {'find': 'vl', 'replace': 'ভ্ল', 'reverse': 'vl'},
            {'find': 'b', 'replace': 'ব', 'reverse': 'b'},
            {'find': 'v', 'replace': 'ভ', 'reverse': 'bh'},
            {'find': 'cNG', 'replace': 'চ্ঞ', 'reverse': 'cng'},
            {'find': 'cch', 'replace': 'চ্ছ', 'reverse': 'cch'},
            {'find': 'cc', 'replace': 'চ্চ', 'reverse': 'cc'},
            {'find': 'ch', 'replace': 'ছ'},
            {'find': 'c', 'replace': 'চ', 'reverse': 'ch'},
            {'find': 'dhn', 'replace': 'ধ্ন', 'reverse': 'dhn'},
            {'find': 'dhm', 'replace': 'ধ্ম', 'reverse': 'dhm'},
            {'find': 'dgh', 'replace': 'দ্ঘ', 'reverse': 'dgh'},
            {'find': 'ddh', 'replace': 'দ্ধ', 'reverse': 'ddh'},
            {'find': 'dbh', 'replace': 'দ্ভ', 'reverse': 'dv'},
            {'find': 'dv', 'replace': 'দ্ভ', 'reverse': 'dv'},
            {'find': 'dm', 'replace': 'দ্ম', 'reverse': 'dd'},
            {'find': 'DD', 'replace': 'ড্ড', 'reverse': 'dd'},
            {'find': 'Dh', 'replace': 'ঢ', 'reverse': 'dh'},
            {'find': 'dh', 'replace': 'ধ', 'reverse': 'dh'},
            {'find': 'dg', 'replace': 'দ্গ'},
            {'find': 'dd', 'replace': 'দ্দ', 'reverse': 'dd'},
            {'find': 'D', 'replace': 'ড', 'reverse': 'd'},
            {'find': 'd', 'replace': 'দ', 'reverse': 'd'},
            {'find': '...', 'replace': '...'},
            {'find': '.`', 'replace': '.', 'reverse': '.'},
            {'find': '..', 'replace': '।।'},
            {'find': '.', 'replace': '।', 'reverse': '.'},
            {'find': 'ghn', 'replace': 'ঘ্ন', 'reverse': 'ghn'},
            {'find': 'Ghn', 'replace': 'ঘ্ন', 'reverse': 'ghn'},
            {'find': 'gdh', 'replace': 'গ্ধ', 'reverse': 'gdh'},
            {'find': 'Gdh', 'replace': 'গ্ধ', 'reverse': 'gdh'},
            {'find': 'gN', 'replace': 'গ্ণ', 'reverse': 'gn'},
            {'find': 'GN', 'replace': 'গ্ণ', 'reverse': 'gn'},
            {'find': 'gn', 'replace': 'গ্ন', 'reverse': 'gn'},
            {'find': 'Gn', 'replace': 'গ্ন', 'reverse': 'gn'},
            {'find': 'gm', 'replace': 'গ্ম'},
            {'find': 'Gm', 'replace': 'গ্ম', 'reverse': 'gm'},
            {'find': 'gl', 'replace': 'গ্ল', 'reverse': 'gl'},
            {'find': 'Gl', 'replace': 'গ্ল', 'reverse': 'gl'},
            {'find': 'gg', 'replace': 'জ্ঞ', 'reverse': 'gg'},
            {'find': 'GG', 'replace': 'জ্ঞ', 'reverse': 'gg'},
            {'find': 'Gg', 'replace': 'জ্ঞ', 'reverse': 'gg'},
            {'find': 'gG', 'replace': 'জ্ঞ', 'reverse': 'gg'},
            {'find': 'gh', 'replace': 'ঘ', 'reverse': 'gh'},
            {'find': 'Gh', 'replace': 'ঘ', 'reverse': 'gh'},
            {'find': 'g', 'replace': 'গ', 'reverse': 'g'},
            {'find': 'G', 'replace': 'গ', 'reverse': 'g'},
            {'find': 'hN', 'replace': 'হ্ণ', 'reverse': 'nn'},
            {'find': 'hn', 'replace': 'হ্ন', 'reverse': 'nn'},
            {'find': 'hm', 'replace': 'হ্ম', 'reverse': 'mm'},
            {'find': 'hl', 'replace': 'হ্ল'},
            {'find': 'h', 'replace': 'হ', 'reverse': 'h'},
            {'find': 'jjh', 'replace': 'জ্ঝ'},
            {'find': 'jNG', 'replace': 'জ্ঞ', 'reverse': 'gg'},
            {'find': 'jh', 'replace': 'ঝ', 'reverse': 'jh'},
            {'find': 'jj', 'replace': 'জ্জ', 'reverse': 'jj'},
            {'find': 'j', 'replace': 'জ', 'reverse': 'j'},
            {'find': 'J', 'replace': 'জ', 'reverse': 'j'},
            {'find': 'kkhN', 'replace': 'ক্ষ্ণ', 'reverse': 'kkhn'},
            {'find': 'kShN', 'replace': 'ক্ষ্ণ', 'reverse': 'kkhn'},
            {'find': 'kkhm', 'replace': 'ক্ষ্ম'},
            {'find': 'kShm', 'replace': 'ক্ষ্ম', 'reverse': 'kkh'},
            {'find': 'kxN', 'replace': 'ক্ষ্ণ', 'reverse': 'kkh'},
            {'find': 'kxm', 'replace': 'ক্ষ্ম', 'reverse': 'kkh'},
            {'find': 'kkh', 'replace': 'ক্ষ', 'reverse': 'kkh'},
            {'find': 'kSh', 'replace': 'ক্ষ', 'reverse': 'kkh'},
            {'find': 'ksh', 'replace': 'কশ'},
            {'find': 'kx', 'replace': 'ক্ষ', 'reverse': 'kkh'},
            {'find': 'kk', 'replace': 'ক্ক', 'reverse': 'kk'},
            {'find': 'kT', 'replace': 'ক্ট', 'reverse': 'kt'},
            {'find': 'kt', 'replace': 'ক্ত', 'reverse': 'kt'},
            {'find': 'kl', 'replace': 'ক্ল', 'reverse': 'kl'},
            {'find': 'ks', 'replace': 'ক্স', 'reverse': 'ks'},
            {'find': 'kh', 'replace': 'খ', 'reverse': 'kh'},
            {'find': 'k', 'replace': 'ক', 'reverse': 'k'},
            {'find': 'lbh', 'replace': 'ল্ভ'},
            {'find': 'ldh', 'replace': 'ল্ধ'},
            {'find': 'lkh', 'replace': 'লখ'},
            {'find': 'lgh', 'replace': 'লঘ'},
            {'find': 'lph', 'replace': 'লফ'},
            {'find': 'lk', 'replace': 'ল্ক', 'reverse': 'lk'},
            {'find': 'lg', 'replace': 'ল্গ'},
            {'find': 'lT', 'replace': 'ল্ট', 'reverse': 'lt'},
            {'find': 'lD', 'replace': 'ল্ড', 'reverse': 'ld'},
            {'find': 'lp', 'replace': 'ল্প', 'reverse': 'lp'},
            {'find': 'lv', 'replace': 'ল্ভ'},
            {'find': 'lm', 'replace': 'ল্ম', 'reverse': 'lm'},
            {'find': 'll', 'replace': 'ল্ল', 'reverse': 'll'},
            {'find': 'lb', 'replace': 'ল্ব', 'reverse': 'lb'},
            {'find': 'l', 'replace': 'ল', 'reverse': 'l'},
            {'find': 'mth', 'replace': 'ম্থ'},
            {'find': 'mph', 'replace': 'ম্ফ', 'reverse': 'mf'},
            {'find': 'mbh', 'replace': 'ম্ভ', 'reverse': 'mv'},
            {'find': 'mpl', 'replace': 'মপ্ল'},
            {'find': 'mn', 'replace': 'ম্ন', 'reverse': 'mn'},
            {'find': 'mp', 'replace': 'ম্প', 'reverse': 'mp'},
            {'find': 'mv', 'replace': 'ম্ভ', 'reverse': 'mv'},
            {'find': 'mm', 'replace': 'ম্ম', 'reverse': 'mm'},
            {'find': 'ml', 'replace': 'ম্ল', 'reverse': 'ml'},
            {'find': 'mb', 'replace': 'ম্ব', 'reverse': 'mb'},
            {'find': 'mf', 'replace': 'ম্ফ', 'reverse': 'mf'},
            {'find': 'm', 'replace': 'ম', 'reverse': 'm'},
            {'find': '0', 'replace': '০', 'reverse': '0'},
            {'find': '1', 'replace': '১', 'reverse': '1'},
            {'find': '2', 'replace': '২', 'reverse': '2'},
            {'find': '3', 'replace': '৩', 'reverse': '3'},
            {'find': '4', 'replace': '৪', 'reverse': '4'},
            {'find': '5', 'replace': '৫', 'reverse': '5'},
            {'find': '6', 'replace': '৬', 'reverse': '6'},
            {'find': '7', 'replace': '৭', 'reverse': '7'},
            {'find': '8', 'replace': '৮', 'reverse': '8'},
            {'find': '9', 'replace': '৯', 'reverse': '9'},
            {'find': 'NgkSh', 'replace': 'ঙ্ক্ষ', 'reverse': 'ngkh'},
            {'find': 'Ngkkh', 'replace': 'ঙ্ক্ষ', 'reverse': 'ngkh'},
            {'find': 'NGch', 'replace': 'ঞ্ছ', 'reverse': 'ngch'},
            {'find': 'Nggh', 'replace': 'ঙ্ঘ'},
            {'find': 'Ngkh', 'replace': 'ঙ্খ', 'reverse': 'ngkh'},
            {'find': 'NGjh', 'replace': 'ঞ্ঝ'},
            {'find': 'ngOU', 'replace': 'ঙ্গৌ'},
            {'find': 'ngOI', 'replace': 'ঙ্গৈ'},
            {'find': 'Ngkx', 'replace': 'ঙ্ক্ষ', 'reverse': 'ngkh'},
            {'find': 'NGc', 'replace': 'ঞ্চ', 'reverse': 'nch'},
            {'find': 'nch', 'replace': 'ঞ্ছ', 'reverse': 'ngch'},
            {'find': 'njh', 'replace': 'ঞ্ঝ'},
            {'find': 'ngh', 'replace': 'ঙ্ঘ'},
            {'find': 'Ngk', 'replace': 'ঙ্ক', 'reverse': 'ngk'},
            {'find': 'Ngx', 'replace': 'ঙ্ষ'},
            {'find': 'Ngg', 'replace': 'ঙ্গ', 'reverse': 'ngg'},
            {'find': 'Ngm', 'replace': 'ঙ্ম'},
            {'find': 'NGj', 'replace': 'ঞ্জ', 'reverse': 'ngj'},
            {'find': 'ndh', 'replace': 'ন্ধ', 'reverse': 'ndh'},
            {'find': 'nTh', 'replace': 'ন্ঠ', 'reverse': 'nth'},
            {'find': 'NTh', 'replace': 'ণ্ঠ', 'reverse': 'nth'},
            {'find': 'nth', 'replace': 'ন্থ', 'reverse': 'nth'},
            {'find': 'nkh', 'replace': 'ঙ্খ', 'reverse': 'ngkh'},
            {'find': 'ngo', 'replace': 'ঙ্গ', 'reverse': 'ngg'},
            {'find': 'nga', 'replace': 'ঙ্গা'},
            {'find': 'ngi', 'replace': 'ঙ্গি'},
            {'find': 'ngI', 'replace': 'ঙ্গী'},
            {'find': 'ngu', 'replace': 'ঙ্গু'},
            {'find': 'ngU', 'replace': 'ঙ্গূ'},
            {'find': 'nge', 'replace': 'ঙ্গে'},
            {'find': 'ngO', 'replace': 'ঙ্গো'},
            {'find': 'NDh', 'replace': 'ণ্ঢ'},
            {'find': 'nsh', 'replace': 'নশ'},
            {'find': 'Ngr', 'replace': 'ঙর'},
            {'find': 'NGr', 'replace': 'ঞর'},
            {'find': 'ngr', 'replace': 'ংর'},
            {'find': 'nj', 'replace': 'ঞ্জ', 'reverse': 'ngj'},
            {'find': 'Ng', 'replace': 'ঙ', 'reverse': 'ng'},
            {'find': 'NG', 'replace': 'ঞ', 'reverse': 'y'},
            {'find': 'nk', 'replace': 'ঙ্ক', 'reverse': 'ngk'},
            {'find': 'ng', 'replace': 'ং', 'reverse': 'ng'},
            {'find': 'nn', 'replace': 'ন্ন', 'reverse': 'nn'},
            {'find': 'NN', 'replace': 'ণ্ণ'},
            {'find': 'Nn', 'replace': 'ণ্ন'},
            {'find': 'nm', 'replace': 'ন্ম', 'reverse': 'nm'},
            {'find': 'Nm', 'replace': 'ণ্ম'},
            {'find': 'nd', 'replace': 'ন্দ', 'reverse': 'nd'},
            {'find': 'nT', 'replace': 'ন্ট', 'reverse': 'nt'},
            {'find': 'NT', 'replace': 'ণ্ট', 'reverse': 'nt'},
            {'find': 'nD', 'replace': 'ন্ড', 'reverse': 'nd'},
            {'find': 'ND', 'replace': 'ণ্ড', 'reverse': 'nd'},
            {'find': 'nt', 'replace': 'ন্ত', 'reverse': 'nt'},
            {'find': 'ns', 'replace': 'ন্স'},
            {'find': 'nc', 'replace': 'ঞ্চ', 'reverse': 'nch'},
            {'find': 'n', 'replace': 'ন', 'reverse': 'n'},
            {'find': 'N', 'replace': 'ণ', 'reverse': 'n'},
            {'find': 'OI`', 'replace': 'ৈ', 'reverse': 'oi'},
            {'find': 'OU`', 'replace': 'ৌ', 'reverse': 'ou'},
            {'find': 'O`', 'replace': 'ো', 'reverse': 'o'},
            {
                'find': 'OI',
                'replace': 'ৈ',
                'rules': [
                    {'matches': [{'type': 'prefix', 'scope': '!consonant'}], 'replace': 'ঐ'},
                    {'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'ঐ'},
                ],
                'reverse': 'oi',
            },
            {
                'find': 'OU',
                'replace': 'ৌ',
                'rules': [
                    {'matches': [{'type': 'prefix', 'scope': '!consonant'}], 'replace': 'ঔ'},
                    {'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'ঔ'},
                ],
                'reverse': 'ou',
            },
            {
                'find': 'O',
                'replace': 'ো',
                'rules': [
                    {'matches': [{'type': 'prefix', 'scope': '!consonant'}], 'replace': 'ও'},
                    {'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'ও'},
                ],
                'reverse': 'o',
            },
            {'find': 'phl', 'replace': 'ফ্ল', 'reverse': 'fl'},
            {'find': 'pT', 'replace': 'প্ট', 'reverse': 'pt'},
            {'find': 'pt', 'replace': 'প্ত', 'reverse': 'pt'},
            {'find': 'pn', 'replace': 'প্ন', 'reverse': 'pn'},
            {'find': 'pp', 'replace': 'প্প', 'reverse': 'pp'},
            {'find': 'pl', 'replace': 'প্ল', 'reverse': 'pl'},
            {'find': 'ps', 'replace': 'প্স', 'reverse': 'ps'},
            {'find': 'ph', 'replace': 'ফ', 'reverse': 'ph'},
            {'find': 'fl', 'replace': 'ফ্ল', 'reverse': 'fl'},
            {'find': 'f', 'replace': 'ফ', 'reverse': 'ph'},
            {'find': 'p', 'replace': 'প', 'reverse': 'p'},
            {'find': 'rri`', 'replace': 'ৃ', 'reverse': 'ri'},
            {
                'find': 'rri',
                'replace': 'ৃ',
                'rules': [
                    {'matches': [{'type': 'prefix', 'scope': '!consonant'}], 'replace': 'ঋ'},
                    {'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'ঋ'},
                ],
                'reverse': 'ri',
            },
            {'find': 'rrZ', 'replace': 'রর‍্য'},
            {'find': 'rry', 'replace': 'রর‍্য'},
            {
                'find': 'rZ',
                'replace': 'র‍্য',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'consonant'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'r'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'y'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'w'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'x'},
                        ],
                        'replace': '্র্য',
                    }
                ],
            },
            {
                'find': 'ry',
                'replace': 'র‍্য',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'consonant'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'r'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'y'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'w'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'x'},
                        ],
                        'replace': '্র্য',
                    }
                ],
            },
            {
                'find': 'rr',
                'replace': 'রর',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!vowel'},
                            {'type': 'suffix', 'scope': '!exact', 'value': 'r'},
                            {'type': 'suffix', 'scope': '!punctuation'},
                        ],
                        'replace': 'র্',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'consonant'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'r'},
                        ],
                        'replace': '্রর',
                    },
                ],
            },
            {'find': 'Rg', 'replace': 'ড়্গ'},
            {'find': 'Rh', 'replace': 'ঢ়'},
            {'find': 'R', 'replace': 'ড়', 'reverse': 'r'},
            {
                'find': 'r',
                'replace': 'র',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'consonant'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'r'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'y'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'w'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'x'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'Z'},
                        ],
                        'replace': '্র',
                    }
                ],
            },
            {'find': 'shch', 'replace': 'শ্ছ', 'reverse': 'sch'},
            {'find': 'ShTh', 'replace': 'ষ্ঠ', 'reverse': 'sth'},
            {'find': 'Shph', 'replace': 'ষ্ফ', 'reverse': 'sf'},
            {'find': 'Sch', 'replace': 'শ্ছ', 'reverse': 'sch'},
            {'find': 'skl', 'replace': 'স্ক্ল'},
            {'find': 'skh', 'replace': 'স্খ'},
            {'find': 'sth', 'replace': 'স্থ', 'reverse': 'sth'},
            {'find': 'sph', 'replace': 'স্ফ', 'reverse': 'sf'},
            {'find': 'shc', 'replace': 'শ্চ', 'reverse': 'scch'},
            {'find': 'sht', 'replace': 'শ্ত'},
            {'find': 'shn', 'replace': 'শ্ন', 'reverse': 'sn'},
            {'find': 'shm', 'replace': 'শ্ম', 'reverse': 'ss'},
            {'find': 'shl', 'replace': 'শ্ল', 'reverse': 'sl'},
            {'find': 'Shk', 'replace': 'ষ্ক', 'reverse': 'sk'},
            {'find': 'ShT', 'replace': 'ষ্ট', 'reverse': 'st'},
            {'find': 'ShN', 'replace': 'ষ্ণ', 'reverse': 'sn'},
            {'find': 'Shp', 'replace': 'ষ্প', 'reverse': 'sp'},
            {'find': 'Shf', 'replace': 'ষ্ফ', 'reverse': 'sf'},
            {'find': 'Shm', 'replace': 'ষ্ম', 'reverse': 'sm'},
            {'find': 'spl', 'replace': 'স্প্ল'},
            {'find': 'sk', 'replace': 'স্ক', 'reverse': 'sk'},
            {'find': 'Sc', 'replace': 'শ্চ', 'reverse': 'scch'},
            {'find': 'sT', 'replace': 'স্ট', 'reverse': 'st'},
            {'find': 'st', 'replace': 'স্ত', 'reverse': 'st'},
            {'find': 'sn', 'replace': 'স্ন', 'reverse': 'sn'},
            {'find': 'sp', 'replace': 'স্প', 'reverse': 'sp'},
            {'find': 'sf', 'replace': 'স্ফ', 'reverse': 'sf'},
            {'find': 'sm', 'replace': 'স্ম', 'reverse': 'sh'},
            {'find': 'sl', 'replace': 'স্ল', 'reverse': 'sl'},
            {'find': 'sh', 'replace': 'শ', 'reverse': 'sh'},
            {'find': 'Sc', 'replace': 'শ্চ', 'reverse': 'scch'},
            {'find': 'St', 'replace': 'শ্ত'},
            {'find': 'Sn', 'replace': 'শ্ন', 'reverse': 'sn'},
            {'find': 'Sm', 'replace': 'শ্ম', 'reverse': 'ss'},
            {'find': 'Sl', 'replace': 'শ্ল', 'reverse': 'sl'},
            {'find': 'Sh', 'replace': 'ষ', 'reverse': 'sh'},
            {'find': 's', 'replace': 'স', 'reverse': 's'},
            {'find': 'S', 'replace': 'শ', 'reverse': 'sh'},
            {'find': 'oo`', 'replace': 'ু', 'reverse': 'u'},
            {
                'find': 'oo',
                'replace': 'ু',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'উ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'উ',
                    },
                ],
                'reverse': 'u',
            },
            # {
            #     "find": "o`"
            #     "replace": ""
            # },
            {'find': 'oZ', 'replace': 'অ্য'},
            {
                'find': 'o',
                'replace': '',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'vowel'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'o'},
                        ],
                        'replace': 'ও',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'vowel'},
                            {'type': 'prefix', 'scope': 'exact', 'value': 'o'},
                        ],
                        'replace': 'অ',
                    },
                    {'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'অ'},
                ],
            },
            {'find': 'tth', 'replace': 'ত্থ'},
            {'find': 't``', 'replace': 'ৎ', 'reverse': 't'},
            {'find': 'TT', 'replace': 'ট্ট', 'reverse': 'tt'},
            {'find': 'Tm', 'replace': 'ট্ম'},
            {'find': 'Th', 'replace': 'ঠ', 'reverse': 'th'},
            {'find': 'tn', 'replace': 'ত্ন'},
            {'find': 'tm', 'replace': 'ত্ম', 'reverse': 'tt'},
            {'find': 'th', 'replace': 'থ', 'reverse': 'th'},
            {'find': 'tt', 'replace': 'ত্ত', 'reverse': 'tt'},
            {'find': 'T', 'replace': 'ট', 'reverse': 't'},
            {'find': 't', 'replace': 'ত', 'reverse': 't'},
            {'find': 'aZ', 'replace': 'অ্যা'},
            {'find': 'AZ', 'replace': 'অ্যা'},
            {'find': 'a`', 'replace': 'া', 'reverse': 'a'},
            {'find': 'A`', 'replace': 'া', 'reverse': 'a'},
            {'replace': 'আ', 'reverse': 'a'},
            {'replace': 'র', 'reverse': 'r'},
            {
                'find': 'a',
                'replace': 'া',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'আ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'prefix', 'scope': '!exact', 'value': 'a'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'য়া',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'exact', 'value': 'a'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'আ',
                    },
                ],
                'reverse': 'a',
            },
            {'find': 'i`', 'replace': 'ি', 'reverse': 'i'},
            {'replace': 'ই', 'reverse': 'i'},
            {
                'find': 'i',
                'replace': 'ি',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ই',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ই',
                    },
                ],
            },
            {'find': 'I`', 'replace': 'ী', 'reverse': 'i'},
            {
                'find': 'I',
                'replace': 'ী',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ঈ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ঈ',
                    },
                ],
                'reverse': 'i',
            },
            {'find': 'u`', 'replace': 'ু', 'reverse': 'u'},
            {'replace': 'উ', 'reverse': 'u'},
            {
                'find': 'u',
                'replace': 'ু',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'উ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'উ',
                    },
                ],
                'reverse': 'u',
            },
            {'find': 'U`', 'replace': 'ূ', 'reverse': 'u'},
            {
                'find': 'U',
                'replace': 'ূ',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ঊ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ঊ',
                    },
                ],
                'reverse': 'u',
            },
            {'find': 'ee`', 'replace': 'ী', 'reverse': 'i'},
            {
                'find': 'ee',
                'replace': 'ী',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ঈ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'ঈ',
                    },
                ],
                'reverse': 'i',
            },
            {'find': 'e`', 'replace': 'ে', 'reverse': 'e'},
            {'replace': 'এ', 'reverse': 'e'},
            {'replace': 'ও', 'reverse': 'w'},
            {
                'find': 'e',
                'replace': 'ে',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'এ',
                    },
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': '!exact', 'value': '`'},
                        ],
                        'replace': 'এ',
                    },
                ],
                'reverse': 'e',
            },
            {'find': 'z', 'replace': 'য', 'reverse': 'z'},
            {'find': 'Z', 'replace': '্য'},
            {
                'find': 'y',
                'replace': '্য',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': '!consonant'},
                            {'type': 'prefix', 'scope': '!punctuation'},
                        ],
                        'replace': 'য়',
                    },
                    {'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'ইয়'},
                ],
            },
            {'find': 'Y', 'replace': 'য়', 'reverse': 'y'},
            {'find': 'q', 'replace': 'ক', 'reverse': 'k'},
            {
                'find': 'w',
                'replace': 'ও',
                'rules': [
                    {
                        'matches': [
                            {'type': 'prefix', 'scope': 'punctuation'},
                            {'type': 'suffix', 'scope': 'vowel'},
                        ],
                        'replace': 'ওয়',
                    },
                    {'matches': [{'type': 'prefix', 'scope': 'consonant'}], 'replace': '্ব'},
                ],
                'reverse': 'o',
            },
            {
                'find': 'x',
                'replace': 'ক্স',
                'rules': [{'matches': [{'type': 'prefix', 'scope': 'punctuation'}], 'replace': 'এক্স'}],
                'reverse': 'ks',
            },
            {'find': ':`', 'replace': ':'},
            {'find': ':', 'replace': 'ঃ'},
            {'find': '^`', 'replace': '^'},
            {'find': '^', 'replace': 'ঁ', 'reverse': ''},
            {'find': ',,', 'replace': '্‌'},
            {'find': ',', 'replace': ','},
            {'find': '$', 'replace': '৳'},
            # {
            #     "find": "`",
            #     "replace": ""
            # }
        ],
        # Remapped words.
        'exceptions': {
            'ফেসবুক': 'Facebook',
            'গুগল': 'Google',
            'উইকিপিডিয়া': 'Wikipedia',
            'হোয়াটসঅ্যাপ': 'Whatsapp',
            'টুইটার': 'Twitter',
            'লিঙ্কডইন': 'Linkedin',
        },
        # Constant values.
        'vowel': 'aeiou',
        'consonant': 'bcdfghjklmnpqrstvwxyz',
        'casesensitive': 'oiudgjnrstyz',
        'number': '0123456789',
        # For reverse parsing.
        'shorborno': 'অআইঈউঊএঐওঔ',
        'kar': ['া', 'ি', 'ী', 'ৗ', 'ু', 'ূ', 'ৃ', 'ে', 'ৈ', 'ো', 'ৌ'],
        # Ignored symbols.
        'ignore': ['ঁ', '।', '?', '.', '-', ';'],
    },
    # Bijoy Keyboard mappings.
    'bijoy': {
        'mappings': {
            '।': '|',
            '‘': 'Ô',
            '’': 'Õ',
            '“': 'Ò',
            '”': 'Ó',
            '্র্য': 'ª¨',
            'র‌্য': 'i¨',
            'ক্ক': '°',
            'ক্ট': '±',
            'ক্ত': '³',
            'ক্ব': 'K¡',
            'স্ক্র': '¯Œ',
            'ক্র': 'µ',
            'ক্ল': 'K¬',
            'ক্ষ': '¶',
            'ক্স': '·',
            'গু': '¸',
            'গ্ধ': '»',
            'গ্ন': 'Mœ',
            'গ্ম': 'M¥',
            'গ্ল': 'M­',
            'গ্রু': 'Mªy',
            'ঙ্ক': '¼',
            'ঙ্ক্ষ': '•¶',
            'ঙ্খ': '•L',
            'ঙ্গ': '½',
            'ঙ্ঘ': '•N',
            'চ্চ': '”P',
            'চ্ছ': '”Q',
            'চ্ছ্ব': '”Q¡',
            'চ্ঞ': '”T',
            'জ্জ্ব': '¾¡',
            'জ্জ': '¾',
            'জ্ঝ': 'À',
            'জ্ঞ': 'Á',
            'জ্ব': 'R¡',
            'ঞ্চ': 'Â',
            'ঞ্ছ': 'Ã',
            'ঞ্জ': 'Ä',
            'ঞ্ঝ': 'Å',
            'ট্ট': 'Æ',
            'ট্ব': 'U¡',
            'ট্ম': 'U¥',
            'ড্ড': 'Ç',
            'ণ্ট': 'È',
            'ণ্ঠ': 'É',
            'ন্স': 'Ý',
            'ণ্ড': 'Ê',
            'ন্তু': 'š‘',
            'ণ্ব': 'Y^',
            'ত্ত': 'Ë',
            'ত্ত্ব': 'Ë¡',
            'ত্থ': 'Ì',
            'ত্ন': 'Zœ',
            'ত্ম': 'Z¥',
            'ন্ত্ব': 'š—¡',
            'ত্ব': 'Z¡',
            'থ্ব': '_¡',
            'দ্গ': '˜M',
            'দ্ঘ': '˜N',
            'দ্দ': 'Ï',
            'দ্ধ': '×',
            'দ্ব': '˜¡',
            'দ্ব': 'Ø',
            'দ্ভ': '™¢',
            'দ্ম': 'Ù',
            'দ্রু': '`ª“',
            'ধ্ব': 'aŸ',
            'ধ্ম': 'a¥',
            'ন্ট': '›U',
            'ন্ঠ': 'Ú',
            'ন্ড': 'Û',
            'ন্ত্র': 'š¿',
            'ন্ত': 'š—',
            'স্ত্র': '¯¿',
            'ত্র': 'Î',
            'ন্থ': 'š’',
            'ন্দ': '›`',
            'ন্দ্ব': '›Ø',
            'ন্ধ': 'Ü',
            'ন্ন': 'bœ',
            'ন্ব': 'š^',
            'ন্ম': 'b¥',
            'প্ট': 'Þ',
            'প্ত': 'ß',
            'প্ন': 'cœ',
            'প্প': 'à',
            'প্ল': 'c­',
            'প্স': 'á',
            'ফ্ল': 'd¬',
            'ব্জ': 'â',
            'ব্দ': 'ã',
            'ব্ধ': 'ä',
            'ব্ব': 'eŸ',
            'ব্ল': 'e­',
            'ভ্র': 'å',
            'ম্ন': 'gœ',
            'ম্প': '¤ú',
            'ম্ফ': 'ç',
            'ম্ব': '¤^',
            'ম্ভ': '¤¢',
            'ম্ভ্র': '¤£',
            'ম্ম': '¤§',
            'ম্ল': '¤­',
            'রু': 'i“',
            'রূ': 'iƒ',
            'ল্ক': 'é',
            'ল্গ': 'ê',
            'ল্প': 'í',
            'ল্ট': 'ë',
            'ল্ড': 'ì',
            'ল্ফ': 'î',
            'ল্ব': 'j¦',
            'ল্ম': 'j¥',
            'ল্ল': 'jø',
            'শু': 'ï',
            'শ্চ': 'ð',
            'শ্ন': 'kœ',
            'শ্ব': 'k¦',
            'শ্ম': 'k¥',
            'শ্ল': 'kø',
            'ষ্ক': '®‹',
            'ষ্ক্র': '®Œ',
            'ষ্ট': 'ó',
            'ষ্ঠ': 'ô',
            'ষ্ণ': 'ò',
            'ষ্প': '®ú',
            'ষ্ফ': 'õ',
            'ষ্ম': '®§',
            'স্ক': '¯‹',
            'স্ট': '÷',
            'স্খ': 'ö',
            'স্ত': '¯—',
            'স্তু': '¯‘',
            'স্থ': '¯’',
            'স্ন': 'mœ',
            'স্প': '¯ú',
            'স্ফ': 'ù',
            'স্ব': '¯^',
            'স্ম': '¯§',
            'স্ল': '¯­',
            'হু': 'û',
            'হ্ণ': 'nè',
            'হ্ন': 'ý',
            'হ্ম': 'þ',
            'হ্ল': 'n¬',
            'হৃ': 'ü',
            'র্': '©',
            '্র': '«',
            '্য': '¨',
            '্': '&',
            'আ': 'Av',
            'অ': 'A',
            'ই': 'B',
            'ঈ': 'C',
            'উ': 'D',
            'ঊ': 'E',
            'ঋ': 'F',
            'এ': 'G',
            'ঐ': 'H',
            'ও': 'I',
            'ঔ': 'J',
            'ক': 'K',
            'খ': 'L',
            'গ': 'M',
            'ঘ': 'N',
            'ঙ': 'O',
            'চ': 'P',
            'ছ': 'Q',
            'জ': 'R',
            'ঝ': 'S',
            'ঞ': 'T',
            'ট': 'U',
            'ঠ': 'V',
            'ড': 'W',
            'ঢ': 'X',
            'ণ': 'Y',
            'ত': 'Z',
            'থ': '_',
            'দ': '`',
            'ধ': 'a',
            'ন': 'b',
            'প': 'c',
            'ফ': 'd',
            'ব': 'e',
            'ভ': 'f',
            'ম': 'g',
            'য': 'h',
            'র': 'i',
            'ল': 'j',
            'শ': 'k',
            'ষ': 'l',
            'স': 'm',
            'হ': 'n',
            'ড়': 'o',
            'ঢ়': 'p',
            'য়': 'q',
            'ৎ': 'r',
            '০': '0',
            '১': '1',
            '২': '2',
            '৩': '3',
            '৪': '4',
            '৫': '5',
            '৬': '6',
            '৭': '7',
            '৮': '8',
            '৯': '9',
            'া': 'v',
            'ি': 'w',
            'ী': 'x',
            'ু': 'y',
            'ূ': '~',
            'ৃ': '…',
            'ে': '‡',
            'ৈ': '‰',
            'ৗ': 'Š',
            'ং': 's',
            'ঃ': 't',
            'ঁ': 'u',
        },
        'prekar': ['ি', 'ৈ', 'ে'],
        'banjonborno': 'কখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমশষসহযরলয়ংঃঁৎ',
        'exceptions': {
            'halant': '্',
        },
    },
}
