Commit 003fdee1378382d4fef77089f5f4652cd2422c6a

Ran Benita 2023-04-11T22:49:58

keysyms: add new keysyms XF86EmojiPicker, XF86Dictate Ref: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/commit/914d8f5e0f469cd0416364dd008e9eea752bf703 Ref: https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/commit/a839f0c7fc5596d10e786394d3b0953eb8a1731b Signed-off-by: Ran Benita <ran@unusedvar.com>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
diff --git a/include/xkbcommon/xkbcommon-keysyms.h b/include/xkbcommon/xkbcommon-keysyms.h
index 7c75c29..7c5a62d 100644
--- a/include/xkbcommon/xkbcommon-keysyms.h
+++ b/include/xkbcommon/xkbcommon-keysyms.h
@@ -2846,6 +2846,8 @@ SOFTWARE.
 #define XKB_KEY_XF86VoiceCommand		0x10081246		/* v3.16 KEY_VOICECOMMAND */
 #define XKB_KEY_XF86Assistant		0x10081247		/* v4.13 KEY_ASSISTANT */
 /* Use: XK_ISO_Next_Group		_EVDEVK(0x248)		   v5.2  KEY_KBD_LAYOUT_NEXT */
+#define XKB_KEY_XF86EmojiPicker		0x10081249		/* v5.13 KEY_EMOJI_PICKER */
+#define XKB_KEY_XF86Dictate			0x1008124a		/* v5.17 KEY_DICTATE */
 #define XKB_KEY_XF86BrightnessMin		0x10081250		/* v3.16 KEY_BRIGHTNESS_MIN */
 #define XKB_KEY_XF86BrightnessMax		0x10081251		/* v3.16 KEY_BRIGHTNESS_MAX */
 #define XKB_KEY_XF86KbdInputAssistPrev	0x10081260		/* v3.18 KEY_KBDINPUTASSIST_PREV */
diff --git a/src/ks_tables.h b/src/ks_tables.h
index 46d6f98..c96afad 100644
--- a/src/ks_tables.h
+++ b/src/ks_tables.h
@@ -2279,6 +2279,7 @@ static const char *keysym_names =
     "XF86CycleAngle\0"
     "XF86Data\0"
     "XF86Database\0"
+    "XF86Dictate\0"
     "XF86Display\0"
     "XF86DisplayOff\0"
     "XF86DisplayToggle\0"
@@ -2287,6 +2288,7 @@ static const char *keysym_names =
     "XF86DVD\0"
     "XF86Editor\0"
     "XF86Eject\0"
+    "XF86EmojiPicker\0"
     "XF86Excel\0"
     "XF86Explorer\0"
     "XF86FastReverse\0"
@@ -2567,301 +2569,300 @@ static const char *keysym_names =
 #endif
 
 static const uint16_t keysym_name_G[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1650, 0, 0, 0, 0,
-    0, 1245, 0, 3310, 4490, 0, 0, 0, 0, 4529, 0, 0, 0, 0, 3857, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2266, 0, 0, 0, 0, 0,
-    3688, 0, 0, 4511, 0, 0, 0, 0, 0, 0, 0, 3299, 0, 0, 0, 0, 0, 544, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 1200, 3223, 4207, 0, 672, 0, 0, 0, 0, 0, 3303,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4369, 0, 2211, 0, 0, 0, 2592, 0, 0,
-    0, 0, 1606, 0, 2530, 1223, 0, 0, 727, 0, 0, 297, 0, 4204, 0, 0, 0, 0,
-    0, 2370, 0, 0, 3160, 0, 0, 0, 0, 3661, 0, 0, 0, 0, 1253, 0, 0, 2229,
-    4008, 4269, 0, 0, 0, 0, 1572, 0, 1730, 3284, 0, 3643, 0, 0, 0, 4448,
-    783, 0, 0, 0, 419, 0, 0, 564, 0, 0, 0, 0, 0, 1896, 2895, 0, 303, 0,
-    3482, 1037, 0, 0, 0, 888, 0, 0, 0, 0, 3829, 0, 486, 0, 0, 0, 244, 0,
-    1731, 0, 0, 0, 0, 1609, 417, 2333, 2106, 4289, 1503, 0, 0, 0, 0, 0,
-    1880, 0, 0, 0, 0, 1740, 0, 0, 1273, 1470, 0, 0, 188, 0, 0, 0, 0, 1001,
-    0, 0, 3155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2269, 3789, 0, 0, 0, 0, 0, 0, 0,
-    0, 1492, 3200, 0, 0, 0, 0, 0, 2009, 24, 0, 0, 0, 80, 3123, 0, 0, 0, 0,
-    0, 0, 0, 1126, 0, 0, 0, 0, 3585, 858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    811, 0, 4003, 3813, 0, 0, 2583, 113, 4408, 0, 386, 4182, 0, 0, 142,
-    1325, 0, 0, 3074, 2313, 1469, 0, 0, 0, 3369, 2485, 0, 0, 4129, 1512, 0,
-    0, 0, 0, 0, 771, 0, 0, 0, 767, 0, 0, 0, 1664, 0, 1616, 0, 0, 2363, 0,
-    0, 0, 0, 2513, 0, 496, 1054, 0, 2211, 0, 0, 0, 0, 0, 1986, 348, 0, 0,
-    2203, 0, 2784, 1635, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 0, 347, 3512, 0,
-    0, 0, 1129, 4390, 0, 4273, 0, 0, 1171, 0, 0, 0, 114, 874, 4517, 0, 0,
-    0, 0, 0, 0, 1747, 0, 0, 0, 0, 0, 4188, 0, 2430, 0, 0, 0, 0, 0, 0, 2788,
-    0, 2921, 0, 0, 874, 0, 0, 0, 0, 0, 2047, 0, 1604, 0, 0, 3995, 2895, 0,
-    0, 0, 0, 0, 2604, 0, 0, 1881, 0, 0, 0, 4253, 1024, 4228, 0, 0, 1914,
-    4001, 1011, 1639, 0, 0, 0, 0, 0, 3540, 0, 0, 2461, 0, 0, 3833, 0, 0,
-    2013, 0, 0, 0, 2245, 0, 3283, 2902, 2494, 0, 610, 1708, 0, 0, 0, 0, 0,
-    2934, 4383, 0, 1636, 0, 0, 0, 0, 3355, 0, 1971, 482, 1599, 0, 3749,
-    2152, 0, 0, 0, 0, 1097, 982, 3592, 2806, 0, 0, 0, 0, 173, 780, 0, 2659,
-    3730, 0, 599, 361, 382, 0, 574, 571, 0, 158, 0, 0, 0, 4332, 654, 0,
-    478, 2666, 0, 0, 4354, 0, 723, 745, 0, 2334, 0, 0, 0, 315, 0, 0, 0,
-    2285, 0, 0, 0, 0, 0, 0, 0, 0, 190, 2779, 2749, 0, 0, 0, 0, 0, 2127, 0,
-    0, 168, 0, 2437, 2837, 3502, 0, 0, 0, 0, 0, 0, 1849, 1598, 0, 4373, 0,
-    1200, 0, 238, 3420, 0, 3178, 0, 1571, 372, 0, 0, 1495, 3121, 0, 4099,
-    0, 3109, 0, 0, 0, 0, 0, 1373, 0, 4432, 0, 0, 3370, 3279, 0, 0, 2799, 0,
-    0, 0, 0, 2953, 3278, 1971, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 1369, 2843, 0,
-    989, 0, 358, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 964, 3811, 0, 0, 0, 0,
-    1364, 0, 0, 344, 2501, 0, 0, 1167, 1318, 137, 0, 0, 0, 930, 0, 1340,
-    1404, 873, 0, 0, 0, 0, 0, 391, 0, 2376, 3115, 2659, 1273, 2214, 0,
-    1769, 0, 194, 0, 3009, 0, 0, 1100, 2540, 1308, 1729, 3882, 0, 0, 1925,
-    0, 0, 0, 0, 3324, 3605, 1221, 0, 0, 0, 644, 4360, 4557, 0, 0, 0, 0,
-    1224, 2656, 0, 4378, 4065, 0, 0, 0, 0, 0, 203, 0, 173, 0, 0, 0, 435,
-    2916, 3546, 288, 0, 0, 0, 0, 0, 3744, 2681, 0, 0, 4396, 0, 0, 0, 3078,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 1523, 0, 0, 2313, 4347, 3320, 0, 0,
-    3360, 566, 0, 88, 0, 0, 0, 0, 0, 2736, 0, 0, 4062, 0, 1939, 0, 2354, 0,
-    4354, 4398, 0, 2328, 1976, 270, 0, 0, 2344, 1040, 0, 0, 3016, 4339,
-    1220, 1136, 0, 1813, 0, 0, 990, 1892, 2453, 3252, 0, 2452, 2497, 2007,
-    3329, 508, 0, 4500, 0, 0, 0, 0, 4293, 1207, 0, 719, 257, 0, 4532, 3884,
-    2899, 2065, 967, 0, 0, 0, 4561, 0, 0, 1197, 0, 0, 0, 2578, 3109, 0,
-    112, 0, 1923, 0, 809, 0, 4444, 3287, 0, 3693, 4508, 0, 0, 0, 0, 0, 0,
-    0, 2024, 0, 0, 0, 0, 0, 2196, 0, 0, 0, 0, 3174, 3287, 0, 1813, 0, 0,
-    3626, 2618, 2811, 0, 0, 0, 0, 910, 0, 1874, 0, 290, 1791, 0, 1291, 0,
-    4027, 0, 3605, 0, 0, 0, 3275, 874, 3363, 0, 0, 1321, 0, 1500, 0, 0,
-    4206, 2033, 4437, 2991, 0, 0, 0, 0, 4382, 3870, 1984, 0, 0, 0, 1096, 0,
-    0, 4036, 0, 0, 3578, 1230, 0, 0, 2550, 0, 978, 3007, 0, 140, 0, 1157,
-    0, 0, 0, 0, 0, 0, 4544, 4453, 0, 0, 0, 0, 504, 1136, 1395, 0, 0, 0,
-    1736, 0, 2745, 952, 0, 0, 2650, 0, 0, 3808, 0, 0, 1148, 0, 0, 1821,
-    622, 1626, 4464, 0, 0, 3930, 2404, 117, 0, 0, 10, 0, 2283, 1235, 4224,
-    0, 0, 0, 0, 2917, 0, 0, 0, 2356, 0, 156, 1142, 0, 0, 0, 0, 1677, 0,
-    3796, 3689, 602, 0, 0, 737, 0, 0, 1591, 0, 0, 0, 0, 408, 0, 0, 0, 0, 0,
-    25, 0, 0, 0, 0, 0, 3265, 0, 0, 0, 0, 621, 2329, 2059, 2850, 0, 0, 0, 0,
-    40, 0, 0, 1095, 0, 743, 3541, 0, 0, 0, 3625, 4459, 1580, 4164, 1255, 0,
-    0, 0, 1599, 0, 1036, 0, 0, 3438, 2656, 0, 0, 0, 1261, 224, 3600, 0,
-    3943, 949, 2512, 0, 2796, 4233, 0, 1863, 0, 3283, 175, 0, 148, 0, 0,
-    4320, 2004, 1503, 0, 0, 1438, 2823, 402, 1019, 0, 3343, 4216, 0, 0,
-    2357, 0, 0, 0, 0, 1547, 0, 0, 3307, 0, 2347, 256, 0, 853, 0, 0, 0,
-    1785, 0, 0, 0, 0, 1663, 0, 3095, 2419, 1711, 0, 4493, 0, 0, 1144, 0, 0,
-    0, 1492, 370, 0, 0, 1007, 3167, 2813, 0, 562, 2721, 2083, 0, 2706, 0,
-    0, 0, 0, 2937, 0, 0, 1876, 568, 0, 1859, 0, 0, 0, 0, 0, 3006, 3663,
-    3429, 0, 1369, 0, 1599, 0, 0, 771, 1338, 0, 0, 0, 0, 0, 0, 2529, 0, 0,
-    178, 2516, 0, 0, 2130, 2859, 1920, 0, 1992, 0, 4554, 0, 0, 0, 0, 0,
-    2702, 4463, 688, 0, 0, 1500, 2711, 0, 0, 206, 3960, 0, 0, 0, 1051,
-    4456, 1089, 0, 0, 712, 879, 621, 0, 0, 1353, 779, 0, 1075, 0, 1778, 0,
-    1311, 3544, 0, 1373, 0, 0, 650, 0, 1475, 4297, 1100, 0, 343, 2758,
-    1764, 0, 4163, 1327, 3569, 1363, 0, 2967, 0, 0, 137, 2277, 0, 0, 2411,
-    0, 2685, 0, 2001, 948, 0, 159, 870, 1921, 1561, 0, 0, 2183, 0, 1004, 0,
-    0, 0, 2363, 0, 0, 3473, 0, 0, 0, 2218, 0, 1021, 1919, 0, 0, 0, 0, 0,
-    2324, 0, 1031, 0, 3739, 185, 0, 1932, 2109, 1363, 0, 0, 35, 2104, 1041,
-    573, 0, 1518, 0, 0, 1515, 0, 0, 0, 2500, 1426, 1422, 0, 0, 2395, 706,
-    0, 214, 889, 3801, 4108, 0, 0, 0, 2087, 0, 0, 2881, 1904, 2258, 0, 0,
-    2408, 0, 454, 3224, 0, 0, 0, 0, 1337, 1509, 3638, 0, 0, 0, 3689, 0, 0,
-    1774, 0, 0, 0, 0, 0, 1252, 1139, 0, 0, 0, 0, 75, 3651, 0, 1656, 0,
-    1937, 0, 0, 4027, 0, 0, 0, 911, 1719, 0, 0, 3449, 0, 0, 0, 0, 4342,
-    3593, 0, 0, 3476, 1690, 2585, 4484, 4479, 0, 0, 3932, 0, 3837, 3028,
-    4047, 0, 705, 2616, 3782, 0, 0, 0, 108, 0, 0, 0, 1874, 1744, 0, 0,
-    1147, 0, 0, 0, 166, 4277, 513, 0, 3623, 415, 0, 1574, 3753, 2473, 734,
-    1129, 0, 0, 0, 0, 2241, 862, 0, 0, 0, 0, 2103, 1999, 2605, 821, 0, 0,
-    0, 1653, 3756, 0, 0, 0, 2470, 0, 400, 2791, 717, 0, 154, 3490, 197,
-    2675, 1405, 0, 2048, 0, 0, 1560, 4143, 4495, 0, 0, 0, 1299, 4554, 3847,
-    0, 4308, 1560, 0, 3992, 0, 3209, 0, 452, 0, 2346, 0, 0, 225, 3030, 0,
-    4370, 12, 239, 881, 0, 1561, 4251, 3310, 494, 0, 0, 232, 2509, 3198, 0,
-    0, 0, 3390, 2956, 0, 1255, 0, 2148, 2692, 3865, 3864, 2586, 293, 0,
-    4220, 4073, 0, 3423, 1262, 0, 1410, 2104, 0, 2074, 0, 0, 980, 0, 1684,
-    1686, 0, 0, 429, 0, 358, 161, 0, 0, 0, 2029, 0, 2511, 817, 0, 3331, 0,
-    1552, 0, 3380, 0, 0, 0, 3240, 0, 3499, 4041, 2450, 0, 0, 0, 0, 2214,
-    787, 2906, 464, 1122, 3813, 0, 0, 2034, 0, 0, 0, 1037, 961, 0, 0, 3884,
-    0, 0, 2764, 0, 0, 915, 0, 1417, 0, 6, 4134, 0, 2797, 1881, 259, 795, 0,
-    15, 0, 2863, 0, 0, 0, 0, 0, 223, 720, 0, 1702, 0, 0, 0, 984, 1110, 0,
-    547, 1906, 0, 0, 4286, 1875, 0, 0, 0, 1324, 0, 3589, 3911, 0, 0, 0, 0,
-    2520, 844, 2801, 1149, 656, 0, 1837, 3441, 2127, 0, 0, 1325, 377, 1012,
-    4280, 2404, 0, 1286, 0, 0, 0, 855, 0, 1793, 0, 4512, 2776, 2200, 2056,
-    0, 2144, 1763, 0, 0, 549, 2475, 845, 1493, 0, 0, 306, 1398, 0, 0, 3775,
-    0, 1451, 597, 2130, 0, 232, 2836, 957, 0, 619, 0, 2041, 0, 0, 295, 0,
-    4361, 0, 2223, 0, 3727, 0, 0, 4294, 0, 33, 4397, 4511, 3626, 3329, 0,
-    40, 0, 0, 0, 0, 478, 0, 0, 0, 2925, 0, 0, 3779, 1880, 0, 1556, 0, 1545,
-    3249, 0, 0, 0, 1080, 0, 4112, 0, 3086, 46, 0, 0, 3165, 3414, 0, 0, 342,
-    1885, 0, 0, 0, 0, 3071, 3404, 0, 0, 35, 0, 0, 0, 0, 857, 0, 627, 21, 0,
-    0, 0, 0, 1021, 2099, 3483, 0, 0, 2693, 1014, 11, 0, 3352, 0, 3751,
-    2476, 3014, 0, 1327, 974, 3502, 0, 611, 1838, 0, 4467, 2970, 1191, 474,
-    0, 1366, 230, 1879, 3942, 0, 0, 0, 0, 1406, 0, 1304, 0, 0, 0, 277,
-    3398, 0, 735, 165, 0, 0, 4185, 0, 3404, 0, 3821, 0, 0, 3450, 4161, 0,
-    761, 0, 0, 0, 1807, 0, 0, 0, 0, 0, 0, 3962, 0, 0, 1833, 0, 1710, 0,
-    1670, 2946, 1186, 56, 0, 533, 991, 246, 141, 0, 0, 0, 0, 687, 3830, 0,
-    2495, 245, 0, 0, 2921, 2534, 706, 3729, 3941, 4335, 4295, 1671, 549,
-    2015, 1777, 3057, 0, 1399, 1197, 2741, 4091, 0, 938, 0, 4322, 561, 0,
-    527, 0, 481, 2496, 0, 0, 1771, 3444, 0, 2951, 0, 0, 0, 2244, 1013, 256,
-    0, 1672, 0, 3115, 2720, 0, 1458, 0, 1476, 0, 2729, 0, 0, 1889, 2226,
-    3945, 0, 1937, 0, 0, 0, 0, 4254, 1906, 4260, 2108, 0, 197, 4071, 2688,
-    1691, 0, 0, 4467, 0, 1271, 0, 2029, 1625, 0, 0, 4259, 1222, 4139, 1497,
-    0, 2919, 0, 86, 0, 0, 1685, 2585, 0, 1363, 0, 0, 0, 1548, 3807, 1891,
-    4369, 774, 409, 4191, 0, 0, 3898, 1893, 4164, 765, 893, 1340, 0, 0, 0,
-    4086, 2119, 173, 3518, 0, 0, 742, 0, 2059, 0, 0, 2955, 612, 0, 1660,
-    4201, 2466, 485, 3476, 0, 945, 1441, 0, 3974, 0, 1551, 0, 664, 2978, 0,
-    0, 1798, 2640, 0, 0, 0, 349, 0, 0, 3992, 0, 4168, 0, 0, 3294, 308,
-    1332, 1191, 0, 0, 3821, 3969, 411, 1184, 0, 1417, 4191, 0, 4509, 881,
-    593, 407, 1659, 0, 4237, 0, 1285, 2877, 2965, 3187, 0, 2725, 997, 530,
-    2675, 0, 541, 4405, 1975, 0, 0, 2067, 801, 0, 0, 0, 0, 3746, 3215,
-    3657, 0, 82, 0, 0, 0, 1624, 221, 0, 0, 2193, 483, 1281, 669, 2430, 0,
-    1340, 4426, 0, 2419, 0, 2303, 0, 2691, 0, 305, 0, 0, 4276, 2246, 0,
-    2533, 1139, 0, 626, 0, 9, 0, 2276, 2052, 178, 527, 2479, 2242, 762,
-    212, 0, 860, 1718, 537, 0, 0, 1190, 4038, 1017, 0, 0, 0, 0, 1271, 0, 0,
-    2261, 732, 4062, 2896, 4335, 1570, 3121, 0, 1791, 1798, 3642, 0, 125,
-    3588, 2802, 0, 1162, 4276, 3536, 4314, 999, 0, 1518, 34, 0, 264, 4085,
-    85, 4152, 2133, 1519, 1367, 0, 0, 3903, 420, 0, 2737, 490, 1704, 4389,
-    0, 1631, 3809, 0, 1758, 0, 1162, 154, 980, 0, 0, 1188, 0, 0, 0, 1634,
-    2486, 0, 0, 2972, 3280, 0, 0, 1909, 1386, 915, 2446, 0, 0, 0, 2371, 0,
-    4499, 1915, 656, 2964, 4228, 0, 0, 0, 0, 910, 0, 0, 0, 1505, 3300, 0,
-    2754, 2586, 2505, 3028, 135, 1124, 2602, 34, 2658, 1047, 885, 0, 0, 0,
-    2117, 221, 2841, 153, 2240, 0, 3880, 0, 1101, 4095, 3147, 1757, 692,
-    2280, 3049, 0, 2319, 1519, 0, 0, 0, 0, 4291, 4464, 164, 0, 1108, 4291,
-    2707, 3843, 0, 0, 1160, 4318, 2473, 0, 4391, 0, 0, 0, 2743, 2146, 1050,
-    0, 0, 0, 58, 191, 1754, 1704, 0, 0, 2581, 1920, 2443, 0, 3264, 0, 1379,
-    0, 3933, 1049, 4127, 0, 2030, 0, 1363, 1411, 720, 945, 0, 367, 1312, 0,
-    0, 0, 0, 1257, 2000, 0, 0, 260, 2860, 3118, 0, 85, 2600, 1842, 3727,
-    554, 0, 0, 3763, 111, 0, 2993, 2128, 4103, 620, 0, 4018, 3867, 967,
-    3281, 808, 482, 0, 2321, 0, 0, 943, 574, 256, 4177, 574, 0, 4048, 212,
-    3917, 0, 4026, 0, 4161, 3004, 0, 3974, 0, 668, 426, 1194, 0, 0, 0,
-    2099, 3538, 0, 1951, 0, 0, 0, 2892, 0, 0, 451, 0, 3417, 2937, 0, 0,
-    2086, 0, 406, 0, 0, 0, 0, 4572, 1399, 3622, 894, 824, 195, 2309, 0, 0,
-    2169, 0, 1898, 2616, 0, 626, 1848, 7, 0, 3290, 2404, 0, 3593, 0, 4205,
-    1884, 0, 0, 3522, 1862, 2700, 0, 946, 2876, 1349, 0, 4208, 0, 0, 0,
-    670, 0, 0, 0, 2742, 145, 776, 0, 63, 850, 781, 0, 0, 3548, 1898, 1220,
-    490, 0, 875, 0, 0, 0, 520, 877, 1172, 1527, 0, 897, 0, 2415, 1127, 638,
-    4329, 0, 523, 4283, 1165, 0, 15, 2321, 978, 0, 1307, 0, 816, 1025,
-    3393, 0, 240, 145, 0, 3635, 3382, 2315, 3567, 3047, 0, 1752, 49, 4512,
-    4482, 3417, 0, 0, 4282, 463, 4462, 0, 128, 0, 23, 4462, 836, 0, 1029,
-    0, 2019, 0, 0, 2658, 0, 4525, 0, 3862, 0, 1577, 0, 0, 2372, 4416, 2195,
-    0, 516, 0, 0, 551, 849, 1716, 2507, 522, 550, 0, 1543, 1983, 4223,
-    3500, 0, 0, 1262, 502, 1512, 0, 0, 898, 292, 1236, 0, 0, 1004, 1963,
-    1952, 0, 0, 287, 2341, 3718, 1251, 4119, 1321, 3407, 0, 0, 0, 0, 2423,
-    251, 573, 3729, 4519, 1526, 4165, 2557, 0, 788, 0, 1448, 0, 0, 618, 0,
-    850, 0, 161, 1350, 644, 853, 1374, 0, 1767, 1315, 1539, 596, 753, 0,
-    467, 0, 4512, 970, 1730, 0, 0, 527, 3617, 2164, 2371, 0, 2418, 0, 0,
-    2504, 405, 0, 3599, 1925, 0, 1064, 0, 370, 0, 4526, 325, 1972, 0, 3356,
-    1134, 3930, 1318, 421, 2514, 2476, 638, 3571, 0, 0, 2142, 3054, 0,
-    2064, 2541, 1652, 3622, 0, 823, 1941, 878, 1673, 0, 3435, 0, 0, 0, 661,
-    3064, 0, 627, 0, 0, 0, 2359, 4291, 2531, 0, 4000, 0, 296, 0, 3074, 225,
-    0, 0, 2491, 99, 0, 0, 0, 0, 0, 0, 695, 1499, 0, 0, 2403, 3941, 558, 0,
-    0, 2265, 1068, 0, 845, 0, 0, 2485, 1864, 0, 1349, 598, 1415, 0, 544, 0,
-    3472, 0, 392, 113, 3942, 3088, 1266, 1235, 0, 540, 169, 436, 4186,
-    1878, 4206, 4094, 0, 662, 0, 2003, 2545, 3270, 708, 0, 0, 4359, 59, 0,
-    2044, 1527, 4373, 0, 528, 736, 0, 0, 0, 1621, 1206, 4202, 0, 0, 2613,
-    4059, 0, 844, 0, 2071, 0, 1126, 1719, 448, 3767, 2876, 1428, 925, 0, 0,
-    2965, 1816, 64, 0, 0, 3750, 0, 0, 1995, 0, 0, 1647, 0, 0, 0, 755, 0, 0,
-    0, 0, 0, 3336, 3374, 123, 0, 2172, 0, 0, 0, 2338, 519, 2630, 3573, 0,
-    0, 1269, 2325, 0, 1935, 485, 0, 0, 2310, 2413, 4405, 2397, 1122, 1824,
-    2055, 4062, 1449, 671, 412, 446, 4007, 286, 3846, 1387, 1978, 2443,
-    534, 0, 1061, 2005, 2269, 597, 2272, 0, 0, 3738, 0, 0, 1562, 741, 0, 0,
-    0, 0, 2349, 0, 2030, 0, 0, 0, 0, 0, 991, 0, 2416, 0, 2178, 1493, 0,
-    2163, 0, 17, 1651, 1348, 4337, 2029, 0, 117, 1605, 0, 3444, 1965, 0,
-    1776, 458, 397, 3063, 5, 4058, 535, 2807, 977, 314, 3613, 105, 3191,
-    153, 4397, 2752, 1412, 4069, 0, 0, 0, 0, 1089, 0, 1968, 0, 768, 2132,
-    0, 2582, 0, 0, 3753, 3512, 0, 909, 3256, 3999, 2436, 710, 0, 700, 248,
-    4078, 4347, 1222, 3669, 0, 0, 882, 0, 0, 0, 0, 2293, 362, 81, 1667,
-    3662, 2259, 0, 433, 4306, 3200, 0, 2445, 786, 3554, 0, 0, 0, 704, 0,
-    2695, 3256, 3676, 881, 2107, 1637, 0, 778, 0, 2232, 1858, 1616, 2872,
-    1467, 1545, 1613, 2512, 1587, 0, 1816, 4354, 1844, 0, 0, 3707, 3982,
-    3115, 2408, 1957, 0, 0, 4180, 177, 0, 759, 2615, 0, 2657, 208, 286, 0,
-    0, 0, 3075, 174, 1690, 2099, 0, 1345, 2018, 19, 1714, 0, 4440, 0, 3433,
-    0, 2951, 3090, 0, 1572, 1834, 3590, 0, 0, 443, 0, 3912, 0, 3850, 0,
-    497, 0, 2180, 2326, 1839, 0, 4155, 2871, 767, 0, 1249, 1687, 32, 4323,
-    4213, 2276, 1015, 0, 0, 2246, 327, 3992, 580, 1752, 3376, 2986, 2046,
-    2680, 0, 3862, 1306, 1087, 0, 50, 0, 0, 1553, 307, 0, 2332, 2418, 2474,
-    0, 1160, 1935, 1511, 0, 2082, 1193, 0, 0, 4054, 0, 367, 0, 1201, 1052,
-    0, 4550, 0, 1202, 1630, 0, 3705, 0, 0, 1923, 1124, 0, 508, 0, 2268, 0,
-    1205, 977, 2839, 0, 1054, 577, 3807, 1596, 0, 0, 1252, 0, 2653, 805,
-    2845, 942, 2231, 4007, 0, 2601, 277, 0, 1288, 1431, 0, 236, 3253, 0,
-    544, 1633, 928, 1446, 3652, 2, 467, 555, 1602, 0, 1105, 0, 10, 163, 0,
-    0, 1877, 0, 0, 0, 162, 1367, 4327, 0, 2915, 2460, 0, 0, 3361, 719,
-    1406, 201, 0, 467, 0, 0, 4303, 3609, 1599, 330, 108, 316, 0, 0, 0, 0,
-    2013, 18, 120, 1763, 3139, 0, 3485, 2025, 855, 0, 0, 572, 2308, 2496,
-    4410, 1711, 0, 3226, 0, 543, 0, 1621, 76, 3210, 3215, 17, 384, 0, 3294,
-    4505, 0, 0, 0, 1675, 1668, 1035, 0, 119, 0, 2789, 0, 3570, 4549, 98,
-    204, 2275, 0, 0, 0, 1949, 0, 0, 717, 0, 0, 0, 0, 113, 202, 0, 1557, 0,
-    1485, 840, 1002, 0, 0, 4427, 626, 4249, 0, 0, 2078, 165, 0, 929, 705,
-    1441, 0, 0, 1210, 972, 2190, 0, 0, 0, 0, 1931, 869, 0, 3521, 1203, 346,
-    0, 0, 0, 0, 0, 318, 1320, 667, 2715, 699, 1811, 0, 129, 813, 133, 1170,
-    0, 2082, 97, 0, 3526, 326, 0, 3954, 0, 4154, 0, 4309, 2381, 3528, 0,
-    30, 871, 4124, 4443, 2937, 0, 1725, 0, 0, 0, 2310, 455, 1619, 0, 1311,
-    0, 1380, 0, 0, 1836, 0, 0, 1089, 2913, 4345, 246, 0, 26, 961, 0, 0,
-    4157, 784, 0, 0, 2551, 3071, 485, 939, 2498, 0, 0, 0, 780, 4229, 1715,
-    0, 0, 0, 0, 70, 347, 3277, 639, 0, 0, 1504, 583, 0, 3743, 1826, 0, 45,
-    0, 0, 1008, 2163, 334, 1442, 0, 3030, 2537, 2051, 2729, 233, 3286, 0,
-    2576, 937, 950, 0, 2733, 0, 330, 4489, 2811, 0, 0, 0, 4544, 744, 2276,
-    0, 0, 1033, 203, 1114, 4197, 0, 0, 0, 0, 0, 2414, 295, 2339, 320, 1012,
-    0, 0, 3831, 2284, 0, 0, 1032, 134, 1726, 0, 0, 0, 3449, 0, 0, 3858,
-    191, 0, 1722, 790, 0, 2422, 0, 0, 1274, 0, 2270, 0, 0, 1010, 0, 0, 0,
-    1282, 1284, 0, 449, 0, 3027, 193, 0, 2027, 0, 1373, 0, 980, 3570, 1766,
-    1599, 4117, 167, 2021, 0, 2297, 471, 4085, 3018, 0, 335, 2835, 0, 2171,
-    0, 1360, 0, 1099, 3721, 1043, 0, 0, 0, 475, 3827, 16, 0, 672, 3315, 0,
-    4339, 0, 4427, 2223, 0, 0, 337, 0, 501, 229, 355, 85, 2613, 1226, 2295,
-    2336, 105, 0, 4538, 1538, 0, 0, 0, 2782, 3838, 0, 648, 0, 3778, 0, 0,
-    0, 0, 0, 0, 1336, 0, 0, 0, 2497, 743, 2249, 4081, 1023, 1864, 0, 3566,
-    2420, 1134, 1465, 1353, 1077, 149, 1704, 1778, 0, 0, 3553, 2079, 3287,
-    0, 0, 0, 1268, 599, 0, 0, 1112, 3816, 2411, 2535, 508, 0, 1829, 3311,
-    4312, 660, 2714, 0, 1657, 1994, 82, 3885, 1442, 0, 3432, 4337, 2665,
-    2778, 1687, 2522, 0, 1835, 1945, 1097, 682, 3420, 0, 0, 1450, 2138,
-    1006, 1376, 1456, 226, 3999, 982, 1417, 3602, 1964, 1894, 1525, 2505,
-    0, 4288, 0, 0, 2350, 441, 0, 0, 4083, 925, 3113, 310, 2991, 189, 1721,
-    544, 4105, 4546, 3498, 3022, 978, 0, 2007, 0, 1107, 0, 2286, 0, 1037,
-    0, 0, 0, 285, 0, 1559, 0, 0, 1728, 0, 0, 0, 284, 624, 263, 303, 1181,
-    2548, 1546, 2138, 0, 3610, 4024, 720, 2156, 0, 0, 446, 0, 0, 0, 0, 747,
-    0, 3594, 461, 3128, 505, 0, 67, 0, 2413, 0, 2775, 0, 0, 1780, 802, 0,
-    0, 0, 401, 1834, 2278, 4251, 0, 0, 0, 413, 0, 3070, 1726, 0, 0, 475, 0,
-    1857, 685, 2597, 981, 0, 0, 1655, 1180, 2228, 1253, 132, 63, 4266,
-    3166, 78, 0, 2635, 1295, 344, 3971, 743, 1580, 320, 4562, 0, 4412,
-    1166, 4460, 2660, 2264, 2579, 2733, 0, 2113, 3809, 2064, 1495, 0, 618,
-    886, 0, 0, 0, 4410, 1989, 0, 3907, 1781, 0, 2385, 92, 330, 1729, 3966,
-    1631, 4133, 2905, 2557, 3232, 0, 0, 0, 0, 0, 0, 291, 220, 3039, 465, 0,
-    4496, 0, 315, 3140, 0, 781, 0, 0, 0, 0, 0, 1419, 325, 4515, 4243, 1209,
-    2121, 0, 0, 2217, 2871, 417, 0, 0, 2310, 0, 2700, 4347, 1805, 1330,
-    3905, 760, 3564, 0, 2297, 2413, 1603, 1234, 3139, 0, 3836, 1431, 833,
-    1461, 146, 2173, 1111, 0, 1226, 1383, 0, 683, 2289, 783, 0, 0, 0, 0,
-    2024, 2362, 0, 2822, 0, 2184, 3117, 2289, 2884, 3942, 0, 0, 1806, 2073,
-    1039, 1332, 4148, 3602, 1500, 703, 0, 0, 0, 4304, 4271, 3563, 0, 214,
-    27, 1267, 1882, 3233, 3015, 0, 0, 0, 0, 2139, 1571, 0, 0, 4364, 3885,
-    3251, 0, 1662, 481, 9, 595, 0, 0, 1805, 0, 1783, 1270, 4365, 1375, 0,
-    0, 0, 3269, 1077, 2763, 324, 0, 4353, 2358, 2675, 0, 1843, 0, 1649,
-    333, 0, 0, 3961, 4484, 0, 0, 1368, 0, 3211, 4118, 4373, 3908, 1991, 0,
-    2189, 1381, 0, 2168, 1463, 1308, 466, 145, 3355, 0, 0, 298, 298, 1183,
-    0, 1145, 2060, 1516, 199, 0, 3088, 3607, 4408, 2304, 0, 2190, 2747, 0,
-    474, 0, 0, 3078, 4275, 820, 876, 1004, 2364, 0, 0, 3908, 2394, 1474,
-    2723, 1814, 2086, 294, 1788, 4408, 0, 2955, 3862, 912, 3296, 2130, 116,
-    1388, 2762, 2870, 0, 165, 0, 1852, 2287, 0, 0, 489, 2160, 441, 0, 2625,
-    349, 2280, 3030, 58, 0, 0, 4201, 0, 1229, 1760, 0, 4234, 791, 1053,
-    1349, 1951, 0, 1694, 1742, 4365, 3099, 2439, 4373, 0, 413, 0, 0, 0, 0,
-    3261, 1612, 0, 0, 3708, 1350, 252, 2326, 3770, 2427, 0, 1973, 3648,
-    2213, 253, 2017, 1533, 2014, 0, 0, 0, 1254, 2047, 0, 285, 1208, 2385,
-    0, 3284, 1586, 1396, 0, 0, 0, 1567, 1056, 0, 2370, 2208, 2196, 930,
-    1787, 0, 0, 0, 101, 0, 4554, 589, 1093, 3184, 0, 1063, 2620, 0, 323,
-    3160, 0, 1985, 2649, 0, 2950, 1670, 1932, 303, 630, 0, 1604, 0, 384,
-    1160, 4004, 3476, 4046, 1701, 0, 1182, 0, 3666, 1562, 1622, 1384, 0, 0,
-    0, 3622, 1340, 0, 3506, 2618, 2792, 1141, 1702, 4495, 2269, 0, 4344,
-    2047, 0, 2506, 0, 604, 0, 1979, 1455, 148, 2255, 0, 1069, 0, 4532, 0,
-    0, 3671, 265, 87, 0, 0, 4398, 4347, 1070, 970, 0, 1960, 3092, 943, 0,
-    1007, 0, 2528, 2173, 313, 347, 1560, 946, 4204, 2101, 0, 991, 0, 2102,
-    2053, 0, 680, 1979, 0, 1701, 0, 3621, 1556, 0, 331, 2707, 2448, 1240,
-    4042, 1616, 0, 3662, 0, 0, 0, 53, 4001, 0, 3069, 1309, 1446, 304, 357,
-    0, 3309, 2111, 3132, 264, 0, 103, 1400, 3319, 809, 2150, 2224, 0, 1528,
-    1147, 1528, 2667, 0, 0, 415, 0, 175, 3613, 1402, 1905, 0, 803, 1744,
-    2833, 804, 0, 0, 0, 0, 4466, 585, 2964, 1606, 3440, 297, 4247, 1275, 0,
-    0, 0, 1508, 0, 2835, 3573, 0, 400, 0, 4481, 3301, 734, 1036, 823, 1398,
-    706, 0, 0, 3880, 2284, 0, 0, 619, 0, 1317, 0, 0, 2219, 0, 4480, 628,
-    983, 4502, 3011, 1487, 44, 0, 0, 30, 2527, 2246, 804, 0, 2016, 2001,
-    1657, 0, 0, 1330, 739, 0, 0, 0, 0, 3978, 219, 974, 339, 3993, 2, 1118,
-    1395, 2451, 3610, 1189, 2341, 53, 110, 2132, 4538, 4392, 393, 53, 2176,
-    92, 2282, 0, 584, 885, 1401, 2282, 79, 1644, 0, 4316, 0, 4033, 0, 4235,
-    3232, 2752, 0, 0, 2010, 2446, 0, 0, 4547, 0, 2203, 247, 4125, 0, 0,
-    1261, 216, 0, 4138, 0, 0, 0, 0, 1637, 0, 0, 200, 750, 262, 0, 4510, 0,
-    1506, 2069, 4241, 1589, 661, 0, 277, 3425, 1294, 14, 0, 1747, 2220,
-    2297, 0, 0, 238, 0, 547, 476, 2223, 4221, 4355, 1385, 1724, 0, 0, 2139,
-    1990, 902, 0, 1183, 18, 0, 1607, 0, 2513, 1427, 395, 975, 0, 3106,
-    1756, 2038, 561, 0, 1217, 925, 158, 989, 4043, 0, 0, 0, 2342, 0, 2070,
-    297, 457, 0, 3756, 451, 0, 4085, 0, 4111, 2184, 0, 0, 0, 3984, 373, 0,
-    3175, 1178, 4351, 1137, 2453, 1709, 1594, 4546, 3060, 0, 1834, 3303, 0,
-    1327, 1177, 553, 404, 4148, 1271, 0, 603, 0, 0, 1541, 0, 2530, 0, 0,
-    2593, 1055, 0, 2346, 0, 424, 2332, 0, 1654, 0, 2249, 466, 1189, 700,
-    4013, 852, 126, 1203, 221, 852, 667, 350, 0, 758, 4008, 0, 4389, 854,
-    2392, 0, 2277, 782, 1516, 0, 2643, 766, 1171, 137, 3759, 733, 981, 0,
-    0, 1208, 1949, 2894, 0, 1871, 4499, 0, 1179, 0, 263, 414, 3460, 3873,
-    131, 1836, 528, 0, 0, 2185, 0, 2149, 0, 0, 1688, 1626, 4532, 0, 4415,
-    0, 4262, 0, 0, 1962, 0, 0, 453, 2195, 3045, 648, 3824, 1109, 2294,
-    3776, 0, 1433, 3623, 761, 2010, 0, 2049, 496, 0, 2094, 4421, 0, 420, 0,
-    0, 90, 0, 0, 485, 0, 0, 2499, 1177, 0, 0, 4511, 2369, 1523, 0, 0, 3755,
-    2071
+    0, 4563, 0, 0, 0, 2484, 2083, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 3420, 0, 3962, 0, 0, 0, 0, 0, 0, 2097, 96, 0, 0,
+    0, 0, 0, 3368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3572, 408, 0,
+    1013, 1971, 0, 371, 1609, 0, 0, 0, 0, 0, 0, 273, 407, 0, 0, 0, 0, 0, 0,
+    1940, 4382, 0, 455, 0, 0, 499, 1170, 0, 2533, 0, 0, 0, 0, 3968, 0, 0,
+    0, 0, 0, 0, 1385, 4046, 1302, 0, 0, 0, 0, 0, 0, 2752, 0, 0, 0, 0, 0, 0,
+    3754, 0, 0, 1648, 0, 1359, 2082, 0, 0, 0, 0, 0, 0, 3646, 345, 0, 0, 0,
+    0, 284, 0, 2566, 983, 403, 2955, 0, 826, 2528, 0, 3912, 0, 0, 0, 745,
+    0, 0, 0, 2038, 362, 3338, 0, 0, 0, 0, 1899, 0, 0, 4215, 2690, 0, 0,
+    2011, 0, 0, 0, 74, 3838, 0, 0, 4412, 574, 0, 0, 454, 4069, 2898, 0, 0,
+    1826, 0, 3104, 0, 0, 0, 0, 0, 1581, 2521, 0, 0, 0, 0, 0, 0, 0, 0, 800,
+    0, 184, 0, 0, 4401, 3776, 0, 4431, 0, 0, 0, 221, 1934, 3309, 0, 0, 0,
+    0, 533, 0, 0, 0, 0, 3912, 2426, 0, 0, 0, 0, 0, 0, 3063, 0, 1133, 1015,
+    0, 0, 0, 0, 0, 0, 467, 0, 1035, 2487, 1866, 50, 3959, 0, 2851, 0, 0, 0,
+    1140, 0, 3620, 2760, 2178, 4119, 0, 3941, 1692, 0, 4566, 0, 685, 862,
+    3302, 0, 0, 719, 479, 0, 0, 693, 0, 0, 0, 2001, 0, 2396, 0, 0, 3492,
+    298, 0, 0, 0, 0, 3129, 180, 4143, 742, 45, 0, 3340, 0, 0, 0, 0, 973, 0,
+    0, 0, 0, 2700, 0, 2799, 0, 1056, 1071, 4548, 421, 266, 0, 0, 0, 0, 0,
+    1429, 1022, 0, 1918, 3084, 0, 0, 1225, 2225, 1657, 852, 0, 0, 0, 1581,
+    0, 0, 4197, 0, 0, 234, 0, 3748, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303,
+    216, 3998, 0, 0, 0, 0, 1652, 0, 0, 0, 0, 1510, 776, 4426, 0, 380, 0, 0,
+    0, 0, 0, 0, 0, 0, 1507, 0, 1405, 0, 0, 922, 816, 1828, 0, 3745, 1803,
+    0, 1195, 0, 0, 466, 0, 2229, 0, 0, 1054, 220, 0, 0, 2587, 0, 1687, 0,
+    0, 814, 430, 1676, 0, 2584, 1323, 0, 2346, 0, 3935, 0, 305, 0, 0, 0, 0,
+    0, 429, 0, 612, 614, 0, 2226, 0, 1075, 0, 0, 4287, 0, 2862, 0, 0, 1809,
+    4425, 3368, 1573, 1803, 0, 2337, 0, 0, 3506, 0, 0, 663, 0, 3025, 3499,
+    0, 0, 0, 0, 3971, 44, 0, 0, 0, 643, 0, 0, 1468, 0, 2120, 1133, 3189, 0,
+    1808, 135, 0, 3353, 0, 0, 0, 0, 0, 383, 0, 0, 0, 2247, 0, 2705, 2148,
+    0, 51, 55, 0, 0, 0, 1458, 0, 0, 2380, 0, 0, 0, 0, 519, 0, 3136, 3343,
+    0, 0, 0, 4386, 0, 3718, 26, 0, 0, 0, 1863, 0, 4117, 2751, 2014, 3441,
+    4026, 0, 3425, 0, 0, 2210, 0, 2015, 4206, 0, 0, 586, 0, 0, 0, 2240,
+    2247, 0, 0, 4262, 1831, 3498, 0, 222, 0, 0, 0, 0, 334, 2627, 0, 517, 0,
+    0, 0, 0, 1622, 0, 0, 0, 4276, 0, 0, 2391, 0, 462, 3652, 0, 1963, 0, 0,
+    3270, 3012, 1027, 0, 0, 0, 0, 660, 2871, 4388, 2764, 0, 0, 1035, 2266,
+    3917, 0, 0, 2824, 958, 1810, 1002, 0, 3932, 0, 0, 0, 0, 0, 0, 4495, 0,
+    0, 0, 1505, 2354, 4437, 828, 0, 0, 0, 3688, 2633, 0, 2420, 128, 0,
+    3023, 0, 1829, 1607, 360, 750, 0, 2479, 0, 1456, 3284, 2173, 0, 2740,
+    1816, 603, 1862, 0, 0, 0, 3784, 1511, 4507, 0, 435, 0, 0, 0, 0, 0, 616,
+    785, 2747, 0, 3212, 0, 3699, 0, 0, 1815, 1823, 0, 0, 0, 986, 0, 3506,
+    0, 0, 0, 0, 0, 2751, 0, 0, 4211, 138, 0, 3343, 0, 635, 0, 992, 0, 868,
+    282, 0, 0, 0, 2142, 0, 0, 1016, 0, 2354, 4010, 2169, 0, 0, 0, 644, 0,
+    385, 2897, 1676, 3788, 2724, 0, 2625, 1785, 0, 0, 1893, 0, 0, 973, 0,
+    0, 0, 2189, 0, 1133, 3698, 0, 3865, 0, 0, 4356, 0, 4297, 2087, 554, 0,
+    178, 2236, 0, 0, 0, 398, 1353, 422, 0, 1695, 1323, 777, 1129, 0, 0, 75,
+    0, 330, 0, 303, 0, 1816, 0, 0, 0, 0, 0, 0, 576, 198, 4415, 2297, 4119,
+    0, 0, 1245, 0, 0, 0, 1388, 0, 0, 4105, 0, 3, 0, 380, 0, 0, 3321, 0, 0,
+    1187, 2874, 0, 0, 0, 0, 0, 848, 2021, 4363, 0, 1056, 0, 0, 0, 1174, 0,
+    2989, 365, 0, 876, 390, 0, 1762, 0, 0, 1957, 0, 0, 1441, 543, 3981,
+    3986, 486, 617, 502, 923, 0, 1039, 0, 2668, 0, 792, 0, 0, 4049, 0, 0,
+    1345, 0, 3993, 4283, 0, 776, 1157, 1562, 0, 406, 122, 784, 4093, 765,
+    4148, 0, 2481, 0, 605, 0, 0, 4057, 0, 4070, 3307, 1537, 0, 1371, 0,
+    2855, 0, 627, 0, 0, 0, 4140, 0, 2414, 0, 852, 2331, 929, 1938, 0, 0, 0,
+    0, 0, 0, 563, 0, 0, 0, 531, 0, 1728, 0, 1694, 0, 434, 2481, 2903, 0,
+    2372, 0, 3230, 0, 0, 0, 0, 0, 0, 804, 68, 636, 764, 0, 0, 2545, 748, 0,
+    0, 899, 812, 0, 0, 2828, 2208, 0, 0, 2428, 0, 0, 0, 3828, 1380, 639, 0,
+    0, 0, 0, 157, 0, 918, 0, 271, 0, 0, 0, 3084, 0, 4525, 85, 0, 0, 586,
+    3452, 446, 0, 0, 0, 0, 0, 0, 316, 0, 0, 2003, 2060, 0, 0, 0, 1103, 59,
+    0, 436, 0, 498, 0, 1118, 711, 4320, 0, 96, 0, 0, 0, 955, 0, 4488, 0,
+    2774, 0, 0, 4456, 635, 0, 0, 0, 2167, 70, 4548, 474, 30, 0, 887, 213,
+    0, 0, 0, 0, 3025, 0, 537, 472, 0, 943, 0, 0, 0, 0, 146, 0, 0, 223, 680,
+    0, 0, 0, 0, 1993, 0, 0, 225, 1752, 0, 41, 0, 0, 2967, 1682, 3608, 1204,
+    2925, 0, 2764, 3286, 0, 0, 0, 0, 961, 0, 500, 0, 3728, 3671, 271, 0, 0,
+    267, 0, 0, 0, 0, 0, 4573, 496, 3346, 0, 2449, 2606, 0, 717, 0, 798, 0,
+    4397, 2483, 0, 0, 0, 170, 0, 2091, 2534, 0, 3356, 0, 0, 0, 4350, 193,
+    0, 745, 0, 58, 0, 0, 1850, 0, 2955, 1722, 0, 0, 0, 1063, 0, 2108, 1135,
+    4314, 0, 4108, 2721, 3534, 0, 2054, 2012, 0, 0, 0, 0, 1552, 0, 234, 0,
+    1477, 0, 3961, 0, 0, 1824, 856, 1453, 195, 555, 0, 0, 0, 3012, 3904,
+    1925, 610, 2914, 1200, 2318, 2979, 3606, 0, 0, 192, 0, 0, 0, 1410,
+    3067, 1971, 0, 791, 256, 2511, 2369, 2644, 2840, 0, 3667, 2197, 0, 0,
+    2210, 872, 2100, 1361, 0, 0, 0, 0, 1214, 2750, 697, 0, 0, 4228, 1828,
+    4257, 2486, 3279, 0, 0, 1526, 0, 0, 3694, 0, 147, 0, 0, 0, 0, 3370, 0,
+    5, 0, 2197, 37, 0, 0, 1108, 0, 548, 0, 3918, 0, 0, 2726, 1767, 2360, 0,
+    0, 0, 1270, 1080, 0, 0, 2405, 2542, 0, 548, 0, 982, 0, 3873, 0, 1349,
+    0, 3582, 0, 1722, 0, 0, 0, 0, 0, 2257, 2350, 0, 1542, 0, 0, 0, 3583,
+    2794, 0, 3942, 0, 2388, 559, 2149, 0, 0, 0, 0, 870, 0, 801, 1944, 4170,
+    0, 0, 0, 0, 0, 4470, 2332, 2749, 0, 0, 0, 0, 0, 0, 3527, 0, 175, 1805,
+    4141, 2028, 155, 401, 0, 1170, 0, 996, 3706, 4328, 0, 0, 4079, 558,
+    1304, 0, 0, 1731, 0, 2165, 0, 0, 0, 2209, 674, 0, 2912, 456, 153, 4084,
+    0, 1164, 2287, 0, 0, 1901, 2329, 1388, 1454, 736, 450, 3850, 0, 542,
+    1637, 1732, 350, 0, 0, 0, 0, 908, 1581, 0, 0, 0, 0, 4059, 1660, 4393,
+    2351, 0, 254, 0, 0, 0, 2508, 0, 0, 3451, 3716, 0, 3301, 0, 4197, 0, 0,
+    191, 1408, 3273, 1816, 3759, 0, 0, 4374, 0, 0, 2536, 780, 0, 1415,
+    4207, 703, 0, 4338, 1079, 0, 0, 0, 0, 0, 0, 0, 2640, 0, 2878, 0, 0,
+    1330, 0, 0, 0, 1516, 0, 0, 0, 1838, 2396, 0, 0, 0, 194, 0, 0, 3322, 0,
+    2060, 0, 641, 1316, 890, 2706, 0, 3811, 0, 376, 860, 2471, 0, 0, 1951,
+    0, 655, 4033, 0, 0, 3550, 0, 53, 0, 0, 589, 1366, 2862, 0, 0, 0, 0,
+    3566, 0, 0, 2136, 3800, 0, 0, 0, 0, 1415, 2700, 1497, 4360, 1677, 244,
+    0, 289, 3689, 0, 0, 702, 3832, 0, 0, 0, 0, 119, 4408, 942, 0, 0, 0,
+    743, 0, 3789, 2828, 2330, 2034, 0, 0, 3961, 0, 976, 2705, 154, 0, 1196,
+    4540, 0, 0, 3631, 286, 0, 0, 666, 0, 1479, 158, 1721, 0, 0, 2187, 1550,
+    0, 2250, 443, 0, 1033, 2383, 2198, 0, 0, 0, 1302, 4467, 0, 4357, 1713,
+    357, 0, 244, 1582, 453, 0, 4344, 2475, 0, 1574, 2840, 0, 0, 0, 0, 0, 0,
+    0, 0, 4460, 256, 736, 0, 1349, 0, 2398, 1318, 3631, 0, 0, 1027, 876,
+    2121, 0, 0, 0, 0, 0, 0, 1233, 598, 0, 988, 0, 1512, 0, 1383, 2291, 0,
+    0, 0, 2251, 4178, 2310, 1482, 752, 0, 0, 794, 12, 3214, 809, 0, 686, 0,
+    2081, 0, 2907, 698, 0, 1885, 6, 191, 0, 0, 0, 0, 1947, 483, 0, 0, 1250,
+    4527, 1159, 0, 0, 1411, 0, 3332, 2547, 0, 1817, 0, 0, 3642, 0, 221, 0,
+    2642, 2016, 0, 4274, 0, 1727, 0, 0, 66, 0, 3957, 0, 4512, 124, 3158,
+    2453, 2684, 0, 0, 0, 0, 1306, 0, 1831, 356, 0, 2008, 1317, 0, 0, 1178,
+    2193, 0, 2410, 565, 0, 0, 0, 2279, 1198, 0, 2029, 0, 445, 2935, 1357,
+    0, 4547, 3044, 227, 0, 2634, 4295, 0, 0, 2837, 0, 2376, 3282, 392,
+    1848, 0, 907, 1648, 587, 4304, 0, 4350, 252, 2665, 2409, 1854, 624, 0,
+    0, 0, 3021, 0, 0, 0, 0, 0, 2647, 3, 654, 0, 0, 0, 1010, 3006, 0, 0, 0,
+    0, 0, 0, 1881, 1563, 2167, 364, 3643, 0, 0, 688, 0, 0, 1215, 2859, 769,
+    0, 1093, 286, 4260, 829, 0, 3137, 0, 0, 3326, 0, 899, 0, 0, 0, 2422, 0,
+    1464, 1153, 2980, 0, 0, 0, 1037, 0, 0, 703, 1918, 4269, 776, 0, 4382,
+    0, 1336, 3014, 1582, 0, 3564, 0, 2834, 0, 2548, 207, 2623, 851, 0,
+    2410, 0, 1196, 0, 1034, 3215, 2632, 740, 3176, 0, 0, 0, 0, 0, 48, 328,
+    1209, 0, 87, 583, 396, 0, 0, 4403, 2253, 3431, 98, 2405, 0, 4162, 3940,
+    0, 4196, 0, 1835, 0, 0, 0, 0, 0, 0, 305, 2423, 1227, 2581, 3750, 362,
+    1414, 0, 4338, 1882, 0, 2334, 2223, 0, 0, 4151, 0, 156, 1891, 366,
+    4562, 0, 4475, 2379, 0, 3863, 1997, 2355, 3058, 1251, 0, 491, 0, 1331,
+    188, 0, 600, 2274, 0, 0, 273, 3561, 0, 0, 4502, 0, 3515, 2552, 3947, 0,
+    504, 3488, 3633, 0, 4174, 412, 2344, 375, 1515, 0, 1339, 3239, 673, 0,
+    0, 0, 0, 0, 0, 0, 430, 2685, 0, 1260, 0, 2211, 0, 0, 2169, 0, 2333,
+    2970, 645, 0, 0, 0, 0, 0, 1546, 1999, 291, 1879, 0, 0, 2467, 2548,
+    3435, 0, 454, 232, 1258, 4219, 746, 1956, 1665, 0, 0, 0, 0, 0, 0, 0, 0,
+    590, 4293, 327, 0, 217, 1885, 1986, 1202, 0, 166, 0, 0, 4058, 0, 983,
+    0, 3113, 416, 0, 239, 476, 0, 0, 930, 2575, 0, 0, 0, 0, 2050, 0, 0,
+    1850, 0, 1993, 0, 1821, 0, 0, 1506, 1085, 0, 0, 0, 277, 2531, 1489, 0,
+    4270, 2571, 3114, 1623, 2104, 21, 332, 650, 630, 1955, 1384, 0, 4079,
+    346, 0, 0, 0, 0, 2125, 3620, 0, 2892, 1765, 0, 0, 0, 461, 0, 4168,
+    2265, 1861, 0, 4103, 0, 0, 3485, 0, 0, 0, 4355, 1995, 3576, 1882, 1943,
+    0, 229, 1529, 3858, 0, 1490, 829, 1957, 4332, 3371, 0, 0, 1759, 2551,
+    1230, 0, 3404, 0, 929, 0, 4555, 0, 1821, 1892, 0, 0, 2700, 2460, 0,
+    4041, 0, 4101, 581, 3240, 206, 567, 1069, 348, 0, 0, 211, 3444, 0,
+    4188, 2412, 378, 1378, 0, 0, 0, 1785, 4399, 0, 2266, 0, 1863, 1767, 0,
+    0, 0, 0, 0, 0, 1956, 4052, 100, 4320, 186, 0, 303, 0, 1316, 2007, 2787,
+    0, 4004, 450, 2921, 129, 2678, 0, 3146, 0, 0, 0, 0, 703, 2801, 0, 0,
+    1718, 3509, 3786, 2399, 436, 0, 0, 1212, 2159, 48, 0, 1164, 0, 0, 3608,
+    2296, 2244, 0, 2529, 0, 0, 0, 0, 1172, 0, 0, 2801, 3655, 468, 2803,
+    914, 691, 335, 2621, 0, 0, 297, 130, 0, 872, 0, 1890, 0, 4474, 3688,
+    2537, 735, 0, 2710, 1146, 0, 3231, 3179, 304, 1715, 0, 0, 0, 3065, 0,
+    0, 1782, 2536, 0, 0, 0, 0, 891, 0, 0, 631, 0, 0, 0, 0, 159, 0, 3306,
+    1159, 4419, 0, 4103, 0, 0, 0, 904, 861, 0, 0, 0, 0, 0, 0, 718, 268,
+    1771, 0, 0, 2692, 2129, 0, 0, 922, 3529, 4326, 1617, 4236, 1819, 0, 0,
+    0, 0, 0, 0, 0, 4479, 1136, 0, 0, 591, 2647, 3881, 2768, 444, 0, 983, 0,
+    255, 3221, 585, 0, 0, 0, 1648, 382, 0, 0, 0, 4213, 4087, 3501, 915, 0,
+    0, 199, 4448, 0, 0, 1305, 0, 3731, 1778, 0, 3827, 0, 0, 0, 3997, 0,
+    4369, 1931, 2514, 0, 0, 0, 3360, 7, 0, 1525, 2612, 4026, 0, 1037, 1117,
+    354, 3208, 0, 0, 3059, 831, 492, 3067, 516, 4357, 0, 0, 2801, 0, 1722,
+    2230, 0, 185, 452, 657, 0, 0, 1729, 615, 1671, 1792, 2424, 306, 2092,
+    0, 3287, 0, 0, 1779, 4274, 0, 3232, 1016, 4409, 1227, 480, 4143, 0,
+    1696, 3080, 4047, 615, 0, 2965, 3569, 0, 0, 3859, 2143, 0, 1865, 3297,
+    0, 0, 0, 3003, 4382, 0, 0, 0, 115, 0, 382, 0, 0, 0, 0, 1524, 1240, 57,
+    492, 1756, 895, 842, 3903, 3914, 0, 2676, 1130, 524, 4238, 0, 538, 0,
+    1195, 1704, 0, 0, 0, 0, 3717, 1489, 534, 3274, 0, 2196, 2548, 1440,
+    747, 569, 0, 3115, 0, 0, 1679, 0, 1182, 835, 3065, 4193, 903, 0, 3078,
+    4368, 0, 2105, 0, 954, 0, 0, 0, 0, 1189, 2073, 750, 0, 3057, 1202, 906,
+    1034, 3711, 0, 2305, 2184, 0, 0, 306, 0, 2676, 1377, 1781, 2022, 1040,
+    1418, 0, 245, 2296, 0, 0, 4074, 4228, 3779, 0, 0, 0, 2062, 0, 1836,
+    4392, 0, 0, 0, 3736, 0, 0, 0, 591, 0, 0, 0, 3055, 2165, 0, 3497, 0,
+    2082, 0, 0, 0, 0, 1719, 273, 2216, 896, 3924, 3597, 555, 2995, 944,
+    2487, 0, 831, 0, 0, 0, 0, 1667, 0, 2759, 1265, 0, 2101, 0, 4338, 0, 81,
+    449, 0, 0, 0, 2503, 0, 340, 0, 0, 1021, 0, 413, 0, 0, 2913, 0, 4044,
+    2359, 2277, 2496, 0, 591, 3047, 1313, 225, 0, 0, 496, 154, 1689, 0, 0,
+    0, 3307, 1697, 3556, 0, 2369, 875, 0, 0, 3439, 1072, 0, 4240, 0, 4256,
+    2658, 241, 0, 2296, 0, 0, 951, 0, 10, 0, 1540, 0, 1732, 0, 3971, 1123,
+    0, 3169, 4365, 528, 0, 2392, 0, 1153, 2069, 0, 0, 383, 0, 0, 0, 0, 0,
+    1575, 4384, 3577, 2372, 0, 0, 0, 0, 204, 0, 0, 1028, 986, 1966, 273, 0,
+    4498, 0, 3460, 2012, 0, 0, 3307, 201, 0, 2663, 3861, 0, 2124, 0, 469,
+    1276, 0, 36, 0, 1126, 3780, 0, 252, 603, 1533, 0, 2958, 650, 3466,
+    4452, 409, 0, 2028, 2663, 0, 3399, 2611, 1721, 0, 0, 736, 1315, 561,
+    3771, 1666, 4145, 0, 0, 56, 0, 0, 1278, 0, 0, 0, 2084, 107, 0, 0, 0,
+    3748, 1979, 3867, 2095, 0, 1115, 0, 3788, 3267, 2334, 3607, 4219, 2542,
+    1380, 0, 0, 0, 2787, 2305, 3567, 2721, 456, 1348, 345, 2353, 690, 2249,
+    1146, 0, 2237, 1517, 934, 296, 0, 231, 0, 4400, 1983, 0, 0, 4361, 0, 0,
+    898, 937, 678, 1537, 0, 0, 0, 2244, 70, 0, 0, 0, 0, 1209, 0, 2414, 0,
+    1828, 2869, 0, 0, 0, 4216, 0, 0, 506, 0, 4391, 1259, 3787, 3463, 978,
+    0, 1017, 2374, 0, 0, 0, 1934, 0, 0, 3067, 1532, 1650, 581, 1084, 127,
+    403, 0, 2980, 1509, 3941, 0, 1384, 0, 0, 2900, 0, 436, 0, 472, 2683,
+    4510, 27, 0, 530, 1193, 1162, 2540, 0, 3885, 3815, 0, 1018, 691, 0,
+    709, 1860, 0, 3696, 3786, 2894, 0, 1513, 0, 3050, 1830, 0, 1396, 4256,
+    0, 0, 0, 2777, 582, 2366, 2128, 193, 1434, 0, 2415, 66, 3570, 883,
+    1142, 1220, 1064, 0, 876, 1084, 0, 4177, 3486, 1918, 1570, 0, 680,
+    2941, 0, 0, 25, 0, 0, 99, 0, 1651, 50, 561, 1986, 514, 4576, 2084, 366,
+    4552, 0, 961, 0, 2289, 0, 0, 1407, 3872, 940, 1270, 0, 0, 227, 0, 1354,
+    784, 2204, 3139, 2367, 1183, 0, 0, 0, 3916, 3709, 0, 0, 175, 4392,
+    1048, 0, 0, 0, 2271, 4548, 0, 0, 0, 2509, 0, 1291, 13, 791, 4469, 0, 0,
+    1101, 0, 2230, 1376, 275, 2298, 3150, 0, 0, 0, 956, 2815, 2451, 0, 0,
+    2608, 1483, 0, 22, 700, 0, 1363, 0, 3532, 3464, 0, 0, 967, 1689, 1618,
+    0, 0, 0, 1786, 3664, 3612, 1979, 2888, 0, 1609, 0, 0, 0, 0, 1672, 110,
+    0, 2948, 0, 281, 2459, 2103, 3451, 0, 0, 1358, 0, 0, 173, 2355, 293, 0,
+    0, 1521, 3704, 2668, 732, 0, 312, 0, 1696, 1905, 0, 0, 0, 0, 536, 1962,
+    1364, 11, 4442, 1687, 2302, 0, 0, 1994, 2369, 0, 0, 0, 0, 0, 0, 0,
+    2531, 4337, 4514, 4105, 0, 3328, 350, 3008, 1155, 0, 0, 1428, 906,
+    2486, 1200, 0, 0, 717, 496, 3198, 0, 1088, 0, 1792, 2222, 0, 1584, 92,
+    1619, 0, 0, 2036, 863, 0, 4204, 0, 269, 0, 0, 0, 0, 3648, 1650, 39, 0,
+    0, 381, 1366, 0, 2370, 2074, 1332, 3338, 4366, 0, 1665, 0, 0, 281, 0,
+    3951, 0, 3105, 1985, 203, 1004, 0, 0, 0, 965, 0, 1856, 0, 1538, 714,
+    162, 0, 0, 2434, 1024, 4116, 351, 0, 3948, 613, 0, 353, 1385, 0, 0,
+    2267, 0, 3047, 3928, 0, 0, 0, 85, 1550, 0, 0, 0, 643, 0, 2239, 0, 1587,
+    0, 519, 3012, 125, 3607, 0, 683, 201, 3299, 2823, 3003, 1455, 67, 0,
+    1025, 339, 2199, 445, 1719, 1495, 4134, 362, 742, 2218, 583, 1737, 0,
+    0, 0, 0, 1452, 2820, 2111, 29, 1973, 4351, 863, 0, 0, 0, 0, 3889, 0, 0,
+    0, 1334, 205, 0, 2010, 0, 383, 4351, 1158, 609, 361, 2008, 3549, 1924,
+    30, 4383, 0, 779, 1382, 871, 0, 0, 1603, 0, 1198, 1851, 4049, 2505,
+    1639, 0, 0, 808, 1646, 0, 1489, 240, 712, 0, 0, 0, 75, 3647, 0, 0, 0,
+    0, 355, 1526, 748, 0, 3240, 0, 0, 0, 3896, 2446, 0, 2758, 1716, 4375,
+    1827, 607, 2043, 0, 2383, 0, 3081, 2563, 0, 0, 1722, 1176, 0, 0, 3269,
+    1245, 1636, 0, 0, 0, 976, 0, 759, 2793, 3892, 113, 4438, 3560, 0, 908,
+    1141, 2042, 1309, 2077, 0, 0, 0, 0, 2135, 1148, 0, 0, 0, 1357, 3972,
+    943, 0, 4269, 310, 3353, 0, 0, 0, 0, 0, 0, 1565, 0, 0, 1578, 0, 3115,
+    166, 4458, 2853, 0, 1165, 3157, 1956, 1993, 0, 0, 3832, 0, 873, 199,
+    225, 0, 3343, 826, 1184, 2599, 0, 111, 597, 2174, 0, 0, 4537, 541, 0,
+    0, 1690, 0, 1391, 3002, 0, 0, 3855, 1427, 3441, 50, 4135, 1862, 223, 0,
+    2210, 3917, 3768, 1775, 2290, 1104, 2336, 2391, 1799, 1182, 0, 0, 926,
+    712, 0, 0, 3420, 1855, 0, 1364, 4386, 0, 1518, 0, 3584, 4518, 0, 0,
+    825, 3890, 0, 4231, 4287, 0, 451, 0, 0, 0, 0, 3083, 1517, 1302, 4156,
+    3792, 0, 3614, 1531, 1215, 3053, 0, 2921, 2236, 1206, 157, 1338, 0,
+    260, 1564, 0, 0, 2094, 1874, 0, 0, 0, 0, 4220, 0, 0, 1042, 1758, 2547,
+    3896, 1164, 4388, 1160, 679, 2501, 0, 0, 1040, 0, 433, 0, 2134, 2058,
+    2494, 790, 0, 1411, 0, 0, 0, 0, 713, 4157, 4195, 3979, 876, 3590, 0, 0,
+    83, 0, 1083, 0, 1055, 3302, 638, 2691, 0, 1731, 1742, 775, 1776, 715,
+    0, 379, 0, 1548, 0, 0, 4012, 0, 3005, 1071, 0, 0, 988, 0, 0, 4426,
+    1564, 2506, 0, 191, 0, 0, 3582, 1996, 0, 584, 0, 0, 2802, 0, 369, 397,
+    0, 4214, 453, 3572, 3120, 0, 0, 97, 0, 1441, 3588, 806, 0, 1615, 4340,
+    780, 3139, 0, 664, 0, 2188, 2504, 0, 2298, 621, 0, 898, 0, 0, 0, 0, 0,
+    838, 172, 117, 1622, 487, 475, 314, 0, 2048, 2704, 0, 867, 0, 3792,
+    3641, 2503, 0, 594, 2039, 0, 452, 0, 1877, 89, 0, 4014, 653, 1614,
+    1292, 566, 0, 0, 198, 0, 0, 2338, 4136, 937, 1120, 0, 8, 3698, 3171,
+    413, 1439, 1321, 0, 2417, 335, 2986, 0, 566, 0, 3814, 962, 0, 0, 242,
+    0, 0, 505, 183, 1965, 812, 98, 655, 0, 0, 0, 0, 1978, 848, 396, 0, 377,
+    0, 1684, 0, 1582, 3969, 1744, 0, 810, 72, 0, 107, 0, 4433, 2286, 3522,
+    0, 2069, 0, 0, 0, 2094, 4395, 2067, 0, 1149, 0, 662, 0, 2107, 4389, 0,
+    849, 0, 0, 0, 69, 0, 0, 0, 0, 0, 313, 0, 607, 831, 4085, 3226, 0, 0, 0,
+    340, 4136, 1223, 2021, 0, 2091, 3801, 212, 0, 12, 0, 3915, 1805, 3515,
+    4315, 0, 0, 2099, 0, 0, 4090, 0, 0, 622, 834, 2437, 2296, 1681, 4547,
+    4460, 2079, 2324, 839, 2397, 2145, 1619, 401, 3863, 2891, 0, 103, 1457,
+    0, 1047, 0, 1405, 2950, 3099, 2255, 0, 0, 968, 670, 2120, 1389, 643, 0,
+    1752, 1342, 0, 3330, 0, 1282, 1561, 3036, 0, 0, 1219, 2129, 425, 0,
+    2162, 0, 0, 3764, 2134, 3962, 0, 919, 0, 0, 2044, 0, 0, 769, 2243, 0,
+    0, 4575, 1751, 0, 0, 0, 585, 1638, 0, 0, 2438, 0, 792, 220, 0, 3802,
+    3691, 0, 1032, 1344, 0, 3968, 0, 0, 147, 1059, 2411, 1074, 1608, 0,
+    199, 0, 0, 215, 0, 0, 840, 3390, 712, 0, 3209, 3282, 0, 2266, 2514, 0,
+    1393, 951, 4351, 0, 378, 0, 1015, 4263, 2644, 2511, 1953, 0, 0, 1991,
+    3626, 0, 513, 0, 2139, 2502, 0, 808, 2899, 1908, 1589, 113, 3787, 0, 0,
+    882, 3809, 0, 4350, 890, 0, 0, 240, 632, 3047, 1547, 3304, 874, 0, 669,
+    1138, 1326, 2034, 4147, 2172, 3490, 1660, 0, 1542, 0, 788, 3236, 557,
+    0, 290, 1687, 0, 1655, 4087, 1730, 3798, 2362, 875, 442, 2048, 0, 0, 0,
+    2419, 4022, 2726, 0, 701, 294, 0, 1955, 3941, 571, 0, 0, 1450, 1985,
+    1874, 2584, 1062, 3965, 0, 0, 521, 384, 0, 1406, 1272, 0, 0, 0, 0,
+    2642, 1419, 280, 0, 0, 2495, 0, 603, 1739, 2740, 105, 0, 1768, 1049, 0,
+    1901, 4127, 1550, 0, 4479, 1750, 693, 2089, 0, 2715, 4357, 0, 4027,
+    842, 3047, 3628, 145, 1240, 0, 617, 847, 4400, 620, 1496, 4204, 1912,
+    3600, 2399, 1839, 751, 1558, 433, 20, 0, 2449, 4367, 0, 902, 3803,
+    2277, 0, 214, 584, 2380, 0, 1983, 0, 331, 0, 1752, 171, 1643, 556, 627,
+    537, 0, 3772, 2097, 0, 3603, 0, 1704, 0, 0, 0, 0, 2437, 227, 3368, 0,
+    2128, 0, 0, 965, 4212, 0, 0, 568, 127, 1903, 4433, 0, 0, 0, 1886, 153,
+    2830, 0, 1450, 0, 129, 0, 0, 0, 975, 3292, 105, 0, 0, 202, 0, 1727, 0,
+    4241, 2087, 2073, 430, 0, 3605, 823, 440, 1626, 11, 3226, 0, 0, 3953,
+    0, 593, 0, 1325, 0, 0, 2227, 1850, 270, 0, 0, 2085, 441, 171, 2251, 0,
+    2430, 0, 0, 4544, 0, 1330, 0, 0, 0, 1794, 1653, 213, 1513, 3924, 2379,
+    2023, 666, 55, 3647, 832, 3275, 739, 4117, 2141, 1233, 4483, 0, 3836,
+    2907, 826, 781, 3445, 784, 3728, 3751, 1226, 3639, 2696, 1066, 1170,
+    664, 785, 733, 293, 1603, 0, 1942, 0, 0, 1, 0, 661, 0, 0, 679, 1368, 0,
+    0, 1179, 208, 0, 0, 0, 0, 1604, 2525, 4309, 1176, 1285, 667, 2161,
+    4564, 302, 4097, 3038, 2549, 266, 0, 0, 2443, 0, 0, 562, 0, 0, 697,
+    247, 2408, 2433, 0, 3858, 0, 1599, 578, 3041, 4043, 1902, 1298, 0, 0,
+    1652, 0, 1493, 0, 0, 0, 379, 4453, 0, 0, 0, 0, 2125, 0, 3703, 0, 1649,
+    4085, 2345, 0, 7, 4099, 0, 0, 0, 0, 2921, 0, 2745, 58, 0, 2706, 587,
+    2328, 0, 2271, 0, 121, 0, 1939, 1027, 226, 0, 1473, 4235, 0, 0, 0,
+    2618, 1043, 4158, 0, 0, 0, 0, 0, 386, 3847, 0, 1817, 2405, 0, 1142,
+    1906, 1254, 1734, 4182, 4530, 0, 0, 0, 1995, 1813, 0, 0, 1480, 1886,
+    3796, 2487, 4066, 0, 1511, 0, 0, 0, 3807, 2978, 2283, 4266, 4360, 2172,
+    0, 135, 1662, 0, 247, 956, 525, 0, 0, 0, 2402, 0, 0, 0, 0, 0, 515,
+    2301, 0, 2319, 313, 0, 3101, 0, 0, 0, 3870, 0, 3544, 0, 0, 0, 4490, 0,
+    4509, 0, 2734, 3317, 0, 0, 0, 2770, 0, 0, 2263, 986, 0, 2529, 1001, 0,
+    0, 2249, 177, 0, 2289, 4304, 4242, 0, 0, 0, 170, 0, 4576, 195, 0, 1795,
+    4271, 0, 0, 0, 4180, 34, 0, 0, 0, 0, 0, 2475, 781, 1461, 3400, 1894, 0,
+    2337, 0, 2406, 322, 0, 948, 0, 3838, 1572, 2546, 0, 754, 1234, 1323,
+    805, 0, 1694, 1164, 706, 1972, 2608, 3313, 2289, 838, 1252, 0, 3641, 0,
+    3427, 0, 1847, 2807, 1135, 992, 0, 0, 2446, 938, 0, 0, 846, 1825, 0, 0,
+    0, 0, 0, 1094, 1594, 643, 4102, 778, 4529, 0, 2035, 811, 0, 1156, 0, 0,
+    0, 3400, 2456, 1869, 3613, 0, 0, 0, 0, 2961, 2076, 1836, 0, 0, 239,
+    1058, 926, 2472, 0, 564, 3784, 2615, 2719, 0, 0, 3519, 2190, 2339,
+    1072, 1244, 1003, 4441, 1003, 0, 0, 0, 0, 0, 4051, 1821, 1264, 652, 0,
+    305, 2559, 1001, 0, 0, 1272, 0, 4471, 0, 1637, 3775, 0, 1834, 0, 959,
+    2628, 2040, 0, 3716, 0, 0, 0, 193, 0, 2762, 0, 2464, 571, 312, 284,
+    849, 2472, 0, 2326, 3115, 1495, 0, 2439, 1097, 0, 1886, 0, 1207, 911,
+    0, 0, 141, 1221, 1341, 2482, 3714, 0, 1674, 0, 4503, 2208, 327, 0, 0,
+    1950, 2927, 3809, 684, 1463, 3080, 0, 0, 1502, 0, 0, 2362, 0, 0, 0,
+    4307, 1751, 0, 145, 0, 845, 0, 333, 3872, 2291, 0, 301, 0, 0, 371, 0,
+    0, 2788, 0, 704, 379, 1098, 1702, 1786, 2426, 0, 1245, 2245, 2269, 0,
+    1144, 2221, 1077, 3063, 0, 0, 3991, 2506, 402, 2061, 0, 3534, 3505,
+    3917, 284, 0, 3421, 1575, 0, 927, 1418, 3498, 1663, 285, 1630, 2377,
+    736, 1249, 2949, 2482, 1227, 4221, 1609, 2989, 2264, 1584, 0, 0, 0, 7,
+    1710, 1065, 4551, 726, 596, 1138, 0, 0, 0, 0, 0, 4563, 0, 0, 1348, 386,
+    181, 2359, 1223, 3472, 2181, 0, 1082, 0, 0, 4210, 0, 0, 0, 0, 2096,
+    1174, 0, 0, 2215, 4392, 3487, 0, 53, 0, 525, 0, 1292, 2120, 1531, 0, 0,
+    677, 103, 2301, 3554, 2011, 0, 0, 0, 3337, 0, 1728, 615, 0, 1429, 813,
+    49, 1134, 3922, 0, 3313, 2030, 0, 62, 0, 553, 0, 3854, 0, 57, 1473,
+    2668, 753, 0, 4306, 4013, 0, 1301, 556, 1049, 0, 318, 4239, 711, 862,
+    0
 };
 
 static size_t
@@ -2870,16 +2871,16 @@ keysym_name_hash_f(const char *key, const char *T)
     size_t sum = 0;
     for (size_t i = 0; key[i] != '\0'; i++)
         sum += T[i % 32] * key[i];
-    return sum % 4573;
+    return sum % 4578;
 }
 
 static size_t
 keysym_name_perfect_hash(const char *key)
 {
     return (
-        keysym_name_G[keysym_name_hash_f(key, "xQ6s5AweQcmhYSjcMnXcbUZV5VlaPl27")] +
-        keysym_name_G[keysym_name_hash_f(key, "rCH1UKEZTzn9hlnUvX76Sw7VmrLuST7A")]
-    ) % 4573;
+        keysym_name_G[keysym_name_hash_f(key, "i8oQPmKYkIetcNLKtoDCVlX1nn1CvPDv")] +
+        keysym_name_G[keysym_name_hash_f(key, "h7H8UeXN09yUJyoQcJxwuidtVj4cA0a7")]
+    ) % 4578;
 }
 
 
@@ -5158,288 +5159,290 @@ static const struct name_keysym name_to_keysym[] = {
     { 0x1008ff9c, 27760 }, /* XF86CycleAngle */
     { 0x10081277, 27775 }, /* XF86Data */
     { 0x100811aa, 27784 }, /* XF86Database */
-    { 0x1008ff59, 27797 }, /* XF86Display */
-    { 0x100810f5, 27809 }, /* XF86DisplayOff */
-    { 0x100811af, 27824 }, /* XF86DisplayToggle */
-    { 0x1008ff5b, 27842 }, /* XF86Documents */
-    { 0x1008ff5a, 27856 }, /* XF86DOS */
-    { 0x10081185, 27864 }, /* XF86DVD */
-    { 0x100811a6, 27872 }, /* XF86Editor */
-    { 0x1008ff2c, 27883 }, /* XF86Eject */
-    { 0x1008ff5c, 27893 }, /* XF86Excel */
-    { 0x1008ff5d, 27903 }, /* XF86Explorer */
-    { 0x10081275, 27916 }, /* XF86FastReverse */
-    { 0x1008ff30, 27932 }, /* XF86Favorites */
-    { 0x1008ff3c, 27946 }, /* XF86Finance */
-    { 0x100811d0, 27958 }, /* XF86Fn */
-    { 0x100811d1, 27965 }, /* XF86Fn_Esc */
-    { 0x100811e5, 27976 }, /* XF86FnRightShift */
-    { 0x1008ff27, 27993 }, /* XF86Forward */
-    { 0x1008ff9d, 28005 }, /* XF86FrameBack */
-    { 0x1008ff9e, 28019 }, /* XF86FrameForward */
-    { 0x1008ffb8, 28036 }, /* XF86FullScreen */
-    { 0x1008ff5e, 28051 }, /* XF86Game */
-    { 0x1008ff5f, 28060 }, /* XF86Go */
-    { 0x100811a8, 28067 }, /* XF86GraphicsEditor */
-    { 0x1008ffa4, 28086 }, /* XF86Green */
-    { 0x100811be, 28096 }, /* XF86HangupPhone */
-    { 0x1008ffa8, 28112 }, /* XF86Hibernate */
-    { 0x1008ff37, 28126 }, /* XF86History */
-    { 0x1008ff18, 28138 }, /* XF86HomePage */
-    { 0x1008ff3a, 28151 }, /* XF86HotLinks */
-    { 0x100811ba, 28164 }, /* XF86Images */
-    { 0x10081166, 28175 }, /* XF86Info */
-    { 0x1008ff60, 28184 }, /* XF86iTouch */
-    { 0x10081242, 28195 }, /* XF86Journal */
-    { 0x1008ff06, 28207 }, /* XF86KbdBrightnessDown */
-    { 0x1008ff05, 28229 }, /* XF86KbdBrightnessUp */
-    { 0x10081264, 28249 }, /* XF86KbdInputAssistAccept */
-    { 0x10081265, 28274 }, /* XF86KbdInputAssistCancel */
-    { 0x10081261, 28299 }, /* XF86KbdInputAssistNext */
-    { 0x10081263, 28322 }, /* XF86KbdInputAssistNextgroup */
-    { 0x10081260, 28350 }, /* XF86KbdInputAssistPrev */
-    { 0x10081262, 28373 }, /* XF86KbdInputAssistPrevgroup */
-    { 0x100812b8, 28401 }, /* XF86KbdLcdMenu1 */
-    { 0x100812b9, 28417 }, /* XF86KbdLcdMenu2 */
-    { 0x100812ba, 28433 }, /* XF86KbdLcdMenu3 */
-    { 0x100812bb, 28449 }, /* XF86KbdLcdMenu4 */
-    { 0x100812bc, 28465 }, /* XF86KbdLcdMenu5 */
-    { 0x1008ff04, 28481 }, /* XF86KbdLightOnOff */
-    { 0x1008ffb3, 28499 }, /* XF86Keyboard */
-    { 0x1008ff40, 28512 }, /* XF86Launch0 */
-    { 0x1008ff41, 28524 }, /* XF86Launch1 */
-    { 0x1008ff42, 28536 }, /* XF86Launch2 */
-    { 0x1008ff43, 28548 }, /* XF86Launch3 */
-    { 0x1008ff44, 28560 }, /* XF86Launch4 */
-    { 0x1008ff45, 28572 }, /* XF86Launch5 */
-    { 0x1008ff46, 28584 }, /* XF86Launch6 */
-    { 0x1008ff47, 28596 }, /* XF86Launch7 */
-    { 0x1008ff48, 28608 }, /* XF86Launch8 */
-    { 0x1008ff49, 28620 }, /* XF86Launch9 */
-    { 0x1008ff4a, 28632 }, /* XF86LaunchA */
-    { 0x1008ff4b, 28644 }, /* XF86LaunchB */
-    { 0x1008ff4c, 28656 }, /* XF86LaunchC */
-    { 0x1008ff4d, 28668 }, /* XF86LaunchD */
-    { 0x1008ff4e, 28680 }, /* XF86LaunchE */
-    { 0x1008ff4f, 28692 }, /* XF86LaunchF */
-    { 0x10081269, 28704 }, /* XF86LeftDown */
-    { 0x10081268, 28717 }, /* XF86LeftUp */
-    { 0x1008ff35, 28728 }, /* XF86LightBulb */
-    { 0x1008121e, 28742 }, /* XF86LightsToggle */
-    { 0x1008fe25, 28759 }, /* XF86LogGrabInfo */
-    { 0x1008ff61, 28775 }, /* XF86LogOff */
-    { 0x1008fe24, 28786 }, /* XF86LogWindowTree */
-    { 0x10081290, 28804 }, /* XF86Macro1 */
-    { 0x10081299, 28815 }, /* XF86Macro10 */
-    { 0x1008129a, 28827 }, /* XF86Macro11 */
-    { 0x1008129b, 28839 }, /* XF86Macro12 */
-    { 0x1008129c, 28851 }, /* XF86Macro13 */
-    { 0x1008129d, 28863 }, /* XF86Macro14 */
-    { 0x1008129e, 28875 }, /* XF86Macro15 */
-    { 0x1008129f, 28887 }, /* XF86Macro16 */
-    { 0x100812a0, 28899 }, /* XF86Macro17 */
-    { 0x100812a1, 28911 }, /* XF86Macro18 */
-    { 0x100812a2, 28923 }, /* XF86Macro19 */
-    { 0x10081291, 28935 }, /* XF86Macro2 */
-    { 0x100812a3, 28946 }, /* XF86Macro20 */
-    { 0x100812a4, 28958 }, /* XF86Macro21 */
-    { 0x100812a5, 28970 }, /* XF86Macro22 */
-    { 0x100812a6, 28982 }, /* XF86Macro23 */
-    { 0x100812a7, 28994 }, /* XF86Macro24 */
-    { 0x100812a8, 29006 }, /* XF86Macro25 */
-    { 0x100812a9, 29018 }, /* XF86Macro26 */
-    { 0x100812aa, 29030 }, /* XF86Macro27 */
-    { 0x100812ab, 29042 }, /* XF86Macro28 */
-    { 0x100812ac, 29054 }, /* XF86Macro29 */
-    { 0x10081292, 29066 }, /* XF86Macro3 */
-    { 0x100812ad, 29077 }, /* XF86Macro30 */
-    { 0x10081293, 29089 }, /* XF86Macro4 */
-    { 0x10081294, 29100 }, /* XF86Macro5 */
-    { 0x10081295, 29111 }, /* XF86Macro6 */
-    { 0x10081296, 29122 }, /* XF86Macro7 */
-    { 0x10081297, 29133 }, /* XF86Macro8 */
-    { 0x10081298, 29144 }, /* XF86Macro9 */
-    { 0x100812b3, 29155 }, /* XF86MacroPreset1 */
-    { 0x100812b4, 29172 }, /* XF86MacroPreset2 */
-    { 0x100812b5, 29189 }, /* XF86MacroPreset3 */
-    { 0x100812b2, 29206 }, /* XF86MacroPresetCycle */
-    { 0x100812b0, 29227 }, /* XF86MacroRecordStart */
-    { 0x100812b1, 29248 }, /* XF86MacroRecordStop */
-    { 0x1008ff19, 29268 }, /* XF86Mail */
-    { 0x1008ff90, 29277 }, /* XF86MailForward */
-    { 0x1008ff62, 29293 }, /* XF86Market */
-    { 0x100811b7, 29304 }, /* XF86MediaRepeat */
-    { 0x1008126b, 29320 }, /* XF86MediaTopMenu */
-    { 0x1008ff63, 29337 }, /* XF86Meeting */
-    { 0x1008ff1e, 29349 }, /* XF86Memo */
-    { 0x1008ff65, 29358 }, /* XF86MenuKB */
-    { 0x1008ff66, 29369 }, /* XF86MenuPB */
-    { 0x1008ff8e, 29380 }, /* XF86Messenger */
-    { 0x1008ff01, 29394 }, /* XF86ModeLock */
-    { 0x1008ff07, 29407 }, /* XF86MonBrightnessCycle */
-    { 0x1008ff03, 29430 }, /* XF86MonBrightnessDown */
-    { 0x1008ff02, 29452 }, /* XF86MonBrightnessUp */
-    { 0x1008ff92, 29472 }, /* XF86Music */
-    { 0x1008ff33, 29482 }, /* XF86MyComputer */
-    { 0x1008ff67, 29497 }, /* XF86MySites */
-    { 0x1008ff68, 29509 }, /* XF86New */
-    { 0x1008ff69, 29517 }, /* XF86News */
-    { 0x1008fe22, 29526 }, /* XF86Next_VMode */
-    { 0x10081270, 29541 }, /* XF86NextFavorite */
-    { 0x100811bc, 29558 }, /* XF86NotificationCenter */
-    { 0x10081200, 29581 }, /* XF86Numeric0 */
-    { 0x10081201, 29594 }, /* XF86Numeric1 */
-    { 0x1008126c, 29607 }, /* XF86Numeric11 */
-    { 0x1008126d, 29621 }, /* XF86Numeric12 */
-    { 0x10081202, 29635 }, /* XF86Numeric2 */
-    { 0x10081203, 29648 }, /* XF86Numeric3 */
-    { 0x10081204, 29661 }, /* XF86Numeric4 */
-    { 0x10081205, 29674 }, /* XF86Numeric5 */
-    { 0x10081206, 29687 }, /* XF86Numeric6 */
-    { 0x10081207, 29700 }, /* XF86Numeric7 */
-    { 0x10081208, 29713 }, /* XF86Numeric8 */
-    { 0x10081209, 29726 }, /* XF86Numeric9 */
-    { 0x1008120c, 29739 }, /* XF86NumericA */
-    { 0x1008120d, 29752 }, /* XF86NumericB */
-    { 0x1008120e, 29765 }, /* XF86NumericC */
-    { 0x1008120f, 29778 }, /* XF86NumericD */
-    { 0x1008120b, 29791 }, /* XF86NumericPound */
-    { 0x1008120a, 29808 }, /* XF86NumericStar */
-    { 0x1008ff6a, 29824 }, /* XF86OfficeHome */
-    { 0x10081278, 29839 }, /* XF86OnScreenKeyboard */
-    { 0x1008ff6b, 29860 }, /* XF86Open */
-    { 0x1008ff38, 29869 }, /* XF86OpenURL */
-    { 0x1008ff6c, 29881 }, /* XF86Option */
-    { 0x1008ff6d, 29892 }, /* XF86Paste */
-    { 0x10081272, 29902 }, /* XF86PauseRecord */
-    { 0x1008ff6e, 29918 }, /* XF86Phone */
-    { 0x100811bd, 29928 }, /* XF86PickupPhone */
-    { 0x1008ff91, 29944 }, /* XF86Pictures */
-    { 0x1008ff21, 29957 }, /* XF86PowerDown */
-    { 0x1008ff2a, 29971 }, /* XF86PowerOff */
-    { 0x100811a9, 29984 }, /* XF86Presentation */
-    { 0x1008fe23, 30001 }, /* XF86Prev_VMode */
-    { 0x10081279, 30016 }, /* XF86PrivacyScreenToggle */
-    { 0x1008ff70, 30040 }, /* XF86Q */
-    { 0x1008ffa3, 30046 }, /* XF86Red */
-    { 0x1008ff29, 30054 }, /* XF86Refresh */
-    { 0x1008ff73, 30066 }, /* XF86Reload */
-    { 0x1008ff72, 30077 }, /* XF86Reply */
-    { 0x1008ffb5, 30087 }, /* XF86RFKill */
-    { 0x10081267, 30098 }, /* XF86RightDown */
-    { 0x10081266, 30112 }, /* XF86RightUp */
-    { 0x1008ff24, 30124 }, /* XF86RockerDown */
-    { 0x1008ff25, 30139 }, /* XF86RockerEnter */
-    { 0x1008ff23, 30155 }, /* XF86RockerUp */
-    { 0x1008126a, 30168 }, /* XF86RootMenu */
-    { 0x1008ff74, 30181 }, /* XF86RotateWindows */
-    { 0x1008ff76, 30199 }, /* XF86RotationKB */
-    { 0x1008ffb7, 30214 }, /* XF86RotationLockToggle */
-    { 0x1008ff75, 30237 }, /* XF86RotationPB */
-    { 0x1008ff77, 30252 }, /* XF86Save */
-    { 0x1008ff2d, 30261 }, /* XF86ScreenSaver */
-    { 0x10081245, 30277 }, /* XF86Screensaver */
-    { 0x1008ff7a, 30293 }, /* XF86ScrollClick */
-    { 0x1008ff79, 30309 }, /* XF86ScrollDown */
-    { 0x1008ff78, 30324 }, /* XF86ScrollUp */
-    { 0x1008ff1b, 30337 }, /* XF86Search */
-    { 0x1008ffa0, 30348 }, /* XF86Select */
-    { 0x1008127a, 30359 }, /* XF86SelectiveScreenshot */
-    { 0x1008ff7b, 30383 }, /* XF86Send */
-    { 0x1008ff36, 30392 }, /* XF86Shop */
-    { 0x1008ff2f, 30401 }, /* XF86Sleep */
-    { 0x10081276, 30411 }, /* XF86SlowReverse */
-    { 0x1008ff7c, 30427 }, /* XF86Spell */
-    { 0x100811b0, 30437 }, /* XF86SpellCheck */
-    { 0x1008ff7d, 30452 }, /* XF86SplitScreen */
-    { 0x1008ff10, 30468 }, /* XF86Standby */
-    { 0x1008ff1a, 30480 }, /* XF86Start */
-    { 0x1008ff28, 30490 }, /* XF86Stop */
-    { 0x10081271, 30499 }, /* XF86StopRecord */
-    { 0x1008ff9a, 30514 }, /* XF86Subtitle */
-    { 0x1008ff7e, 30527 }, /* XF86Support */
-    { 0x1008ffa7, 30539 }, /* XF86Suspend */
-    { 0x1008fe01, 30551 }, /* XF86Switch_VT_1 */
-    { 0x1008fe0a, 30567 }, /* XF86Switch_VT_10 */
-    { 0x1008fe0b, 30584 }, /* XF86Switch_VT_11 */
-    { 0x1008fe0c, 30601 }, /* XF86Switch_VT_12 */
-    { 0x1008fe02, 30618 }, /* XF86Switch_VT_2 */
-    { 0x1008fe03, 30634 }, /* XF86Switch_VT_3 */
-    { 0x1008fe04, 30650 }, /* XF86Switch_VT_4 */
-    { 0x1008fe05, 30666 }, /* XF86Switch_VT_5 */
-    { 0x1008fe06, 30682 }, /* XF86Switch_VT_6 */
-    { 0x1008fe07, 30698 }, /* XF86Switch_VT_7 */
-    { 0x1008fe08, 30714 }, /* XF86Switch_VT_8 */
-    { 0x1008fe09, 30730 }, /* XF86Switch_VT_9 */
-    { 0x10081241, 30746 }, /* XF86Taskmanager */
-    { 0x1008ff7f, 30762 }, /* XF86TaskPane */
-    { 0x1008ff80, 30775 }, /* XF86Terminal */
-    { 0x1008ff9f, 30788 }, /* XF86Time */
-    { 0x1008ff1f, 30797 }, /* XF86ToDoList */
-    { 0x1008ff81, 30810 }, /* XF86Tools */
-    { 0x1008ffa2, 30820 }, /* XF86TopMenu */
-    { 0x1008ffb1, 30832 }, /* XF86TouchpadOff */
-    { 0x1008ffb0, 30848 }, /* XF86TouchpadOn */
-    { 0x1008ffa9, 30863 }, /* XF86TouchpadToggle */
-    { 0x1008ff82, 30882 }, /* XF86Travel */
-    { 0x1008fe20, 30893 }, /* XF86Ungrab */
-    { 0x10081274, 30904 }, /* XF86Unmute */
-    { 0x1008ff85, 30915 }, /* XF86User1KB */
-    { 0x1008ff86, 30927 }, /* XF86User2KB */
-    { 0x1008ff84, 30939 }, /* XF86UserPB */
-    { 0x1008ff96, 30950 }, /* XF86UWB */
-    { 0x1008ff34, 30958 }, /* XF86VendorHome */
-    { 0x1008ff87, 30973 }, /* XF86Video */
-    { 0x100811a0, 30983 }, /* XF86VideoPhone */
-    { 0x1008ffa1, 30998 }, /* XF86View */
-    { 0x10081273, 31007 }, /* XF86VOD */
-    { 0x10081246, 31015 }, /* XF86VoiceCommand */
-    { 0x100811ac, 31032 }, /* XF86Voicemail */
-    { 0x1008ff2b, 31046 }, /* XF86WakeUp */
-    { 0x1008ff8f, 31057 }, /* XF86WebCam */
-    { 0x1008ff88, 31068 }, /* XF86WheelButton */
-    { 0x1008ff95, 31084 }, /* XF86WLAN */
-    { 0x1008ff89, 31093 }, /* XF86Word */
-    { 0x10081211, 31102 }, /* XF86WPSButton */
-    { 0x1008ffb4, 31116 }, /* XF86WWAN */
-    { 0x1008ff2e, 31125 }, /* XF86WWW */
-    { 0x1008ff8a, 31133 }, /* XF86Xfer */
-    { 0x1008ffa5, 31142 }, /* XF86Yellow */
-    { 0x1008ff8b, 31153 }, /* XF86ZoomIn */
-    { 0x1008ff8c, 31164 }, /* XF86ZoomOut */
-    { 0x100811a4, 31176 }, /* XF86ZoomReset */
-    { 0x00000059, 31190 }, /* Y */
-    { 0x00000079, 31192 }, /* y */
-    { 0x000000dd, 31194 }, /* Yacute */
-    { 0x000000fd, 31201 }, /* yacute */
-    { 0x01001ef4, 31208 }, /* Ybelowdot */
-    { 0x01001ef5, 31218 }, /* ybelowdot */
-    { 0x01000176, 31228 }, /* Ycircumflex */
-    { 0x01000177, 31240 }, /* ycircumflex */
-    { 0x000000ff, 31252 }, /* ydiaeresis */
-    { 0x000013be, 31263 }, /* Ydiaeresis */
-    { 0x000000a5, 31274 }, /* yen */
-    { 0x01001ef2, 31278 }, /* Ygrave */
-    { 0x01001ef3, 31285 }, /* ygrave */
-    { 0x01001ef6, 31292 }, /* Yhook */
-    { 0x01001ef7, 31298 }, /* yhook */
-    { 0x01001ef8, 31304 }, /* Ytilde */
-    { 0x01001ef9, 31311 }, /* ytilde */
-    { 0x0000005a, 31318 }, /* Z */
-    { 0x0000007a, 31320 }, /* z */
-    { 0x000001af, 31322 }, /* Zabovedot */
-    { 0x000001bf, 31332 }, /* zabovedot */
-    { 0x000001ac, 31342 }, /* Zacute */
-    { 0x000001bc, 31349 }, /* zacute */
-    { 0x000001ae, 31356 }, /* Zcaron */
-    { 0x000001be, 31363 }, /* zcaron */
-    { 0x0000ff3d, 31370 }, /* Zen_Koho */
-    { 0x0000ff28, 31379 }, /* Zenkaku */
-    { 0x0000ff2a, 31387 }, /* Zenkaku_Hankaku */
-    { 0x01002080, 31403 }, /* zerosubscript */
-    { 0x01002070, 31417 }, /* zerosuperior */
-    { 0x010001b5, 31430 }, /* Zstroke */
-    { 0x010001b6, 31438 }, /* zstroke */
+    { 0x1008124a, 27797 }, /* XF86Dictate */
+    { 0x1008ff59, 27809 }, /* XF86Display */
+    { 0x100810f5, 27821 }, /* XF86DisplayOff */
+    { 0x100811af, 27836 }, /* XF86DisplayToggle */
+    { 0x1008ff5b, 27854 }, /* XF86Documents */
+    { 0x1008ff5a, 27868 }, /* XF86DOS */
+    { 0x10081185, 27876 }, /* XF86DVD */
+    { 0x100811a6, 27884 }, /* XF86Editor */
+    { 0x1008ff2c, 27895 }, /* XF86Eject */
+    { 0x10081249, 27905 }, /* XF86EmojiPicker */
+    { 0x1008ff5c, 27921 }, /* XF86Excel */
+    { 0x1008ff5d, 27931 }, /* XF86Explorer */
+    { 0x10081275, 27944 }, /* XF86FastReverse */
+    { 0x1008ff30, 27960 }, /* XF86Favorites */
+    { 0x1008ff3c, 27974 }, /* XF86Finance */
+    { 0x100811d0, 27986 }, /* XF86Fn */
+    { 0x100811d1, 27993 }, /* XF86Fn_Esc */
+    { 0x100811e5, 28004 }, /* XF86FnRightShift */
+    { 0x1008ff27, 28021 }, /* XF86Forward */
+    { 0x1008ff9d, 28033 }, /* XF86FrameBack */
+    { 0x1008ff9e, 28047 }, /* XF86FrameForward */
+    { 0x1008ffb8, 28064 }, /* XF86FullScreen */
+    { 0x1008ff5e, 28079 }, /* XF86Game */
+    { 0x1008ff5f, 28088 }, /* XF86Go */
+    { 0x100811a8, 28095 }, /* XF86GraphicsEditor */
+    { 0x1008ffa4, 28114 }, /* XF86Green */
+    { 0x100811be, 28124 }, /* XF86HangupPhone */
+    { 0x1008ffa8, 28140 }, /* XF86Hibernate */
+    { 0x1008ff37, 28154 }, /* XF86History */
+    { 0x1008ff18, 28166 }, /* XF86HomePage */
+    { 0x1008ff3a, 28179 }, /* XF86HotLinks */
+    { 0x100811ba, 28192 }, /* XF86Images */
+    { 0x10081166, 28203 }, /* XF86Info */
+    { 0x1008ff60, 28212 }, /* XF86iTouch */
+    { 0x10081242, 28223 }, /* XF86Journal */
+    { 0x1008ff06, 28235 }, /* XF86KbdBrightnessDown */
+    { 0x1008ff05, 28257 }, /* XF86KbdBrightnessUp */
+    { 0x10081264, 28277 }, /* XF86KbdInputAssistAccept */
+    { 0x10081265, 28302 }, /* XF86KbdInputAssistCancel */
+    { 0x10081261, 28327 }, /* XF86KbdInputAssistNext */
+    { 0x10081263, 28350 }, /* XF86KbdInputAssistNextgroup */
+    { 0x10081260, 28378 }, /* XF86KbdInputAssistPrev */
+    { 0x10081262, 28401 }, /* XF86KbdInputAssistPrevgroup */
+    { 0x100812b8, 28429 }, /* XF86KbdLcdMenu1 */
+    { 0x100812b9, 28445 }, /* XF86KbdLcdMenu2 */
+    { 0x100812ba, 28461 }, /* XF86KbdLcdMenu3 */
+    { 0x100812bb, 28477 }, /* XF86KbdLcdMenu4 */
+    { 0x100812bc, 28493 }, /* XF86KbdLcdMenu5 */
+    { 0x1008ff04, 28509 }, /* XF86KbdLightOnOff */
+    { 0x1008ffb3, 28527 }, /* XF86Keyboard */
+    { 0x1008ff40, 28540 }, /* XF86Launch0 */
+    { 0x1008ff41, 28552 }, /* XF86Launch1 */
+    { 0x1008ff42, 28564 }, /* XF86Launch2 */
+    { 0x1008ff43, 28576 }, /* XF86Launch3 */
+    { 0x1008ff44, 28588 }, /* XF86Launch4 */
+    { 0x1008ff45, 28600 }, /* XF86Launch5 */
+    { 0x1008ff46, 28612 }, /* XF86Launch6 */
+    { 0x1008ff47, 28624 }, /* XF86Launch7 */
+    { 0x1008ff48, 28636 }, /* XF86Launch8 */
+    { 0x1008ff49, 28648 }, /* XF86Launch9 */
+    { 0x1008ff4a, 28660 }, /* XF86LaunchA */
+    { 0x1008ff4b, 28672 }, /* XF86LaunchB */
+    { 0x1008ff4c, 28684 }, /* XF86LaunchC */
+    { 0x1008ff4d, 28696 }, /* XF86LaunchD */
+    { 0x1008ff4e, 28708 }, /* XF86LaunchE */
+    { 0x1008ff4f, 28720 }, /* XF86LaunchF */
+    { 0x10081269, 28732 }, /* XF86LeftDown */
+    { 0x10081268, 28745 }, /* XF86LeftUp */
+    { 0x1008ff35, 28756 }, /* XF86LightBulb */
+    { 0x1008121e, 28770 }, /* XF86LightsToggle */
+    { 0x1008fe25, 28787 }, /* XF86LogGrabInfo */
+    { 0x1008ff61, 28803 }, /* XF86LogOff */
+    { 0x1008fe24, 28814 }, /* XF86LogWindowTree */
+    { 0x10081290, 28832 }, /* XF86Macro1 */
+    { 0x10081299, 28843 }, /* XF86Macro10 */
+    { 0x1008129a, 28855 }, /* XF86Macro11 */
+    { 0x1008129b, 28867 }, /* XF86Macro12 */
+    { 0x1008129c, 28879 }, /* XF86Macro13 */
+    { 0x1008129d, 28891 }, /* XF86Macro14 */
+    { 0x1008129e, 28903 }, /* XF86Macro15 */
+    { 0x1008129f, 28915 }, /* XF86Macro16 */
+    { 0x100812a0, 28927 }, /* XF86Macro17 */
+    { 0x100812a1, 28939 }, /* XF86Macro18 */
+    { 0x100812a2, 28951 }, /* XF86Macro19 */
+    { 0x10081291, 28963 }, /* XF86Macro2 */
+    { 0x100812a3, 28974 }, /* XF86Macro20 */
+    { 0x100812a4, 28986 }, /* XF86Macro21 */
+    { 0x100812a5, 28998 }, /* XF86Macro22 */
+    { 0x100812a6, 29010 }, /* XF86Macro23 */
+    { 0x100812a7, 29022 }, /* XF86Macro24 */
+    { 0x100812a8, 29034 }, /* XF86Macro25 */
+    { 0x100812a9, 29046 }, /* XF86Macro26 */
+    { 0x100812aa, 29058 }, /* XF86Macro27 */
+    { 0x100812ab, 29070 }, /* XF86Macro28 */
+    { 0x100812ac, 29082 }, /* XF86Macro29 */
+    { 0x10081292, 29094 }, /* XF86Macro3 */
+    { 0x100812ad, 29105 }, /* XF86Macro30 */
+    { 0x10081293, 29117 }, /* XF86Macro4 */
+    { 0x10081294, 29128 }, /* XF86Macro5 */
+    { 0x10081295, 29139 }, /* XF86Macro6 */
+    { 0x10081296, 29150 }, /* XF86Macro7 */
+    { 0x10081297, 29161 }, /* XF86Macro8 */
+    { 0x10081298, 29172 }, /* XF86Macro9 */
+    { 0x100812b3, 29183 }, /* XF86MacroPreset1 */
+    { 0x100812b4, 29200 }, /* XF86MacroPreset2 */
+    { 0x100812b5, 29217 }, /* XF86MacroPreset3 */
+    { 0x100812b2, 29234 }, /* XF86MacroPresetCycle */
+    { 0x100812b0, 29255 }, /* XF86MacroRecordStart */
+    { 0x100812b1, 29276 }, /* XF86MacroRecordStop */
+    { 0x1008ff19, 29296 }, /* XF86Mail */
+    { 0x1008ff90, 29305 }, /* XF86MailForward */
+    { 0x1008ff62, 29321 }, /* XF86Market */
+    { 0x100811b7, 29332 }, /* XF86MediaRepeat */
+    { 0x1008126b, 29348 }, /* XF86MediaTopMenu */
+    { 0x1008ff63, 29365 }, /* XF86Meeting */
+    { 0x1008ff1e, 29377 }, /* XF86Memo */
+    { 0x1008ff65, 29386 }, /* XF86MenuKB */
+    { 0x1008ff66, 29397 }, /* XF86MenuPB */
+    { 0x1008ff8e, 29408 }, /* XF86Messenger */
+    { 0x1008ff01, 29422 }, /* XF86ModeLock */
+    { 0x1008ff07, 29435 }, /* XF86MonBrightnessCycle */
+    { 0x1008ff03, 29458 }, /* XF86MonBrightnessDown */
+    { 0x1008ff02, 29480 }, /* XF86MonBrightnessUp */
+    { 0x1008ff92, 29500 }, /* XF86Music */
+    { 0x1008ff33, 29510 }, /* XF86MyComputer */
+    { 0x1008ff67, 29525 }, /* XF86MySites */
+    { 0x1008ff68, 29537 }, /* XF86New */
+    { 0x1008ff69, 29545 }, /* XF86News */
+    { 0x1008fe22, 29554 }, /* XF86Next_VMode */
+    { 0x10081270, 29569 }, /* XF86NextFavorite */
+    { 0x100811bc, 29586 }, /* XF86NotificationCenter */
+    { 0x10081200, 29609 }, /* XF86Numeric0 */
+    { 0x10081201, 29622 }, /* XF86Numeric1 */
+    { 0x1008126c, 29635 }, /* XF86Numeric11 */
+    { 0x1008126d, 29649 }, /* XF86Numeric12 */
+    { 0x10081202, 29663 }, /* XF86Numeric2 */
+    { 0x10081203, 29676 }, /* XF86Numeric3 */
+    { 0x10081204, 29689 }, /* XF86Numeric4 */
+    { 0x10081205, 29702 }, /* XF86Numeric5 */
+    { 0x10081206, 29715 }, /* XF86Numeric6 */
+    { 0x10081207, 29728 }, /* XF86Numeric7 */
+    { 0x10081208, 29741 }, /* XF86Numeric8 */
+    { 0x10081209, 29754 }, /* XF86Numeric9 */
+    { 0x1008120c, 29767 }, /* XF86NumericA */
+    { 0x1008120d, 29780 }, /* XF86NumericB */
+    { 0x1008120e, 29793 }, /* XF86NumericC */
+    { 0x1008120f, 29806 }, /* XF86NumericD */
+    { 0x1008120b, 29819 }, /* XF86NumericPound */
+    { 0x1008120a, 29836 }, /* XF86NumericStar */
+    { 0x1008ff6a, 29852 }, /* XF86OfficeHome */
+    { 0x10081278, 29867 }, /* XF86OnScreenKeyboard */
+    { 0x1008ff6b, 29888 }, /* XF86Open */
+    { 0x1008ff38, 29897 }, /* XF86OpenURL */
+    { 0x1008ff6c, 29909 }, /* XF86Option */
+    { 0x1008ff6d, 29920 }, /* XF86Paste */
+    { 0x10081272, 29930 }, /* XF86PauseRecord */
+    { 0x1008ff6e, 29946 }, /* XF86Phone */
+    { 0x100811bd, 29956 }, /* XF86PickupPhone */
+    { 0x1008ff91, 29972 }, /* XF86Pictures */
+    { 0x1008ff21, 29985 }, /* XF86PowerDown */
+    { 0x1008ff2a, 29999 }, /* XF86PowerOff */
+    { 0x100811a9, 30012 }, /* XF86Presentation */
+    { 0x1008fe23, 30029 }, /* XF86Prev_VMode */
+    { 0x10081279, 30044 }, /* XF86PrivacyScreenToggle */
+    { 0x1008ff70, 30068 }, /* XF86Q */
+    { 0x1008ffa3, 30074 }, /* XF86Red */
+    { 0x1008ff29, 30082 }, /* XF86Refresh */
+    { 0x1008ff73, 30094 }, /* XF86Reload */
+    { 0x1008ff72, 30105 }, /* XF86Reply */
+    { 0x1008ffb5, 30115 }, /* XF86RFKill */
+    { 0x10081267, 30126 }, /* XF86RightDown */
+    { 0x10081266, 30140 }, /* XF86RightUp */
+    { 0x1008ff24, 30152 }, /* XF86RockerDown */
+    { 0x1008ff25, 30167 }, /* XF86RockerEnter */
+    { 0x1008ff23, 30183 }, /* XF86RockerUp */
+    { 0x1008126a, 30196 }, /* XF86RootMenu */
+    { 0x1008ff74, 30209 }, /* XF86RotateWindows */
+    { 0x1008ff76, 30227 }, /* XF86RotationKB */
+    { 0x1008ffb7, 30242 }, /* XF86RotationLockToggle */
+    { 0x1008ff75, 30265 }, /* XF86RotationPB */
+    { 0x1008ff77, 30280 }, /* XF86Save */
+    { 0x1008ff2d, 30289 }, /* XF86ScreenSaver */
+    { 0x10081245, 30305 }, /* XF86Screensaver */
+    { 0x1008ff7a, 30321 }, /* XF86ScrollClick */
+    { 0x1008ff79, 30337 }, /* XF86ScrollDown */
+    { 0x1008ff78, 30352 }, /* XF86ScrollUp */
+    { 0x1008ff1b, 30365 }, /* XF86Search */
+    { 0x1008ffa0, 30376 }, /* XF86Select */
+    { 0x1008127a, 30387 }, /* XF86SelectiveScreenshot */
+    { 0x1008ff7b, 30411 }, /* XF86Send */
+    { 0x1008ff36, 30420 }, /* XF86Shop */
+    { 0x1008ff2f, 30429 }, /* XF86Sleep */
+    { 0x10081276, 30439 }, /* XF86SlowReverse */
+    { 0x1008ff7c, 30455 }, /* XF86Spell */
+    { 0x100811b0, 30465 }, /* XF86SpellCheck */
+    { 0x1008ff7d, 30480 }, /* XF86SplitScreen */
+    { 0x1008ff10, 30496 }, /* XF86Standby */
+    { 0x1008ff1a, 30508 }, /* XF86Start */
+    { 0x1008ff28, 30518 }, /* XF86Stop */
+    { 0x10081271, 30527 }, /* XF86StopRecord */
+    { 0x1008ff9a, 30542 }, /* XF86Subtitle */
+    { 0x1008ff7e, 30555 }, /* XF86Support */
+    { 0x1008ffa7, 30567 }, /* XF86Suspend */
+    { 0x1008fe01, 30579 }, /* XF86Switch_VT_1 */
+    { 0x1008fe0a, 30595 }, /* XF86Switch_VT_10 */
+    { 0x1008fe0b, 30612 }, /* XF86Switch_VT_11 */
+    { 0x1008fe0c, 30629 }, /* XF86Switch_VT_12 */
+    { 0x1008fe02, 30646 }, /* XF86Switch_VT_2 */
+    { 0x1008fe03, 30662 }, /* XF86Switch_VT_3 */
+    { 0x1008fe04, 30678 }, /* XF86Switch_VT_4 */
+    { 0x1008fe05, 30694 }, /* XF86Switch_VT_5 */
+    { 0x1008fe06, 30710 }, /* XF86Switch_VT_6 */
+    { 0x1008fe07, 30726 }, /* XF86Switch_VT_7 */
+    { 0x1008fe08, 30742 }, /* XF86Switch_VT_8 */
+    { 0x1008fe09, 30758 }, /* XF86Switch_VT_9 */
+    { 0x10081241, 30774 }, /* XF86Taskmanager */
+    { 0x1008ff7f, 30790 }, /* XF86TaskPane */
+    { 0x1008ff80, 30803 }, /* XF86Terminal */
+    { 0x1008ff9f, 30816 }, /* XF86Time */
+    { 0x1008ff1f, 30825 }, /* XF86ToDoList */
+    { 0x1008ff81, 30838 }, /* XF86Tools */
+    { 0x1008ffa2, 30848 }, /* XF86TopMenu */
+    { 0x1008ffb1, 30860 }, /* XF86TouchpadOff */
+    { 0x1008ffb0, 30876 }, /* XF86TouchpadOn */
+    { 0x1008ffa9, 30891 }, /* XF86TouchpadToggle */
+    { 0x1008ff82, 30910 }, /* XF86Travel */
+    { 0x1008fe20, 30921 }, /* XF86Ungrab */
+    { 0x10081274, 30932 }, /* XF86Unmute */
+    { 0x1008ff85, 30943 }, /* XF86User1KB */
+    { 0x1008ff86, 30955 }, /* XF86User2KB */
+    { 0x1008ff84, 30967 }, /* XF86UserPB */
+    { 0x1008ff96, 30978 }, /* XF86UWB */
+    { 0x1008ff34, 30986 }, /* XF86VendorHome */
+    { 0x1008ff87, 31001 }, /* XF86Video */
+    { 0x100811a0, 31011 }, /* XF86VideoPhone */
+    { 0x1008ffa1, 31026 }, /* XF86View */
+    { 0x10081273, 31035 }, /* XF86VOD */
+    { 0x10081246, 31043 }, /* XF86VoiceCommand */
+    { 0x100811ac, 31060 }, /* XF86Voicemail */
+    { 0x1008ff2b, 31074 }, /* XF86WakeUp */
+    { 0x1008ff8f, 31085 }, /* XF86WebCam */
+    { 0x1008ff88, 31096 }, /* XF86WheelButton */
+    { 0x1008ff95, 31112 }, /* XF86WLAN */
+    { 0x1008ff89, 31121 }, /* XF86Word */
+    { 0x10081211, 31130 }, /* XF86WPSButton */
+    { 0x1008ffb4, 31144 }, /* XF86WWAN */
+    { 0x1008ff2e, 31153 }, /* XF86WWW */
+    { 0x1008ff8a, 31161 }, /* XF86Xfer */
+    { 0x1008ffa5, 31170 }, /* XF86Yellow */
+    { 0x1008ff8b, 31181 }, /* XF86ZoomIn */
+    { 0x1008ff8c, 31192 }, /* XF86ZoomOut */
+    { 0x100811a4, 31204 }, /* XF86ZoomReset */
+    { 0x00000059, 31218 }, /* Y */
+    { 0x00000079, 31220 }, /* y */
+    { 0x000000dd, 31222 }, /* Yacute */
+    { 0x000000fd, 31229 }, /* yacute */
+    { 0x01001ef4, 31236 }, /* Ybelowdot */
+    { 0x01001ef5, 31246 }, /* ybelowdot */
+    { 0x01000176, 31256 }, /* Ycircumflex */
+    { 0x01000177, 31268 }, /* ycircumflex */
+    { 0x000000ff, 31280 }, /* ydiaeresis */
+    { 0x000013be, 31291 }, /* Ydiaeresis */
+    { 0x000000a5, 31302 }, /* yen */
+    { 0x01001ef2, 31306 }, /* Ygrave */
+    { 0x01001ef3, 31313 }, /* ygrave */
+    { 0x01001ef6, 31320 }, /* Yhook */
+    { 0x01001ef7, 31326 }, /* yhook */
+    { 0x01001ef8, 31332 }, /* Ytilde */
+    { 0x01001ef9, 31339 }, /* ytilde */
+    { 0x0000005a, 31346 }, /* Z */
+    { 0x0000007a, 31348 }, /* z */
+    { 0x000001af, 31350 }, /* Zabovedot */
+    { 0x000001bf, 31360 }, /* zabovedot */
+    { 0x000001ac, 31370 }, /* Zacute */
+    { 0x000001bc, 31377 }, /* zacute */
+    { 0x000001ae, 31384 }, /* Zcaron */
+    { 0x000001be, 31391 }, /* zcaron */
+    { 0x0000ff3d, 31398 }, /* Zen_Koho */
+    { 0x0000ff28, 31407 }, /* Zenkaku */
+    { 0x0000ff2a, 31415 }, /* Zenkaku_Hankaku */
+    { 0x01002080, 31431 }, /* zerosubscript */
+    { 0x01002070, 31445 }, /* zerosuperior */
+    { 0x010001b5, 31458 }, /* Zstroke */
+    { 0x010001b6, 31466 }, /* zstroke */
 };
 
 static const struct name_keysym keysym_to_name[] = {
@@ -5501,8 +5504,8 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000056, 26565 }, /* V */
     { 0x00000057, 26627 }, /* W */
     { 0x00000058, 26713 }, /* X */
-    { 0x00000059, 31190 }, /* Y */
-    { 0x0000005a, 31318 }, /* Z */
+    { 0x00000059, 31218 }, /* Y */
+    { 0x0000005a, 31346 }, /* Z */
     { 0x0000005b, 3603 }, /* bracketleft */
     { 0x0000005c, 3352 }, /* backslash */
     { 0x0000005d, 3615 }, /* bracketright */
@@ -5533,8 +5536,8 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000076, 26567 }, /* v */
     { 0x00000077, 26629 }, /* w */
     { 0x00000078, 26715 }, /* x */
-    { 0x00000079, 31192 }, /* y */
-    { 0x0000007a, 31320 }, /* z */
+    { 0x00000079, 31220 }, /* y */
+    { 0x0000007a, 31348 }, /* z */
     { 0x0000007b, 3582 }, /* braceleft */
     { 0x0000007c, 3392 }, /* bar */
     { 0x0000007d, 3592 }, /* braceright */
@@ -5544,7 +5547,7 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000000a2, 8589 }, /* cent */
     { 0x000000a3, 23909 }, /* sterling */
     { 0x000000a4, 8848 }, /* currency */
-    { 0x000000a5, 31274 }, /* yen */
+    { 0x000000a5, 31302 }, /* yen */
     { 0x000000a6, 8389 }, /* brokenbar */
     { 0x000000a7, 22801 }, /* section */
     { 0x000000a8, 11285 }, /* diaeresis */
@@ -5600,7 +5603,7 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000000da, 25933 }, /* Uacute */
     { 0x000000db, 25981 }, /* Ucircumflex */
     { 0x000000dc, 26005 }, /* Udiaeresis */
-    { 0x000000dd, 31194 }, /* Yacute */
+    { 0x000000dd, 31222 }, /* Yacute */
     { 0x000000de, 25581 }, /* THORN */
     { 0x000000df, 23902 }, /* ssharp */
     { 0x000000e0, 861 }, /* agrave */
@@ -5632,9 +5635,9 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000000fa, 25940 }, /* uacute */
     { 0x000000fb, 25993 }, /* ucircumflex */
     { 0x000000fc, 26016 }, /* udiaeresis */
-    { 0x000000fd, 31201 }, /* yacute */
+    { 0x000000fd, 31229 }, /* yacute */
     { 0x000000fe, 25593 }, /* thorn */
-    { 0x000000ff, 31252 }, /* ydiaeresis */
+    { 0x000000ff, 31280 }, /* ydiaeresis */
     { 0x000001a1, 918 }, /* Aogonek */
     { 0x000001a2, 8383 }, /* breve */
     { 0x000001a3, 19599 }, /* Lstroke */
@@ -5643,9 +5646,9 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000001a9, 22699 }, /* Scaron */
     { 0x000001aa, 22713 }, /* Scedilla */
     { 0x000001ab, 24404 }, /* Tcaron */
-    { 0x000001ac, 31342 }, /* Zacute */
-    { 0x000001ae, 31356 }, /* Zcaron */
-    { 0x000001af, 31322 }, /* Zabovedot */
+    { 0x000001ac, 31370 }, /* Zacute */
+    { 0x000001ae, 31384 }, /* Zcaron */
+    { 0x000001af, 31350 }, /* Zabovedot */
     { 0x000001b1, 926 }, /* aogonek */
     { 0x000001b2, 20602 }, /* ogonek */
     { 0x000001b3, 19607 }, /* lstroke */
@@ -5655,10 +5658,10 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x000001b9, 22706 }, /* scaron */
     { 0x000001ba, 22722 }, /* scedilla */
     { 0x000001bb, 24411 }, /* tcaron */
-    { 0x000001bc, 31349 }, /* zacute */
+    { 0x000001bc, 31377 }, /* zacute */
     { 0x000001bd, 11365 }, /* doubleacute */
-    { 0x000001be, 31363 }, /* zcaron */
-    { 0x000001bf, 31332 }, /* zabovedot */
+    { 0x000001be, 31391 }, /* zcaron */
+    { 0x000001bf, 31360 }, /* zabovedot */
     { 0x000001c0, 22354 }, /* Racute */
     { 0x000001c3, 445 }, /* Abreve */
     { 0x000001c5, 19229 }, /* Lacute */
@@ -6408,7 +6411,7 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x00000eff, 18879 }, /* Korean_Won */
     { 0x000013bc, 20596 }, /* OE */
     { 0x000013bd, 20599 }, /* oe */
-    { 0x000013be, 31263 }, /* Ydiaeresis */
+    { 0x000013be, 31291 }, /* Ydiaeresis */
     { 0x000020ac, 12172 }, /* EuroSign */
     { 0x0000fd01, 125 }, /* 3270_Duplicate */
     { 0x0000fd02, 195 }, /* 3270_FieldMark */
@@ -6597,9 +6600,9 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0000ff25, 16717 }, /* Hiragana */
     { 0x0000ff26, 18852 }, /* Katakana */
     { 0x0000ff27, 16726 }, /* Hiragana_Katakana */
-    { 0x0000ff28, 31379 }, /* Zenkaku */
+    { 0x0000ff28, 31407 }, /* Zenkaku */
     { 0x0000ff29, 16130 }, /* Hankaku */
-    { 0x0000ff2a, 31387 }, /* Zenkaku_Hankaku */
+    { 0x0000ff2a, 31415 }, /* Zenkaku_Hankaku */
     { 0x0000ff2b, 25834 }, /* Touroku */
     { 0x0000ff2c, 19780 }, /* Massyo */
     { 0x0000ff2d, 18433 }, /* Kana_Lock */
@@ -6743,16 +6746,16 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x0100012d, 17206 }, /* ibreve */
     { 0x01000174, 26645 }, /* Wcircumflex */
     { 0x01000175, 26657 }, /* wcircumflex */
-    { 0x01000176, 31228 }, /* Ycircumflex */
-    { 0x01000177, 31240 }, /* ycircumflex */
+    { 0x01000176, 31256 }, /* Ycircumflex */
+    { 0x01000177, 31268 }, /* ycircumflex */
     { 0x0100018f, 22731 }, /* SCHWA */
     { 0x0100019f, 20300 }, /* Obarred */
     { 0x010001a0, 20635 }, /* Ohorn */
     { 0x010001a1, 20641 }, /* ohorn */
     { 0x010001af, 26079 }, /* Uhorn */
     { 0x010001b0, 26085 }, /* uhorn */
-    { 0x010001b5, 31430 }, /* Zstroke */
-    { 0x010001b6, 31438 }, /* zstroke */
+    { 0x010001b5, 31458 }, /* Zstroke */
+    { 0x010001b6, 31466 }, /* zstroke */
     { 0x010001b7, 12229 }, /* EZH */
     { 0x010001d1, 20336 }, /* Ocaron */
     { 0x010001d2, 20343 }, /* ocaron */
@@ -7145,22 +7148,22 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x01001eef, 26194 }, /* uhorntilde */
     { 0x01001ef0, 26113 }, /* Uhornbelowdot */
     { 0x01001ef1, 26127 }, /* uhornbelowdot */
-    { 0x01001ef2, 31278 }, /* Ygrave */
-    { 0x01001ef3, 31285 }, /* ygrave */
-    { 0x01001ef4, 31208 }, /* Ybelowdot */
-    { 0x01001ef5, 31218 }, /* ybelowdot */
-    { 0x01001ef6, 31292 }, /* Yhook */
-    { 0x01001ef7, 31298 }, /* yhook */
-    { 0x01001ef8, 31304 }, /* Ytilde */
-    { 0x01001ef9, 31311 }, /* ytilde */
-    { 0x01002070, 31417 }, /* zerosuperior */
+    { 0x01001ef2, 31306 }, /* Ygrave */
+    { 0x01001ef3, 31313 }, /* ygrave */
+    { 0x01001ef4, 31236 }, /* Ybelowdot */
+    { 0x01001ef5, 31246 }, /* ybelowdot */
+    { 0x01001ef6, 31320 }, /* Yhook */
+    { 0x01001ef7, 31326 }, /* yhook */
+    { 0x01001ef8, 31332 }, /* Ytilde */
+    { 0x01001ef9, 31339 }, /* ytilde */
+    { 0x01002070, 31445 }, /* zerosuperior */
     { 0x01002074, 12714 }, /* foursuperior */
     { 0x01002075, 12676 }, /* fivesuperior */
     { 0x01002076, 23838 }, /* sixsuperior */
     { 0x01002077, 23014 }, /* sevensuperior */
     { 0x01002078, 11847 }, /* eightsuperior */
     { 0x01002079, 20144 }, /* ninesuperior */
-    { 0x01002080, 31403 }, /* zerosubscript */
+    { 0x01002080, 31431 }, /* zerosubscript */
     { 0x01002081, 20824 }, /* onesubscript */
     { 0x01002082, 25894 }, /* twosubscript */
     { 0x01002083, 25638 }, /* threesubscript */
@@ -7549,53 +7552,53 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x1005ff7c, 24321 }, /* SunVideoRaiseBrightness */
     { 0x1005ff7d, 24209 }, /* SunPowerSwitchShift */
     { 0x100810f4, 27381 }, /* XF86BrightnessAuto */
-    { 0x100810f5, 27809 }, /* XF86DisplayOff */
-    { 0x10081166, 28175 }, /* XF86Info */
+    { 0x100810f5, 27821 }, /* XF86DisplayOff */
+    { 0x10081166, 28203 }, /* XF86Info */
     { 0x10081177, 26885 }, /* XF86AspectRatio */
-    { 0x10081185, 27864 }, /* XF86DVD */
+    { 0x10081185, 27876 }, /* XF86DVD */
     { 0x10081188, 26968 }, /* XF86Audio */
     { 0x10081192, 27629 }, /* XF86ChannelUp */
     { 0x10081193, 27613 }, /* XF86ChannelDown */
     { 0x1008119b, 27350 }, /* XF86Break */
-    { 0x100811a0, 30983 }, /* XF86VideoPhone */
-    { 0x100811a4, 31176 }, /* XF86ZoomReset */
-    { 0x100811a6, 27872 }, /* XF86Editor */
-    { 0x100811a8, 28067 }, /* XF86GraphicsEditor */
-    { 0x100811a9, 29984 }, /* XF86Presentation */
+    { 0x100811a0, 31011 }, /* XF86VideoPhone */
+    { 0x100811a4, 31204 }, /* XF86ZoomReset */
+    { 0x100811a6, 27884 }, /* XF86Editor */
+    { 0x100811a8, 28095 }, /* XF86GraphicsEditor */
+    { 0x100811a9, 30012 }, /* XF86Presentation */
     { 0x100811aa, 27784 }, /* XF86Database */
-    { 0x100811ac, 31032 }, /* XF86Voicemail */
+    { 0x100811ac, 31060 }, /* XF86Voicemail */
     { 0x100811ad, 26800 }, /* XF86Addressbook */
-    { 0x100811af, 27824 }, /* XF86DisplayToggle */
-    { 0x100811b0, 30437 }, /* XF86SpellCheck */
+    { 0x100811af, 27836 }, /* XF86DisplayToggle */
+    { 0x100811b0, 30465 }, /* XF86SpellCheck */
     { 0x100811b6, 27691 }, /* XF86ContextMenu */
-    { 0x100811b7, 29304 }, /* XF86MediaRepeat */
+    { 0x100811b7, 29332 }, /* XF86MediaRepeat */
     { 0x100811b8, 26756 }, /* XF8610ChannelsUp */
     { 0x100811b9, 26737 }, /* XF8610ChannelsDown */
-    { 0x100811ba, 28164 }, /* XF86Images */
-    { 0x100811bc, 29558 }, /* XF86NotificationCenter */
-    { 0x100811bd, 29928 }, /* XF86PickupPhone */
-    { 0x100811be, 28096 }, /* XF86HangupPhone */
-    { 0x100811d0, 27958 }, /* XF86Fn */
-    { 0x100811d1, 27965 }, /* XF86Fn_Esc */
-    { 0x100811e5, 27976 }, /* XF86FnRightShift */
-    { 0x10081200, 29581 }, /* XF86Numeric0 */
-    { 0x10081201, 29594 }, /* XF86Numeric1 */
-    { 0x10081202, 29635 }, /* XF86Numeric2 */
-    { 0x10081203, 29648 }, /* XF86Numeric3 */
-    { 0x10081204, 29661 }, /* XF86Numeric4 */
-    { 0x10081205, 29674 }, /* XF86Numeric5 */
-    { 0x10081206, 29687 }, /* XF86Numeric6 */
-    { 0x10081207, 29700 }, /* XF86Numeric7 */
-    { 0x10081208, 29713 }, /* XF86Numeric8 */
-    { 0x10081209, 29726 }, /* XF86Numeric9 */
-    { 0x1008120a, 29808 }, /* XF86NumericStar */
-    { 0x1008120b, 29791 }, /* XF86NumericPound */
-    { 0x1008120c, 29739 }, /* XF86NumericA */
-    { 0x1008120d, 29752 }, /* XF86NumericB */
-    { 0x1008120e, 29765 }, /* XF86NumericC */
-    { 0x1008120f, 29778 }, /* XF86NumericD */
+    { 0x100811ba, 28192 }, /* XF86Images */
+    { 0x100811bc, 29586 }, /* XF86NotificationCenter */
+    { 0x100811bd, 29956 }, /* XF86PickupPhone */
+    { 0x100811be, 28124 }, /* XF86HangupPhone */
+    { 0x100811d0, 27986 }, /* XF86Fn */
+    { 0x100811d1, 27993 }, /* XF86Fn_Esc */
+    { 0x100811e5, 28004 }, /* XF86FnRightShift */
+    { 0x10081200, 29609 }, /* XF86Numeric0 */
+    { 0x10081201, 29622 }, /* XF86Numeric1 */
+    { 0x10081202, 29663 }, /* XF86Numeric2 */
+    { 0x10081203, 29676 }, /* XF86Numeric3 */
+    { 0x10081204, 29689 }, /* XF86Numeric4 */
+    { 0x10081205, 29702 }, /* XF86Numeric5 */
+    { 0x10081206, 29715 }, /* XF86Numeric6 */
+    { 0x10081207, 29728 }, /* XF86Numeric7 */
+    { 0x10081208, 29741 }, /* XF86Numeric8 */
+    { 0x10081209, 29754 }, /* XF86Numeric9 */
+    { 0x1008120a, 29836 }, /* XF86NumericStar */
+    { 0x1008120b, 29819 }, /* XF86NumericPound */
+    { 0x1008120c, 29767 }, /* XF86NumericA */
+    { 0x1008120d, 29780 }, /* XF86NumericB */
+    { 0x1008120e, 29793 }, /* XF86NumericC */
+    { 0x1008120f, 29806 }, /* XF86NumericD */
     { 0x10081210, 27511 }, /* XF86CameraFocus */
-    { 0x10081211, 31102 }, /* XF86WPSButton */
+    { 0x10081211, 31130 }, /* XF86WPSButton */
     { 0x10081215, 27571 }, /* XF86CameraZoomIn */
     { 0x10081216, 27588 }, /* XF86CameraZoomOut */
     { 0x10081217, 27558 }, /* XF86CameraUp */
@@ -7605,112 +7608,114 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x1008121b, 26932 }, /* XF86AttendantOn */
     { 0x1008121c, 26915 }, /* XF86AttendantOff */
     { 0x1008121d, 26948 }, /* XF86AttendantToggle */
-    { 0x1008121e, 28742 }, /* XF86LightsToggle */
+    { 0x1008121e, 28770 }, /* XF86LightsToggle */
     { 0x10081230, 26816 }, /* XF86ALSToggle */
     { 0x10081240, 27436 }, /* XF86Buttonconfig */
-    { 0x10081241, 30746 }, /* XF86Taskmanager */
-    { 0x10081242, 28195 }, /* XF86Journal */
+    { 0x10081241, 30774 }, /* XF86Taskmanager */
+    { 0x10081242, 28223 }, /* XF86Journal */
     { 0x10081243, 27726 }, /* XF86ControlPanel */
     { 0x10081244, 26871 }, /* XF86AppSelect */
-    { 0x10081245, 30277 }, /* XF86Screensaver */
-    { 0x10081246, 31015 }, /* XF86VoiceCommand */
+    { 0x10081245, 30305 }, /* XF86Screensaver */
+    { 0x10081246, 31043 }, /* XF86VoiceCommand */
     { 0x10081247, 26901 }, /* XF86Assistant */
+    { 0x10081249, 27905 }, /* XF86EmojiPicker */
+    { 0x1008124a, 27797 }, /* XF86Dictate */
     { 0x10081250, 27418 }, /* XF86BrightnessMin */
     { 0x10081251, 27400 }, /* XF86BrightnessMax */
-    { 0x10081260, 28350 }, /* XF86KbdInputAssistPrev */
-    { 0x10081261, 28299 }, /* XF86KbdInputAssistNext */
-    { 0x10081262, 28373 }, /* XF86KbdInputAssistPrevgroup */
-    { 0x10081263, 28322 }, /* XF86KbdInputAssistNextgroup */
-    { 0x10081264, 28249 }, /* XF86KbdInputAssistAccept */
-    { 0x10081265, 28274 }, /* XF86KbdInputAssistCancel */
-    { 0x10081266, 30112 }, /* XF86RightUp */
-    { 0x10081267, 30098 }, /* XF86RightDown */
-    { 0x10081268, 28717 }, /* XF86LeftUp */
-    { 0x10081269, 28704 }, /* XF86LeftDown */
-    { 0x1008126a, 30168 }, /* XF86RootMenu */
-    { 0x1008126b, 29320 }, /* XF86MediaTopMenu */
-    { 0x1008126c, 29607 }, /* XF86Numeric11 */
-    { 0x1008126d, 29621 }, /* XF86Numeric12 */
+    { 0x10081260, 28378 }, /* XF86KbdInputAssistPrev */
+    { 0x10081261, 28327 }, /* XF86KbdInputAssistNext */
+    { 0x10081262, 28401 }, /* XF86KbdInputAssistPrevgroup */
+    { 0x10081263, 28350 }, /* XF86KbdInputAssistNextgroup */
+    { 0x10081264, 28277 }, /* XF86KbdInputAssistAccept */
+    { 0x10081265, 28302 }, /* XF86KbdInputAssistCancel */
+    { 0x10081266, 30140 }, /* XF86RightUp */
+    { 0x10081267, 30126 }, /* XF86RightDown */
+    { 0x10081268, 28745 }, /* XF86LeftUp */
+    { 0x10081269, 28732 }, /* XF86LeftDown */
+    { 0x1008126a, 30196 }, /* XF86RootMenu */
+    { 0x1008126b, 29348 }, /* XF86MediaTopMenu */
+    { 0x1008126c, 29635 }, /* XF86Numeric11 */
+    { 0x1008126d, 29649 }, /* XF86Numeric12 */
     { 0x1008126e, 26998 }, /* XF86AudioDesc */
     { 0x1008126f, 26773 }, /* XF863DMode */
-    { 0x10081270, 29541 }, /* XF86NextFavorite */
-    { 0x10081271, 30499 }, /* XF86StopRecord */
-    { 0x10081272, 29902 }, /* XF86PauseRecord */
-    { 0x10081273, 31007 }, /* XF86VOD */
-    { 0x10081274, 30904 }, /* XF86Unmute */
-    { 0x10081275, 27916 }, /* XF86FastReverse */
-    { 0x10081276, 30411 }, /* XF86SlowReverse */
+    { 0x10081270, 29569 }, /* XF86NextFavorite */
+    { 0x10081271, 30527 }, /* XF86StopRecord */
+    { 0x10081272, 29930 }, /* XF86PauseRecord */
+    { 0x10081273, 31035 }, /* XF86VOD */
+    { 0x10081274, 30932 }, /* XF86Unmute */
+    { 0x10081275, 27944 }, /* XF86FastReverse */
+    { 0x10081276, 30439 }, /* XF86SlowReverse */
     { 0x10081277, 27775 }, /* XF86Data */
-    { 0x10081278, 29839 }, /* XF86OnScreenKeyboard */
-    { 0x10081279, 30016 }, /* XF86PrivacyScreenToggle */
-    { 0x1008127a, 30359 }, /* XF86SelectiveScreenshot */
-    { 0x10081290, 28804 }, /* XF86Macro1 */
-    { 0x10081291, 28935 }, /* XF86Macro2 */
-    { 0x10081292, 29066 }, /* XF86Macro3 */
-    { 0x10081293, 29089 }, /* XF86Macro4 */
-    { 0x10081294, 29100 }, /* XF86Macro5 */
-    { 0x10081295, 29111 }, /* XF86Macro6 */
-    { 0x10081296, 29122 }, /* XF86Macro7 */
-    { 0x10081297, 29133 }, /* XF86Macro8 */
-    { 0x10081298, 29144 }, /* XF86Macro9 */
-    { 0x10081299, 28815 }, /* XF86Macro10 */
-    { 0x1008129a, 28827 }, /* XF86Macro11 */
-    { 0x1008129b, 28839 }, /* XF86Macro12 */
-    { 0x1008129c, 28851 }, /* XF86Macro13 */
-    { 0x1008129d, 28863 }, /* XF86Macro14 */
-    { 0x1008129e, 28875 }, /* XF86Macro15 */
-    { 0x1008129f, 28887 }, /* XF86Macro16 */
-    { 0x100812a0, 28899 }, /* XF86Macro17 */
-    { 0x100812a1, 28911 }, /* XF86Macro18 */
-    { 0x100812a2, 28923 }, /* XF86Macro19 */
-    { 0x100812a3, 28946 }, /* XF86Macro20 */
-    { 0x100812a4, 28958 }, /* XF86Macro21 */
-    { 0x100812a5, 28970 }, /* XF86Macro22 */
-    { 0x100812a6, 28982 }, /* XF86Macro23 */
-    { 0x100812a7, 28994 }, /* XF86Macro24 */
-    { 0x100812a8, 29006 }, /* XF86Macro25 */
-    { 0x100812a9, 29018 }, /* XF86Macro26 */
-    { 0x100812aa, 29030 }, /* XF86Macro27 */
-    { 0x100812ab, 29042 }, /* XF86Macro28 */
-    { 0x100812ac, 29054 }, /* XF86Macro29 */
-    { 0x100812ad, 29077 }, /* XF86Macro30 */
-    { 0x100812b0, 29227 }, /* XF86MacroRecordStart */
-    { 0x100812b1, 29248 }, /* XF86MacroRecordStop */
-    { 0x100812b2, 29206 }, /* XF86MacroPresetCycle */
-    { 0x100812b3, 29155 }, /* XF86MacroPreset1 */
-    { 0x100812b4, 29172 }, /* XF86MacroPreset2 */
-    { 0x100812b5, 29189 }, /* XF86MacroPreset3 */
-    { 0x100812b8, 28401 }, /* XF86KbdLcdMenu1 */
-    { 0x100812b9, 28417 }, /* XF86KbdLcdMenu2 */
-    { 0x100812ba, 28433 }, /* XF86KbdLcdMenu3 */
-    { 0x100812bb, 28449 }, /* XF86KbdLcdMenu4 */
-    { 0x100812bc, 28465 }, /* XF86KbdLcdMenu5 */
-    { 0x1008fe01, 30551 }, /* XF86Switch_VT_1 */
-    { 0x1008fe02, 30618 }, /* XF86Switch_VT_2 */
-    { 0x1008fe03, 30634 }, /* XF86Switch_VT_3 */
-    { 0x1008fe04, 30650 }, /* XF86Switch_VT_4 */
-    { 0x1008fe05, 30666 }, /* XF86Switch_VT_5 */
-    { 0x1008fe06, 30682 }, /* XF86Switch_VT_6 */
-    { 0x1008fe07, 30698 }, /* XF86Switch_VT_7 */
-    { 0x1008fe08, 30714 }, /* XF86Switch_VT_8 */
-    { 0x1008fe09, 30730 }, /* XF86Switch_VT_9 */
-    { 0x1008fe0a, 30567 }, /* XF86Switch_VT_10 */
-    { 0x1008fe0b, 30584 }, /* XF86Switch_VT_11 */
-    { 0x1008fe0c, 30601 }, /* XF86Switch_VT_12 */
-    { 0x1008fe20, 30893 }, /* XF86Ungrab */
+    { 0x10081278, 29867 }, /* XF86OnScreenKeyboard */
+    { 0x10081279, 30044 }, /* XF86PrivacyScreenToggle */
+    { 0x1008127a, 30387 }, /* XF86SelectiveScreenshot */
+    { 0x10081290, 28832 }, /* XF86Macro1 */
+    { 0x10081291, 28963 }, /* XF86Macro2 */
+    { 0x10081292, 29094 }, /* XF86Macro3 */
+    { 0x10081293, 29117 }, /* XF86Macro4 */
+    { 0x10081294, 29128 }, /* XF86Macro5 */
+    { 0x10081295, 29139 }, /* XF86Macro6 */
+    { 0x10081296, 29150 }, /* XF86Macro7 */
+    { 0x10081297, 29161 }, /* XF86Macro8 */
+    { 0x10081298, 29172 }, /* XF86Macro9 */
+    { 0x10081299, 28843 }, /* XF86Macro10 */
+    { 0x1008129a, 28855 }, /* XF86Macro11 */
+    { 0x1008129b, 28867 }, /* XF86Macro12 */
+    { 0x1008129c, 28879 }, /* XF86Macro13 */
+    { 0x1008129d, 28891 }, /* XF86Macro14 */
+    { 0x1008129e, 28903 }, /* XF86Macro15 */
+    { 0x1008129f, 28915 }, /* XF86Macro16 */
+    { 0x100812a0, 28927 }, /* XF86Macro17 */
+    { 0x100812a1, 28939 }, /* XF86Macro18 */
+    { 0x100812a2, 28951 }, /* XF86Macro19 */
+    { 0x100812a3, 28974 }, /* XF86Macro20 */
+    { 0x100812a4, 28986 }, /* XF86Macro21 */
+    { 0x100812a5, 28998 }, /* XF86Macro22 */
+    { 0x100812a6, 29010 }, /* XF86Macro23 */
+    { 0x100812a7, 29022 }, /* XF86Macro24 */
+    { 0x100812a8, 29034 }, /* XF86Macro25 */
+    { 0x100812a9, 29046 }, /* XF86Macro26 */
+    { 0x100812aa, 29058 }, /* XF86Macro27 */
+    { 0x100812ab, 29070 }, /* XF86Macro28 */
+    { 0x100812ac, 29082 }, /* XF86Macro29 */
+    { 0x100812ad, 29105 }, /* XF86Macro30 */
+    { 0x100812b0, 29255 }, /* XF86MacroRecordStart */
+    { 0x100812b1, 29276 }, /* XF86MacroRecordStop */
+    { 0x100812b2, 29234 }, /* XF86MacroPresetCycle */
+    { 0x100812b3, 29183 }, /* XF86MacroPreset1 */
+    { 0x100812b4, 29200 }, /* XF86MacroPreset2 */
+    { 0x100812b5, 29217 }, /* XF86MacroPreset3 */
+    { 0x100812b8, 28429 }, /* XF86KbdLcdMenu1 */
+    { 0x100812b9, 28445 }, /* XF86KbdLcdMenu2 */
+    { 0x100812ba, 28461 }, /* XF86KbdLcdMenu3 */
+    { 0x100812bb, 28477 }, /* XF86KbdLcdMenu4 */
+    { 0x100812bc, 28493 }, /* XF86KbdLcdMenu5 */
+    { 0x1008fe01, 30579 }, /* XF86Switch_VT_1 */
+    { 0x1008fe02, 30646 }, /* XF86Switch_VT_2 */
+    { 0x1008fe03, 30662 }, /* XF86Switch_VT_3 */
+    { 0x1008fe04, 30678 }, /* XF86Switch_VT_4 */
+    { 0x1008fe05, 30694 }, /* XF86Switch_VT_5 */
+    { 0x1008fe06, 30710 }, /* XF86Switch_VT_6 */
+    { 0x1008fe07, 30726 }, /* XF86Switch_VT_7 */
+    { 0x1008fe08, 30742 }, /* XF86Switch_VT_8 */
+    { 0x1008fe09, 30758 }, /* XF86Switch_VT_9 */
+    { 0x1008fe0a, 30595 }, /* XF86Switch_VT_10 */
+    { 0x1008fe0b, 30612 }, /* XF86Switch_VT_11 */
+    { 0x1008fe0c, 30629 }, /* XF86Switch_VT_12 */
+    { 0x1008fe20, 30921 }, /* XF86Ungrab */
     { 0x1008fe21, 27653 }, /* XF86ClearGrab */
-    { 0x1008fe22, 29526 }, /* XF86Next_VMode */
-    { 0x1008fe23, 30001 }, /* XF86Prev_VMode */
-    { 0x1008fe24, 28786 }, /* XF86LogWindowTree */
-    { 0x1008fe25, 28759 }, /* XF86LogGrabInfo */
-    { 0x1008ff01, 29394 }, /* XF86ModeLock */
-    { 0x1008ff02, 29452 }, /* XF86MonBrightnessUp */
-    { 0x1008ff03, 29430 }, /* XF86MonBrightnessDown */
-    { 0x1008ff04, 28481 }, /* XF86KbdLightOnOff */
-    { 0x1008ff05, 28229 }, /* XF86KbdBrightnessUp */
-    { 0x1008ff06, 28207 }, /* XF86KbdBrightnessDown */
-    { 0x1008ff07, 29407 }, /* XF86MonBrightnessCycle */
-    { 0x1008ff10, 30468 }, /* XF86Standby */
+    { 0x1008fe22, 29554 }, /* XF86Next_VMode */
+    { 0x1008fe23, 30029 }, /* XF86Prev_VMode */
+    { 0x1008fe24, 28814 }, /* XF86LogWindowTree */
+    { 0x1008fe25, 28787 }, /* XF86LogGrabInfo */
+    { 0x1008ff01, 29422 }, /* XF86ModeLock */
+    { 0x1008ff02, 29480 }, /* XF86MonBrightnessUp */
+    { 0x1008ff03, 29458 }, /* XF86MonBrightnessDown */
+    { 0x1008ff04, 28509 }, /* XF86KbdLightOnOff */
+    { 0x1008ff05, 28257 }, /* XF86KbdBrightnessUp */
+    { 0x1008ff06, 28235 }, /* XF86KbdBrightnessDown */
+    { 0x1008ff07, 29435 }, /* XF86MonBrightnessCycle */
+    { 0x1008ff10, 30496 }, /* XF86Standby */
     { 0x1008ff11, 27029 }, /* XF86AudioLowerVolume */
     { 0x1008ff12, 27082 }, /* XF86AudioMute */
     { 0x1008ff13, 27169 }, /* XF86AudioRaiseVolume */
@@ -7718,62 +7723,62 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x1008ff15, 27258 }, /* XF86AudioStop */
     { 0x1008ff16, 27155 }, /* XF86AudioPrev */
     { 0x1008ff17, 27096 }, /* XF86AudioNext */
-    { 0x1008ff18, 28138 }, /* XF86HomePage */
-    { 0x1008ff19, 29268 }, /* XF86Mail */
-    { 0x1008ff1a, 30480 }, /* XF86Start */
-    { 0x1008ff1b, 30337 }, /* XF86Search */
+    { 0x1008ff18, 28166 }, /* XF86HomePage */
+    { 0x1008ff19, 29296 }, /* XF86Mail */
+    { 0x1008ff1a, 30508 }, /* XF86Start */
+    { 0x1008ff1b, 30365 }, /* XF86Search */
     { 0x1008ff1c, 27210 }, /* XF86AudioRecord */
     { 0x1008ff1d, 27468 }, /* XF86Calculator */
-    { 0x1008ff1e, 29349 }, /* XF86Memo */
-    { 0x1008ff1f, 30797 }, /* XF86ToDoList */
+    { 0x1008ff1e, 29377 }, /* XF86Memo */
+    { 0x1008ff1f, 30825 }, /* XF86ToDoList */
     { 0x1008ff20, 27483 }, /* XF86Calendar */
-    { 0x1008ff21, 29957 }, /* XF86PowerDown */
+    { 0x1008ff21, 29985 }, /* XF86PowerDown */
     { 0x1008ff22, 27707 }, /* XF86ContrastAdjust */
-    { 0x1008ff23, 30155 }, /* XF86RockerUp */
-    { 0x1008ff24, 30124 }, /* XF86RockerDown */
-    { 0x1008ff25, 30139 }, /* XF86RockerEnter */
+    { 0x1008ff23, 30183 }, /* XF86RockerUp */
+    { 0x1008ff24, 30152 }, /* XF86RockerDown */
+    { 0x1008ff25, 30167 }, /* XF86RockerEnter */
     { 0x1008ff26, 27281 }, /* XF86Back */
-    { 0x1008ff27, 27993 }, /* XF86Forward */
-    { 0x1008ff28, 30490 }, /* XF86Stop */
-    { 0x1008ff29, 30054 }, /* XF86Refresh */
-    { 0x1008ff2a, 29971 }, /* XF86PowerOff */
-    { 0x1008ff2b, 31046 }, /* XF86WakeUp */
-    { 0x1008ff2c, 27883 }, /* XF86Eject */
-    { 0x1008ff2d, 30261 }, /* XF86ScreenSaver */
-    { 0x1008ff2e, 31125 }, /* XF86WWW */
-    { 0x1008ff2f, 30401 }, /* XF86Sleep */
-    { 0x1008ff30, 27932 }, /* XF86Favorites */
+    { 0x1008ff27, 28021 }, /* XF86Forward */
+    { 0x1008ff28, 30518 }, /* XF86Stop */
+    { 0x1008ff29, 30082 }, /* XF86Refresh */
+    { 0x1008ff2a, 29999 }, /* XF86PowerOff */
+    { 0x1008ff2b, 31074 }, /* XF86WakeUp */
+    { 0x1008ff2c, 27895 }, /* XF86Eject */
+    { 0x1008ff2d, 30289 }, /* XF86ScreenSaver */
+    { 0x1008ff2e, 31153 }, /* XF86WWW */
+    { 0x1008ff2f, 30429 }, /* XF86Sleep */
+    { 0x1008ff30, 27960 }, /* XF86Favorites */
     { 0x1008ff31, 27110 }, /* XF86AudioPause */
     { 0x1008ff32, 27050 }, /* XF86AudioMedia */
-    { 0x1008ff33, 29482 }, /* XF86MyComputer */
-    { 0x1008ff34, 30958 }, /* XF86VendorHome */
-    { 0x1008ff35, 28728 }, /* XF86LightBulb */
-    { 0x1008ff36, 30392 }, /* XF86Shop */
-    { 0x1008ff37, 28126 }, /* XF86History */
-    { 0x1008ff38, 29869 }, /* XF86OpenURL */
+    { 0x1008ff33, 29510 }, /* XF86MyComputer */
+    { 0x1008ff34, 30986 }, /* XF86VendorHome */
+    { 0x1008ff35, 28756 }, /* XF86LightBulb */
+    { 0x1008ff36, 30420 }, /* XF86Shop */
+    { 0x1008ff37, 28154 }, /* XF86History */
+    { 0x1008ff38, 29897 }, /* XF86OpenURL */
     { 0x1008ff39, 26784 }, /* XF86AddFavorite */
-    { 0x1008ff3a, 28151 }, /* XF86HotLinks */
+    { 0x1008ff3a, 28179 }, /* XF86HotLinks */
     { 0x1008ff3b, 27360 }, /* XF86BrightnessAdjust */
-    { 0x1008ff3c, 27946 }, /* XF86Finance */
+    { 0x1008ff3c, 27974 }, /* XF86Finance */
     { 0x1008ff3d, 27677 }, /* XF86Community */
     { 0x1008ff3e, 27242 }, /* XF86AudioRewind */
     { 0x1008ff3f, 27290 }, /* XF86BackForward */
-    { 0x1008ff40, 28512 }, /* XF86Launch0 */
-    { 0x1008ff41, 28524 }, /* XF86Launch1 */
-    { 0x1008ff42, 28536 }, /* XF86Launch2 */
-    { 0x1008ff43, 28548 }, /* XF86Launch3 */
-    { 0x1008ff44, 28560 }, /* XF86Launch4 */
-    { 0x1008ff45, 28572 }, /* XF86Launch5 */
-    { 0x1008ff46, 28584 }, /* XF86Launch6 */
-    { 0x1008ff47, 28596 }, /* XF86Launch7 */
-    { 0x1008ff48, 28608 }, /* XF86Launch8 */
-    { 0x1008ff49, 28620 }, /* XF86Launch9 */
-    { 0x1008ff4a, 28632 }, /* XF86LaunchA */
-    { 0x1008ff4b, 28644 }, /* XF86LaunchB */
-    { 0x1008ff4c, 28656 }, /* XF86LaunchC */
-    { 0x1008ff4d, 28668 }, /* XF86LaunchD */
-    { 0x1008ff4e, 28680 }, /* XF86LaunchE */
-    { 0x1008ff4f, 28692 }, /* XF86LaunchF */
+    { 0x1008ff40, 28540 }, /* XF86Launch0 */
+    { 0x1008ff41, 28552 }, /* XF86Launch1 */
+    { 0x1008ff42, 28564 }, /* XF86Launch2 */
+    { 0x1008ff43, 28576 }, /* XF86Launch3 */
+    { 0x1008ff44, 28588 }, /* XF86Launch4 */
+    { 0x1008ff45, 28600 }, /* XF86Launch5 */
+    { 0x1008ff46, 28612 }, /* XF86Launch6 */
+    { 0x1008ff47, 28624 }, /* XF86Launch7 */
+    { 0x1008ff48, 28636 }, /* XF86Launch8 */
+    { 0x1008ff49, 28648 }, /* XF86Launch9 */
+    { 0x1008ff4a, 28660 }, /* XF86LaunchA */
+    { 0x1008ff4b, 28672 }, /* XF86LaunchB */
+    { 0x1008ff4c, 28684 }, /* XF86LaunchC */
+    { 0x1008ff4d, 28696 }, /* XF86LaunchD */
+    { 0x1008ff4e, 28708 }, /* XF86LaunchE */
+    { 0x1008ff4f, 28720 }, /* XF86LaunchF */
     { 0x1008ff50, 26830 }, /* XF86ApplicationLeft */
     { 0x1008ff51, 26850 }, /* XF86ApplicationRight */
     { 0x1008ff52, 27341 }, /* XF86Book */
@@ -7783,90 +7788,90 @@ static const struct name_keysym keysym_to_name[] = {
     { 0x1008ff56, 27667 }, /* XF86Close */
     { 0x1008ff57, 27743 }, /* XF86Copy */
     { 0x1008ff58, 27752 }, /* XF86Cut */
-    { 0x1008ff59, 27797 }, /* XF86Display */
-    { 0x1008ff5a, 27856 }, /* XF86DOS */
-    { 0x1008ff5b, 27842 }, /* XF86Documents */
-    { 0x1008ff5c, 27893 }, /* XF86Excel */
-    { 0x1008ff5d, 27903 }, /* XF86Explorer */
-    { 0x1008ff5e, 28051 }, /* XF86Game */
-    { 0x1008ff5f, 28060 }, /* XF86Go */
-    { 0x1008ff60, 28184 }, /* XF86iTouch */
-    { 0x1008ff61, 28775 }, /* XF86LogOff */
-    { 0x1008ff62, 29293 }, /* XF86Market */
-    { 0x1008ff63, 29337 }, /* XF86Meeting */
-    { 0x1008ff65, 29358 }, /* XF86MenuKB */
-    { 0x1008ff66, 29369 }, /* XF86MenuPB */
-    { 0x1008ff67, 29497 }, /* XF86MySites */
-    { 0x1008ff68, 29509 }, /* XF86New */
-    { 0x1008ff69, 29517 }, /* XF86News */
-    { 0x1008ff6a, 29824 }, /* XF86OfficeHome */
-    { 0x1008ff6b, 29860 }, /* XF86Open */
-    { 0x1008ff6c, 29881 }, /* XF86Option */
-    { 0x1008ff6d, 29892 }, /* XF86Paste */
-    { 0x1008ff6e, 29918 }, /* XF86Phone */
-    { 0x1008ff70, 30040 }, /* XF86Q */
-    { 0x1008ff72, 30077 }, /* XF86Reply */
-    { 0x1008ff73, 30066 }, /* XF86Reload */
-    { 0x1008ff74, 30181 }, /* XF86RotateWindows */
-    { 0x1008ff75, 30237 }, /* XF86RotationPB */
-    { 0x1008ff76, 30199 }, /* XF86RotationKB */
-    { 0x1008ff77, 30252 }, /* XF86Save */
-    { 0x1008ff78, 30324 }, /* XF86ScrollUp */
-    { 0x1008ff79, 30309 }, /* XF86ScrollDown */
-    { 0x1008ff7a, 30293 }, /* XF86ScrollClick */
-    { 0x1008ff7b, 30383 }, /* XF86Send */
-    { 0x1008ff7c, 30427 }, /* XF86Spell */
-    { 0x1008ff7d, 30452 }, /* XF86SplitScreen */
-    { 0x1008ff7e, 30527 }, /* XF86Support */
-    { 0x1008ff7f, 30762 }, /* XF86TaskPane */
-    { 0x1008ff80, 30775 }, /* XF86Terminal */
-    { 0x1008ff81, 30810 }, /* XF86Tools */
-    { 0x1008ff82, 30882 }, /* XF86Travel */
-    { 0x1008ff84, 30939 }, /* XF86UserPB */
-    { 0x1008ff85, 30915 }, /* XF86User1KB */
-    { 0x1008ff86, 30927 }, /* XF86User2KB */
-    { 0x1008ff87, 30973 }, /* XF86Video */
-    { 0x1008ff88, 31068 }, /* XF86WheelButton */
-    { 0x1008ff89, 31093 }, /* XF86Word */
-    { 0x1008ff8a, 31133 }, /* XF86Xfer */
-    { 0x1008ff8b, 31153 }, /* XF86ZoomIn */
-    { 0x1008ff8c, 31164 }, /* XF86ZoomOut */
+    { 0x1008ff59, 27809 }, /* XF86Display */
+    { 0x1008ff5a, 27868 }, /* XF86DOS */
+    { 0x1008ff5b, 27854 }, /* XF86Documents */
+    { 0x1008ff5c, 27921 }, /* XF86Excel */
+    { 0x1008ff5d, 27931 }, /* XF86Explorer */
+    { 0x1008ff5e, 28079 }, /* XF86Game */
+    { 0x1008ff5f, 28088 }, /* XF86Go */
+    { 0x1008ff60, 28212 }, /* XF86iTouch */
+    { 0x1008ff61, 28803 }, /* XF86LogOff */
+    { 0x1008ff62, 29321 }, /* XF86Market */
+    { 0x1008ff63, 29365 }, /* XF86Meeting */
+    { 0x1008ff65, 29386 }, /* XF86MenuKB */
+    { 0x1008ff66, 29397 }, /* XF86MenuPB */
+    { 0x1008ff67, 29525 }, /* XF86MySites */
+    { 0x1008ff68, 29537 }, /* XF86New */
+    { 0x1008ff69, 29545 }, /* XF86News */
+    { 0x1008ff6a, 29852 }, /* XF86OfficeHome */
+    { 0x1008ff6b, 29888 }, /* XF86Open */
+    { 0x1008ff6c, 29909 }, /* XF86Option */
+    { 0x1008ff6d, 29920 }, /* XF86Paste */
+    { 0x1008ff6e, 29946 }, /* XF86Phone */
+    { 0x1008ff70, 30068 }, /* XF86Q */
+    { 0x1008ff72, 30105 }, /* XF86Reply */
+    { 0x1008ff73, 30094 }, /* XF86Reload */
+    { 0x1008ff74, 30209 }, /* XF86RotateWindows */
+    { 0x1008ff75, 30265 }, /* XF86RotationPB */
+    { 0x1008ff76, 30227 }, /* XF86RotationKB */
+    { 0x1008ff77, 30280 }, /* XF86Save */
+    { 0x1008ff78, 30352 }, /* XF86ScrollUp */
+    { 0x1008ff79, 30337 }, /* XF86ScrollDown */
+    { 0x1008ff7a, 30321 }, /* XF86ScrollClick */
+    { 0x1008ff7b, 30411 }, /* XF86Send */
+    { 0x1008ff7c, 30455 }, /* XF86Spell */
+    { 0x1008ff7d, 30480 }, /* XF86SplitScreen */
+    { 0x1008ff7e, 30555 }, /* XF86Support */
+    { 0x1008ff7f, 30790 }, /* XF86TaskPane */
+    { 0x1008ff80, 30803 }, /* XF86Terminal */
+    { 0x1008ff81, 30838 }, /* XF86Tools */
+    { 0x1008ff82, 30910 }, /* XF86Travel */
+    { 0x1008ff84, 30967 }, /* XF86UserPB */
+    { 0x1008ff85, 30943 }, /* XF86User1KB */
+    { 0x1008ff86, 30955 }, /* XF86User2KB */
+    { 0x1008ff87, 31001 }, /* XF86Video */
+    { 0x1008ff88, 31096 }, /* XF86WheelButton */
+    { 0x1008ff89, 31121 }, /* XF86Word */
+    { 0x1008ff8a, 31161 }, /* XF86Xfer */
+    { 0x1008ff8b, 31181 }, /* XF86ZoomIn */
+    { 0x1008ff8c, 31192 }, /* XF86ZoomOut */
     { 0x1008ff8d, 27272 }, /* XF86Away */
-    { 0x1008ff8e, 29380 }, /* XF86Messenger */
-    { 0x1008ff8f, 31057 }, /* XF86WebCam */
-    { 0x1008ff90, 29277 }, /* XF86MailForward */
-    { 0x1008ff91, 29944 }, /* XF86Pictures */
-    { 0x1008ff92, 29472 }, /* XF86Music */
+    { 0x1008ff8e, 29408 }, /* XF86Messenger */
+    { 0x1008ff8f, 31085 }, /* XF86WebCam */
+    { 0x1008ff90, 29305 }, /* XF86MailForward */
+    { 0x1008ff91, 29972 }, /* XF86Pictures */
+    { 0x1008ff92, 29500 }, /* XF86Music */
     { 0x1008ff93, 27306 }, /* XF86Battery */
     { 0x1008ff94, 27327 }, /* XF86Bluetooth */
-    { 0x1008ff95, 31084 }, /* XF86WLAN */
-    { 0x1008ff96, 30950 }, /* XF86UWB */
+    { 0x1008ff95, 31112 }, /* XF86WLAN */
+    { 0x1008ff96, 30978 }, /* XF86UWB */
     { 0x1008ff97, 27012 }, /* XF86AudioForward */
     { 0x1008ff98, 27226 }, /* XF86AudioRepeat */
     { 0x1008ff99, 27190 }, /* XF86AudioRandomPlay */
-    { 0x1008ff9a, 30514 }, /* XF86Subtitle */
+    { 0x1008ff9a, 30542 }, /* XF86Subtitle */
     { 0x1008ff9b, 26978 }, /* XF86AudioCycleTrack */
     { 0x1008ff9c, 27760 }, /* XF86CycleAngle */
-    { 0x1008ff9d, 28005 }, /* XF86FrameBack */
-    { 0x1008ff9e, 28019 }, /* XF86FrameForward */
-    { 0x1008ff9f, 30788 }, /* XF86Time */
-    { 0x1008ffa0, 30348 }, /* XF86Select */
-    { 0x1008ffa1, 30998 }, /* XF86View */
-    { 0x1008ffa2, 30820 }, /* XF86TopMenu */
-    { 0x1008ffa3, 30046 }, /* XF86Red */
-    { 0x1008ffa4, 28086 }, /* XF86Green */
-    { 0x1008ffa5, 31142 }, /* XF86Yellow */
+    { 0x1008ff9d, 28033 }, /* XF86FrameBack */
+    { 0x1008ff9e, 28047 }, /* XF86FrameForward */
+    { 0x1008ff9f, 30816 }, /* XF86Time */
+    { 0x1008ffa0, 30376 }, /* XF86Select */
+    { 0x1008ffa1, 31026 }, /* XF86View */
+    { 0x1008ffa2, 30848 }, /* XF86TopMenu */
+    { 0x1008ffa3, 30074 }, /* XF86Red */
+    { 0x1008ffa4, 28114 }, /* XF86Green */
+    { 0x1008ffa5, 31170 }, /* XF86Yellow */
     { 0x1008ffa6, 27318 }, /* XF86Blue */
-    { 0x1008ffa7, 30539 }, /* XF86Suspend */
-    { 0x1008ffa8, 28112 }, /* XF86Hibernate */
-    { 0x1008ffa9, 30863 }, /* XF86TouchpadToggle */
-    { 0x1008ffb0, 30848 }, /* XF86TouchpadOn */
-    { 0x1008ffb1, 30832 }, /* XF86TouchpadOff */
+    { 0x1008ffa7, 30567 }, /* XF86Suspend */
+    { 0x1008ffa8, 28140 }, /* XF86Hibernate */
+    { 0x1008ffa9, 30891 }, /* XF86TouchpadToggle */
+    { 0x1008ffb0, 30876 }, /* XF86TouchpadOn */
+    { 0x1008ffb1, 30860 }, /* XF86TouchpadOff */
     { 0x1008ffb2, 27065 }, /* XF86AudioMicMute */
-    { 0x1008ffb3, 28499 }, /* XF86Keyboard */
-    { 0x1008ffb4, 31116 }, /* XF86WWAN */
-    { 0x1008ffb5, 30087 }, /* XF86RFKill */
+    { 0x1008ffb3, 28527 }, /* XF86Keyboard */
+    { 0x1008ffb4, 31144 }, /* XF86WWAN */
+    { 0x1008ffb5, 30115 }, /* XF86RFKill */
     { 0x1008ffb6, 27139 }, /* XF86AudioPreset */
-    { 0x1008ffb7, 30214 }, /* XF86RotationLockToggle */
-    { 0x1008ffb8, 28036 }, /* XF86FullScreen */
+    { 0x1008ffb7, 30242 }, /* XF86RotationLockToggle */
+    { 0x1008ffb8, 28064 }, /* XF86FullScreen */
 };