Countries names + colors

kindly stolen from osk tetra channel script
This commit is contained in:
dan63047 2023-07-11 20:02:35 +03:00
parent 736b359c76
commit 11366df5c2
8 changed files with 1728 additions and 17 deletions

View File

@ -1,5 +1,6 @@
import 'dart:math';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:vector_math/vector_math.dart';
const double noTrRd = 60.9;
@ -13,7 +14,7 @@ const double appdspWeight = 140;
const double vsapmWeight = 60;
const double cheeseWeight = 1.25;
const double gbeWeight = 315;
const Map<String, double> ranksCutoffs = {
const Map<String, double> rankCutoffs = {
"x": 0.01,
"u": 0.05,
"ss": 0.11,
@ -32,6 +33,27 @@ const Map<String, double> ranksCutoffs = {
"d+": 0.975,
"d": 1
};
const Map<String, Color> rankColors = { // thanks osk for const rankColors at https://ch.tetr.io/res/js/base.js:418
'x': Color(0xFFFF45FF),
'u': Color(0xFFFF3813),
'ss': Color(0xFFDB8B1F),
's+': Color(0xFFD8AF0E),
's': Color(0xFFE0A71B),
's-': Color(0xFFB2972B),
'a+': Color(0xFF1FA834),
'a': Color(0xFF46AD51),
'a-': Color(0xFF3BB687),
'b+': Color(0xFF4F99C0),
'b': Color(0xFF4F64C9),
'b-': Color(0xFF5650C7),
'c+': Color(0xFF552883),
'c': Color(0xFF733E8F),
'c-': Color(0xFF79558C),
'd+': Color(0xFF8E6091),
'd': Color(0xFF907591),
'z': Color(0xFF375433)
};
Duration doubleSecondsToDuration(double value) {
value = value * 1000000;
@ -890,7 +912,7 @@ class TetrioPlayersLeaderboard {
avgGamesPlayed = (totalGamesPlayed / filtredLeaderboard.length).floor();
avgGamesWon = (totalGamesWon / filtredLeaderboard.length).floor();
return [TetraLeagueAlpha(apm: avgAPM, pps: avgPPS, vs: avgVS, glicko: avgGlicko, rd: avgRD, gamesPlayed: avgGamesPlayed, gamesWon: avgGamesWon, bestRank: rank, decaying: false, rating: avgTR, rank: rank, percentileRank: rank, percentile: 0, standing: -1, standingLocal: -1, nextAt: -1, prevAt: -1),
{"totalGamesPlayed": totalGamesPlayed, "totalGamesWon": totalGamesWon, "players": filtredLeaderboard.length, "lowestTR": lowestTR, "toEnterTR": leaderboard[(leaderboard.length * ranksCutoffs[rank]!).floor()-1].rating}];
{"totalGamesPlayed": totalGamesPlayed, "totalGamesWon": totalGamesWon, "players": filtredLeaderboard.length, "lowestTR": lowestTR, "toEnterTR": leaderboard[(leaderboard.length * rankCutoffs[rank]!).floor()-1].rating}];
}
Map<String, List<dynamic>> get averages => {

File diff suppressed because it is too large Load Diff

View File

@ -11,3 +11,17 @@ class CouldNotUpdatePlayer implements Exception {}
class TetrioPlayerAlreadyExist implements Exception {}
class TetrioPlayerNotExist implements Exception {}
class ConnectionIssue implements Exception {
const ConnectionIssue(this.code, this.message);
final int code;
final String message;
@override
String toString() {
String result = 'ConnectionIssue';
return '$result: $code $message';
}
}

View File

@ -360,11 +360,11 @@ class TetrioService extends DB {
return player;
} else {
developer.log("fetchPlayer User dosen't exist", name: "services/tetrio_crud", error: response.body);
throw Exception("User doesn't exist");
throw TetrioPlayerNotExist();
}
} else {
developer.log("fetchPlayer Failed to fetch player", name: "services/tetrio_crud", error: response.statusCode);
throw Exception('Failed to fetch player');
throw ConnectionIssue(response.statusCode, response.reasonPhrase??"No reason");
}
}

View File

@ -199,7 +199,7 @@ class _MainState extends State<MainView> with SingleTickerProviderStateMixin {
)
: _searchTextField(),
backgroundColor: Colors.black,
actions: [
actions: widget.player == null ? [
!_searchBoolean
? IconButton(
onPressed: () {
@ -244,7 +244,7 @@ class _MainState extends State<MainView> with SingleTickerProviderStateMixin {
Navigator.pushNamed(context, value);
},
),
],
] : null,
),
body: SafeArea(
child: FutureBuilder<List<dynamic>>(
@ -320,8 +320,24 @@ class _MainState extends State<MainView> with SingleTickerProviderStateMixin {
),
);
} else if (snapshot.hasError) {
String errText = "";
switch (snapshot.error.runtimeType){
case TetrioPlayerNotExist:
errText = t.errors.noSuchUser;
break;
case ConnectionIssue:
var err = snapshot.error as ConnectionIssue;
errText = t.errors.connection(code: err.code, message: err.message);
break;
case SocketException: // cant catch
var err = snapshot.error as SocketException;
errText = t.errors.socketException(host: err.address!.host, message: err.osError!.message);
break;
default:
errText = snapshot.error.toString();
}
return Center(
child: Text('${snapshot.error}',
child: Text(errText,
style: const TextStyle(
fontFamily: "Eurostile Round Extended",
fontSize: 42),
@ -403,11 +419,9 @@ class _NavDrawerState extends State<NavDrawer> {
return NestedScrollView(
headerSliverBuilder: (context, value) {
return [
const SliverToBoxAdapter(
SliverToBoxAdapter(
child: DrawerHeader(
child: Text(
'Players you track',
style: TextStyle(color: Colors.white, fontSize: 25),
child: Text(t.playersYouTrack, style: const TextStyle(color: Colors.white, fontSize: 25),
))),
SliverToBoxAdapter(
child: ListTile(
@ -433,7 +447,8 @@ class _NavDrawerState extends State<NavDrawer> {
);
},
),
)
),
const SliverToBoxAdapter(child: Divider())
];
},
body: ListView.builder(

View File

@ -226,7 +226,7 @@ class UserThingy extends StatelessWidget {
children: [
Expanded(
child: Text(
"${player.country != null ? "${player.country?.toUpperCase()}" : ""}${t.playerRole[player.role]}${t.playerRoleAccount}${player.registrationTime == null ? t.wasFromBeginning : '${t.created} ${dateFormat.format(player.registrationTime!)}'}${player.botmaster != null ? " ${t.botCreatedBy} ${player.botmaster}" : ""} ${player.supporterTier == 0 ? t.notSupporter : t.supporter(tier: player.supporterTier)}",
"${player.country != null ? "${t.countries[player.country]}" : ""}${t.playerRole[player.role]}${t.playerRoleAccount}${player.registrationTime == null ? t.wasFromBeginning : '${t.created} ${dateFormat.format(player.registrationTime!)}'}${player.botmaster != null ? " ${t.botCreatedBy} ${player.botmaster}" : ""} ${player.supporterTier == 0 ? t.notSupporter : t.supporter(tier: player.supporterTier)}",
textAlign: TextAlign.center,
style: const TextStyle(
fontFamily: "Eurostile Round",

View File

@ -44,6 +44,7 @@
"decaying": "Decaying",
"gamesUntilRanked": "${left} games until being ranked",
"nerdStats": "Nerd Stats",
"playersYouTrack": "Players you track",
"statCellNum":{
"xpLevel": "XP Level",
"hoursPlayed": "Hours\nPlayed",
@ -75,7 +76,8 @@
"sysop": "System operator",
"admin": "Admin",
"mod": "Moderator",
"halfmod": "Community moderator"
"halfmod": "Community moderator",
"anon": "Anonymous"
},
"numOfGameActions":{
"pc": "All Clears",
@ -85,5 +87,295 @@
},
"popupActions":{
"ok": "OK"
},
"errors":{
"connection": "Some issue with connection: ${code} ${message}",
"noSuchUser": "No such user",
"socketException": "Can't connect with ${host}: ${message}"
},
"countries(map)": {
"AF": "Afghanistan",
"AX": "\u00c5land Islands",
"AL": "Albania",
"DZ": "Algeria",
"AS": "American Samoa",
"AD": "Andorra",
"AO": "Angola",
"AI": "Anguilla",
"AQ": "Antarctica",
"AG": "Antigua and Barbuda",
"AR": "Argentina",
"AM": "Armenia",
"AW": "Aruba",
"AU": "Australia",
"AT": "Austria",
"AZ": "Azerbaijan",
"BS": "Bahamas",
"BH": "Bahrain",
"BD": "Bangladesh",
"BB": "Barbados",
"BY": "Belarus",
"BE": "Belgium",
"BZ": "Belize",
"BJ": "Benin",
"BM": "Bermuda",
"BT": "Bhutan",
"BO": "Bolivia, Plurinational State of",
"BA": "Bosnia and Herzegovina",
"BW": "Botswana",
"BV": "Bouvet Island",
"BR": "Brazil",
"IO": "British Indian Ocean Territory",
"BN": "Brunei Darussalam",
"BG": "Bulgaria",
"BF": "Burkina Faso",
"BI": "Burundi",
"KH": "Cambodia",
"CM": "Cameroon",
"CA": "Canada",
"CV": "Cape Verde",
"BQ": "Caribbean Netherlands",
"KY": "Cayman Islands",
"CF": "Central African Republic",
"TD": "Chad",
"CL": "Chile",
"CN": "China",
"CX": "Christmas Island",
"CC": "Cocos (Keeling) Islands",
"CO": "Colombia",
"KM": "Comoros",
"CG": "Congo",
"CD": "Congo, the Democratic Republic of the",
"CK": "Cook Islands",
"CR": "Costa Rica",
"CI": "C\u00f4te d'Ivoire",
"HR": "Croatia",
"CU": "Cuba",
"CW": "Cura\u00e7ao",
"CY": "Cyprus",
"CZ": "Czech Republic",
"DK": "Denmark",
"DJ": "Djibouti",
"DM": "Dominica",
"DO": "Dominican Republic",
"EC": "Ecuador",
"EG": "Egypt",
"SV": "El Salvador",
"GB-ENG": "England",
"GQ": "Equatorial Guinea",
"ER": "Eritrea",
"EE": "Estonia",
"ET": "Ethiopia",
"EU": "Europe",
"FK": "Falkland Islands (Malvinas)",
"FO": "Faroe Islands",
"FJ": "Fiji",
"FI": "Finland",
"FR": "France",
"GF": "French Guiana",
"PF": "French Polynesia",
"TF": "French Southern Territories",
"GA": "Gabon",
"GM": "Gambia",
"GE": "Georgia",
"DE": "Germany",
"GH": "Ghana",
"GI": "Gibraltar",
"GR": "Greece",
"GL": "Greenland",
"GD": "Grenada",
"GP": "Guadeloupe",
"GU": "Guam",
"GT": "Guatemala",
"GG": "Guernsey",
"GN": "Guinea",
"GW": "Guinea-Bissau",
"GY": "Guyana",
"HT": "Haiti",
"HM": "Heard Island and McDonald Islands",
"VA": "Holy See (Vatican City State)",
"HN": "Honduras",
"HK": "Hong Kong",
"HU": "Hungary",
"IS": "Iceland",
"IN": "India",
"ID": "Indonesia",
"IR": "Iran, Islamic Republic of",
"IQ": "Iraq",
"IE": "Ireland",
"IM": "Isle of Man",
"IL": "Israel",
"IT": "Italy",
"JM": "Jamaica",
"JP": "Japan",
"JE": "Jersey",
"JO": "Jordan",
"KZ": "Kazakhstan",
"KE": "Kenya",
"KI": "Kiribati",
"KP": "Korea, Democratic People's Republic of",
"KR": "Korea, Republic of",
"XK": "Kosovo",
"KW": "Kuwait",
"KG": "Kyrgyzstan",
"LA": "Lao People's Democratic Republic",
"LV": "Latvia",
"LB": "Lebanon",
"LS": "Lesotho",
"LR": "Liberia",
"LY": "Libya",
"LI": "Liechtenstein",
"LT": "Lithuania",
"LU": "Luxembourg",
"MO": "Macao",
"MK": "Macedonia, the former Yugoslav Republic of",
"MG": "Madagascar",
"MW": "Malawi",
"MY": "Malaysia",
"MV": "Maldives",
"ML": "Mali",
"MT": "Malta",
"MH": "Marshall Islands",
"MQ": "Martinique",
"MR": "Mauritania",
"MU": "Mauritius",
"YT": "Mayotte",
"MX": "Mexico",
"FM": "Micronesia, Federated States of",
"MD": "Moldova, Republic of",
"MC": "Monaco",
"ME": "Montenegro",
"MA": "Morocco",
"MN": "Mongolia",
"MS": "Montserrat",
"MZ": "Mozambique",
"MM": "Myanmar",
"NA": "Namibia",
"NR": "Nauru",
"NP": "Nepal",
"NL": "Netherlands",
"AN": "Netherlands Antilles",
"NC": "New Caledonia",
"NZ": "New Zealand",
"NI": "Nicaragua",
"NE": "Niger",
"NG": "Nigeria",
"NU": "Niue",
"NF": "Norfolk Island",
"GB-NIR": "Northern Ireland",
"MP": "Northern Mariana Islands",
"NO": "Norway",
"OM": "Oman",
"PK": "Pakistan",
"PW": "Palau",
"PS": "Palestine",
"PA": "Panama",
"PG": "Papua New Guinea",
"PY": "Paraguay",
"PE": "Peru",
"PH": "Philippines",
"PN": "Pitcairn",
"PL": "Poland",
"PT": "Portugal",
"PR": "Puerto Rico",
"QA": "Qatar",
"RE": "Réunion",
"RO": "Romania",
"RU": "Russian Federation",
"RW": "Rwanda",
"BL": "Saint Barthélemy",
"SH": "Saint Helena, Ascension and Tristan da Cunha",
"KN": "Saint Kitts and Nevis",
"LC": "Saint Lucia",
"MF": "Saint Martin",
"PM": "Saint Pierre and Miquelon",
"VC": "Saint Vincent and the Grenadines",
"WS": "Samoa",
"SM": "San Marino",
"ST": "Sao Tome and Principe",
"SA": "Saudi Arabia",
"GB-SCT": "Scotland",
"SN": "Senegal",
"RS": "Serbia",
"SC": "Seychelles",
"SL": "Sierra Leone",
"SG": "Singapore",
"SX": "Sint Maarten (Dutch part)",
"SK": "Slovakia",
"SI": "Slovenia",
"SB": "Solomon Islands",
"SO": "Somalia",
"ZA": "South Africa",
"GS": "South Georgia and the South Sandwich Islands",
"SS": "South Sudan",
"ES": "Spain",
"LK": "Sri Lanka",
"SD": "Sudan",
"SR": "Suriname",
"SJ": "Svalbard and Jan Mayen Islands",
"SZ": "Swaziland",
"SE": "Sweden",
"CH": "Switzerland",
"SY": "Syrian Arab Republic",
"TW": "Taiwan",
"TJ": "Tajikistan",
"TZ": "Tanzania, United Republic of",
"TH": "Thailand",
"TL": "Timor-Leste",
"TG": "Togo",
"TK": "Tokelau",
"TO": "Tonga",
"TT": "Trinidad and Tobago",
"TN": "Tunisia",
"TR": "Turkey",
"TM": "Turkmenistan",
"TC": "Turks and Caicos Islands",
"TV": "Tuvalu",
"UG": "Uganda",
"UA": "Ukraine",
"AE": "United Arab Emirates",
"GB": "United Kingdom",
"US": "United States",
"UY": "Uruguay",
"UM": "US Minor Outlying Islands",
"UZ": "Uzbekistan",
"VU": "Vanuatu",
"VE": "Venezuela, Bolivarian Republic of",
"VN": "Vietnam",
"VG": "Virgin Islands, British",
"VI": "Virgin Islands, U.S.",
"GB-WLS": "Wales",
"WF": "Wallis and Futuna Islands",
"EH": "Western Sahara",
"YE": "Yemen",
"ZM": "Zambia",
"ZW": "Zimbabwe",
"XX": "Unknown",
"XM": "The Moon"
}
}

View File

@ -44,6 +44,7 @@
"decaying": "Загнивает",
"gamesUntilRanked": "${left} матчей до получения рейтинга",
"nerdStats": "Для задротов",
"playersYouTrack": "Отслеживаемые игроки",
"statCellNum": {
"xpLevel": "Уровень\nопыта",
"hoursPlayed": "Часов\nСыграно",
@ -75,7 +76,8 @@
"sysop": "Системный оператор",
"admin": "Администратор",
"mod": "Модератор",
"halfmod": "Модератор сообщества"
"halfmod": "Модератор сообщества",
"anon": "Аноним"
},
"numOfGameActions":{
"pc": "Все чисто",
@ -85,5 +87,295 @@
},
"popupActions":{
"ok": "OK"
},
"errors":{
"connection": "Проблема с подключением: ${code} ${message}",
"noSuchUser": "Нет такого пользователя",
"socketException": "Невозможно подключиться к ${host}: ${message}"
},
"countries(map)": {
"AF": "Афганистан",
"AX": "Аландские острова",
"AL": "Албания",
"DZ": "Алжир",
"AS": "Американское Самоа",
"AD": "Андорра",
"AO": "Ангола",
"AI": "Ангилья",
"AQ": "Антарктида",
"AG": "Антигуа и Барбуда",
"AR": "Аргентина",
"AM": "Армения",
"AW": "Аруба",
"AU": "Австралия",
"AT": "Австрия",
"AZ": "Азербайджан",
"BS": "Багамские острова",
"BH": "Бахрейн",
"BD": "Бангладеш",
"BB": "Барбадос",
"BY": "Беларусь",
"BE": "Бельгия",
"BZ": "Белиз",
"BJ": "Бенин",
"BM": "Бермуды",
"BT": "Бутан",
"BO": "Боливия, Многонациональное Государство",
"BA": "Босния и Герцеговина",
"BW": "Ботсвана",
"BV": "Остров Буве",
"BR": "Бразилия",
"IO": "Британская территория в Индийском океане",
"BN": "Бруней-Даруссалам",
"BG": "Болгария",
"BF": "Буркина-Фасо",
"BI": "Бурунди",
"KH": "Камбоджа",
"CM": "Камерун",
"CA": "Канада",
"CV": "Кабо-Верде",
"BQ": "Карибские Нидерланды",
"KY": "Каймановы острова",
"CF": "Центральноафриканская Республика",
"TD": "Чад",
"CL": "Чили",
"CN": "Китай",
"CX": "Остров Рождества",
"CC": "Кокосовые острова",
"CO": "Колумбия",
"KM": "Коморские острова",
"CG": "Конго",
"CD": "Конго, Демократическая Республика",
"CK": "Острова Кука",
"CR": "Коста-Рика",
"CI": "Берег Слоновой Кости",
"HR": "Хорватия",
"CU": "Куба",
"CW": "Кюрасао",
"CY": "Кипр",
"CZ": "Чешская Республика",
"DK": "Дания",
"DJ": "Джибути",
"DM": "Доминика",
"DO": "Доминиканская Республика",
"EC": "Эквадор",
"EG": "Египет",
"SV": "Сальвадор",
"GB-ENG": "Англия",
"GQ": "Экваториальная Гвинея",
"ER": "Эритрея",
"EE": "Эстония",
"ET": "Эфиопия",
"EU": "Европа",
"FK": "Фолклендские (Мальвинские) острова",
"FO": "Фарерские острова",
"FJ": "Фиджи",
"FI": "Финляндия",
"FR": "Франция",
"GF": "Французская Гвиана",
"PF": "Французская Полинезия",
"TF": "Южные территории Франции",
"GA": "Габон",
"GM": "Гамбия",
"GE": "Грузия",
"DE": "Германия",
"GH": "Гана",
"GI": "Гибралтар",
"GR": "Греция",
"GL": "Гренландия",
"GD": "Гренада",
"GP": "Гваделупа",
"GU": "Гуам",
"GT": "Гватемала",
"GG": "Гернси",
"GN": "Гвинея",
"GW": "Гвинея-Бисау",
"GY": "Гайана",
"HT": "Гаити",
"HM": "Остров Херд и острова Макдональд",
"VA": "Святой Престол (государство-городок Ватикан)",
"HN": "Гондурас",
"HK": "Гонконг",
"HU": "Венгрия",
"IS": "Исландия",
"IN": "Индия",
"ID": "Индонезия",
"IR": "Иран, Исламская Республика",
"IQ": "Ирак",
"IE": "Ирландия",
"IM": "Остров Мэн",
"IL": "Израиль",
"IT": "Италия",
"JM": "Ямайка",
"JP": "Япония",
"JE": "Джерси",
"JO": "Иордания",
"KZ": "Казахстан",
"KE": "Кения",
"KI": "Кирибати",
"KP": "Корея, Народно-Демократическая Республика",
"KR": "Корея, Республика",
"XK": "Косово",
"KW": "Кувейт",
"KG": "Кыргызстан",
"LA": "Лаосская Народно-Демократическая Республика",
"LV": "Латвия",
"LB": "Ливан",
"LS": "Лесото",
"LR": "Либерия",
"LY": "Ливия",
"LI": "Лихтенштейн",
"LT": "Литва",
"LU": "Люксембург",
"MO": "Макао",
"MK": "Македония, бывшая югославская республика",
"MG": "Мадагаскар",
"MW": "Малави",
"MY": "Малайзия",
"MV": "Мальдивы",
"ML": "Мали",
"MT": "Мальта",
"MH": "Маршалловы острова",
"MQ": "Мартиника",
"MR": "Мавритания",
"MU": "Маврикий",
"YT": "Майотта",
"MX": "Мексика",
"FM": "Микронезия, Федеративные Штаты",
"MD": "Молдова, Республика",
"MC": "Монако",
"ME": "Черногория",
"MA": "Марокко",
"MN": "Монголия",
"MS": "Монтсеррат",
"MZ": "Мозамбик",
"MM": "Мьянма",
"NA": "Намибия",
"NR": "Науру",
"NP": "Непал",
"NL": "Нидерланды",
"AN": "Нидерландские Антильские острова",
"NC": "Новая Каледония",
"NZ": "Новая Зеландия",
"NI": "Никарагуа",
"NE": "Нигер",
"NG": "Нигерия",
"NU": "Ниуэ",
"NF": "Остров Норфолк",
"GB-NIR": "Северная Ирландия",
"MP": "Северные Марианские острова",
"NO": "Норвегия",
"OM": "Оман",
"PK": "Пакистан",
"PW": "Палау",
"PS": "Палестина",
"PA": "Панама",
"PG": "Папуа-Новая Гвинея",
"PY": "Парагвай",
"PE": "Перу",
"PH": "Филиппины",
"PN": "Питкэрн",
"PL": "Польша",
"PT": "Португалия",
"PR": "Пуэрто-Рико",
"QA": "Катар",
"RE": "Реюньон",
"RO": "Румыния",
"RU": "Российская Федерация",
"RW": "Руанда",
"BL": "Сен-Бартелеми",
"SH": "Острова Святой Елены, Вознесения и Тристан-да-Кунья",
"KN": "Сент-Китс и Невис",
"LC": "Сент-Люсия",
"MF": "Сен-Мартен",
"PM": "Сен-Пьер и Микелон",
"VC": "Сент-Винсент и Гренадины",
"WS": "Самоа",
"SM": "Сан-Марино",
"ST": "Сан-Томе и Принсипи",
"SA": "Саудовская Аравия",
"GB-SCT": "Шотландия",
"SN": "Сенегал",
"RS": "Сербия",
"SC": "Сейшельские острова",
"SL": "Сьерра-Леоне",
"SG": "Сингапур",
"SX": "Синт-Мартен (голландская часть)",
"SK": "Словакия",
"SI": "Словения",
"SB": "Соломоновы острова",
"SO": "Сомали",
"ZA": "ЮАР",
"GS": "Южная Георгия и Южные Сандвичевы острова",
"SS": "Южный Судан",
"ES": "Испания",
"LK": "Шри-Ланка",
"SD": "Судан",
"SR": "Суринам",
"SJ": "Острова Шпицберген и Ян-Майен",
"SZ": "Свазиленд",
"SE": "Швеция",
"CH": "Швейцария",
"SY": "Сирийская Арабская Республика",
"TW": "Тайвань",
"TJ": "Таджикистан",
"TZ": "Танзания, Объединенная Республика",
"TH": "Таиланд",
"TL": "Тимор-Лешти",
"TG": "Того",
"TK": "Токелау",
"TO": "Tonga",
"TT": "Тринидад и Тобаго",
"TN": "Тунис",
"TR": "Турция",
"TM": "Туркменистан",
"TC": "Острова Теркс и Кайкос",
"ТВ": "Тувалу",
"UG": "Уганда",
"UA": "Украина",
"AE": "Объединенные Арабские Эмираты",
"GB": "Великобритания",
"US": "Соединенные Штаты",
"UY": "Уругвай",
"UM": "Малые периферийные острова США",
"UZ": "Узбекистан",
"VU": "Вануату",
"VE": "Венесуэла, Боливарианская Республика",
"VN": "Вьетнам",
"VG": "Виргинские острова, Британские",
"VI": "Виргинские острова, США",
"GB-WLS": "Уэльс",
"WF": "Острова Уоллис и Футуна",
"EH": "Западная Сахара",
"YE": "Йемен",
"ZM": "Замбия",
"ZW": "Зимбабве",
"XX": "Неизвестно",
"XM": "Луна"
}
}