aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2023-05-01 03:04:18 +0000
committerNIIBE Yutaka <[email protected]>2023-05-01 03:04:18 +0000
commit7cadbf4e187cf82063728403b7c15a5c6e7d836d (patch)
tree41802f192e170cee4804fdf94d2b7081ab147a34
parentspawn: Introduce *_KEEP, removing *_NULL. (diff)
parentdirmngr: Fix API of functions wrt their error type. (diff)
downloadgnupg-7cadbf4e187cf82063728403b7c15a5c6e7d836d.tar.gz
gnupg-7cadbf4e187cf82063728403b7c15a5c6e7d836d.zip
Merge branch 'master' into gniibe/t6275
-rw-r--r--Makefile.am1
-rw-r--r--NEWS35
-rw-r--r--agent/command-ssh.c18
-rw-r--r--agent/command.c67
-rw-r--r--agent/keyformat.txt8
-rw-r--r--build-aux/speedo.mk13
-rw-r--r--build-aux/speedo/w32/exdll.c286
-rw-r--r--build-aux/speedo/w32/exdll.h259
-rw-r--r--build-aux/speedo/w32/g4wihelp.c426
-rw-r--r--build-aux/speedo/w32/inst.nsi48
-rw-r--r--common/homedir.c75
-rw-r--r--common/sexputil.c2
-rw-r--r--common/util.h1
-rw-r--r--configure.ac2
-rw-r--r--dirmngr/crlcache.h6
-rw-r--r--dirmngr/http.c14
-rw-r--r--doc/gpg-agent.texi37
-rw-r--r--doc/gpg.texi11
-rw-r--r--g10/call-agent.c32
-rw-r--r--g10/call-agent.h6
-rw-r--r--g10/card-util.c36
-rw-r--r--g10/import.c12
-rw-r--r--g10/keydb.h1
-rw-r--r--g10/keygen.c12
-rw-r--r--g10/keyid.c22
-rw-r--r--po/ca.po68
-rw-r--r--po/cs.po77
-rw-r--r--po/da.po75
-rw-r--r--po/de.po73
-rw-r--r--po/el.po68
-rw-r--r--po/eo.po67
-rw-r--r--po/es.po89
-rw-r--r--po/et.po68
-rw-r--r--po/fi.po68
-rw-r--r--po/fr.po71
-rw-r--r--po/gl.po68
-rw-r--r--po/hu.po68
-rw-r--r--po/id.po68
-rw-r--r--po/it.po71
-rw-r--r--po/ja.po73
-rw-r--r--po/nb.po68
-rw-r--r--po/pl.po70
-rw-r--r--po/pt.po68
-rw-r--r--po/ro.po69
-rw-r--r--po/ru.po71
-rw-r--r--po/sk.po68
-rw-r--r--po/sv.po75
-rw-r--r--po/tr.po73
-rw-r--r--po/uk.po71
-rw-r--r--po/zh_CN.po73
-rw-r--r--po/zh_TW.po71
-rw-r--r--regexp/UnicodeData.txt1135
-rw-r--r--regexp/jimregexp.c8
-rw-r--r--scd/apdu.c2
-rw-r--r--scd/app-common.h1
-rw-r--r--scd/app-openpgp.c86
-rw-r--r--scd/app-p15.c15
-rw-r--r--scd/app.c22
-rw-r--r--scd/command.c6
-rw-r--r--tools/gpgtar.c18
60 files changed, 3762 insertions, 810 deletions
diff --git a/Makefile.am b/Makefile.am
index 6a2508b11..0f2075089 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -55,6 +55,7 @@ EXTRA_DIST = build-aux/config.rpath build-aux/potomo autogen.sh autogen.rc \
build-aux/speedo/w32/pango.modules \
build-aux/speedo/w32/gdk-pixbuf-loaders.cache \
build-aux/speedo/w32/exdll.h \
+ build-aux/speedo/w32/exdll.c \
build-aux/speedo/w32/README.txt \
build-aux/speedo/w32/gnupg-logo-150x57.bmp \
build-aux/speedo/w32/gnupg-logo-164x314.bmp \
diff --git a/NEWS b/NEWS
index 894743db5..af2064199 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,19 @@
-Noteworthy changes in version 2.4.1 (unreleased)
+Noteworthy changes in version 2.4.2 (unreleased)
+------------------------------------------------
+
+
+Noteworthy changes in version 2.4.1 (2023-04-28)
------------------------------------------------
* If the ~/.gnupg directory does not exist, the keyboxd is now
- automagically enabled.
+ automagically enabled. [rGd9e7488b17]
* gpg: New option --add-desig-revoker. [rG3d094e2bcf]
- * gpg: New option --assert-signer.
+ * gpg: New option --assert-signer. [rGc9e95b8dee]
+
+ * gpg: New command --quick-add-adsk and other ADSK features.
+ [T6395, https://gnupg.org/blog/20230321-adsk.html]
* gpg: New list-option "show-unusable-sigs". Also show
"[self-signature]" instead of the user-id in key signature
@@ -15,6 +22,11 @@ Noteworthy changes in version 2.4.1 (unreleased)
* gpg: For symmetric encryption the default S2K hash is now SHA256.
[T6367]
+ * gpg: Detect already compressed data also when using a pipe. Also
+ detect JPEG and PNG file formats. [T6332]
+
+ * gpg: New subcommand "openpgp" for --card-edit. [T6462]
+
* gpgsm: Verification of detached signatures does now strip trailing
zeroes from the input if --assume-binary is used. [rG2a13f7f9dc]
@@ -22,12 +34,29 @@ Noteworthy changes in version 2.4.1 (unreleased)
using indefinite form length octets. This improves compatibility
with some PDF signature verification software. [rG8996b0b655]
+ * gpgtar: Emit progress status lines in create mode. [T6363]
+
* dirmngr: The LDAP modifyTimestamp is now returned by some
keyserver commands. [rG56d309133f]
+ * ssh: Allow specification of the order keys are presented to ssh.
+ See the man page entry for --enable-ssh-support. [T5996, T6212]
+
* gpg: Make list-options "show-sig-subpackets" work again.
Fixes regression in 2.4.0. [rG5a223303d7]
+ * gpg: Fix the keytocard command for Yubikeys. [T6378]
+
+ * gpg: Do not continue an export after a cancel for the primary key.
+ [T6093]
+
+ * gpg: Replace the --override-compliance-check hack by a real fix.
+ [T5655]
+
+ * gpgtar: Fix decryption with input taken from stdin. [T6355]
+
+ See-also: gnupg-announce/2023q2/000478.html
+ Release-info: https://dev.gnupg.org/T6454
Noteworthy changes in version 2.4.0 (2022-12-16)
diff --git a/agent/command-ssh.c b/agent/command-ssh.c
index b41177be6..51111a60d 100644
--- a/agent/command-ssh.c
+++ b/agent/command-ssh.c
@@ -2648,7 +2648,8 @@ ssh_send_available_keys (ctrl_t ctrl, estream_t key_blobs, u32 *r_key_counter)
/* Clamp LNR value and set the ordinal.
* Current use of ordinals:
- * 1..99999 - inserted cards (right now only 1)
+ * 1..999 - low value Use-for-ssh.
+ * 1000..99999 - inserted cards (right now only 1000)
* 100000..199999 - listed in sshcontrol
* 200000..299999 - order taken from Use-for-ssh
*/
@@ -2678,18 +2679,25 @@ ssh_send_available_keys (ctrl_t ctrl, estream_t key_blobs, u32 *r_key_counter)
* order of card keys (which are sorted by their s/n), we
* would need to get the use-for-ssh: value from the stub
* file and set an appropriate ordinal. */
- order = 1;
+ order = 1000;
}
else if (is_ssh)
err = agent_public_key_from_file (ctrl, grip, &key_public);
else /* Examine the file if it's suitable for SSH. */
{
err = agent_ssh_key_from_file (ctrl, grip, &key_public, &order);
- if (order < 0 || err)
+ if (err)
order = 0;
+ else if (order < 0)
+ {
+ order = -order;
+ if (order > 999)
+ order = 999;
+ }
else if (order > 99999)
- order = 99999;
- order += 200000;
+ order = 299999;
+ else
+ order += 200000;
}
if (err)
{
diff --git a/agent/command.c b/agent/command.c
index 9481f47c3..dd7cb5e57 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -3175,9 +3175,10 @@ cmd_delete_key (assuan_context_t ctx, char *line)
#endif
static const char hlp_keytocard[] =
- "KEYTOCARD [--force] <hexgrip> <serialno> <keyref> [<timestamp>]\n"
+ "KEYTOCARD [--force] <hexgrip> <serialno> <keyref> [<timestamp> [<ecdh>]]\n"
"\n"
- "TIMESTAMP is required for OpenPGP and defaults to the Epoch. The\n"
+ "TIMESTAMP is required for OpenPGP and defaults to the Epoch.\n"
+ "ECDH are the hexified ECDH parameters for OpenPGP.\n"
"SERIALNO is used for checking; use \"-\" to disable the check.";
static gpg_error_t
cmd_keytocard (assuan_context_t ctx, char *line)
@@ -3194,6 +3195,9 @@ cmd_keytocard (assuan_context_t ctx, char *line)
size_t keydatalen;
unsigned char *shadow_info = NULL;
time_t timestamp;
+ char *ecdh_params = NULL;
+ unsigned int ecdh_params_len;
+ unsigned int extralen1, extralen2;
if (ctrl->restricted)
return leave_cmd (ctx, gpg_error (GPG_ERR_FORBIDDEN));
@@ -3240,10 +3244,38 @@ cmd_keytocard (assuan_context_t ctx, char *line)
/* Default to the creation time as stored in the private key. The
* parameter is here so that gpg can make sure that the timestamp as
- * used for key creation (and thus the openPGP fingerprint) is
- * used. */
+ * used. It is also important for OpenPGP cards to allow computing
+ * of the fingerprint. Same goes for the ECDH params. */
if (argc > 3)
- timestamp = isotime2epoch (argv[3]);
+ {
+ timestamp = isotime2epoch (argv[3]);
+ if (argc > 4)
+ {
+ size_t n;
+
+ err = parse_hexstring (ctx, argv[4], &n);
+ if (err)
+ goto leave; /* Badly formatted ecdh params. */
+ n /= 2;
+ if (n < 4)
+ {
+ err = set_error (GPG_ERR_ASS_PARAMETER, "ecdh param too short");
+ goto leave;
+ }
+ ecdh_params_len = n;
+ ecdh_params = xtrymalloc (ecdh_params_len);
+ if (!ecdh_params)
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ if (hex2bin (argv[4], ecdh_params, ecdh_params_len) < 0)
+ {
+ err = set_error (GPG_ERR_BUG, "hex2bin");
+ goto leave;
+ }
+ }
+ }
else if (timestamp == (time_t)(-1))
timestamp = isotime2epoch ("19700101T000000");
@@ -3254,9 +3286,12 @@ cmd_keytocard (assuan_context_t ctx, char *line)
}
/* Note: We can't use make_canon_sexp because we need to allocate a
- * few extra bytes for our hack below. */
+ * few extra bytes for our hack below. The 20 for extralen2
+ * accounts for the sexp length of ecdh_params. */
keydatalen = gcry_sexp_sprint (s_skey, GCRYSEXP_FMT_CANON, NULL, 0);
- keydata = xtrymalloc_secure (keydatalen + 30);
+ extralen1 = 30;
+ extralen2 = ecdh_params? (20+20+ecdh_params_len) : 0;
+ keydata = xtrymalloc_secure (keydatalen + extralen1 + extralen2);
if (keydata == NULL)
{
err = gpg_error_from_syserror ();
@@ -3265,15 +3300,31 @@ cmd_keytocard (assuan_context_t ctx, char *line)
gcry_sexp_sprint (s_skey, GCRYSEXP_FMT_CANON, keydata, keydatalen);
gcry_sexp_release (s_skey);
s_skey = NULL;
+
keydatalen--; /* Decrement for last '\0'. */
+
/* Hack to insert the timestamp "created-at" into the private key. */
- snprintf (keydata+keydatalen-1, 30, KEYTOCARD_TIMESTAMP_FORMAT, timestamp);
+ snprintf (keydata+keydatalen-1, extralen1, KEYTOCARD_TIMESTAMP_FORMAT,
+ timestamp);
keydatalen += 10 + 19 - 1;
+ /* Hack to insert the timestamp "ecdh-params" into the private key. */
+ if (ecdh_params)
+ {
+ snprintf (keydata+keydatalen-1, extralen2, "(11:ecdh-params%u:",
+ ecdh_params_len);
+ keydatalen += strlen (keydata+keydatalen-1) -1;
+ memcpy (keydata+keydatalen, ecdh_params, ecdh_params_len);
+ keydatalen += ecdh_params_len;
+ memcpy (keydata+keydatalen, "))", 3);
+ keydatalen += 2;
+ }
+
err = divert_writekey (ctrl, force, serialno, keyref, keydata, keydatalen);
xfree (keydata);
leave:
+ xfree (ecdh_params);
gcry_sexp_release (s_skey);
xfree (shadow_info);
return leave_cmd (ctx, err);
diff --git a/agent/keyformat.txt b/agent/keyformat.txt
index bbcaa7e2c..fbe999ca1 100644
--- a/agent/keyformat.txt
+++ b/agent/keyformat.txt
@@ -124,7 +124,13 @@ gpg-agent's ssh-agent implementation. This is thus the same as
putting the keygrip into the 'sshcontrol' file. Only one such item
should exist. If another non-zero value between 1 and 99999 is used,
this is taken to establish the order in which the keys are returned to
-ssh; lower numbers are returned first.
+ssh; lower numbers are returned first. If a negative value is used
+this overrides currently active (inserted) cards and thus allows to
+prefer on-disk keys over inserted cards. A value of -1 has the
+highest priority; values are capped at -999 and have a lower priority
+but still above the positive values, inserted cards or the order in
+sshcontrol.
+
*** Use-for-p11
If given and the value is "yes" or "1" the key is allowed for use by
diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk
index f21f43731..db78afa50 100644
--- a/build-aux/speedo.mk
+++ b/build-aux/speedo.mk
@@ -1340,10 +1340,14 @@ $(bdir)/README.txt: $(bdir)/NEWS.tmp $(topsrc)/README $(w32src)/README.txt \
| sed -e '/^#/d' \
| awk '{printf "%s\r\n", $$0}' >$(bdir)/README.txt
-$(bdir)/g4wihelp.dll: $(w32src)/g4wihelp.c $(w32src)/exdll.h
+$(bdir)/g4wihelp.dll: $(w32src)/g4wihelp.c $(w32src)/exdll.h $(w32src)/exdll.c
(set -e; cd $(bdir); \
- $(W32CC) -I. -shared -O2 -o g4wihelp.dll $(w32src)/g4wihelp.c \
- -lwinmm -lgdi32; \
+ $(W32CC) -DUNICODE -static-libgcc -I . -O2 -c \
+ -o exdll.o $(w32src)/exdll.c; \
+ $(W32CC) -DUNICODE -static-libgcc -I. -shared -O2 \
+ -o g4wihelp.dll $(w32src)/g4wihelp.c exdll.o \
+ -lwinmm -lgdi32 -luserenv \
+ -lshell32 -loleaut32 -lshlwapi -lmsimg32; \
$(STRIP) g4wihelp.dll)
w32_insthelpers: $(bdir)/g4wihelp.dll
@@ -1372,8 +1376,7 @@ installer: all w32_insthelpers $(w32src)/inst-options.ini $(bdir)/README.txt
done; \
fi \
)
- $(MAKENSIS) -V2 $$($(MAKENSIS) -version \
- | grep -q ^v3 && echo "-INPUTCHARSET CP1252 ") \
+ $(MAKENSIS) -V2 \
-DINST_DIR=$(idir) \
-DINST6_DIR=$(idir6) \
-DBUILD_DIR=$(bdir) \
diff --git a/build-aux/speedo/w32/exdll.c b/build-aux/speedo/w32/exdll.c
new file mode 100644
index 000000000..7815523ae
--- /dev/null
+++ b/build-aux/speedo/w32/exdll.c
@@ -0,0 +1,286 @@
+#include "exdll.h"
+
+unsigned int g_stringsize;
+stack_t **g_stacktop;
+LPTSTR g_variables;
+
+// utility functions (not required but often useful)
+
+int NSISCALL popstring(LPTSTR str)
+{
+ stack_t *th;
+ if (!g_stacktop || !*g_stacktop) return 1;
+ th=(*g_stacktop);
+ if (str) lstrcpy(str,th->text);
+ *g_stacktop = th->next;
+ GlobalFree((HGLOBAL)th);
+ return 0;
+}
+
+int NSISCALL popstringn(LPTSTR str, int maxlen)
+{
+ stack_t *th;
+ if (!g_stacktop || !*g_stacktop) return 1;
+ th=(*g_stacktop);
+ if (str) lstrcpyn(str,th->text,maxlen?maxlen:g_stringsize);
+ *g_stacktop = th->next;
+ GlobalFree((HGLOBAL)th);
+ return 0;
+}
+
+void NSISCALL pushstring(LPCTSTR str)
+{
+ stack_t *th;
+ if (!g_stacktop) return;
+ th=(stack_t*)GlobalAlloc(GPTR,(sizeof(stack_t)+(g_stringsize)*sizeof(*str)));
+ lstrcpyn(th->text,str,g_stringsize);
+ th->next=*g_stacktop;
+ *g_stacktop=th;
+}
+
+LPTSTR NSISCALL getuservariable(const int varnum)
+{
+ if (!isvalidnsisvarindex(varnum)) return NULL;
+ return (LPWSTR)((wchar_t*)g_variables+varnum*g_stringsize);
+}
+
+void NSISCALL setuservariable(const int varnum, LPCTSTR var)
+{
+ if (var && isvalidnsisvarindex(varnum))
+ lstrcpy((LPWSTR)((wchar_t*)g_variables + varnum*g_stringsize), var);
+}
+
+#ifdef UNICODE
+int NSISCALL PopStringA(LPSTR ansiStr)
+{
+ LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*sizeof(WCHAR));
+ int rval = popstring(wideStr);
+ WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
+ GlobalFree((HGLOBAL)wideStr);
+ return rval;
+}
+
+int NSISCALL PopStringNA(LPSTR ansiStr, int maxlen)
+{
+ int realLen = maxlen ? maxlen : g_stringsize;
+ LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, realLen*sizeof(WCHAR));
+ int rval = popstringn(wideStr, realLen);
+ WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, realLen, NULL, NULL);
+ GlobalFree((HGLOBAL)wideStr);
+ return rval;
+}
+
+void NSISCALL PushStringA(LPCSTR ansiStr)
+{
+ LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
+ pushstring(wideStr);
+ GlobalFree((HGLOBAL)wideStr);
+ return;
+}
+
+void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr)
+{
+ lstrcpyW(wideStr, getuservariable(varnum));
+}
+
+void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr)
+{
+ LPWSTR wideStr = getuservariable(varnum);
+ WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
+}
+
+void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr)
+{
+ if (ansiStr && isvalidnsisvarindex(varnum))
+ {
+ LPWSTR wideStr = (LPWSTR)((char*)g_variables + varnum * g_stringsize);
+ MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
+ }
+}
+
+#else
+// ANSI defs
+int NSISCALL PopStringW(LPWSTR wideStr)
+{
+ LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, g_stringsize);
+ int rval = popstring(ansiStr);
+ MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
+ GlobalFree((HGLOBAL)ansiStr);
+ return rval;
+}
+
+int NSISCALL PopStringNW(LPWSTR wideStr, int maxlen)
+{
+ int realLen = maxlen ? maxlen : g_stringsize;
+ LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, realLen);
+ int rval = popstringn(ansiStr, realLen);
+ MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, realLen);
+ GlobalFree((HGLOBAL)ansiStr);
+ return rval;
+}
+
+void NSISCALL PushStringW(LPWSTR wideStr)
+{
+ LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, g_stringsize);
+ WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
+ pushstring(ansiStr);
+ GlobalFree((HGLOBAL)ansiStr);
+}
+
+void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr)
+{
+ LPSTR ansiStr = getuservariable(varnum);
+ MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
+}
+
+void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr)
+{
+ lstrcpyA(ansiStr, getuservariable(varnum));
+}
+
+void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr)
+{
+ if (wideStr && isvalidnsisvarindex(varnum))
+ {
+ LPSTR ansiStr = (char*)g_variables + varnum * g_stringsize;
+ WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
+ }
+}
+#endif
+
+// playing with integers
+
+INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s)
+{
+ INT_PTR v=0;
+ if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X')))
+ {
+ s++;
+ for (;;)
+ {
+ int c=*(++s);
+ if (c >= _T('0') && c <= _T('9')) c-=_T('0');
+ else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10;
+ else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10;
+ else break;
+ v<<=4;
+ v+=c;
+ }
+ }
+ else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0'))
+ {
+ for (;;)
+ {
+ int c=*(++s);
+ if (c >= _T('0') && c <= _T('7')) c-=_T('0');
+ else break;
+ v<<=3;
+ v+=c;
+ }
+ }
+ else
+ {
+ int sign=0;
+ if (*s == _T('-')) sign++; else s--;
+ for (;;)
+ {
+ int c=*(++s) - _T('0');
+ if (c < 0 || c > 9) break;
+ v*=10;
+ v+=c;
+ }
+ if (sign) v = -v;
+ }
+
+ return v;
+}
+
+unsigned int NSISCALL myatou(LPCTSTR s)
+{
+ unsigned int v=0;
+
+ for (;;)
+ {
+ unsigned int c=*s++;
+ if (c >= _T('0') && c <= _T('9')) c-=_T('0');
+ else break;
+ v*=10;
+ v+=c;
+ }
+ return v;
+}
+
+int NSISCALL myatoi_or(LPCTSTR s)
+{
+ int v=0;
+ if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X')))
+ {
+ s++;
+ for (;;)
+ {
+ int c=*(++s);
+ if (c >= _T('0') && c <= _T('9')) c-=_T('0');
+ else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10;
+ else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10;
+ else break;
+ v<<=4;
+ v+=c;
+ }
+ }
+ else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0'))
+ {
+ for (;;)
+ {
+ int c=*(++s);
+ if (c >= _T('0') && c <= _T('7')) c-=_T('0');
+ else break;
+ v<<=3;
+ v+=c;
+ }
+ }
+ else
+ {
+ int sign=0;
+ if (*s == _T('-')) sign++; else s--;
+ for (;;)
+ {
+ int c=*(++s) - _T('0');
+ if (c < 0 || c > 9) break;
+ v*=10;
+ v+=c;
+ }
+ if (sign) v = -v;
+ }
+
+ // Support for simple ORed expressions
+ if (*s == _T('|'))
+ {
+ v |= myatoi_or(s+1);
+ }
+
+ return v;
+}
+
+INT_PTR NSISCALL popintptr()
+{
+ TCHAR buf[128];
+ if (popstringn(buf,COUNTOF(buf)))
+ return 0;
+ return nsishelper_str_to_ptr(buf);
+}
+
+int NSISCALL popint_or()
+{
+ TCHAR buf[128];
+ if (popstringn(buf,COUNTOF(buf)))
+ return 0;
+ return myatoi_or(buf);
+}
+
+void NSISCALL pushintptr(INT_PTR value)
+{
+ TCHAR buffer[30];
+ wsprintf(buffer, sizeof(void*) > 4 ? _T("%Id") : _T("%d"), value);
+ pushstring(buffer);
+}
diff --git a/build-aux/speedo/w32/exdll.h b/build-aux/speedo/w32/exdll.h
index bb13ae097..f419dc3fe 100644
--- a/build-aux/speedo/w32/exdll.h
+++ b/build-aux/speedo/w32/exdll.h
@@ -1,91 +1,47 @@
-/* exdll.h for use with gpg4win
- * Copyright (C) 1999-2005 Nullsoft, Inc.
- *
- * This license applies to everything in the NSIS package, except
- * where otherwise noted.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the authors be held liable for any
- * damages arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any
- * purpose, including commercial applications, and to alter it and
- * redistribute it freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must
- * not claim that you wrote the original software. If you use this
- * software in a product, an acknowledgment in the product
- * documentation would be appreciated but is not required.
- *
- * 2. Altered source versions must be plainly marked as such, and must
- * not be misrepresented as being the original software.
- *
- * 3. This notice may not be removed or altered from any source
- * distribution.
- ************************************************************
- * 2005-11-14 wk Applied license text to original exdll.h file from
- * NSIS 2.0.4 and did some formatting changes.
- */
-
-#ifndef _EXDLL_H_
-#define _EXDLL_H_
-
-/* only include this file from one place in your DLL. (it is all
- static, if you use it in two places it will fail) */
+#include <windows.h>
+#ifndef ___NSIS_PLUGIN__H___
+#define ___NSIS_PLUGIN__H___
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef NSISCALL
+# define NSISCALL __stdcall
+#endif
+#if !defined(_WIN32) && !defined(LPTSTR)
+# define LPTSTR TCHAR*
+#endif
+
+
+
+#ifndef NSISCALL
+# define NSISCALL WINAPI
+#endif
#define EXDLL_INIT() { \
g_stringsize=string_size; \
g_stacktop=stacktop; \
g_variables=variables; }
-/* For page showing plug-ins */
-#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8)
-#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)
-#define NOTIFY_BYE_BYE 'x'
+
+enum NSPIM
+{
+ NSPIM_UNLOAD,
+ NSPIM_GUIUNLOAD
+};
+
+typedef UINT_PTR (*NSISPLUGINCALLBACK)(enum NSPIM);
typedef struct _stack_t {
struct _stack_t *next;
- char text[1]; /* This should be the length of string_size. */
+#ifdef UNICODE
+ WCHAR text[1]; // this should be the length of g_stringsize when allocating
+#else
+ char text[1];
+#endif
} stack_t;
-
-static unsigned int g_stringsize;
-static stack_t **g_stacktop;
-static char *g_variables;
-
-static int __stdcall popstring(char *str, size_t maxlen); /* 0 on success, 1 on empty stack */
-static void __stdcall pushstring(const char *str);
-
-enum
- {
- INST_0, // $0
- INST_1, // $1
- INST_2, // $2
- INST_3, // $3
- INST_4, // $4
- INST_5, // $5
- INST_6, // $6
- INST_7, // $7
- INST_8, // $8
- INST_9, // $9
- INST_R0, // $R0
- INST_R1, // $R1
- INST_R2, // $R2
- INST_R3, // $R3
- INST_R4, // $R4
- INST_R5, // $R5
- INST_R6, // $R6
- INST_R7, // $R7
- INST_R8, // $R8
- INST_R9, // $R9
- INST_CMDLINE, // $CMDLINE
- INST_INSTDIR, // $INSTDIR
- INST_OUTDIR, // $OUTDIR
- INST_EXEDIR, // $EXEDIR
- INST_LANG, // $LANGUAGE
- __INST_LAST
-};
-
typedef struct {
int autoclose;
int all_user_var;
@@ -94,58 +50,127 @@ typedef struct {
int exec_reboot;
int reboot_called;
int XXX_cur_insttype; /* deprecated */
- int XXX_insttype_changed; /* deprecated */
+ int plugin_api_version; /* Used to be insttype_changed */
int silent;
int instdir_error;
int rtl;
int errlvl;
+ int alter_reg_view;
+ int status_update;
} exec_flags_t;
typedef struct {
exec_flags_t *exec_flags;
int (__stdcall *ExecuteCodeSegment)(int, HWND);
+ void (__stdcall *validate_filename)(LPTSTR);
+ int (__stdcall *RegisterPluginCallback)(HMODULE, NSISPLUGINCALLBACK);
} extra_parameters_t;
-/* Utility functions (not required but often useful). */
-static int __stdcall
-popstring(char *str, size_t maxlen)
-{
- stack_t *th;
- if (!g_stacktop || !*g_stacktop)
- return 1;
- th=(*g_stacktop);
- lstrcpyn (str, th->text, maxlen);
- *g_stacktop = th->next;
- GlobalFree((HGLOBAL)th);
- return 0;
-}
-
-static void __stdcall
-pushstring(const char *str)
-{
- stack_t *th;
- if (!g_stacktop) return;
- th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize);
- lstrcpyn(th->text,str,g_stringsize);
- th->next=*g_stacktop;
- *g_stacktop=th;
-}
-
-static char * __stdcall
-getuservariable(const int varnum)
+enum
{
- if (varnum < 0 || varnum >= __INST_LAST) return NULL;
- return g_variables+varnum*g_stringsize;
-}
+INST_0, // $0
+INST_1, // $1
+INST_2, // $2
+INST_3, // $3
+INST_4, // $4
+INST_5, // $5
+INST_6, // $6
+INST_7, // $7
+INST_8, // $8
+INST_9, // $9
+INST_R0, // $R0
+INST_R1, // $R1
+INST_R2, // $R2
+INST_R3, // $R3
+INST_R4, // $R4
+INST_R5, // $R5
+INST_R6, // $R6
+INST_R7, // $R7
+INST_R8, // $R8
+INST_R9, // $R9
+INST_CMDLINE, // $CMDLINE
+INST_INSTDIR, // $INSTDIR
+INST_OUTDIR, // $OUTDIR
+INST_EXEDIR, // $EXEDIR
+INST_LANG, // $LANGUAGE
+__INST_LAST
+};
-static void __stdcall
-setuservariable(const int varnum, const char *var)
-{
- if (var != NULL && varnum >= 0 && varnum < __INST_LAST)
- lstrcpy(g_variables + varnum*g_stringsize, var);
+extern unsigned int g_stringsize;
+extern stack_t **g_stacktop;
+extern LPTSTR g_variables;
+
+void NSISCALL pushstring(LPCTSTR str);
+void NSISCALL pushintptr(INT_PTR value);
+#define pushint(v) pushintptr((INT_PTR)(v))
+int NSISCALL popstring(LPTSTR str); // 0 on success, 1 on empty stack
+int NSISCALL popstringn(LPTSTR str, int maxlen); // with length limit, pass 0 for g_stringsize
+INT_PTR NSISCALL popintptr();
+#define popint() ( (int) popintptr() )
+int NSISCALL popint_or(); // with support for or'ing (2|4|8)
+INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s);
+#define myatoi(s) ( (int) nsishelper_str_to_ptr(s) ) // converts a string to an integer
+unsigned int NSISCALL myatou(LPCTSTR s); // converts a string to an unsigned integer, decimal only
+int NSISCALL myatoi_or(LPCTSTR s); // with support for or'ing (2|4|8)
+LPTSTR NSISCALL getuservariable(const int varnum);
+void NSISCALL setuservariable(const int varnum, LPCTSTR var);
+
+#ifdef UNICODE
+#define PopStringW(x) popstring(x)
+#define PushStringW(x) pushstring(x)
+#define SetUserVariableW(x,y) setuservariable(x,y)
+
+int NSISCALL PopStringA(LPSTR ansiStr);
+int NSISCALL PopStringNA(LPSTR ansiStr, int maxlen);
+void NSISCALL PushStringA(LPCSTR ansiStr);
+void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr);
+void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr);
+void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr);
+
+#else
+// ANSI defs
+
+#define PopStringA(x) popstring(x)
+#define PushStringA(x) pushstring(x)
+#define SetUserVariableA(x,y) setuservariable(x,y)
+
+int NSISCALL PopStringW(LPWSTR wideStr);
+void NSISCALL PushStringW(LPWSTR wideStr);
+void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr);
+void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr);
+void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr);
+
+#endif
+
+#ifdef __cplusplus
}
-
-
-
-#endif/*_EXDLL_H_*/
+#endif
+
+#endif//!___NSIS_PLUGIN__H___
+
+#ifndef COUNTOF
+#define COUNTOF(a) (sizeof(a)/sizeof(a[0]))
+#endif
+
+// minimal tchar.h emulation
+#ifndef _T
+# define _T TEXT
+#endif
+#if !defined(TCHAR) && !defined(_TCHAR_DEFINED)
+# ifdef UNICODE
+# define TCHAR WCHAR
+# else
+# define TCHAR char
+# endif
+#endif
+
+#define isvalidnsisvarindex(varnum) ( ((unsigned int)(varnum)) < (__INST_LAST) )
+
+#define ERRORPRINTF(fmt, ...) \
+ { \
+ char buf[512]; \
+ snprintf(buf, 511, "ERROR: " fmt, ##__VA_ARGS__); \
+ buf[511] = '\0'; \
+ OutputDebugStringA(buf); \
+ }
diff --git a/build-aux/speedo/w32/g4wihelp.c b/build-aux/speedo/w32/g4wihelp.c
index 626f3f12c..bae4b837c 100644
--- a/build-aux/speedo/w32/g4wihelp.c
+++ b/build-aux/speedo/w32/g4wihelp.c
@@ -1,6 +1,7 @@
-/* g4wihelp.c - NSIS Helper DLL used with gpg4win. -*- coding: latin-1; -*-
- * Copyright (C) 2005 g10 Code GmbH
+/* g4wihelp.c - NSIS Helper DLL used with gpg4win.
+ * Copyright (C) 2005, 2023 g10 Code GmbH
* Copyright (C) 2001 Justin Frankel
+ * Copyright (C) 2016, 2017 Intevation GmbH
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
@@ -23,22 +24,41 @@
************************************************************
* The code for the splash screen has been taken from the Splash
* plugin of the NSIS 2.04 distribution. That code comes without
- * explicit copyright notices in the source files or author names, it
+ * explicit copyright notices in tyhe source files or author names, it
* seems that it has been written by Justin Frankel; not sure about
* the year, though. [wk 2005-11-28]
*
* Fixed some compiler warnings. [wk 2014-02-24].
+ * Merged code from GnuPG version. [wk 2023-04-24].
+ *
+ * Compile time macros:
+ * ENABLE_SLIDE_SHOW :: Define for Gpg4win.
*/
-#include <stdio.h>
#include <windows.h>
+#include <stdio.h>
+#include <tlhelp32.h>
+#include <psapi.h>
+#include <stdio.h>
+#include <string.h>
#include "exdll.h"
+/* We keep some code here for documentation reasons. That code has not
+ * yet been converted to the Unicode NSIS plugin API. */
+/* #define ENABLE_SOUND_GADGET 1 */
+/* #define ENABLE_SPLASH_GADGET 1 */
+/* #define ENABLE_SERVICE_MANAGEMENT 1 */
+
+
static HINSTANCE g_hInstance; /* Our Instance. */
static HWND g_hwndParent; /* Handle of parent window or NULL. */
static HBITMAP g_hbm; /* Handle of the splash image. */
static int sleepint; /* Milliseconds to show the spals image. */
+#ifdef ENABLE_SLIDE_SHOW
+void
+slide_stop(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop);
+#endif
/* Standard entry point for DLLs. */
int WINAPI
@@ -46,6 +66,12 @@ DllMain (HANDLE hinst, DWORD reason, LPVOID reserved)
{
if (reason == DLL_PROCESS_ATTACH)
g_hInstance = hinst;
+ else if (reason == DLL_PROCESS_DETACH)
+ {
+#ifdef ENABLE_SLIDE_SHOW
+ slide_stop (NULL, 0, NULL, NULL);
+#endif
+ }
return TRUE;
}
@@ -53,7 +79,7 @@ DllMain (HANDLE hinst, DWORD reason, LPVOID reserved)
/* Dummy function for testing. */
void __declspec(dllexport)
-dummy (HWND hwndParent, int string_size, char *variables,
+dummy (HWND hwndParent, int string_size, LPTSTR variables,
stack_t **stacktop, extra_parameters_t *extra)
{
g_hwndParent = hwndParent;
@@ -67,21 +93,66 @@ dummy (HWND hwndParent, int string_size, char *variables,
// you should empty the stack of your parameters, and ONLY your
// parameters.
- // do your stuff here
+ /* Let's dump the variables. */
{
- char buf[1024];
- snprintf (buf, sizeof buf, "$R0=%s\r\n$R1=%s\r\n",
- getuservariable(INST_R0),
- getuservariable(INST_R1));
- MessageBox (g_hwndParent,buf,0,MB_OK);
-
- snprintf (buf, sizeof buf,
- "autoclose =%d\r\n"
+ char line[512];
+ char *p;
+ const unsigned char *s = (void*)g_variables;
+ int i,j;
+
+ for (i=0; i < string_size* __INST_LAST; i+=32, s += 32)
+ {
+ for (j=0; j < 32; j++)
+ if (s[j])
+ break;
+ if (j != 32)
+ {
+ p = line;
+ *p = 0;
+ snprintf (p, 10, "%05x: ", i);
+ p += strlen (p);
+ for (j=0; j < 32; j++)
+ {
+ snprintf (p, 10, "%02x", s[j]);
+ p += strlen (p);
+ }
+ strcat (p, " |");
+ p += strlen (p);
+ for (j=0; j < 32; j++)
+ {
+ if (s[j] >= 32 && s[j] < 127)
+ *p = s[j];
+ else
+ *p = '.';
+ p++;
+ }
+ strcat (p, "|");
+ OutputDebugStringA (line);
+ }
+ }
+ }
+
+
+ {
+ wchar_t buf[1024];
+
+ swprintf(buf, 1024,
+ L"stringsize=%d\r\n$0=%s\r\n$1=%s\r\n$R0=%s\r\n$R1=%s\r\n",
+ string_size,
+ getuservariable(INST_0),
+ getuservariable(INST_1),
+ getuservariable(INST_R0),
+ getuservariable(INST_R1));
+ MessageBoxW(g_hwndParent,buf,0,MB_OK);
+
+ swprintf (buf, 1024,
+ L"autoclose =%d\r\n"
"all_user_var =%d\r\n"
"exec_error =%d\r\n"
"abort =%d\r\n"
"exec_reboot =%d\r\n"
"reboot_called=%d\r\n"
+ "api_version =%d\r\n"
"silent =%d\r\n"
"instdir_error=%d\r\n"
"rtl =%d\r\n"
@@ -92,30 +163,34 @@ dummy (HWND hwndParent, int string_size, char *variables,
extra->exec_flags->abort,
extra->exec_flags->exec_reboot,
extra->exec_flags->reboot_called,
+ extra->exec_flags->plugin_api_version,
extra->exec_flags->silent,
extra->exec_flags->instdir_error,
extra->exec_flags->rtl,
extra->exec_flags->errlvl);
- MessageBox(g_hwndParent,buf,0,MB_OK);
+ MessageBoxW(g_hwndParent,buf,0,MB_OK);
}
}
+
void __declspec(dllexport)
-runonce (HWND hwndParent, int string_size, char *variables,
+runonce (HWND hwndParent, int string_size, LPTSTR variables,
stack_t **stacktop, extra_parameters_t *extra)
{
- const char *result;
+ LPCWSTR result;
g_hwndParent = hwndParent;
EXDLL_INIT();
- CreateMutexA (NULL, 0, getuservariable(INST_R0));
- result = GetLastError ()? "1":"0";
+ CreateMutexW (NULL, 0, getuservariable(INST_R0));
+ result = GetLastError ()? L"1" : L"0";
setuservariable (INST_R0, result);
}
+
+#ifdef ENABLE_SOUND_GADGET
void __declspec(dllexport)
playsound (HWND hwndParent, int string_size, char *variables,
stack_t **stacktop, extra_parameters_t *extra)
@@ -139,8 +214,10 @@ stopsound (HWND hwndParent, int string_size, char *variables,
EXDLL_INIT();
PlaySound (NULL, NULL, 0);
}
+#endif /*ENABLE_SOUND_GADGET*/
+#ifdef ENABLE_SPLASH_GADGET
/* Windows procedure to control the splashimage. This one pauses the
execution until the sleep time is over or the user closes this
windows. */
@@ -268,10 +345,10 @@ showsplash (HWND hwndParent, int string_size, char *variables,
}
UnregisterClass (classname, g_hInstance);
}
+#endif /*ENABLE_SPLASH_GADGET*/
-
-/* Service Management. */
+#ifdef ENABLE_SERVICE_MANAGEMENT
/* Use this to report unexpected errors. FIXME: This is really not
very descriptive. */
void
@@ -626,9 +703,8 @@ service_delete (HWND hwndParent, int string_size, char *variables,
setuservariable (INST_R0, "0");
return;
}
+#endif /*ENABLE_SERVICE_MANAGEMENT*/
-
-#include <stdio.h>
/* Extract config file parameters. FIXME: Not particularly robust.
We expect some reasonable formatting. The parser below is very
@@ -644,6 +720,7 @@ void
config_init (char **keys, char **values, int max)
{
/* First, parse the command line. */
+ LPCWSTR wcmdline;
char *cmdline;
char *begin = NULL;
char *end = NULL;
@@ -655,7 +732,15 @@ config_init (char **keys, char **values, int max)
*keys = NULL;
*values = NULL;
- cmdline = getuservariable (INST_CMDLINE);
+ cmdline = malloc (4096);
+ if (!cmdline)
+ return;
+
+ wcmdline = getuservariable (INST_CMDLINE);
+ *cmdline = 0;
+ WideCharToMultiByte(CP_ACP, 0, wcmdline, -1, cmdline, 4095, NULL, NULL);
+ if (!*cmdline)
+ return;
mark = (*cmdline == '"') ? (cmdline++, '"') : ' ';
while (*cmdline && *cmdline != mark)
@@ -721,6 +806,7 @@ config_init (char **keys, char **values, int max)
conf = fopen (fname, "r");
free (fname);
+ free (cmdline);
if (!conf)
return;
@@ -843,7 +929,7 @@ config_lookup (char *key)
void __declspec(dllexport)
-config_fetch (HWND hwndParent, int string_size, char *variables,
+config_fetch (HWND hwndParent, int string_size, LPTSTR variables,
stack_t **stacktop, extra_parameters_t *extra)
{
char key[256];
@@ -854,23 +940,23 @@ config_fetch (HWND hwndParent, int string_size, char *variables,
EXDLL_INIT();
/* The expected stack layout: key. */
- if (popstring (key, sizeof (key)))
+ if (PopStringNA (key, sizeof (key)))
err = 1;
if (err)
{
- setuservariable (INST_R0, "");
+ setuservariable (INST_R0, L"");
return;
}
value = config_lookup (key);
- setuservariable (INST_R0, value == NULL ? "" : value);
+ SetUserVariableA (INST_R0, value == NULL ? "" : value);
return;
}
void __declspec(dllexport)
-config_fetch_bool (HWND hwndParent, int string_size, char *variables,
+config_fetch_bool (HWND hwndParent, int string_size, LPTSTR variables,
stack_t **stacktop, extra_parameters_t *extra)
{
char key[256];
@@ -882,18 +968,18 @@ config_fetch_bool (HWND hwndParent, int string_size, char *variables,
EXDLL_INIT();
/* The expected stack layout: key. */
- if (popstring (key, sizeof (key)))
+ if (PopStringNA (key, sizeof (key)))
err = 1;
if (err)
{
- setuservariable (INST_R0, "");
+ setuservariable (INST_R0, L"");
return;
}
value = config_lookup (key);
if (value == NULL || *value == '\0')
{
- setuservariable (INST_R0, "");
+ setuservariable (INST_R0, L"");
return;
}
@@ -903,7 +989,7 @@ config_fetch_bool (HWND hwndParent, int string_size, char *variables,
|| atoi (value) != 0)
result = 1;
- setuservariable (INST_R0, result == 0 ? "0" : "1");
+ SetUserVariableA (INST_R0, result == 0 ? "0" : "1");
return;
}
@@ -911,99 +997,107 @@ config_fetch_bool (HWND hwndParent, int string_size, char *variables,
/* Return a string from the Win32 Registry or NULL in case of error.
Caller must release the return value. A NULL for root is an alias
for HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE in turn. */
-char *
-read_w32_registry_string (HKEY root, const char *dir, const char *name)
+static wchar_t *
+read_w32_registry_string (HKEY root, const wchar_t *dir, const wchar_t *name)
{
HKEY root_key;
HKEY key_handle;
DWORD n1, nbytes, type;
- char *result = NULL;
+ wchar_t *result = NULL;
root_key = root;
- if (! root_key)
+ if (!root_key)
root_key = HKEY_CURRENT_USER;
- if( RegOpenKeyEx( root_key, dir, 0, KEY_READ, &key_handle ) )
+ if (RegOpenKeyExW (root_key, dir, 0, KEY_READ, &key_handle))
{
if (root)
return NULL; /* no need for a RegClose, so return direct */
/* It seems to be common practise to fall back to HKLM. */
- if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) )
+ if (RegOpenKeyExW (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle))
return NULL; /* still no need for a RegClose, so return direct */
}
nbytes = 1;
- if( RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) ) {
- if (root)
- goto leave;
- /* Try to fallback to HKLM also vor a missing value. */
- RegCloseKey (key_handle);
- if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) )
- return NULL; /* Nope. */
- if (RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes))
- goto leave;
+ if (RegQueryValueExW (key_handle, name, 0, NULL, NULL, &nbytes))
+ {
+ if (root)
+ goto leave;
+ /* Try to fallback to HKLM also for a missing value. */
+ RegCloseKey (key_handle);
+ if (RegOpenKeyExW (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle))
+ return NULL; /* Nope. */
+ if (RegQueryValueExW (key_handle, name, 0, NULL, NULL, &nbytes))
+ goto leave;
}
- result = malloc( (n1=nbytes+1) );
-
- if( !result )
- goto leave;
- if( RegQueryValueEx( key_handle, name, 0, &type, result, &n1 ) ) {
- free(result); result = NULL;
+ result = calloc ((n1=nbytes+1), sizeof *result);
+ if (!result)
goto leave;
- }
- result[nbytes] = 0; /* make sure it is really a string */
+
+ if (RegQueryValueExW (key_handle, name, 0, &type,
+ (unsigned char *)result, &n1))
+ {
+ free (result);
+ result = NULL;
+ goto leave;
+ }
+ result[nbytes] = 0; /* Make sure it is really a string */
leave:
- RegCloseKey( key_handle );
+ RegCloseKey (key_handle);
return result;
}
+/* Registry keys for PATH for HKLM and HKCU. */
#define ENV_HK HKEY_LOCAL_MACHINE
-#define ENV_REG "SYSTEM\\CurrentControlSet\\Control\\" \
- "Session Manager\\Environment"
- /* The following setting can be used for a per-user setting. */
+#define ENV_REG L"SYSTEM\\CurrentControlSet\\Control\\" \
+ "Session Manager\\Environment"
#define ENV_HK_USER HKEY_CURRENT_USER
-#define ENV_REG_USER "Environment"
+#define ENV_REG_USER L"Environment"
+
/* Due to a bug in Windows7 (kb 2685893) we better put a lower limit
- than 8191 on the maximum length of the PATH variable. Note, that
- depending on the used toolchain we used to had a 259 byte limit in
- the past. */
+ * than 8191 on the maximum length of the PATH variable. Note, that
+ * depending on the used toolchain we used to had a 259 byte limit in
+ * the past.
+ * [wk 2023-04-24]: Can this be lifted now that we use the wchar_t API?
+ */
#define PATH_LENGTH_LIMIT 2047
void __declspec(dllexport)
-path_add (HWND hwndParent, int string_size, char *variables,
+path_add (HWND hwndParent, int string_size, LPTSTR variables,
stack_t **stacktop, extra_parameters_t *extra)
{
- char dir[PATH_LENGTH_LIMIT];
- char is_user_install[2];
- char *path;
- char *path_new;
- int path_new_size;
- char *comp;
- const char delims[] = ";";
+ wchar_t dir[PATH_LENGTH_LIMIT];
+ wchar_t is_user_install[2];
+ wchar_t *path;
+ wchar_t *path_new;
+ size_t path_new_size;
+ wchar_t *comp;
+ const wchar_t delims[] = L";";
int is_user;
HKEY key_handle = 0;
HKEY root_key;
- const char *env_reg;
+ const wchar_t *env_reg;
+ /* wchar_t *tokctx; Context var for wcstok - not yet needed. */
g_hwndParent = hwndParent;
EXDLL_INIT();
- setuservariable (INST_R0, "0");
-
-/* MessageBox (g_hwndParent, "XXX 1", 0, MB_OK); */
+ setuservariable (INST_R0, L"0"); /* Default return value. */
/* The expected stack layout: path component. */
- if (popstring (dir, sizeof (dir)))
+ if (popstringn (dir, COUNTOF (dir)))
return;
+ dir[COUNTOF(dir)-1] = 0;
/* The expected stack layout: HKEY component. */
- if (popstring (is_user_install, sizeof (is_user_install)))
+ if (popstringn (is_user_install, COUNTOF (is_user_install)))
return;
+ is_user_install[COUNTOF(is_user_install)-1] = 0;
- if (!strcmp(is_user_install, "1"))
+ if (!wcscmp (is_user_install, L"1"))
{
root_key = ENV_HK_USER;
env_reg = ENV_REG_USER;
@@ -1014,107 +1108,100 @@ path_add (HWND hwndParent, int string_size, char *variables,
env_reg = ENV_REG;
}
- path = read_w32_registry_string (root_key, env_reg, "Path");
-
- if (! path)
+ path = read_w32_registry_string (root_key, env_reg, L"Path");
+ if (!path)
{
- path = strdup ("");
+ path = wcsdup (L"");
}
-/* MessageBox (g_hwndParent, "XXX 3", 0, MB_OK); */
-
/* Old path plus semicolon plus dir plus terminating nul. */
- path_new_size = strlen (path) + 1 + strlen (dir) + 1;
+ path_new_size = wcslen (path) + 1 + wcslen (dir) + 1;
if (path_new_size > PATH_LENGTH_LIMIT)
{
- MessageBox (g_hwndParent, "PATH env variable too big", 0, MB_OK);
+ MessageBox (g_hwndParent, L"PATH env variable too big", 0, MB_OK);
free (path);
return;
}
-/* MessageBox (g_hwndParent, "XXX 4", 0, MB_OK); */
-
- path_new = malloc (path_new_size);
+ path_new = calloc (path_new_size, sizeof *path_new);
if (!path_new)
{
free (path);
return;
}
-/* MessageBox (g_hwndParent, "XXX 5", 0, MB_OK); */
-
- strcpy (path_new, path);
- strcat (path_new, ";");
- strcat (path_new, dir);
-
-/* MessageBox (g_hwndParent, "XXX 6", 0, MB_OK); */
-/* MessageBox (g_hwndParent, dir, 0, MB_OK); */
-/* MessageBox (g_hwndParent, "XXX 7", 0, MB_OK); */
+ wcscpy (path_new, path);
+ wcscat (path_new, L";");
+ wcscat (path_new, dir);
/* Check if the directory already exists in the path. */
- comp = strtok (path, delims);
+ comp = wcstok (path, delims/*, &tokctx*/);
do
{
-/* MessageBox (g_hwndParent, comp, 0, MB_OK); */
+ /* MessageBox (g_hwndParent, comp, 0, MB_OK); */
if (!comp)
break;
- if (!strcmp (comp, dir))
+ if (!wcscmp (comp, dir))
{
free (path);
free (path_new);
return;
}
- comp = strtok (NULL, delims);
+ comp = wcstok (NULL, delims/*, &tokctx*/);
}
while (comp);
free (path);
/* Update the path key. */
- RegCreateKey (root_key, env_reg, &key_handle);
- RegSetValueEx (key_handle, "Path", 0, REG_EXPAND_SZ,
- path_new, path_new_size);
+ RegCreateKeyW (root_key, env_reg, &key_handle);
+ RegSetValueEx (key_handle, L"Path", 0, REG_EXPAND_SZ,
+ (unsigned char*)path_new,
+ wcslen (path_new) * sizeof *path_new);
RegCloseKey (key_handle);
- SetEnvironmentVariable("PATH", path_new);
+ SetEnvironmentVariableW(L"PATH", path_new);
free (path_new);
/* MessageBox (g_hwndParent, "XXX 9", 0, MB_OK); */
- setuservariable (INST_R0, "1");
+ setuservariable (INST_R0, L"1"); /* success. */
}
void __declspec(dllexport)
-path_remove (HWND hwndParent, int string_size, char *variables,
+path_remove (HWND hwndParent, int string_size, LPTSTR variables,
stack_t **stacktop, extra_parameters_t *extra)
{
- char dir[PATH_LENGTH_LIMIT];
- char is_user_install[2];
- char *path;
- char *path_new;
- int path_new_size;
- char *comp;
- const char delims[] = ";";
+ wchar_t dir[PATH_LENGTH_LIMIT];
+ wchar_t is_user_install[2];
+ wchar_t *path;
+ wchar_t *path_new;
+ size_t path_new_size;
+ wchar_t *comp;
+ const wchar_t delims[] = L";";
HKEY key_handle = 0;
int changed = 0;
int count = 0;
HKEY root_key;
- const char *env_reg;
+ const wchar_t *env_reg;
+ /* wchar_t *tokctx; Context var for wcstok - not yet needed. */
g_hwndParent = hwndParent;
EXDLL_INIT();
- setuservariable (INST_R0, "0");
+ setuservariable (INST_R0, L"0");
/* The expected stack layout: path component. */
- if (popstring (dir, sizeof (dir)))
+ if (popstringn (dir, COUNTOF (dir)))
return;
+ dir[COUNTOF(dir)-1] = 0;
/* The expected stack layout: HKEY component. */
- if (popstring (is_user_install, sizeof (is_user_install)))
+ if (popstringn (is_user_install, COUNTOF (is_user_install)))
return;
+ is_user_install[COUNTOF(is_user_install)-1] = 0;
- if (!strcmp(is_user_install, "1"))
+ if (!wcscmp (is_user_install, L"1"))
{
root_key = ENV_HK_USER;
env_reg = ENV_REG_USER;
@@ -1125,51 +1212,112 @@ path_remove (HWND hwndParent, int string_size, char *variables,
env_reg = ENV_REG;
}
- path = read_w32_registry_string (root_key, env_reg, "Path");
-
+ path = read_w32_registry_string (root_key, env_reg, L"Path");
if (!path)
return;
+
/* Old path plus semicolon plus dir plus terminating nul. */
- path_new_size = strlen (path) + 1;
- path_new = malloc (path_new_size);
+ path_new_size = wcslen (path) + 1;
+ path_new = calloc (path_new_size, sizeof *path_new);
if (!path_new)
{
free (path);
return;
}
- path_new[0] = '\0';
/* Compose the new path. */
- comp = strtok (path, delims);
+ comp = wcstok (path, delims/*, &tokctx*/);
do
{
- if (strcmp (comp, dir))
+ if (wcscmp (comp, dir))
{
- if (count != 0)
- strcat (path_new, ";");
- strcat (path_new, comp);
+ if (count)
+ wcscat (path_new, L";");
+ wcscat (path_new, comp);
count++;
}
else
changed = 1;
-
- comp = strtok (NULL, delims);
}
- while (comp);
+ while ((comp = wcstok (NULL, delims/*, &tokctx*/)));
free (path);
- if (! changed)
+ if (!changed)
{
free (path_new);
return;
}
/* Set a key for our CLSID. */
- RegCreateKey (root_key, env_reg, &key_handle);
- RegSetValueEx (key_handle, "Path", 0, REG_EXPAND_SZ,
- path_new, path_new_size);
+ RegCreateKeyW (root_key, env_reg, &key_handle);
+ RegSetValueEx (key_handle, L"Path", 0, REG_EXPAND_SZ,
+ (unsigned char*)path_new,
+ wcslen (path_new) * sizeof *path_new);
RegCloseKey (key_handle);
free (path_new);
- setuservariable (INST_R0, "1");
+ setuservariable (INST_R0, L"1"); /* success */
+}
+
+
+/** @brief Kill processes with the name name.
+ *
+ * This function tries to kill a process using ExitProcess.
+ *
+ * If it does not work it does not work. No return values.
+ * The intention is to make an effort to kill something during
+ * installation / uninstallation.
+ *
+ * The function signature is explained by NSIS.
+ */
+void __declspec(dllexport) __cdecl KillProc(HWND hwndParent,
+ int string_size,
+ char *variables,
+ stack_t **stacktop)
+{
+ HANDLE h;
+ PROCESSENTRY32 pe32;
+
+ if (!stacktop || !*stacktop || !(*stacktop)->text)
+ {
+ ERRORPRINTF ("Invalid call to KillProc.");
+ return;
+ }
+
+
+ h = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ ERRORPRINTF ("Failed to create Toolhelp snapshot");
+ return;
+ }
+ pe32.dwSize = sizeof (PROCESSENTRY32);
+
+ if (!Process32First (h, &pe32))
+ {
+ ERRORPRINTF ("Failed to get first process");
+ CloseHandle (h);
+ return;
+ }
+
+ do
+ {
+ if (!wcscmp ((*stacktop)->text, pe32.szExeFile))
+ {
+ HANDLE hProc = OpenProcess (PROCESS_ALL_ACCESS, FALSE,
+ pe32.th32ProcessID);
+ if (!hProc)
+ {
+ ERRORPRINTF ("Failed to open process handle.");
+ continue;
+ }
+ if (!TerminateProcess (hProc, 1))
+ {
+ ERRORPRINTF ("Failed to terminate process.");
+ }
+ CloseHandle (hProc);
+ }
+ }
+ while (Process32Next (h, &pe32));
+ CloseHandle (h);
}
diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi
index 42fa2fb58..283166835 100644
--- a/build-aux/speedo/w32/inst.nsi
+++ b/build-aux/speedo/w32/inst.nsi
@@ -1,4 +1,4 @@
-# inst.nsi - Installer for GnuPG on Windows. -*- coding: latin-1; -*-
+# inst.nsi - Installer for GnuPG on Windows.
# Copyright (C) 2005, 2014, 2019-2021 g10 Code GmbH
# 2017 Intevation GmbH
#
@@ -31,6 +31,9 @@
#
# WITH_GUI - Include the GPA GUI
+# This one must be done before addplugindir.
+Unicode true
+
!cd "${INST_DIR}"
!addincludedir "${W32_SRCDIR}"
!addplugindir "${BUILD_DIR}"
@@ -64,7 +67,7 @@
File version: ${PROD_VERSION}\r\n\
Release date: ${BUILD_ISODATE}"
!define ABOUT_GERMAN \
- "GnuPG is die h�ufigst verwendete Software zur Mail- und Datenverschl�sselung.\
+ "GnuPG is die häufigst verwendete Software zur Mail- und Datenverschlüsselung.\
\r\n\r\n$_CLICK \
\r\n\r\n\r\n\r\n\r\nDies ist GnuPG Version ${VERSION}.\r\n\
Dateiversion: ${PROD_VERSION}\r\n\
@@ -256,14 +259,14 @@ LangString T_GPLShort ${LANG_ENGLISH} \
You may distribute it as long as you give the recipients the same \
rights you have received."
LangString T_GPLShort ${LANG_GERMAN} \
- "In aller K�rze: Sie haben das Recht, die Software zu jedem Zweck \
- einzusetzen. Sie k�nnen die Software weitergeben, sofern Sie dem \
- Empf�nger dieselben Rechte einr�umen, die auch Sie erhalten haben."
+ "In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \
+ einzusetzen. Sie können die Software weitergeben, sofern Sie dem \
+ Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben."
LangString T_RunKeyManager ${LANG_ENGLISH} \
"Run the key manager"
LangString T_RunKeyManager ${LANG_GERMAN} \
- "Die Schl�sselverwaltung aufrufen"
+ "Die Schlüsselverwaltung aufrufen"
LangString T_MoreInfo ${LANG_ENGLISH} \
"Click here to see how to help the GnuPG Project"
@@ -280,8 +283,8 @@ LangString T_ShowReadme ${LANG_GERMAN} \
LangString T_NoKeyManager ${LANG_ENGLISH} \
"No key manager has been installed, thus we can't run one now."
LangString T_NoKeyManager ${LANG_GERMAN} \
- "Es wurde keine Schl�sselverwaltung installiert. \
- Deswegen kann sie jetzt auch nicht ausgef�hrt werden."
+ "Es wurde keine Schlüsselverwaltung installiert. \
+ Deswegen kann sie jetzt auch nicht ausgeführt werden."
# Functions
@@ -289,7 +292,7 @@ LangString T_NoKeyManager ${LANG_GERMAN} \
LangString T_AlreadyRunning ${LANG_ENGLISH} \
"An instance of this installer is already running."
LangString T_AlreadyRunning ${LANG_GERMAN} \
- "Ein Exemplar dieses Installers l�uft bereits."
+ "Ein Exemplar dieses Installers läuft bereits."
Function G4wRunOnce
Push $R0
@@ -416,23 +419,23 @@ LangString T_InstallOptLinks ${LANG_GERMAN} "Startlinks"
LangString T_InstOptLabelA ${LANG_ENGLISH} \
"Please select where GnuPG shall install links:"
LangString T_InstOptLabelA ${LANG_GERMAN} \
- "Bitte w�hlen Sie, welche Verkn�pfungen angelegt werden sollen:"
+ "Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
LangString T_InstOptLabelB ${LANG_ENGLISH} \
"(Only programs will be linked into the quick launch bar.)"
LangString T_InstOptLabelB ${LANG_GERMAN} \
- "(In die Schnellstartleiste werden nur Verkn�pfungen f�r \
+ "(In die Schnellstartleiste werden nur Verknüpfungen für \
Programme angelegt.) "
LangString T_InstOptFieldA ${LANG_ENGLISH} \
"Start Menu"
LangString T_InstOptFieldA ${LANG_GERMAN} \
- "Startmen�"
+ "Startmenü"
LangString T_InstOptFieldB ${LANG_ENGLISH} \
"Desktop"
LangString T_InstOptFieldB ${LANG_GERMAN} \
- "Arbeitsfl�che"
+ "Arbeitsfläche"
LangString T_InstOptFieldC ${LANG_ENGLISH} \
"Quick Launch Bar"
@@ -447,9 +450,9 @@ LangString T_FoundExistingVersion ${LANG_ENGLISH} \
Do you want to overwrite it with version ${VERSION}?"
LangString T_FoundExistingVersion ${LANG_GERMAN} \
"Version $R1 ist hier bereits installiert. $\r$\n\
- M�chten Sie diese mit Version ${VERSION} �berschreiben? $\r$\n\
+ Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\
$\r$\n\
- (Sie k�nnen in jedem Fall mit JA antworten, falls es sich um \
+ (Sie können in jedem Fall mit JA antworten, falls es sich um \
eine neuere oder dieselbe Version handelt.)"
LangString T_FoundExistingVersionB ${LANG_ENGLISH} \
"A version of GnuPG has already been installed on the system. \
@@ -460,7 +463,7 @@ LangString T_FoundExistingVersionB ${LANG_GERMAN} \
"Eine Version von GnuPG ist hier bereits installiert. \
$\r$\n\
$\r$\n\
- M�chten die die Installation von GnuPG fortf�hren?"
+ Möchten die die Installation von GnuPG fortführen?"
@@ -476,16 +479,16 @@ LangString T_AdminWanted ${LANG_GERMAN} \
Administratorrechten zu installieren. \
$\r$\n\
$\r$\n\
- M�chten die die Installation von GnuPG ohne Administratorrechte fortf�hren?"
+ Möchten die die Installation von GnuPG ohne Administratorrechte fortführen?"
# From Function PrintCloseOtherApps
LangString T_CloseOtherApps ${LANG_ENGLISH} \
"Please make sure that other applications are not running. \
GnuPG will try to install anyway but a reboot may be required."
LangString T_CloseOtherApps ${LANG_GERMAN} \
- "Bitte stellen Sie sicher, da� alle anderen Anwendugen geschlossen \
+ "Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \
sind. GnuPG wird auf jeden Fall versuchen, eine Installation \
- durchzuf�hren; es ist dann aber u.U. notwendig, das System neu zu starten."
+ durchzuführen; es ist dann aber u.U. notwendig, das System neu zu starten."
# TrimNewlines - taken from the NSIS reference
@@ -736,7 +739,7 @@ LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
LangString DESC_SEC_gnupg ${LANG_GERMAN} \
"Der GnuPG Core ist, wie der Name schon sagt, der Kernbestandteil \
dieser Software. Der GnuPG Core stellt die eigentliche \
- Verschl�sselung sowie die Verwaltung der Schl�ssel bereit."
+ Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
LangString DESC_Menu_gnupg_manual ${LANG_ENGLISH} \
"Show the manual for the GnuPG Core"
@@ -989,7 +992,7 @@ SectionEnd
LangString DESC_SEC_gpa ${LANG_ENGLISH} \
"The GnuPG Assistant is the graphical interface of GnuPG"
LangString DESC_SEC_gpa ${LANG_GERMAN} \
- "Der GnuPG Assistent ist die graphische Oberfl�che von GnuPG."
+ "Der GnuPG Assistent ist die graphische Oberfläche von GnuPG."
LangString DESC_Menu_gpa ${LANG_ENGLISH} \
"Run the GnuGP Assistant."
@@ -1462,8 +1465,7 @@ Function .onInit
;;!define MUI_LANGDLL_ALWAYSSHOW
!insertmacro MUI_LANGDLL_DISPLAY
- # Temporay disabled until we have fixed the DLL issue (wk 2023-04-05)
- # Call G4wRunOnce
+ Call G4wRunOnce
SetOutPath $TEMP
#!ifdef SOURCES
diff --git a/common/homedir.c b/common/homedir.c
index 091964fc1..286685feb 100644
--- a/common/homedir.c
+++ b/common/homedir.c
@@ -154,6 +154,42 @@ w32_shgetfolderpath (HWND a, int b, HANDLE c, DWORD d)
}
#endif /*HAVE_W32_SYSTEM*/
+/* Given the directory name DNAME try to create a common.conf and
+ * enable the keyboxd. This should only be called for the standard
+ * home directory and only if that directory has just been created. */
+static void
+create_common_conf (const char *dname)
+{
+#ifdef BUILD_WITH_KEYBOXD
+ estream_t fp;
+ char *fcommon;
+
+ fcommon = make_filename (dname, "common.conf", NULL);
+ fp = es_fopen (fcommon, "wx,mode=-rw-r");
+ if (!fp)
+ {
+ log_info (_("error creating '%s': %s\n"), fcommon,
+ gpg_strerror (gpg_error_from_syserror ()));
+ }
+ else
+ {
+ if (es_fputs ("use-keyboxd\n", fp) == EOF)
+ {
+ log_info (_("error writing to '%s': %s\n"), fcommon,
+ gpg_strerror (es_ferror (fp)
+ ? gpg_error_from_syserror ()
+ : gpg_error (GPG_ERR_EOF)));
+ es_fclose (fp);
+ }
+ else if (es_fclose (fp))
+ {
+ log_info (_("error closing '%s': %s\n"), fcommon,
+ gpg_strerror (gpg_error_from_syserror ()));
+ }
+ }
+#endif /* BUILD_WITH_KEYBOXD */
+}
+
/* Check whether DIR is the default homedir. */
static int
@@ -259,7 +295,9 @@ standard_homedir (void)
/* Try to create the directory if it does not yet exists. */
if (gnupg_access (dir, F_OK))
- gnupg_mkdir (dir, "-rwx");
+ if (!gnupg_mkdir (dir, "-rwx"))
+ create_common_conf (dir);
+
}
else
dir = GNUPG_DEFAULT_HOMEDIR;
@@ -791,39 +829,9 @@ gnupg_maybe_make_homedir (const char *fname, int quiet)
fname, strerror(errno) );
else
{
- estream_t fp;
- char *fcommon;
-
if (!quiet )
log_info ( _("directory '%s' created\n"), fname );
-
-#ifdef BUILD_WITH_KEYBOXD
- /* A new default homedir has been created. Now create a
- * common.conf. */
- fcommon = make_filename (fname, "common.conf", NULL);
- fp = es_fopen (fcommon, "wx,mode=-rw-r");
- if (!fp)
- {
- log_info (_("error creating '%s': %s\n"), fcommon,
- gpg_strerror (gpg_error_from_syserror ()));
- }
- else
- {
- if (es_fputs ("use-keyboxd\n", fp) == EOF)
- {
- log_info (_("error writing to '%s': %s\n"), fcommon,
- gpg_strerror (es_ferror (fp)
- ? gpg_error_from_syserror ()
- : gpg_error (GPG_ERR_EOF)));
- es_fclose (fp);
- }
- else if (es_fclose (fp))
- {
- log_info (_("error closing '%s': %s\n"), fcommon,
- gpg_strerror (gpg_error_from_syserror ()));
- }
- }
-#endif /* BUILD_WITH_KEYBOXD */
+ create_common_conf (fname);
}
}
}
@@ -1657,6 +1665,9 @@ gnupg_module_name (int which)
case GNUPG_MODULE_NAME_CARD:
X(bindir, "tools", "gpg-card");
+ case GNUPG_MODULE_NAME_GPGTAR:
+ X(bindir, "tools", "gpgtar");
+
default:
BUG ();
}
diff --git a/common/sexputil.c b/common/sexputil.c
index 29fe508b6..c7471be85 100644
--- a/common/sexputil.c
+++ b/common/sexputil.c
@@ -614,7 +614,7 @@ get_ecc_q_from_canon_sexp (const unsigned char *keydata, size_t keydatalen,
size_t buflen, toklen;
int depth, last_depth1, last_depth2;
const unsigned char *ecc_q = NULL;
- size_t ecc_q_len;
+ size_t ecc_q_len = 0;
*r_q = NULL;
*r_qlen = 0;
diff --git a/common/util.h b/common/util.h
index d80e4fb25..aa24e39e6 100644
--- a/common/util.h
+++ b/common/util.h
@@ -298,6 +298,7 @@ char *_gnupg_socketdir_internal (int skip_checks, unsigned *r_info);
#define GNUPG_MODULE_NAME_KEYBOXD 13
#define GNUPG_MODULE_NAME_TPM2DAEMON 14
#define GNUPG_MODULE_NAME_CARD 15
+#define GNUPG_MODULE_NAME_GPGTAR 16
const char *gnupg_module_name (int which);
void gnupg_module_name_flush_some (void);
void gnupg_set_builddir (const char *newdir);
diff --git a/configure.ac b/configure.ac
index c31ae026a..24448c157 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,7 +29,7 @@ min_automake_version="1.16.3"
m4_define([mym4_package],[gnupg])
m4_define([mym4_major], [2])
m4_define([mym4_minor], [4])
-m4_define([mym4_micro], [1])
+m4_define([mym4_micro], [2])
# To start a new development series, i.e a new major or minor number
# you need to mark an arbitrary commit before the first beta release
diff --git a/dirmngr/crlcache.h b/dirmngr/crlcache.h
index 375943462..9cc063aff 100644
--- a/dirmngr/crlcache.h
+++ b/dirmngr/crlcache.h
@@ -70,9 +70,9 @@ gpg_error_t crl_cache_reload_crl (ctrl_t ctrl, ksba_cert_t cert);
/*-- fakecrl.c --*/
-crl_cache_result_t fakecrl_isvalid (ctrl_t ctrl,
- const char *issuer_hash,
- const char *cert_id);
+gpg_error_t fakecrl_isvalid (ctrl_t ctrl,
+ const char *issuer_hash,
+ const char *cert_id);
diff --git a/dirmngr/http.c b/dirmngr/http.c
index 20f71f61b..b4c501736 100644
--- a/dirmngr/http.c
+++ b/dirmngr/http.c
@@ -2555,7 +2555,7 @@ http_get_header_names (http_t hd)
* Parse the response from a server.
* Returns: Errorcode and sets some files in the handle
*/
-static gpg_err_code_t
+static gpg_error_t
parse_response (http_t hd)
{
char *line, *p, *p2;
@@ -2579,11 +2579,11 @@ parse_response (http_t hd)
len = es_read_line (hd->fp_read, &hd->buffer, &hd->buffer_size, &maxlen);
line = hd->buffer;
if (!line)
- return gpg_err_code_from_syserror (); /* Out of core. */
+ return gpg_error_from_syserror (); /* Out of core. */
if (!maxlen)
- return GPG_ERR_TRUNCATED; /* Line has been truncated. */
+ return gpg_error (GPG_ERR_TRUNCATED); /* Line has been truncated. */
if (!len)
- return GPG_ERR_EOF;
+ return gpg_error (GPG_ERR_EOF);
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
log_debug_string (line, "http.c:response:\n");
@@ -2623,10 +2623,10 @@ parse_response (http_t hd)
len = es_read_line (hd->fp_read, &hd->buffer, &hd->buffer_size, &maxlen);
line = hd->buffer;
if (!line)
- return gpg_err_code_from_syserror (); /* Out of core. */
+ return gpg_error_from_syserror (); /* Out of core. */
/* Note, that we can silently ignore truncated lines. */
if (!len)
- return GPG_ERR_EOF;
+ return gpg_error (GPG_ERR_EOF);
/* Trim line endings of empty lines. */
if ((*line == '\r' && line[1] == '\n') || *line == '\n')
*line = 0;
@@ -2637,7 +2637,7 @@ parse_response (http_t hd)
{
gpg_err_code_t ec = store_header (hd, line);
if (ec)
- return ec;
+ return gpg_error (ec);
}
}
while (len && *line);
diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi
index c8080c7c2..902de56f4 100644
--- a/doc/gpg-agent.texi
+++ b/doc/gpg-agent.texi
@@ -675,6 +675,39 @@ and allows the use of gpg-agent with the ssh implementation
@command{putty}. This is similar to the regular ssh-agent support but
makes use of Windows message queue as required by @command{putty}.
+
+The order in which keys are presented to ssh are:
+@table @code
+
+@item Negative Use-for-ssh values
+ If a key file has the attribute "Use-for-ssh" and its value is
+ negative, these keys are presented first to ssh. The negative
+ values are capped at -999 with -999 beeing lower ranked than -1.
+ These values can be used to prefer on-disk keys over keys taken
+ from active cards.
+
+@item Active cards
+ Active cards (inserted into a card reader or plugged in tokens)
+ are always tried; they are ordered by their serial numbers.
+
+@item Keys listed in the sshcontrol file
+ Non-disabled keys from the sshcontrol file are presented in the
+ order they appear in this file. Note that the sshcontrol file
+ is deprecated.
+
+@item Positive Use-for-ssh values
+ If a key file has the attribute "Use-for-ssh" and its value is
+ "yes", "true", or any positive number the key is presented in
+ the order of their values. "yes" and "true" have a value of 1;
+ other values are capped at 99999.
+
+@end table
+
+Editing the "Use-for-ssh" values can be done with an editor or using
+@command{gpg-connect-agent} and "KEYATTR" (Remember to append a colon
+to the key; i.e. use "Use-for-ssh:").
+
+
@anchor{option --ssh-fingerprint-digest}
@item --ssh-fingerprint-digest
@opindex ssh-fingerprint-digest
@@ -827,6 +860,9 @@ This file is used when support for the secure shell agent protocol has
been enabled (@pxref{option --enable-ssh-support}). Only keys present in
this file are used in the SSH protocol. You should backup this file.
+This file is deprecated in favor of the "Use-for-ssh" attribute in the
+key files.
+
The @command{ssh-add} tool may be used to add new entries to this file;
you may also add them manually. Comment lines, indicated by a leading
hash mark, as well as empty lines are ignored. An entry starts with
@@ -872,7 +908,6 @@ users start up with a working configuration. For existing users the
a small helper script is provided to create these files (@pxref{addgnupghome}).
-
@c
@c Agent Signals
@c
diff --git a/doc/gpg.texi b/doc/gpg.texi
index eb7c35cac..9fdabc743 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -399,10 +399,13 @@ this command may change with new releases.
@opindex edit-card
@itemx --card-edit
@opindex card-edit
-Present a menu to work with a smartcard. The subcommand "help" provides
-an overview on available commands. For a detailed description, please
-see the Card HOWTO at
-https://gnupg.org/documentation/howtos.html#GnuPG-cardHOWTO .
+Present a menu to work with a smartcard. The subcommand "help"
+provides an overview on available commands. For a detailed
+description, please see the Card HOWTO at
+https://gnupg.org/documentation/howtos.html#GnuPG-cardHOWTO . Please
+note that the command "openpgp" can be used to switch to the OpenPGP
+application of cards which by default are presenting another
+application (e.g. PIV).
@item --card-status
@opindex card-status
diff --git a/g10/call-agent.c b/g10/call-agent.c
index 66812e998..b0bccc0a5 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -1096,7 +1096,8 @@ agent_keytotpm (ctrl_t ctrl, const char *hexgrip)
*/
int
agent_keytocard (const char *hexgrip, int keyno, int force,
- const char *serialno, const char *timestamp)
+ const char *serialno, const char *timestamp,
+ const char *ecdh_param_str)
{
int rc;
char line[ASSUAN_LINELENGTH];
@@ -1104,8 +1105,9 @@ agent_keytocard (const char *hexgrip, int keyno, int force,
memset (&parm, 0, sizeof parm);
- snprintf (line, DIM(line), "KEYTOCARD %s%s %s OPENPGP.%d %s",
- force?"--force ": "", hexgrip, serialno, keyno, timestamp);
+ snprintf (line, DIM(line), "KEYTOCARD %s%s %s OPENPGP.%d %s%s%s",
+ force?"--force ": "", hexgrip, serialno, keyno, timestamp,
+ ecdh_param_str? " ":"", ecdh_param_str? ecdh_param_str:"");
rc = start_agent (NULL, 1);
if (rc)
@@ -1700,6 +1702,30 @@ agent_scd_cardlist (strlist_t *result)
}
+/* Make the app APPNAME the one on the card. This is sometimes
+ * required to make sure no other process has switched a card to
+ * another application. The only useful APPNAME is "openpgp". */
+gpg_error_t
+agent_scd_switchapp (const char *appname)
+{
+ int err;
+ char line[ASSUAN_LINELENGTH];
+
+ if (appname && !*appname)
+ appname = NULL;
+
+ err = start_agent (NULL, (1 | FLAG_FOR_CARD_SUPPRESS_ERRORS));
+ if (err)
+ return err;
+
+ snprintf (line, DIM(line), "SCD SWITCHAPP --%s%s",
+ appname? " ":"", appname? appname:"");
+ return assuan_transact (agent_ctx, line,
+ NULL, NULL, NULL, NULL,
+ NULL, NULL);
+}
+
+
struct card_keyinfo_parm_s {
int error;
diff --git a/g10/call-agent.h b/g10/call-agent.h
index a3f234ade..45af95422 100644
--- a/g10/call-agent.h
+++ b/g10/call-agent.h
@@ -108,6 +108,9 @@ gpg_error_t agent_scd_keypairinfo (ctrl_t ctrl, const char *keyref,
/* Return list of cards. */
int agent_scd_cardlist (strlist_t *result);
+/* Switch/assure a certain application. */
+gpg_error_t agent_scd_switchapp (const char *appname);
+
/* Free a keypair info list. */
void free_keypair_info (keypair_info_t l);
@@ -132,7 +135,8 @@ int agent_keytotpm (ctrl_t ctrl, const char *hexgrip);
/* Send the KEYTOCARD command. */
int agent_keytocard (const char *hexgrip, int keyno, int force,
- const char *serialno, const char *timestamp);
+ const char *serialno, const char *timestamp,
+ const char *ecdh_param_str);
/* Send a SETATTR command to the SCdaemon. */
gpg_error_t agent_scd_setattr (const char *name,
diff --git a/g10/card-util.c b/g10/card-util.c
index 6451b31e7..d680c4d0a 100644
--- a/g10/card-util.c
+++ b/g10/card-util.c
@@ -705,6 +705,14 @@ current_card_status (ctrl_t ctrl, estream_t fp,
}
else
tty_fprintf (fp, "[none]\n");
+
+ if (!info.manufacturer_name)
+ {
+ tty_fprintf (fp, "\n");
+ tty_fprintf (fp, _("Please try command \"%s\""
+ " if the listing does not look correct\n"),
+ "openpgp");
+ }
}
release_kbnode (keyblock);
@@ -1289,6 +1297,7 @@ get_info_for_key_operation (struct agent_card_info_s *info)
int rc;
memset (info, 0, sizeof *info);
+ agent_scd_switchapp ("openpgp");
rc = agent_scd_getattr ("SERIALNO", info);
if (rc || !info->serialno || strncmp (info->serialno, "D27600012401", 12)
|| strlen (info->serialno) != 32 )
@@ -1796,8 +1805,9 @@ card_store_subkey (KBNODE node, int use, strlist_t *processed_keys)
int keyno;
PKT_public_key *pk;
gpg_error_t err;
- char *hexgrip;
+ char *hexgrip = NULL;
int rc;
+ char *ecdh_param_str = NULL;
gnupg_isotime_t timebuf;
log_assert (node->pkt->pkttype == PKT_PUBLIC_KEY
@@ -1871,8 +1881,19 @@ card_store_subkey (KBNODE node, int use, strlist_t *processed_keys)
goto leave;
epoch2isotime (timebuf, (time_t)pk->timestamp);
- rc = agent_keytocard (hexgrip, keyno, rc, info.serialno, timebuf);
+ if (pk->pubkey_algo == PUBKEY_ALGO_ECDH)
+ {
+ ecdh_param_str = ecdh_param_str_from_pk (pk);
+ if (!ecdh_param_str)
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ }
+
+ rc = agent_keytocard (hexgrip, keyno, rc, info.serialno,
+ timebuf, ecdh_param_str);
if (rc)
log_error (_("KEYTOCARD failed: %s\n"), gpg_strerror (rc));
else
@@ -1881,9 +1902,10 @@ card_store_subkey (KBNODE node, int use, strlist_t *processed_keys)
if (processed_keys)
add_to_strlist (processed_keys, hexgrip);
}
- xfree (hexgrip);
leave:
+ xfree (hexgrip);
+ xfree (ecdh_param_str);
agent_release_card_info (&info);
return okay;
}
@@ -2242,7 +2264,7 @@ enum cmdids
cmdNAME, cmdURL, cmdFETCH, cmdLOGIN, cmdLANG, cmdSEX, cmdCAFPR,
cmdFORCESIG, cmdGENERATE, cmdPASSWD, cmdPRIVATEDO, cmdWRITECERT,
cmdREADCERT, cmdUNBLOCK, cmdFACTORYRESET, cmdKDFSETUP,
- cmdKEYATTR, cmdUIF,
+ cmdKEYATTR, cmdUIF, cmdOPENPGP,
cmdINVCMD
};
@@ -2280,6 +2302,7 @@ static struct
N_("setup KDF for PIN authentication (on/single/off)")},
{ "key-attr", cmdKEYATTR, 1, N_("change the key attribute")},
{ "uif", cmdUIF, 1, N_("change the User Interaction Flag")},
+ { "openpgp", cmdOPENPGP, 0, N_("switch to the OpenPGP app")},
/* Note, that we do not announce these command yet. */
{ "privatedo", cmdPRIVATEDO, 0, NULL },
{ "readcert", cmdREADCERT, 0, NULL },
@@ -2579,6 +2602,11 @@ card_edit (ctrl_t ctrl, strlist_t commands)
uif (arg_number, arg_rest);
break;
+ case cmdOPENPGP:
+ agent_scd_switchapp ("openpgp");
+ redisplay = 1;
+ break;
+
case cmdQUIT:
goto leave;
diff --git a/g10/import.c b/g10/import.c
index 1ed40a63c..5e44942e7 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -2955,9 +2955,19 @@ do_transfer (ctrl_t ctrl, kbnode_t keyblock, PKT_public_key *pk,
{
gpg_error_t err;
struct import_stats_s subkey_stats = {0};
+ int force = 0;
+ int already_exist = agent_probe_secret_key (ctrl, pk);
+
+ if (already_exist == 2 || already_exist == 4)
+ {
+ if (!opt.quiet)
+ log_info (_("key %s: card reference is overridden by key material\n"),
+ keystr_from_pk (pk));
+ force = 1;
+ }
err = transfer_secret_keys (ctrl, &subkey_stats, keyblock,
- batch, 0, only_marked);
+ batch, force, only_marked);
if (gpg_err_code (err) == GPG_ERR_NOT_PROCESSED)
{
/* TRANSLATORS: For a smartcard, each private key on host has a
diff --git a/g10/keydb.h b/g10/keydb.h
index 9323e3137..1a66d664e 100644
--- a/g10/keydb.h
+++ b/g10/keydb.h
@@ -576,6 +576,7 @@ char *format_hexfingerprint (const char *fingerprint,
char *buffer, size_t buflen);
gpg_error_t keygrip_from_pk (PKT_public_key *pk, unsigned char *array);
gpg_error_t hexkeygrip_from_pk (PKT_public_key *pk, char **r_grip);
+char *ecdh_param_str_from_pk (PKT_public_key *pk);
/*-- kbnode.c --*/
diff --git a/g10/keygen.c b/g10/keygen.c
index c97783124..7f54f7da0 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -5327,12 +5327,20 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk,
char *cache_nonce = NULL;
void *kek = NULL;
size_t keklen;
+ char *ecdh_param_str = NULL;
sk = copy_public_key (NULL, sub_psk);
if (!sk)
return gpg_error_from_syserror ();
epoch2isotime (timestamp, (time_t)sk->timestamp);
+ if (sk->pubkey_algo == PUBKEY_ALGO_ECDH)
+ {
+ ecdh_param_str = ecdh_param_str_from_pk (sk);
+ if (!ecdh_param_str)
+ return gpg_error_from_syserror ();
+ }
+
err = hexkeygrip_from_pk (sk, &hexgrip);
if (err)
goto leave;
@@ -5345,7 +5353,8 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk,
goto leave;
}
- rc = agent_keytocard (hexgrip, 2, 1, info.serialno, timestamp);
+ rc = agent_keytocard (hexgrip, 2, 1, info.serialno,
+ timestamp, ecdh_param_str);
xfree (info.serialno);
if (rc)
{
@@ -5388,6 +5397,7 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk,
agent_scd_learn (NULL, 1);
leave:
+ xfree (ecdh_param_str);
xfree (cache_nonce);
gcry_cipher_close (cipherhd);
xfree (kek);
diff --git a/g10/keyid.c b/g10/keyid.c
index ca6564c5c..9191fec92 100644
--- a/g10/keyid.c
+++ b/g10/keyid.c
@@ -1141,3 +1141,25 @@ hexkeygrip_from_pk (PKT_public_key *pk, char **r_grip)
}
return err;
}
+
+
+/* Return a hexfied malloced string of the ECDH parameters for an ECDH
+ * key from the public key PK. Returns NULL on error. */
+char *
+ecdh_param_str_from_pk (PKT_public_key *pk)
+{
+ const unsigned char *s;
+ unsigned int n;
+
+ if (!pk
+ || pk->pubkey_algo != PUBKEY_ALGO_ECDH
+ || !gcry_mpi_get_flag (pk->pkey[2], GCRYMPI_FLAG_OPAQUE)
+ || !(s = gcry_mpi_get_opaque (pk->pkey[2], &n)) || !n)
+ {
+ gpg_err_set_errno (EINVAL);
+ return NULL; /* Invalid parameter */
+ }
+
+ n = (n+7)/8;
+ return bin2hex (s, n, NULL);
+}
diff --git a/po/ca.po b/po/ca.po
index 831e84602..3add69bb1 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -142,6 +142,10 @@ msgstr "la contrasenya és errònia"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "la contrasenya és errònia"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1299,6 +1303,15 @@ msgstr "s'està escrivint la clau secreta a «%s»\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "error en crear «%s»: %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "error en la lectura de «%s»: %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "armadura: %s\n"
@@ -1523,6 +1536,10 @@ msgstr "no forçat"
msgid "forced"
msgstr "forçat"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1803,6 +1820,9 @@ msgstr "canvia la confiança"
msgid "change the User Interaction Flag"
msgstr "canvia la confiança"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -2057,11 +2077,6 @@ msgstr "clau %08lX: clau d'estil PGP 2.x - es descarta\n"
msgid "WARNING: nothing exported\n"
msgstr "AVÍS: no s'ha exportat res\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "error en crear «%s»: %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[No s'ha trobat l'id d'usuari]"
@@ -2527,6 +2542,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "No hi ha cap signatura corresponent en l'anell secret\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "mostra en quin anell de claus està una clau llistada"
@@ -3164,6 +3183,10 @@ msgstr "es descarta: la clau secreta ja és present\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "error mentre s'enviava a «%s»: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3728,6 +3751,9 @@ msgstr "esborra una clau secundària"
msgid "add a revocation key"
msgstr "afegeix una clau de revocació"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr ""
@@ -3807,6 +3833,10 @@ msgstr "La clau secreta està disponible.\n"
msgid "Secret subkeys are available.\n"
msgstr "La clau secreta està disponible.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Cal la clau secreta per a fer açò.\n"
@@ -3929,6 +3959,10 @@ msgstr "Voleu desar els canvis? "
msgid "Quit without saving? (y/N) "
msgstr "Voleu eixir sense desar? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "La clau no ha canviat, per tant no cal actualització.\n"
@@ -4183,6 +4217,18 @@ msgid ""
msgstr ""
"Esteu segur que voleu nominar aquesta clau com a revocador designat? (s/N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(a no ser que especifiqueu la clau per la empremta digital)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "l'ID d'usuari «%s» ja està revocat\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -6042,10 +6088,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "no podeu usar %s mentre esteu en mode %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "AVÍS: conflicte de signatures digest en el missatge\n"
@@ -8247,10 +8289,6 @@ msgstr ""
msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "no es pot crear el directori «%s»: %s\n"
-#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "error en la lectura de «%s»: %s\n"
-
# No em passe! ;) ivb
#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
@@ -10156,10 +10194,6 @@ msgstr ""
#~ msgstr "canvia entre el llistat de claus secretes i públiques"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "la contrasenya és errònia"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr ""
#~ "AVÍS: les opcions en «%s» encara no estan actives durant aquesta "
diff --git a/po/cs.po b/po/cs.po
index df6a29a48..d72bd673f 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -153,6 +153,11 @@ msgstr "Heslo:"
msgid "does not match - try again"
msgstr "neshodují se – zkuste to znovu"
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "Heslo"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1218,6 +1223,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s je příliš stará (potřeba %s, přítomna %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "chyba při vytváření „%s“: %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "chyba při uzavírání „%s“: %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "ASCII kódování: %s\n"
@@ -1420,6 +1433,10 @@ msgstr "není vyžadováno"
msgid "forced"
msgstr "vyžadováno"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Chyba: V současné verzi je povolenou pouze plain ASCII.\n"
@@ -1683,6 +1700,9 @@ msgstr "změní atribut klíče"
msgid "change the User Interaction Flag"
msgstr "změní příznak interakce uživatele (UIF)"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/karta> "
@@ -1916,10 +1936,6 @@ msgstr "klíč %s: PGP 2.x klíč – přeskočeno\n"
msgid "WARNING: nothing exported\n"
msgstr "POZOR: nebylo nic vyexportováno\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "chyba při vytváření „%s“: %s\n"
-
msgid "[User ID not found]"
msgstr "[ID uživatele nenalezeno]"
@@ -2330,6 +2346,11 @@ msgstr "ukazovat odvolané a prošlé ID uživatelů při výpisu klíčů"
msgid "show revoked and expired subkeys in key listings"
msgstr "ukazovat odvolané a prošlé podklíče při výpisu klíčů"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "ukazovat data expirace během výpisu podpisů"
+
msgid "show the keyring name in key listings"
msgstr "ukazovat název souboru s klíči při výpisu klíčů"
@@ -2945,6 +2966,10 @@ msgstr "klíč %s: tajný klíč již existuje\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "klíč %s: chyba při odesílání dat agentovi: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3460,6 +3485,11 @@ msgstr "smazat vybrané podklíče"
msgid "add a revocation key"
msgstr "přidat revokační klíč"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Dešifrování dat uspělo"
+
msgid "delete signatures from the selected user IDs"
msgstr "smazat podpisy z vybraných uživatelských ID"
@@ -3521,6 +3551,12 @@ msgstr "Tajný klíč je dostupný.\n"
msgid "Secret subkeys are available.\n"
msgstr "Tajné podklíče jsou dostupné.\n"
+#, fuzzy
+#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr "Poznámka: Smazána bude pouze tajná část zobrazeného podklíče.\n"
+
msgid "Need the secret key to do this.\n"
msgstr "Pro provedení této operace je potřeba tajný klíč.\n"
@@ -3629,6 +3665,12 @@ msgstr "Uložit změny? (a/N) "
msgid "Quit without saving? (y/N) "
msgstr "Ukončit bez uložení? (a/N) "
+# The first argument is a "key" or "subkey"
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "smazání tajného %s se nezdařilo: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Klíč nebyl změněn, takže není potřeba jej aktualizovat.\n"
@@ -3861,6 +3903,19 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Jste si jistí, že tento klíč chcete pověřit odvoláním? (a/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(dokud neurčíte klíč jeho otiskem)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Podklíč %s je již odvolán.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5623,10 +5678,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "klíč %s se nesmí používat v režimu %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr "přesto se pokračuje v ověřování kvůli volbě %s\n"
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "POZOR: konflikt hashe podpisu ve zprávě\n"
@@ -7781,10 +7832,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "vytvoření dočasného kešového dir souboru „%s“ selhalo: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "chyba při uzavírání „%s“: %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "nelze vypočítat haš „%s“: %s\n"
@@ -8944,6 +8991,9 @@ msgstr "Příkazy pro správu Yubikey"
msgid "manage the command history"
msgstr "spravuje historii příkazů"
+#~ msgid "continuing verification anyway due to option %s\n"
+#~ msgstr "přesto se pokračuje v ověřování kvůli volbě %s\n"
+
#~ msgid "selected AEAD algorithm is invalid\n"
#~ msgstr "vybraný algoritmus AEAD je neplatný\n"
@@ -9633,9 +9683,6 @@ msgstr "spravuje historii příkazů"
#~ msgid "Key Acquirer"
#~ msgstr "Stahovač klíčů"
-#~ msgid "Passphrase"
-#~ msgstr "Heslo"
-
#~ msgid "name of socket too long\n"
#~ msgstr "název socketu je příliš dlouhý\n"
diff --git a/po/da.po b/po/da.po
index e8bb98213..404d79eb4 100644
--- a/po/da.po
+++ b/po/da.po
@@ -151,6 +151,11 @@ msgstr "Adgangsfrase:"
msgid "does not match - try again"
msgstr "matcher ikke - prøv igen"
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "Adgangsfrase"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1325,6 +1330,16 @@ msgstr "venter på lås %s ...\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr "%s er for gammel (kræver %s, har %s)\n"
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "fejl ved oprettelse af »%s«: %s\n"
+
+#, fuzzy, c-format
+#| msgid "error closing %s: %s\n"
+msgid "error closing '%s': %s\n"
+msgstr "fejl ved lukning af %s: %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "panser: %s\n"
@@ -1545,6 +1560,10 @@ msgstr "ikke tvunget"
msgid "forced"
msgstr "tvunget"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Fejl: Kun ren ASCII er tilladt i øjeblikket.\n"
@@ -1841,6 +1860,9 @@ msgstr "ændr ejertroværdigheden"
msgid "change the User Interaction Flag"
msgstr "ændr ejertroværdigheden"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -2090,11 +2112,6 @@ msgstr "nøgle %s: nøgle i PGP 2.x-stil - udeladt\n"
msgid "WARNING: nothing exported\n"
msgstr "ADVARSEL: intet blev eksporteret\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "fejl ved oprettelse af »%s«: %s\n"
-
msgid "[User ID not found]"
msgstr "[Bruger-id blev ikke fundet]"
@@ -2564,6 +2581,11 @@ msgstr "vis tilbagekaldte og udløbne bruger-id'er i nøglevisninger"
msgid "show revoked and expired subkeys in key listings"
msgstr "vis tilbagekaldte og udløbne undernøgler i nøglevisninger"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "vis udløbsdatoer under underskriftvisninger"
+
msgid "show the keyring name in key listings"
msgstr "vis nøgleringsnavnet i nøglevisninger"
@@ -3210,6 +3232,10 @@ msgstr "udelod: hemmelig nøgle er allerede til stede\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "fejl under afsendelse af %s-kommando: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3750,6 +3776,11 @@ msgstr "slet valgte undernøgler"
msgid "add a revocation key"
msgstr "tilføj en tilbagekaldsnøgle"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Datadekryptering lykkedes"
+
msgid "delete signatures from the selected user IDs"
msgstr "slet underskrifter fra de valgte bruger-id'er"
@@ -3814,6 +3845,10 @@ msgstr "Hemmelig nøgle er tilgængelig.\n"
msgid "Secret subkeys are available.\n"
msgstr "Hemmelig nøgle er tilgængelig.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Har brug for den hemmelige nøgle for dette.\n"
@@ -3937,6 +3972,11 @@ msgstr "Gem ændringer? (j/N) "
msgid "Quit without saving? (y/N) "
msgstr "Afslut uden at gemme? (j/N) "
+#, fuzzy, c-format
+#| msgid "deleting certificate \"%s\" failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "sletning af certifikat »%s« mislykkedes: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Nøgle ikke ændret så ingen opdatering krævet.\n"
@@ -4192,6 +4232,19 @@ msgstr ""
"Er du sikker på, at du ønsker at udpege denne nøgle som en dedikeret "
"tilbagekalder? (j/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(med mindre du angiver nøglen med fingeraftryk)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Undernøgle %s er allerede tilbagekaldt.\n"
+
#, fuzzy
#| msgid ""
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
@@ -6060,10 +6113,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "du kan ikke bruge %s i tilstanden %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "ADVARSEL: konflikt for underskriftssammendrag i besked\n"
@@ -8324,11 +8373,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "kunne ikke oprette midlertidig fil »%s«: %s\n"
#, fuzzy, c-format
-#| msgid "error closing %s: %s\n"
-msgid "error closing '%s': %s\n"
-msgstr "fejl ved lukning af %s: %s\n"
-
-#, fuzzy, c-format
#| msgid "can't access `%s': %s\n"
msgid "can't hash '%s': %s\n"
msgstr "kan ikke tilgå »%s«: %s\n"
@@ -10484,9 +10528,6 @@ msgstr ""
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "skift mellem hemmelig og offentlig nøglevisning"
-#~ msgid "Passphrase"
-#~ msgstr "Adgangsfrase"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr "brug midlertidige filer til at sende data til nøgleserverhjælpere"
diff --git a/po/de.po b/po/de.po
index eff9b9634..64e444d01 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,11 +7,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gnupg-2.3.0\n"
+"Project-Id-Version: gnupg-2.4.1\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"PO-Revision-Date: 2023-03-21 09:31+0100\n"
"Last-Translator: Werner Koch <[email protected]>\n"
-"Language-Team: German <[email protected]>\n"
+"Language-Team: German\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -127,6 +127,9 @@ msgstr "Passwort:"
msgid "does not match - try again"
msgstr "Keine Übereinstimmung - bitte nochmal versuchen."
+msgid "Passphrases match."
+msgstr "Passwort stimmt."
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1211,6 +1214,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "Die Bibliothek %s ist nicht aktuell (benötige %s, habe %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "Fehler beim Erstellen von `%s': %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "Fehler beim Schließen von `%s': %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "ASCII-Hülle: %s\n"
@@ -1415,6 +1426,11 @@ msgstr "nicht zwingend"
msgid "forced"
msgstr "zwingend"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+"Falls das Listing nicht korrekt erscheint, geben Sie bitte \"%s\" ein\n"
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Fehler: Nur reines ASCII ist derzeit erlaubt.\n"
@@ -1682,6 +1698,9 @@ msgstr "Das Schlüsselattribut ändern"
msgid "change the User Interaction Flag"
msgstr "Das User Interaction Flag (UIF) ändern"
+msgid "switch to the OpenPGP app"
+msgstr "Auf die OpenPGP Anwendung umschalten"
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -1919,10 +1938,6 @@ msgstr "Schlüssel %s: PGP 2.x-artiger Schlüssel - übersprungen\n"
msgid "WARNING: nothing exported\n"
msgstr "WARNUNG: Nichts exportiert\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "Fehler beim Erstellen von `%s': %s\n"
-
msgid "[User ID not found]"
msgstr "[User-ID nicht gefunden]"
@@ -2336,6 +2351,9 @@ msgstr "Zeige widerrufene und verfallene User-ID in den Schlüssellisten"
msgid "show revoked and expired subkeys in key listings"
msgstr "Zeige widerrufene und verfallene Unterschlüssel in den Schlüssellisten"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Auch Signaturen mit ungültigen Algorithmen anlisten"
+
msgid "show the keyring name in key listings"
msgstr "Anzeigen des Schlüsselbundes, in dem ein Schlüssel drin ist"
@@ -2957,6 +2975,11 @@ msgstr "Schlüssel %s: geheimer Schlüssel bereits vorhanden\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "Schlüssel %s: Fehler beim Senden zum gpg-agent: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+"Schlüssel %s: Der \"stub\" wurde durch einen realen Schlüssel ersetzt\n"
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3482,6 +3505,9 @@ msgstr "ausgewählte Unterschlüssel entfernen"
msgid "add a revocation key"
msgstr "Einen Widerrufschlüssel hinzufügen"
+msgid "add an additional decryption subkey"
+msgstr "Einen ADSK hinzufügen"
+
msgid "delete signatures from the selected user IDs"
msgstr "Beglaubigungen der ausgewählten User-IDs entfernen"
@@ -3547,6 +3573,12 @@ msgstr "Geheimer Schlüssel ist vorhanden.\n"
msgid "Secret subkeys are available.\n"
msgstr "Geheimer Unterschlüssel ist vorhanden.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+"Hinweis: Die lokale Kopie des geheimen Schlüssels wird nur nach \"save\" "
+"gelöscht.\n"
+
msgid "Need the secret key to do this.\n"
msgstr "Hierzu wird der geheime Schlüssel benötigt.\n"
@@ -3661,6 +3693,10 @@ msgid "Quit without saving? (y/N) "
msgstr "Beenden ohne zu speichern? (j/N) "
#, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "Fehler beim Löschen der Kopie des geheimen Schlüssels: %s\n"
+
+#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Schlüssel ist nicht geändert worden, also ist kein Speichern nötig.\n"
@@ -3900,6 +3936,17 @@ msgstr ""
"Möchten Sie diesen Schlüssel wirklich als vorgesehenen Widerrufer festlegen? "
"(j/N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr "Geben Sie den Fingerprint des ADSK an: "
+
+#, c-format
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "Haben Sie den Fingerprint des Unterschlüssels angegeben?\n"
+
+#, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Den Schlüssel \"%s\" gibt es bereits in diesem Schlüsselblock\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5704,10 +5751,6 @@ msgstr ""
"Schlüssel \"%s\" darf zum Signieren im %s Modus nicht verwendet werden.\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr "Die Prüfung wird aufgrund der Option %s weiter durchgeführt\n"
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "WARNUNG: Widersprechende Hashverfahren in der signierten Botschaft\n"
@@ -7892,10 +7935,6 @@ msgstr ""
"werden: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "Fehler beim Schließen von `%s': %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "Hashwert von `%s' kann nicht gebildet werden: %s\n"
@@ -9068,6 +9107,9 @@ msgstr "Verwaltungskommandos für Yubikeys"
msgid "manage the command history"
msgstr "Verwaltung der Kommandohistorie"
+#~ msgid "continuing verification anyway due to option %s\n"
+#~ msgstr "Die Prüfung wird aufgrund der Option %s weiter durchgeführt\n"
+
#~ msgid "selected AEAD algorithm is invalid\n"
#~ msgstr "Das ausgewählte AEAD-Verfahren ist ungültig\n"
@@ -10030,9 +10072,6 @@ msgstr "Verwaltung der Kommandohistorie"
#~ msgstr ""
#~ "Umschalten zwischen dem Auflisten geheimer und öffentlicher Schlüssel"
-#~ msgid "Passphrase"
-#~ msgstr "Passwort"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr ""
#~ "verwende temporäre Dateien, um Daten an die Schlüsselserverhilfsprogramme "
diff --git a/po/el.po b/po/el.po
index ce190ea7c..a45232fd8 100644
--- a/po/el.po
+++ b/po/el.po
@@ -123,6 +123,10 @@ msgstr "κακή φράση κλειδί"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "κακή φράση κλειδί"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1238,6 +1242,15 @@ msgstr "εγγραφή του μυστικού κλειδιού στο `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "σφάλμα κατά τη δημιουργία του `%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "σφάλμα κατά την ανάγνωση του `%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "θωράκιση: %s\n"
@@ -1453,6 +1466,10 @@ msgstr "μη επεξεργασμένο"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1732,6 +1749,9 @@ msgstr "αλλαγή της εμπιστοσύνης ιδιοκτήτη"
msgid "change the User Interaction Flag"
msgstr "αλλαγή της εμπιστοσύνης ιδιοκτήτη"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1988,11 +2008,6 @@ msgstr "κλειδί %08lX: κλειδί τύπου PGP 2.x - παραλείφ�
msgid "WARNING: nothing exported\n"
msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: δεν έγινε καμμία εξαγωγή\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "σφάλμα κατά τη δημιουργία του `%s': %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[User id δεν βρέθηκε]"
@@ -2446,6 +2461,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Δεν βρέθηκε αντίστοιχη υπογραφή στη μυστική κλειδοθήκη\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "απεικόνιση της κλειδοθήκης στην οποία αναφέρετε το κλειδί"
@@ -3081,6 +3100,10 @@ msgstr "παραλείφθηκε: μυστικό κλειδί ήδη παρών\
msgid "key %s: error sending to agent: %s\n"
msgstr "σφάλμα στη αποστολή προς το `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3632,6 +3655,9 @@ msgstr "διαγραφή ενός δευτερεύοντος κλειδιού"
msgid "add a revocation key"
msgstr "προσθήκη ενός κλειδιού ανάκλησης"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr ""
@@ -3709,6 +3735,10 @@ msgstr "Το μυστικό κλειδί είναι διαθέσιμο.\n"
msgid "Secret subkeys are available.\n"
msgstr "Το μυστικό κλειδί είναι διαθέσιμο.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Απαιτείται το μυστικό κλειδί για να γίνει αυτό.\n"
@@ -3831,6 +3861,10 @@ msgstr "Αποθήκευση των αλλαγών; "
msgid "Quit without saving? (y/N) "
msgstr "Τερματισμός χωρίς αποθήκευση; "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "διαγραφή block κλειδιών απέτυχε: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Το κλειδί δεν άλλαξε οπότε δεν χρειάζεται ενημέρωση.\n"
@@ -4083,6 +4117,18 @@ msgstr ""
"Είστε σίγουροι ότι θέλετε να ορίσετε ένα κλειδί σαν διορισμένο ανακλητή; (y/"
"N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(εκτός εάν προσδιορίσετε ένα κλειδί από αποτύπωμα)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "το user ID \"%s\" έχει ήδη ανακληθεί\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5922,10 +5968,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "απαγορεύετε η χρήση του %s στην κατάσταση %s.\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: σύγκρουση υπογραφής περίληψης στο μήνυμα\n"
@@ -8086,10 +8128,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "αδυναμία δημιουργίας καταλόγου `%s': %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "σφάλμα κατά την ανάγνωση του `%s': %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "αδυναμία κλεισίματος του `%s': %s\n"
@@ -9962,10 +10000,6 @@ msgstr ""
#~ msgstr "αλλαγή μεταξύ της απεικόνισης μυστικού και δημόσιου κλειδιού"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "κακή φράση κλειδί"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr ""
#~ "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: οι επιλογες στο `%s' δεν είναι ενεργές σε αυτή την "
diff --git a/po/eo.po b/po/eo.po
index 8144ae10e..e9b007c41 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -123,6 +123,10 @@ msgstr "malbona pasfrazo"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "malbona pasfrazo"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1242,6 +1246,15 @@ msgstr "skribas sekretan ŝlosilon al '%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "eraro dum kreado de '%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "eraro dum legado de '%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "kiraso: %s\n"
@@ -1452,6 +1465,10 @@ msgstr "ne traktita"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1731,6 +1748,9 @@ msgstr "ŝanĝi la posedantofidon"
msgid "change the User Interaction Flag"
msgstr "ŝanĝi la posedantofidon"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1972,11 +1992,6 @@ msgstr "ŝlosilo %08lX: PGP-2.x-stila ŝlosilo - ignorita\n"
msgid "WARNING: nothing exported\n"
msgstr "AVERTO: nenio estis eksportita\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "eraro dum kreado de '%s': %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[Uzantidentigilo ne trovita]"
@@ -2427,6 +2442,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Mankas responda subskribo en sekreta ŝlosilaro\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "montri, en kiu ŝlosilaro estas listigita ŝlosilo"
@@ -3055,6 +3074,10 @@ msgstr "ignorita: sekreta ŝlosilo jam ĉeestas\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "eraro dum sendo al '%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3612,6 +3635,9 @@ msgstr "forviŝi flankan ŝlosilon"
msgid "add a revocation key"
msgstr "aldoni flankan ŝlosilon"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr "Ĉu vere aktualigi la preferojn por la elektitaj uzantidentigiloj? "
@@ -3686,6 +3712,10 @@ msgstr "Sekreta ŝlosilo estas havebla.\n"
msgid "Secret subkeys are available.\n"
msgstr "Sekreta ŝlosilo estas havebla.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Bezonas la sekretan ŝlosilon por fari tion.\n"
@@ -3808,6 +3838,10 @@ msgstr "Ĉu skribi ŝanĝojn? "
msgid "Quit without saving? (y/N) "
msgstr "Ĉu fini sen skribi ŝanĝojn? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "forviŝo de ŝlosilbloko malsukcesis: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Ŝlosilo ne ŝanĝita, do aktualigo ne necesas.\n"
@@ -4050,6 +4084,17 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Ĉu vi estas certa, ke vi ankoraŭ volas subskribi ĝin?\n"
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "malsukcesis doni komencajn valorojn al fido-datenaro: %s\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Uzantidentigilo \"%s\" estas revokita.\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5854,10 +5899,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "Tiu komando ne eblas en la reĝimo %s.\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr ""
@@ -7998,10 +8039,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "%s: ne povas krei dosierujon: %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "eraro dum legado de '%s': %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "ne povas fermi '%s': %s\n"
@@ -9838,10 +9875,6 @@ msgstr ""
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "de sekreta aŭ publika listo iri al la alia"
-#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "malbona pasfrazo"
-
#~ msgid "gpg-agent is not available in this session\n"
#~ msgstr "gpg-agent ne estas disponata en ĉi tiu sesio\n"
diff --git a/po/es.po b/po/es.po
index 41357a983..03e50d3ca 100644
--- a/po/es.po
+++ b/po/es.po
@@ -136,6 +136,20 @@ msgstr "Frase contraseña:"
msgid "does not match - try again"
msgstr "no coincide - reinténtelo"
+# ¿Por qué no frase de paso?
+# Porque todo el mundo sabe lo que es una contraseña
+# y una "frase de paso" no. Soy consciente de que se
+# traduce igual password y passphrase pero el contexto
+# permite saber de lo que se está hablando.
+# No sé, no sé.
+# ¿Por qué los ingleses entonces sí que saben lo que es un "passphrase"?
+# ¿Es que son más listos? :-)
+#
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "Frase contraseña"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1249,6 +1263,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s es demasiado antiguo (necesita %s, tiene %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "error al crear '%s': %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "error al cerrar '%s': %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "armadura: %s\n"
@@ -1459,6 +1481,10 @@ msgstr "no forzado"
msgid "forced"
msgstr "forzado"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Error: sólo se permite ASCII sin formato actualmente.\n"
@@ -1732,6 +1758,9 @@ msgstr "cambia valores de la clave"
msgid "change the User Interaction Flag"
msgstr "cambia valores de confianza"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/tarjeta> "
@@ -1967,10 +1996,6 @@ msgstr "clave %s: clave estilo PGP 2.x - omitida\n"
msgid "WARNING: nothing exported\n"
msgstr "ATENCIÓN: no se ha exportado nada\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "error al crear '%s': %s\n"
-
msgid "[User ID not found]"
msgstr "[ID de usuario no encontrado]"
@@ -2392,6 +2417,11 @@ msgstr "mostar IDs de usuario revocados y caducados al listar firmas"
msgid "show revoked and expired subkeys in key listings"
msgstr "mostrar subclaves revocadas y expiradas al listar claves"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "mostrar fechas de caducidad al listar firmas"
+
msgid "show the keyring name in key listings"
msgstr "mostrar nombre de los anillos de claves al listar claves"
@@ -3015,6 +3045,10 @@ msgstr "clave %s: clave secreta ya existe\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "clave %s: error enviando al agente: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3527,6 +3561,11 @@ msgstr "borrar clave secundaria"
msgid "add a revocation key"
msgstr "añadir una clave de revocación"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Datos descifrados correctamente"
+
msgid "delete signatures from the selected user IDs"
msgstr "borrar firmas de los ID seleccionados"
@@ -3587,6 +3626,10 @@ msgstr "Clave secreta disponible.\n"
msgid "Secret subkeys are available.\n"
msgstr "Subclaves secretas disponibles.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Se necesita la clave secreta para hacer esto.\n"
@@ -3698,6 +3741,11 @@ msgstr "¿Grabar cambios? (s/N) "
msgid "Quit without saving? (y/N) "
msgstr "¿Salir sin grabar? (s/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "ha fallado el borrado del secreto %s: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Clave sin cambios, no se necesita actualización.\n"
@@ -3934,6 +3982,19 @@ msgid ""
msgstr ""
"¿Está seguro de querer elegir esta clave como revocador designado? (s/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(excepto si especifica la clave dando su huella digital)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "La subclave %s ya ha sido revocada.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5744,10 +5805,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "no puede usar la clave %s para firmar en modo %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "AVISO: conflicto con el resumen de la firma del mensaje\n"
@@ -7898,10 +7955,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "no se puede crear el fichero de cache '%s': %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "error al cerrar '%s': %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "no se puede hacer el hash de '%s': %s\n"
@@ -9937,18 +9990,6 @@ msgstr ""
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "cambiar entre lista de claves secretas y públicas"
-# ¿Por qué no frase de paso?
-# Porque todo el mundo sabe lo que es una contraseña
-# y una "frase de paso" no. Soy consciente de que se
-# traduce igual password y passphrase pero el contexto
-# permite saber de lo que se está hablando.
-# No sé, no sé.
-# ¿Por qué los ingleses entonces sí que saben lo que es un "passphrase"?
-# ¿Es que son más listos? :-)
-#
-#~ msgid "Passphrase"
-#~ msgstr "Frase contraseña"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr ""
#~ "usar ficheros temporales para pasar datos a los ayudantes delservidor de "
diff --git a/po/et.po b/po/et.po
index a06ce408e..6c6f7bfbb 100644
--- a/po/et.po
+++ b/po/et.po
@@ -120,6 +120,10 @@ msgstr "halb parool"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "halb parool"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1235,6 +1239,15 @@ msgstr "kirjutan salajase võtme faili `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "viga `%s' loomisel: %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "viga `%s' lugemisel: %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "pakend: %s\n"
@@ -1449,6 +1462,10 @@ msgstr "ei töödeldud"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1728,6 +1745,9 @@ msgstr "muuda omaniku usaldust"
msgid "change the User Interaction Flag"
msgstr "muuda omaniku usaldust"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1978,11 +1998,6 @@ msgstr "võti %08lX: PGP 2.x stiilis võti - jätsin vahele\n"
msgid "WARNING: nothing exported\n"
msgstr "HOIATUS: midagi ei eksporditud\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "viga `%s' loomisel: %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[Kasutaja id puudub]"
@@ -2434,6 +2449,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Vastavat allkirja salajaste võtmete hoidlas pole\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "näita millisesse võtmehoidlasse näidatud võti kuulub"
@@ -3066,6 +3085,10 @@ msgstr "jätsin vahele: avalik võti on juba olemas\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "viga teate saatmisel serverile `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3608,6 +3631,9 @@ msgstr "kustuta sekundaarne võti"
msgid "add a revocation key"
msgstr "lisa tühistamise võti"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr "Kas uuendan tõesti kõik kasutaja ID-de seaded? "
@@ -3682,6 +3708,10 @@ msgstr "Salajane võti on kasutatav.\n"
msgid "Secret subkeys are available.\n"
msgstr "Salajane võti on kasutatav.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Selle tegamiseks on vaja salajast võtit.\n"
@@ -3803,6 +3833,10 @@ msgstr "Salvestan muutused? "
msgid "Quit without saving? (y/N) "
msgstr "Väljun salvestamata? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "võtmebloki kustutamine ebaõnnestus: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Võtit ei muudetud, seega pole uuendamist vaja.\n"
@@ -4047,6 +4081,18 @@ msgid ""
msgstr ""
"Olete kindel, et soovite seda võtit seada määratud tühistajaks? (j/E): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(kui te just ei määra võtit sõrmejäljega)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "kasutaja ID \"%s\" on juba tühistatud\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5863,10 +5909,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "%s ei ole moodis %s lubatud.\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "HOIATUS: allkirja lühend on teatega konfliktne\n"
@@ -8003,10 +8045,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "kataloogi `%s' ei õnnestu luua: %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "viga `%s' lugemisel: %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "`%s' ei õnnestu sulgeda: %s\n"
@@ -9870,10 +9908,6 @@ msgstr ""
#~ msgstr "lülita salajaste või avalike võtmete loendi vahel"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "halb parool"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr "HOIATUS: seaded failis `%s' pole seekord veel aktiivsed\n"
diff --git a/po/fi.po b/po/fi.po
index 33c75a214..15fd0471a 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -136,6 +136,10 @@ msgstr "väärä salasana"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "väärä salasana"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1252,6 +1256,15 @@ msgstr "kirjoitan salaisen avaimen kohteeseen \"%s\"\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "virhe luotaessa \"%s\": %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "virhe luettaessa tiedostoa \"%s\": %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "ascii-koodaus: %s\n"
@@ -1468,6 +1481,10 @@ msgstr "ei käsitelty"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1747,6 +1764,9 @@ msgstr "muuta luottamusastetta"
msgid "change the User Interaction Flag"
msgstr "muuta luottamusastetta"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1995,11 +2015,6 @@ msgstr "avain %08lX: PGP 2.x -muodon avain - ohitetaan\n"
msgid "WARNING: nothing exported\n"
msgstr "VAROITUS: mitään ei viety\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "virhe luotaessa \"%s\": %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[Käyttäjätunnusta ei löytynyt]"
@@ -2451,6 +2466,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Salaisesta avainrenkaasta ei löydy vastaavaa allekirjoitusta\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "näytä mihin avainrenkaaseen tulostettu avain kuuluu"
@@ -3086,6 +3105,10 @@ msgstr "ohitetaan: salainen avain on jo paikalla\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "virhe lähettäessä kohteeseen \"%s\": %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3632,6 +3655,9 @@ msgstr "poista toissijainen avain"
msgid "add a revocation key"
msgstr "lisää mitätöintiavain"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr "Varmastiko päivitä valinnat näille käyttäjätunnuksille? "
@@ -3706,6 +3732,10 @@ msgstr "Salainen avain on saatavilla.\n"
msgid "Secret subkeys are available.\n"
msgstr "Salainen avain on saatavilla.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Tähän tarvitaan salainen avain.\n"
@@ -3827,6 +3857,10 @@ msgstr "Tallenna muutokset? "
msgid "Quit without saving? (y/N) "
msgstr "Lopeta tallentamatta muutoksia?"
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "avainlohkojen poisto epäonnistui: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Päivitystä ei tarvita, koska avain ei ole muuttunut.\n"
@@ -4072,6 +4106,18 @@ msgid ""
msgstr ""
"Haluatko varmasti nimittää tämän avaimen määrätyksi mitätöijäksi? (k/E): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(ellet määritä avainta sormenjäljen perusteella)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "käyttäjätunnus \"%s\" on jo mitätöity\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5913,10 +5959,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "valitsinta %s ei voi käyttää %s-tilassa\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "VAROITUS: allekirjoitustiiviste ei täsmää viestin kanssa\n"
@@ -8069,10 +8111,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "hakemiston \"%s\" luominen ei onnistu: %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "virhe luettaessa tiedostoa \"%s\": %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "tiedostoa \"%s\" ei voi sulkea: %s\n"
@@ -9944,10 +9982,6 @@ msgstr ""
#~ msgstr "vaihda salaisten ja julkisten avainten luettelon välillä"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "väärä salasana"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr ""
#~ "VAROITUS: asetukset tiedostossa \"%s\" eivät ole käytössä vielä tässä "
diff --git a/po/fr.po b/po/fr.po
index 7581ee8b5..239307ec4 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -140,6 +140,11 @@ msgstr "Phrase secrète :"
msgid "does not match - try again"
msgstr "ne correspond pas — veuillez réessayer"
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "Phrase secrète"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1266,6 +1271,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s est trop ancien (nécessaire : %s, utilisé : %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "erreur de création de « %s » : %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "erreur de fermeture de « %s » : %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "armure : %s\n"
@@ -1485,6 +1498,10 @@ msgstr "non forcé"
msgid "forced"
msgstr "forcé"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Erreur : seul l'ASCII standard est permis pour l'instant.\n"
@@ -1781,6 +1798,9 @@ msgstr "modifier la confiance du propriétaire"
msgid "change the User Interaction Flag"
msgstr "modifier la confiance du propriétaire"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/carte> "
@@ -2021,10 +2041,6 @@ msgstr "clef %s : clef de type PGP 2.x — ignorée\n"
msgid "WARNING: nothing exported\n"
msgstr "Attention : rien n'a été exporté\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "erreur de création de « %s » : %s\n"
-
msgid "[User ID not found]"
msgstr "[identité introuvable]"
@@ -2488,6 +2504,11 @@ msgstr "montrer les identités révoquées et expirées en affichant les clefs"
msgid "show revoked and expired subkeys in key listings"
msgstr "indiquer les sous-clefs révoquées et expirées en affichant les clefs"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "montrer les dates d'expiration en affichant les signatures"
+
msgid "show the keyring name in key listings"
msgstr "montrer le nom du porte-clefs en affichant les clefs"
@@ -3127,6 +3148,10 @@ msgstr "clef %s : la clef secrète clef existe déjà\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "clef %s : erreur d'envoi à l'agent : %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3649,6 +3674,11 @@ msgstr "supprimer les sous-clefs sélectionnées"
msgid "add a revocation key"
msgstr "ajouter une clef de révocation"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Déchiffrement des données réussi"
+
msgid "delete signatures from the selected user IDs"
msgstr "supprimer les signatures des identités sélectionnées"
@@ -3716,6 +3746,10 @@ msgstr "La clef secrète est disponible.\n"
msgid "Secret subkeys are available.\n"
msgstr "La clef secrète est disponible.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "La clef secrète est nécessaire pour faire cela.\n"
@@ -3830,6 +3864,11 @@ msgstr "Faut-il enregistrer les modifications ? (o/N) "
msgid "Quit without saving? (y/N) "
msgstr "Faut-il quitter sans enregistrer ? (o/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "échec de suppression de %s secrète : %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "La clef n'a pas été modifiée donc la mise à jour est inutile.\n"
@@ -4080,6 +4119,19 @@ msgid ""
msgstr ""
"Voulez-vous vraiment rendre cette clef comme révocateur désigné ? (o/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(à moins d'indiquer la clef par son empreinte)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "La sous-clef %s est déjà révoquée.\n"
+
#, fuzzy
#| msgid ""
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
@@ -5977,10 +6029,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "impossible d'utiliser %s en mode %s.\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "Attention : conflit de hachage de signature dans le message\n"
@@ -8211,10 +8259,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "impossible de créer le répertoire de cache temporaire « %s » : %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "erreur de fermeture de « %s » : %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "impossible de hacher « %s » : %s\n"
@@ -10314,9 +10358,6 @@ msgstr ""
#~ "passer de la liste de clefs secrètes à celle de clefs privées ou vice "
#~ "versa"
-#~ msgid "Passphrase"
-#~ msgstr "Phrase secrète"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr ""
#~ "utiliser des fichiers temporaires pour passer les données aux assistants "
diff --git a/po/gl.po b/po/gl.po
index c913afad8..af75e558c 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -121,6 +121,10 @@ msgstr "contrasinal erróneo"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "contrasinal erróneo"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1244,6 +1248,15 @@ msgstr "gravando a chave secreta en `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "erro ao crear `%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "erro lendo `%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "armadura: %s\n"
@@ -1459,6 +1472,10 @@ msgstr "non procesado"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1738,6 +1755,9 @@ msgstr "cambia-la confianza sobre o dono"
msgid "change the User Interaction Flag"
msgstr "cambia-la confianza sobre o dono"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1987,11 +2007,6 @@ msgstr "chave %08lX: chave estilo PGP 2.x - omitida\n"
msgid "WARNING: nothing exported\n"
msgstr "AVISO: non se exportou nada\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "erro ao crear `%s': %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[Non se atopou o id de usuario]"
@@ -2442,6 +2457,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Non hai unha sinatura correspondiente no chaveiro secreto\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "amosar en que chaveiro está unha chave listada"
@@ -3073,6 +3092,10 @@ msgstr "omítese: a chave secreta xa está presente\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "erro ao enviar a `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3624,6 +3647,9 @@ msgstr "borrar unha chave secundaria"
msgid "add a revocation key"
msgstr "engadir unha chave de revocación"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr ""
@@ -3704,6 +3730,10 @@ msgstr "A chave secreta está disponible.\n"
msgid "Secret subkeys are available.\n"
msgstr "A chave secreta está disponible.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Cómpre a chave secreta para facer isto.\n"
@@ -3827,6 +3857,10 @@ msgstr "¿Garda-los cambios? "
msgid "Quit without saving? (y/N) "
msgstr "¿Saír sin gardar? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "fallou o borrado do bloque de chaves: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "A chave non cambiou, polo que non fai falla actualizar.\n"
@@ -4078,6 +4112,18 @@ msgid ""
msgstr ""
"¿Está seguro de que quere nomear esta chave coma revocador designado? (s/N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(a menos que especifique a chave por pegada dactilar)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "o ID de usuario \"%s\" xa está revocado\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5913,10 +5959,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "non se pode empregar %s no modo %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "AVISO: conflicto de resumo de sinatura na mensaxe\n"
@@ -8077,10 +8119,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "non se pode crea-lo directorio `%s': %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "erro lendo `%s': %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "non se pode pechar `%s': %s\n"
@@ -9962,10 +10000,6 @@ msgstr ""
#~ msgstr "cambiar entre o listado de chaves públicas e secretas"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "contrasinal erróneo"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr "AVISO: as opcións de `%s' aínda non están activas nesta execución\n"
diff --git a/po/hu.po b/po/hu.po
index 7918a3785..b506d8a68 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -120,6 +120,10 @@ msgstr "rossz jelszó"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "rossz jelszó"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1235,6 +1239,15 @@ msgstr "Írom a titkos kulcsot a %s állományba.\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "Hiba \"%s\" létrehozásakor: %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "Hiba \"%s\" olvasásakor: %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "Páncél: %s\n"
@@ -1449,6 +1462,10 @@ msgstr "nem feldolgozott"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1728,6 +1745,9 @@ msgstr "kulcstulajdonos megbízhatóságának beállítása"
msgid "change the User Interaction Flag"
msgstr "kulcstulajdonos megbízhatóságának beállítása"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1978,11 +1998,6 @@ msgstr "%08lX kulcs: PGP 2.x stílusú kulcs - kihagytam.\n"
msgid "WARNING: nothing exported\n"
msgstr "FIGYELEM: Semmit sem exportáltam.\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "Hiba \"%s\" létrehozásakor: %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[ismeretlen kulcs]"
@@ -2434,6 +2449,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Nincs megfelelő aláírás a titkoskulcs-karikán.\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "mutatja a kilistázott kulcs kulcskarikáját is"
@@ -3065,6 +3084,10 @@ msgstr "Kihagytam: titkos kulcs már jelen van.\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "Hiba %s-ra/-re küldéskor: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3609,6 +3632,9 @@ msgstr "másodlagos kulcs törlése"
msgid "add a revocation key"
msgstr "visszavonó kulcs hozzáadása"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr "Valóban frissíti a kijelölt felhasználóazonosítók preferenciáit? "
@@ -3683,6 +3709,10 @@ msgstr "Titkos kulcs rendelkezésre áll.\n"
msgid "Secret subkeys are available.\n"
msgstr "Titkos kulcs rendelkezésre áll.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Ehhez szükség van a titkos kulcsra.\n"
@@ -3804,6 +3834,10 @@ msgstr "Mentsem a változtatásokat? "
msgid "Quit without saving? (y/N) "
msgstr "Kilépjek mentés nélkül? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "A kulcsblokk törlése sikertelen: %s.\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "A kulcs nem változott, nincs szükség frissítésre.\n"
@@ -4051,6 +4085,18 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Biztosan ez a kulcs legyen a kijelölt visszavonó? (i/N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(Kivéve, ha megad egy kulcsot az ujjlenyomatával.)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "\"%s\" felhasználói azonosítót már visszavonták.\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5878,10 +5924,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "Lehet, hogy nem használhatja %s-t %s módban!\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "FIGYELEM: Aláíráskivonat-konfliktus az üzenetben.\n"
@@ -8030,10 +8072,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "Nem tudom a \"%s\" könyvtárat létrehozni: %s.\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "Hiba \"%s\" olvasásakor: %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "Nem tudom bezárni a(z) \"%s\" állományt: %s.\n"
@@ -9902,10 +9940,6 @@ msgstr ""
#~ msgstr "váltás a titkos és a nyilvános kulcs listázása között"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "rossz jelszó"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr ""
#~ "FIGYELEM: \"%s\" opciói csak a következő futáskor lesznek érvényesek!\n"
diff --git a/po/id.po b/po/id.po
index 6285ddeb8..5334da392 100644
--- a/po/id.po
+++ b/po/id.po
@@ -125,6 +125,10 @@ msgstr "passphrase yang buruk"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "passphrase yang buruk"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1240,6 +1244,15 @@ msgstr "menulis kunci rahasia ke `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "kesalahan penciptaan : `%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "kesalahan membaca `%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "armor: %s\n"
@@ -1455,6 +1468,10 @@ msgstr "tidak diproses"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1734,6 +1751,9 @@ msgstr "ubah ownertrust"
msgid "change the User Interaction Flag"
msgstr "ubah ownertrust"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1984,11 +2004,6 @@ msgstr "kunci %08lX: kunci gaya PGP 2.x - dilewati\n"
msgid "WARNING: nothing exported\n"
msgstr "PERINGATAN: tidak ada yang diekspor\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "kesalahan penciptaan : `%s': %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[User id tidak ditemukan]"
@@ -2438,6 +2453,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Tidak ada signature koresponden di ring rahasia\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "tampilkan keyring tempat kunci yang dipilih berada"
@@ -3071,6 +3090,10 @@ msgstr "dilewati: kunci pribadi telah ada\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "kesalahan mengirim ke `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3615,6 +3638,9 @@ msgstr "hapus kunci sekunder"
msgid "add a revocation key"
msgstr "tambah kunci pembatalan"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr "Perbarui preferensi untuk user ID terpilih?"
@@ -3689,6 +3715,10 @@ msgstr "Kunci rahasia tersedia.\n"
msgid "Secret subkeys are available.\n"
msgstr "Kunci rahasia tersedia.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Perlu kunci rahasia untuk melakukan hal ini.\n"
@@ -3810,6 +3840,10 @@ msgstr "Simpan perubahan? "
msgid "Quit without saving? (y/N) "
msgstr "Berhenti tanpa menyimpan? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "gagal menghapus keyblok: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Kunci tidak berubah sehingga tidak perlu pembaharuan.\n"
@@ -4061,6 +4095,18 @@ msgid ""
msgstr ""
"Anda yakin ingin menunjuk kunci inin sebagai pihak yang dibatalkan? (y/N):"
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(kecuali anda menspesifikasikan kunci dengan fingerprint)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "User ID \"%s\" telah dibatalkan\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5880,10 +5926,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "anda tidak boleh menggunakan %s saat dalam mode %s.\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "Peringatan: konflik digest signature dalam pesan\n"
@@ -8029,10 +8071,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "tidak dapat membuat direktori `%s': %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "kesalahan membaca `%s': %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "tidak dapat menutup `%s': %s\n"
@@ -9899,10 +9937,6 @@ msgstr ""
#~ msgstr "ubah tampilan kunci rahasia dan publik"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "passphrase yang buruk"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr "PERINGATAN: opsi dalam `%s' belum aktif selama pelaksanaan ini\n"
diff --git a/po/it.po b/po/it.po
index 3014cf11b..85f9b817c 100644
--- a/po/it.po
+++ b/po/it.po
@@ -121,6 +121,11 @@ msgstr "Passphrase:"
msgid "does not match - try again"
msgstr "non corrisponde - riprova"
+#, fuzzy
+#| msgid "Passphrase Entry"
+msgid "Passphrases match."
+msgstr "Voce passphrase"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1205,6 +1210,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s è troppo vecchio (è necessario %s, con %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "errore durante la creazione di '%s': %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "errore durante la chiusura di '%s': %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "armatura: %s\n"
@@ -1408,6 +1421,10 @@ msgstr "non forzato"
msgid "forced"
msgstr "costretto"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Errore: al momento è consentito solo ASCII semplice.\n"
@@ -1676,6 +1693,9 @@ msgstr "modificare l'attributo chiave"
msgid "change the User Interaction Flag"
msgstr "modificare il contrassegno interazione utente"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -1915,10 +1935,6 @@ msgstr "chiave %s: chiave di stile PGP 2.x - ignorata\n"
msgid "WARNING: nothing exported\n"
msgstr "ATTENZIONE: non è stato esportato nulla\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "errore durante la creazione di '%s': %s\n"
-
msgid "[User ID not found]"
msgstr "[ID utente non trovato]"
@@ -2330,6 +2346,11 @@ msgstr "mostra ID utente revocati e scaduti negli elenchi di chiavi"
msgid "show revoked and expired subkeys in key listings"
msgstr "mostra sottochiavi revocate e scadute negli elenchi di chiavi"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "mostra date di scadenza durante le inserzioni delle firme"
+
msgid "show the keyring name in key listings"
msgstr "mostrare il nome del keyring negli elenchi delle chiavi"
@@ -2951,6 +2972,10 @@ msgstr "chiave %s: chiave segreta già esistente\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "chiave %s: errore durante l'invio all'agente: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3468,6 +3493,11 @@ msgstr "eliminare le sottochiavi selezionate"
msgid "add a revocation key"
msgstr "aggiungi una chiave di revoca"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Decrittografia dei dati riuscita"
+
msgid "delete signatures from the selected user IDs"
msgstr "eliminare le firme dagli ID utente selezionati"
@@ -3535,6 +3565,13 @@ msgstr "È disponibile una chiave segreta.\n"
msgid "Secret subkeys are available.\n"
msgstr "Sono disponibili sottochiavi segrete.\n"
+#, fuzzy
+#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+"Nota: verrà eliminata solo la parte segreta della sottochiave visualizzata.\n"
+
msgid "Need the secret key to do this.\n"
msgstr "Per fare questo serve la chiave segreta.\n"
@@ -3645,6 +3682,11 @@ msgstr "Salvare le modifiche? (y/N) "
msgid "Quit without saving? (y/N) "
msgstr "Uscire senza salvare? (y/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "eliminazione del segreto %s non riuscita: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "La chiave non è cambiata quindi non sono necessari aggiornamenti.\n"
@@ -3887,6 +3929,19 @@ msgid ""
msgstr ""
"Sei sicuro di voler nominare questa chiave come revocatore designato? (y/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(a meno che la chiave sia specificata con il fingerprint)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "La sottochiave %s è già stata revocata.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5677,10 +5732,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "impossibile utilizzare la chiave %s per l'accesso in modalità %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "ATTENZIONE: conflitto del digest delle firme nel messaggio\n"
@@ -7833,10 +7884,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "impossibile creare il file dir della cache temporanea '%s': %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "errore durante la chiusura di '%s': %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "impossibile eseguire l'hashing '%s': %s\n"
diff --git a/po/ja.po b/po/ja.po
index fb62f7737..9d286148b 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -5,13 +5,13 @@
# Yoshihiro Kajiki <[email protected]>, 1999.
# Takashi P.KATOH, 2002.
# NIIBE Yutaka <[email protected]>, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
-# 2020, 2021, 2022.
+# 2020, 2021, 2022, 2023.
#
msgid ""
msgstr ""
-"Project-Id-Version: gnupg 2.4.0\n"
+"Project-Id-Version: gnupg 2.4.1\n"
"Report-Msgid-Bugs-To: [email protected]\n"
-"PO-Revision-Date: 2023-01-26 15:24+0900\n"
+"PO-Revision-Date: 2023-04-26 13:35+0900\n"
"Last-Translator: NIIBE Yutaka <[email protected]>\n"
"Language-Team: none\n"
"Language: ja\n"
@@ -124,6 +124,9 @@ msgstr "パスフレーズ:"
msgid "does not match - try again"
msgstr "一致しません - もう一度"
+msgid "Passphrases match."
+msgstr "パスフレーズが一致。"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1187,6 +1190,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s が古すぎます (%s が必要、現在 %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "'%s'の作成エラー: %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "'%s'でクローズのエラー: %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "外装: %s\n"
@@ -1388,6 +1399,10 @@ msgstr "強制なし"
msgid "forced"
msgstr "強制"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr "一覧が正しくないように見える場合、コマンド \"%s\" を試してください\n"
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "エラー: 普通のASCIIだけが今、許可されています。\n"
@@ -1648,6 +1663,9 @@ msgstr "鍵の属性の変更"
msgid "change the User Interaction Flag"
msgstr "ユーザインタラクションフラグの変更"
+msgid "switch to the OpenPGP app"
+msgstr "OpenPGP app にスイッチします"
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -1855,7 +1873,7 @@ msgstr "'%s'への書き込み\n"
#, c-format
msgid "key %s: key material on-card - skipped\n"
-msgstr "鍵%s: 鍵はカード上にあります - スキップします\n"
+msgstr "鍵%s: 鍵マテリアルはカード上にあります - スキップします\n"
#, c-format
msgid "exporting secret keys not allowed\n"
@@ -1869,10 +1887,6 @@ msgstr "鍵%s: PGP 2.x形式の鍵です - スキップします\n"
msgid "WARNING: nothing exported\n"
msgstr "*警告*: 何もエクスポートされていません\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "'%s'の作成エラー: %s\n"
-
msgid "[User ID not found]"
msgstr "[ユーザIDが見つかりません]"
@@ -2270,6 +2284,9 @@ msgstr "鍵の一覧に失効したユーザID、期限切れとなったユー�
msgid "show revoked and expired subkeys in key listings"
msgstr "鍵の一覧に失効した副鍵、期限切れとなった副鍵を表示する"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "署名の一覧時に無効なアルゴリズムの署名を表示する"
+
msgid "show the keyring name in key listings"
msgstr "鍵の一覧に鍵リングの名前を表示する"
@@ -2878,6 +2895,10 @@ msgstr "鍵 %s: 秘密鍵はもうあります\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "鍵 %s: エージェントへの送信エラー: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr "鍵 %s: カード参照が鍵マテリアルで上書きされます\n"
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3374,6 +3395,9 @@ msgstr "選択した副鍵の削除"
msgid "add a revocation key"
msgstr "失効鍵の追加"
+msgid "add an additional decryption subkey"
+msgstr "追加の復号用の副鍵を足す"
+
msgid "delete signatures from the selected user IDs"
msgstr "選択したユーザIDから署名を削除する"
@@ -3434,6 +3458,10 @@ msgstr "秘密鍵が利用できます。\n"
msgid "Secret subkeys are available.\n"
msgstr "秘密副鍵が利用できます。\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr "注意: 秘密鍵のローカルなコピーは\"save\"だけで削除されます。\n"
+
msgid "Need the secret key to do this.\n"
msgstr "この実行には秘密鍵がいります。\n"
@@ -3542,6 +3570,10 @@ msgid "Quit without saving? (y/N) "
msgstr "保存せずに終了しますか? (y/N) "
#, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "秘密鍵のコピーの削除に失敗しました: %s\n"
+
+#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "鍵は無変更なので更新は不要です。\n"
@@ -3770,6 +3802,17 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "本当にこの鍵を指名失効者に任命しますか? (y/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr "追加の復号用の副鍵のフィンガー・プリントを入力してください:"
+
+#, c-format
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "副鍵のフィンガー・プリントを指定しましたか?\n"
+
+#, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "鍵 \"%s\" は、もうこの鍵ブロックにあります。\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5496,10 +5539,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "鍵%sを署名のために%sモードで使うことはできません\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr "オプション %sのため、検証を続けます\n"
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "*警告*: 署名のダイジェストが、メッセージと衝突します\n"
@@ -7546,10 +7585,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "一時キャッシュ・ディレクトリ・ファイル'%s'が作成できません: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "'%s'でクローズのエラー: %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "'%s'をハッシュできません: %s\n"
@@ -8696,6 +8731,9 @@ msgstr "Yubikey管理コマンド"
msgid "manage the command history"
msgstr "コマンド履歴を管理する"
+#~ msgid "continuing verification anyway due to option %s\n"
+#~ msgstr "オプション %sのため、検証を続けます\n"
+
#~ msgid "selected AEAD algorithm is invalid\n"
#~ msgstr "選択されたAEADアルゴリズムは無効です\n"
@@ -9499,9 +9537,6 @@ msgstr "コマンド履歴を管理する"
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "秘密鍵と公開鍵の一覧の反転"
-#~ msgid "Passphrase"
-#~ msgstr "パスフレーズ"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr "キーサーバ・ヘルパーにデータを与える際、一時ファイルを使う"
diff --git a/po/nb.po b/po/nb.po
index 6498e3651..19c2a4d19 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -133,6 +133,11 @@ msgstr "Passordfrase:"
msgid "does not match - try again"
msgstr "feil. Prøv igjen"
+#, fuzzy
+#| msgid "Passphrase Entry"
+msgid "Passphrases match."
+msgstr "Skriving av passordfrase"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1218,6 +1223,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s er for gammel (krever %s, har %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "feil under oppretting av «%s»: %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "feil under lukking av «%s»: %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "armor: %s\n"
@@ -1427,6 +1440,10 @@ msgstr "ikke tvunget"
msgid "forced"
msgstr "tvunget"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Feil: Bare ren ASCII er foreløpig tillatt.\n"
@@ -1711,6 +1728,9 @@ msgstr "endre eiertillit"
msgid "change the User Interaction Flag"
msgstr "endre eiertillit"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/kort> "
@@ -1946,10 +1966,6 @@ msgstr "nøkkel %s: PGP 2.x-aktig nøkkel - hoppet over\n"
msgid "WARNING: nothing exported\n"
msgstr "ADVARSEL: ingenting eksportert\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "feil under oppretting av «%s»: %s\n"
-
msgid "[User ID not found]"
msgstr "[Fant ikke bruker-ID]"
@@ -2361,6 +2377,11 @@ msgstr "vis opphevede og utgåtte bruker-id-er i nøkkelvisning"
msgid "show revoked and expired subkeys in key listings"
msgstr "vis opphevede og utgåtte undernøkler i nøkkelvisning"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "vis utløpsdatoer i nøkkelvisning"
+
msgid "show the keyring name in key listings"
msgstr "vis nøkkelknippe-navn i nøkkelvisning"
@@ -2982,6 +3003,10 @@ msgstr "nøkkel %s: hemmelig nøkkel finnes allerede\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "nøkkel %s: feil under sending til agent: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3496,6 +3521,11 @@ msgstr "slett valgte undernøkler"
msgid "add a revocation key"
msgstr "legg til opphevingsnøkkel"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Datadekryptering fullført"
+
msgid "delete signatures from the selected user IDs"
msgstr "slett signaturer fra valgte bruker-id-er"
@@ -3561,6 +3591,10 @@ msgstr "Hemmelig nøkkel er tilgjengelig.\n"
msgid "Secret subkeys are available.\n"
msgstr "Hemmelig nøkkel er tilgjengelig.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Du trenger tilhørende hemmelig nøkkel for å gjøre dette.\n"
@@ -3672,6 +3706,11 @@ msgstr "Vil du lagre endringer? (j/N) "
msgid "Quit without saving? (y/N) "
msgstr "Vil du avslutte uten å lagre? (j/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "sletting av hemmelig nøkkel %s mislyktes: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Nøkkelen ble ikke endret, så ingen oppdatering er nødvendig.\n"
@@ -3907,6 +3946,19 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Er du sikker på at du vil gjøre denne nøkkelen til en opphever? (j/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(med mindre du oppgir nøkkel ved hjelp av fingeravtrykk)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Undernøkkel %s er allerede opphevet.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5704,10 +5756,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "du kan ikke bruke nøkkel %s til signering i %s-modus\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "ADVARSEL: konflikt med signatur-kontrollsum i melding\n"
@@ -7826,10 +7874,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "klarte ikke å lage midlertidig hurtiglagermappe-fil «%s»: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "feil under lukking av «%s»: %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "klarte ikke å summere «%s»: %s\n"
diff --git a/po/pl.po b/po/pl.po
index c32665ae4..dd97fdbdc 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -127,6 +127,11 @@ msgstr "Hasło:"
msgid "does not match - try again"
msgstr "nie pasują - proszę spróbować jeszcze raz"
+#, fuzzy
+#| msgid "Passphrase Entry"
+msgid "Passphrases match."
+msgstr "Wpisywanie hasła"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1211,6 +1216,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "biblioteka %s jest zbyt stara (wymagana %s, zainstalowana %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "błąd tworzenia ,,%s'': %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "błąd zamykania ,,%s'': %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "opakowanie: %s\n"
@@ -1413,6 +1426,10 @@ msgstr "nie wymuszono"
msgid "forced"
msgstr "wymuszono"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Błąd: aktualnie dopuszczalne jest tylko czyste ASCII.\n"
@@ -1682,6 +1699,9 @@ msgstr "zmiana atrybutu klucza"
msgid "change the User Interaction Flag"
msgstr "zmiana zaufania właściciela"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/karta> "
@@ -1918,10 +1938,6 @@ msgstr "klucz %s: klucz PGP 2.x - pominięty\n"
msgid "WARNING: nothing exported\n"
msgstr "OSTRZEŻENIE: nic nie zostało wyeksportowane!\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "błąd tworzenia ,,%s'': %s\n"
-
msgid "[User ID not found]"
msgstr "[brak identyfikatora użytkownika]"
@@ -2352,6 +2368,11 @@ msgstr ""
msgid "show revoked and expired subkeys in key listings"
msgstr "pokazywanie unieważnionych i wygasłych podkluczy na listach kluczy"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "pokazywanie dat wygaśnięcia przy wypisywaniu podpisów"
+
msgid "show the keyring name in key listings"
msgstr "pokazywanie nazwy zbioru kluczy na listach kluczy"
@@ -2973,6 +2994,10 @@ msgstr "klucz %s: klucz prywatny już istnieje\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "klucz %s: błąd wysyłania do agenta: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3503,6 +3528,11 @@ msgstr "usunięcie wybranych podkluczy"
msgid "add a revocation key"
msgstr "dodanie klucza unieważniającego"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Odszyfrowywanie danych zakończone"
+
msgid "delete signatures from the selected user IDs"
msgstr "usunięcie podpisów z wybranych identyfikatorów użytkownika"
@@ -3569,6 +3599,12 @@ msgstr "Dostępny jest klucz tajny.\n"
msgid "Secret subkeys are available.\n"
msgstr "Dostępne są podklucze tajne.\n"
+#, fuzzy
+#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr "Uwaga: usunięta zostanie tylko tajna część pokazanego podklucza.\n"
+
msgid "Need the secret key to do this.\n"
msgstr "Do wykonania tej operacji potrzebny jest klucz tajny.\n"
@@ -3683,6 +3719,11 @@ msgstr "Zapisać zmiany? (t/N) "
msgid "Quit without saving? (y/N) "
msgstr "Wyjść bez zapisania zmian? (t/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "usunięcie %s tajnego nie powiodło się: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Klucz nie został zmieniony więc zapis zmian nie jest konieczny.\n"
@@ -3919,6 +3960,19 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Czy na pewno chcesz wyznaczyć ten klucz jako unieważniający? (t/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(chyba, że klucz zostaje wybrany przez podanie odcisku)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Podklucz %s jest już unieważniony.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5740,10 +5794,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "klucz %s nie może być używany do podpisów w trybie %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "OSTRZEŻENIE: konflikt skrótów podpisów w wiadomości\n"
@@ -7933,10 +7983,6 @@ msgstr ""
"%s'': %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "błąd zamykania ,,%s'': %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "nie można policzyć skrótu ,,%s'': %s\n"
diff --git a/po/pt.po b/po/pt.po
index 2f754d976..d20eb0138 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -123,6 +123,10 @@ msgstr "frase secreta incorrecta"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "frase secreta incorrecta"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1240,6 +1244,15 @@ msgstr "a escrever chave privada para `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "erro ao criar `%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "erro na leitura de `%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "armadura: %s\n"
@@ -1454,6 +1467,10 @@ msgstr "não processado"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1733,6 +1750,9 @@ msgstr "muda os valores de confiança"
msgid "change the User Interaction Flag"
msgstr "muda os valores de confiança"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1981,11 +2001,6 @@ msgstr "chave %08lX: tipo PGP 2.x - ignorada\n"
msgid "WARNING: nothing exported\n"
msgstr "AVISO: nada exportado\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "erro ao criar `%s': %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[Utilizador não encontrado]"
@@ -2439,6 +2454,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "mostrar em que porta-chave a chave está"
@@ -3070,6 +3089,10 @@ msgstr "ignorado: a chave secreta já está presente\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "erro ao enviar para `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3617,6 +3640,9 @@ msgstr "remove uma chave secundária"
msgid "add a revocation key"
msgstr "adiciona uma chave de revocação"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr ""
@@ -3694,6 +3720,10 @@ msgstr "Chave secreta disponível.\n"
msgid "Secret subkeys are available.\n"
msgstr "Chave secreta disponível.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "A chave secreta é necessária para fazer isto.\n"
@@ -3816,6 +3846,10 @@ msgstr "Gravar alterações? "
msgid "Quit without saving? (y/N) "
msgstr "Sair sem gravar? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "remoção do bloco de chave falhou: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Chave não alterada, nenhuma actualização é necessária.\n"
@@ -4059,6 +4093,18 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "não pode escolher uma chave como revogadora de si mesmo\n"
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(a não ser que escolha a chave pela sua impressão digital)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "o utilizador com o id \"%s\" já está revocado\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5872,10 +5918,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "não pode utilizar %s enquanto estiver no modo %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "AVISO: conflito no 'digest' de assinatura da mensagem\n"
@@ -8026,10 +8068,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "%s: impossível criar directoria: %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "erro na leitura de `%s': %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "impossível fechar `%s': %s\n"
@@ -9888,10 +9926,6 @@ msgstr ""
#~ msgstr "alterna entre listagem de chave secreta e pública"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "frase secreta incorrecta"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr "AVISO: opções em `%s' ainda não estão activas nesta execução\n"
diff --git a/po/ro.po b/po/ro.po
index d0d4c32ce..e60784d33 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -127,6 +127,10 @@ msgstr "frază-parolă incorectă"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "frază-parolă incorectă"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1259,6 +1263,15 @@ msgstr "scriu cheia secretă în `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "eroare la creearea `%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "eroare în `%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "armură: %s\n"
@@ -1477,6 +1490,10 @@ msgstr "neforţat(ă)"
msgid "forced"
msgstr "forţat(ă)"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Eroare: Deocamdată sunt permise numai caractere ASCII.\n"
@@ -1756,6 +1773,9 @@ msgstr "schimbă încrederea pentru proprietar"
msgid "change the User Interaction Flag"
msgstr "schimbă încrederea pentru proprietar"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -2007,11 +2027,6 @@ msgstr "cheia %s: cheie stil PGP 2.x - sărită\n"
msgid "WARNING: nothing exported\n"
msgstr "AVERTISMENT: nimic exportat\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "eroare la creearea `%s': %s\n"
-
msgid "[User ID not found]"
msgstr "[ID utilizator nu a fost găsit]"
@@ -2493,6 +2508,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "Nici o semnătură corespunzătoare în inelul secret\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "arată căruia dintre inelele de chei îi aparţine o cheie enumerată"
@@ -3142,6 +3161,10 @@ msgstr "sărită: cheia secretă deja prezentă\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "eroare trimitere la `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3668,6 +3691,9 @@ msgstr "şterge subcheile selectate"
msgid "add a revocation key"
msgstr "adaugă o cheie de revocare"
+msgid "add an additional decryption subkey"
+msgstr ""
+
msgid "delete signatures from the selected user IDs"
msgstr "şterge semnăturile de pe ID-urile utilizator selectate"
@@ -3734,6 +3760,10 @@ msgstr "Cheia secretă este disponibilă.\n"
msgid "Secret subkeys are available.\n"
msgstr "Cheia secretă este disponibilă.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Aveţi nevoie de cheia secretă pentru a face aceasta.\n"
@@ -3858,6 +3888,10 @@ msgstr "Salvaţi schimbările? (d/N) "
msgid "Quit without saving? (y/N) "
msgstr "Terminaţi fără a salva? (d/N) "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "stergere keyblock a eşuat: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Cheia nu a fost schimbată aşa că nici o actualizare a fost necesară.\n"
@@ -4108,6 +4142,19 @@ msgstr ""
"Sunteţi sigur(ă) că doriţi să desemnaţi această cheie ca şi un revocator "
"desemnat? (d/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(dacă nu specificaţi cheia prin amprentă)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Subcheia %s este deja revocată.\n"
+
#, fuzzy
#| msgid ""
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
@@ -5966,10 +6013,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "nu puteţi folosi %s câtă vreme în modul %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "AVERTISMENT: conflict pentru rezumat semnătură în mesaj\n"
@@ -8151,10 +8194,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "nu pot crea directorul `%s': %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "eroare în `%s': %s\n"
-
-#, fuzzy, c-format
#| msgid "can't access `%s': %s\n"
msgid "can't hash '%s': %s\n"
msgstr "nu pot accesa `%s': %s\n"
@@ -10075,10 +10114,6 @@ msgstr ""
#~ msgstr "comută între listele de chei secrete şi publice"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "frază-parolă incorectă"
-
-#, fuzzy
#~| msgid "WARNING: keyserver option `%s' is not used on this platform\n"
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr ""
diff --git a/po/ru.po b/po/ru.po
index 0c0807ff0..80e4e7aa6 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -130,6 +130,11 @@ msgstr "Фраза-пароль:"
msgid "does not match - try again"
msgstr "не подходит - попробуйте еще раз"
+#, fuzzy
+#| msgid "Passphrase Entry"
+msgid "Passphrases match."
+msgstr "Ввод фраз-паролей"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1223,6 +1228,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "слишком старая версия %s (нужно %s, есть %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "ошибка создания '%s': %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "ошибка закрытия '%s': %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "текстовый формат: %s\n"
@@ -1425,6 +1438,10 @@ msgstr "не требуется"
msgid "forced"
msgstr "требуется"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Ошибка: Допустим только простой текст ASCII.\n"
@@ -1694,6 +1711,9 @@ msgstr "изменить атрибут ключа"
msgid "change the User Interaction Flag"
msgstr "изменить уровень доверия владельцу"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -1930,10 +1950,6 @@ msgstr "ключ %s: ключ типа PGP 2.x - пропущен\n"
msgid "WARNING: nothing exported\n"
msgstr "Внимание: нечего экспортировать\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "ошибка создания '%s': %s\n"
-
msgid "[User ID not found]"
msgstr "[Идентификатор пользователя не найден]"
@@ -2359,6 +2375,11 @@ msgstr ""
msgid "show revoked and expired subkeys in key listings"
msgstr "показывать в списке ключей отозванные и просроченные подключи"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "показывать в списке подписей сроки действия"
+
msgid "show the keyring name in key listings"
msgstr "показывать в списке ключей название таблицы ключей"
@@ -2983,6 +3004,10 @@ msgstr "ключ %s: секретный ключ уже имеется\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "ключ %s: ошибка отправки в агент: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3500,6 +3525,11 @@ msgstr "удалить выбранные подключи"
msgid "add a revocation key"
msgstr "добавить ключ отзыва"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Данные успешно расшифрованы"
+
msgid "delete signatures from the selected user IDs"
msgstr "удалить подписи с выбранных идентификаторов пользователя"
@@ -3566,6 +3596,13 @@ msgstr "Секретный ключ доступен.\n"
msgid "Secret subkeys are available.\n"
msgstr "Секретные подключи доступны.\n"
+#, fuzzy
+#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+"Замечание: Будет удалена только секретная часть показанного подключа.\n"
+
msgid "Need the secret key to do this.\n"
msgstr "Для данного действия нужен секретный ключ.\n"
@@ -3680,6 +3717,11 @@ msgstr "Сохранить изменения? (y/N) "
msgid "Quit without saving? (y/N) "
msgstr "Выйти без сохранения? (y/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "сбой при удалении секретного %s: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Ключ не изменялся - обновление не нужно.\n"
@@ -3920,6 +3962,19 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Вы уверены, что хотите назначить данный ключ отзывающим? (y/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(если только ключ не задан отпечатком)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Подключ %s уже отозван.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5711,10 +5766,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "ключ %s нельзя использовать для подписи в режиме %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "Внимание: конфликт хешей подписей в сообщении\n"
@@ -7892,10 +7943,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "невозможно создание временного файла '%s': %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "ошибка закрытия '%s': %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "невозможно получить хеш '%s': %s\n"
diff --git a/po/sk.po b/po/sk.po
index 4b695b888..50e9070b8 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -123,6 +123,10 @@ msgstr "nesprávne heslo"
msgid "does not match - try again"
msgstr ""
+#, fuzzy
+msgid "Passphrases match."
+msgstr "nesprávne heslo"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1240,6 +1244,15 @@ msgstr "zapisujem tajný kľúč do `%s'\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr ""
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "chyba pri vytváraní `%s': %s\n"
+
+#, fuzzy, c-format
+msgid "error closing '%s': %s\n"
+msgstr "chyba pri čítaní `%s': %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "ASCII kódovanie: %s\n"
@@ -1457,6 +1470,10 @@ msgstr "nespracované"
msgid "forced"
msgstr ""
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
@@ -1736,6 +1753,9 @@ msgstr "zmeniť dôveryhodnosť vlastníka kľúča"
msgid "change the User Interaction Flag"
msgstr "zmeniť dôveryhodnosť vlastníka kľúča"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr ""
@@ -1986,11 +2006,6 @@ msgstr "kľúč %08lX: PGP 2.x kľúč - preskočené\n"
msgid "WARNING: nothing exported\n"
msgstr "VAROVANIE: nič nebolo vyexportované\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "chyba pri vytváraní `%s': %s\n"
-
#, fuzzy
msgid "[User ID not found]"
msgstr "[User id not found]"
@@ -2450,6 +2465,10 @@ msgid "show revoked and expired subkeys in key listings"
msgstr ""
#, fuzzy
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "V súbore tajných kľúčov chýba zodpovedajúci podpis\n"
+
+#, fuzzy
msgid "show the keyring name in key listings"
msgstr "ukáž v ktorom súbore kľúčov je vypísaný kľúč"
@@ -3087,6 +3106,10 @@ msgstr "preskočené: tajný kľúč je už v databáze\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "chyba pri posielaní na `%s': %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3635,6 +3658,9 @@ msgstr "zmazať sekundárny kľúč"
msgid "add a revocation key"
msgstr "pridať revokačný kľúč"
+msgid "add an additional decryption subkey"
+msgstr ""
+
#, fuzzy
msgid "delete signatures from the selected user IDs"
msgstr "Skutočne aktualizovať predvoľby pre vybrané id užívateľa? "
@@ -3709,6 +3735,10 @@ msgstr "Tajný kľúč je dostupný.\n"
msgid "Secret subkeys are available.\n"
msgstr "Tajný kľúč je dostupný.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Na vykonanie tejto operácie je potrebný tajný kľúč.\n"
@@ -3830,6 +3860,10 @@ msgstr "Uložiť zmeny? "
msgid "Quit without saving? (y/N) "
msgstr "Ukončiť bez uloženia? "
+#, fuzzy, c-format
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "zmazanie bloku kľúča sa nepodarilo: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "kľúč nebol zmenený, takže nie je potrebné ho aktualizovať.\n"
@@ -4073,6 +4107,18 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "Ste si istý, že chcete označiť tento kľúč ako revokovací? (a/N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(pokiaľ neurčíte kľúč jeho fingerprintom)\n"
+
+#, fuzzy, c-format
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "užívateľské ID \"%s\" je už revokované\n"
+
#, fuzzy
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
@@ -5900,10 +5946,6 @@ msgstr ""
"\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "VAROVANIE: konflikt hashu podpisu v správe\n"
@@ -8060,10 +8102,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "nemôžem vytvoriť adresár `%s': %s\n"
#, fuzzy, c-format
-msgid "error closing '%s': %s\n"
-msgstr "chyba pri čítaní `%s': %s\n"
-
-#, fuzzy, c-format
msgid "can't hash '%s': %s\n"
msgstr "nemôžem zavrieť `%s': %s\n"
@@ -9936,10 +9974,6 @@ msgstr ""
#~ msgstr "prepnúť medzi vypísaním zoznamu tajných a verejných kľúčov"
#, fuzzy
-#~ msgid "Passphrase"
-#~ msgstr "nesprávne heslo"
-
-#, fuzzy
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
#~ msgstr "VAROVANIE: nastavenie v `%s' ešte nie je aktívne\n"
diff --git a/po/sv.po b/po/sv.po
index d096cc878..c8405d50c 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -160,6 +160,11 @@ msgstr "Lösenfras:"
msgid "does not match - try again"
msgstr "stämmer inte överens - försök igen"
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "Lösenfras"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1340,6 +1345,16 @@ msgstr "väntar på låset %s...\n"
msgid "%s is too old (need %s, have %s)\n"
msgstr "%s är för gammal (behöver %s, har %s)\n"
+#, fuzzy, c-format
+#| msgid "error creating `%s': %s\n"
+msgid "error creating '%s': %s\n"
+msgstr "Fel när \"%s\" skapades: %s\n"
+
+#, fuzzy, c-format
+#| msgid "error closing %s: %s\n"
+msgid "error closing '%s': %s\n"
+msgstr "fel vid stängning av %s: %s\n"
+
#, c-format
msgid "armor: %s\n"
msgstr "ASCII-skal: %s\n"
@@ -1566,6 +1581,10 @@ msgstr "inte tvingad"
msgid "forced"
msgstr "tvingad"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Fel: Endast ren ASCII tillåts för närvarande.\n"
@@ -1871,6 +1890,9 @@ msgstr "ändra ägartillitsvärdet"
msgid "change the User Interaction Flag"
msgstr "ändra ägartillitsvärdet"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/kort> "
@@ -2123,11 +2145,6 @@ msgstr "nyckeln %s: nyckel av PGP 2.x-typ - hoppade över\n"
msgid "WARNING: nothing exported\n"
msgstr "VARNING: ingenting exporterat\n"
-#, fuzzy, c-format
-#| msgid "error creating `%s': %s\n"
-msgid "error creating '%s': %s\n"
-msgstr "Fel när \"%s\" skapades: %s\n"
-
msgid "[User ID not found]"
msgstr "[Användaridentiteten hittades inte]"
@@ -2609,6 +2626,11 @@ msgstr "visa spärrade och utgångna användaridentiteter i nyckellistningar"
msgid "show revoked and expired subkeys in key listings"
msgstr "visa spärrade och utgångna undernycklar i nyckellistningar"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "visa utgångsdatum under signaturlistningar"
+
msgid "show the keyring name in key listings"
msgstr "visa nyckelringens namn i nyckellistningar"
@@ -3273,6 +3295,10 @@ msgstr "hoppade över: hemlig nyckel finns redan\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "fel vid sändning av %s-kommando: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3807,6 +3833,11 @@ msgstr "ta bort valda undernycklar"
msgid "add a revocation key"
msgstr "lägg till en spärrnyckel"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Datadekryptering lyckades"
+
msgid "delete signatures from the selected user IDs"
msgstr "ta bort signaturer från valda användaridentiteter"
@@ -3875,6 +3906,10 @@ msgstr "Den hemliga nyckeln finns tillgänglig.\n"
msgid "Secret subkeys are available.\n"
msgstr "Den hemliga nyckeln finns tillgänglig.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Den hemliga nyckeln behövs för att göra detta.\n"
@@ -3999,6 +4034,11 @@ msgstr "Spara ändringar? (j/N) "
msgid "Quit without saving? (y/N) "
msgstr "Avsluta utan att spara? (j/N) "
+#, fuzzy, c-format
+#| msgid "deleting certificate \"%s\" failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "borttagning av certifikatet \"%s\" misslyckades: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Nyckeln är oförändrad så det behövs ingen uppdatering.\n"
@@ -4254,6 +4294,19 @@ msgid ""
msgstr ""
"Är du säker på att du vill använda den här nyckeln för spärrning? (j/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(om du inte anger nyckeln med hjälp av fingeravtrycket)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Undernyckeln %s är redan spärrad.\n"
+
# designated = angiven (utnämnd, utpekad, bestämd, utsedd, avsedd, angiven, designerad)
#, fuzzy
#| msgid ""
@@ -6152,10 +6205,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "du kan inte använda %s när du är i %s-läget\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "VARNING: konflikt mellan signatursammandrag i meddelandet\n"
@@ -8458,11 +8507,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "misslyckades med att skapa temporärfilen \"%s\": %s\n"
#, fuzzy, c-format
-#| msgid "error closing %s: %s\n"
-msgid "error closing '%s': %s\n"
-msgstr "fel vid stängning av %s: %s\n"
-
-#, fuzzy, c-format
#| msgid "can't access `%s': %s\n"
msgid "can't hash '%s': %s\n"
msgstr "kan inte komma åt \"%s\": %s\n"
@@ -10630,9 +10674,6 @@ msgstr ""
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "växla mellan att lista hemliga och publika nycklar"
-#~ msgid "Passphrase"
-#~ msgstr "Lösenfras"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr ""
#~ "använd temporärfiler för att skicka data till nyckelserverns hjälpprogram"
diff --git a/po/tr.po b/po/tr.po
index 9effccfe8..3f15ce679 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -124,6 +124,11 @@ msgstr "Anahtar Parolası:"
msgid "does not match - try again"
msgstr "eşleşmiyor - yeniden deneyin"
+#, fuzzy
+#| msgid "Passphrase Entry"
+msgid "Passphrases match."
+msgstr "Anahtar Parolası Girişi"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1200,6 +1205,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s çok eski (gereken %s, sizinki %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "'%s' oluşturulurken hata: %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "'%s' kapatılırken hata: %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "zırh: %s\n"
@@ -1404,6 +1417,10 @@ msgstr "zorlanmadı"
msgid "forced"
msgstr "zorlandı"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "Hata: Şimdilik yalnızca US-ASCII mümkün.\n"
@@ -1666,6 +1683,9 @@ msgstr "anahtar özniteliğini değiştir"
msgid "change the User Interaction Flag"
msgstr "Kullanıcı etkileşim bayrağını değiştir"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -1893,10 +1913,6 @@ msgstr "%s anahtarı: PGP 2.x tarzı bir anahtar - atlandı\n"
msgid "WARNING: nothing exported\n"
msgstr "UYARI: Hiçbir şey dışa aktarılmadı\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "'%s' oluşturulurken hata: %s\n"
-
msgid "[User ID not found]"
msgstr "[Kullanıcı kimliği bulunamadı]"
@@ -2303,6 +2319,11 @@ msgstr ""
"anahtar listelerinde yürürlükten kaldırılmış ve zaman aşımına uğramış "
"yardımcı anahtarlar göster"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "imza listelemesi sırasında zaman aşımı tarihleri göster"
+
msgid "show the keyring name in key listings"
msgstr "anahtar zinciri adını anahtar listelerinde göster"
@@ -2920,6 +2941,10 @@ msgstr "%s anahtarı: Gizli anahtar halihazırda var\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "%s anahtarı: Aracıya gönderirken hata: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3441,6 +3466,11 @@ msgstr "seçili yardımcı anahtarları sil"
msgid "add a revocation key"
msgstr "bir yürürlükten kaldırma anahtarı ekle"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Veri şifresi çözülmesi başarılı"
+
msgid "delete signatures from the selected user IDs"
msgstr "seçili kullanıcı kimliklerinden imzaları sile"
@@ -3506,6 +3536,12 @@ msgstr "Gizli anahtar mevcut.\n"
msgid "Secret subkeys are available.\n"
msgstr "Gizli yardımcı anahtarlar mevcut.\n"
+#, fuzzy
+#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr "Not: Yalnızca gösterilen yardımcı anahtarın gizli kısmı silinecek.\n"
+
msgid "Need the secret key to do this.\n"
msgstr "Bunu yapmak için gizli anahtar gerekli.\n"
@@ -3620,6 +3656,11 @@ msgstr "Değişiklikler kaydedilsin mi? (e/H) "
msgid "Quit without saving? (y/N) "
msgstr "Kaydetmeden çıkılsın mı? (e/H) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "gizli %s silinmesi başarısız: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Anahtar değişmediğinden güncellemeye gerek yok.\n"
@@ -3864,6 +3905,19 @@ msgstr ""
"Bu anahtarın, yürürlükten kaldıran anahtar olmasını istediğinize emin "
"misiniz? (e/H) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(anahtar parmak izi ile belirtilmedikçe)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "%s yardımcı anahtarı zaten yürürlükten kaldırılmış.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5626,10 +5680,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "%s anahtarı %s kipinde imzalama için kullanılamaz\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr "%s seçeneğinden dolayı doğrulama yine de sürdürülüyor\n"
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "UYARI: İletideki imza özeti çelişkili\n"
@@ -7733,10 +7783,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "geçici önbellek dizin dosyası '%s' oluşturulamadı: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "'%s' kapatılırken hata: %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "'%s' sağlaması yapılamıyor: %s\n"
@@ -8888,6 +8934,9 @@ msgstr "Yubikey yönetim konsolu"
msgid "manage the command history"
msgstr "komut geçmişini yönet"
+#~ msgid "continuing verification anyway due to option %s\n"
+#~ msgstr "%s seçeneğinden dolayı doğrulama yine de sürdürülüyor\n"
+
#~ msgid "selected AEAD algorithm is invalid\n"
#~ msgstr "seçili AEAD algoritması geçersiz\n"
diff --git a/po/uk.po b/po/uk.po
index e83cc8ef9..d81fd7d64 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -130,6 +130,11 @@ msgstr "Пароль:"
msgid "does not match - try again"
msgstr "паролі не збігаються, повторіть спробу"
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "Пароль"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1227,6 +1232,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s є занадто застарілою (потрібно %s, маємо %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "помилка створення «%s»: %s.\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "помилка під час спроби закрити «%s»: %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "формат ASCII: %s\n"
@@ -1436,6 +1449,10 @@ msgstr "не увімкнено"
msgid "forced"
msgstr "увімкнено"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr ""
"Помилка: у поточній версії можна використовувати лише звичайний ASCII.\n"
@@ -1713,6 +1730,9 @@ msgstr "змінити атрибут ключа"
msgid "change the User Interaction Flag"
msgstr "змінити рівень довіри до власника"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/картка> "
@@ -1952,10 +1972,6 @@ msgstr "ключ %s: ключ у стилі PGP 2.x — пропущено\n"
msgid "WARNING: nothing exported\n"
msgstr "УВАГА: нічого не експортовано\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "помилка створення «%s»: %s.\n"
-
msgid "[User ID not found]"
msgstr "[Ідентифікатор не знайдено]"
@@ -2390,6 +2406,11 @@ msgstr ""
msgid "show revoked and expired subkeys in key listings"
msgstr "показувати відкликані та застарілі підключі у списках ключів"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "показувати дати завершення строків дії у списку підписів"
+
msgid "show the keyring name in key listings"
msgstr "показувати назву сховища ключів у списках ключів"
@@ -3023,6 +3044,10 @@ msgstr "ключ %s: закритий ключ вже існує\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "ключ %s: помилка під час спроби надсилання агенту: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3547,6 +3572,11 @@ msgstr "вилучити вибрані підключі"
msgid "add a revocation key"
msgstr "додати ключ відкликання"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "Дані розшифровано"
+
msgid "delete signatures from the selected user IDs"
msgstr "вилучити підписи з вибраних ідентифікаторів користувача"
@@ -3613,6 +3643,10 @@ msgstr "Доступний закритий ключ.\n"
msgid "Secret subkeys are available.\n"
msgstr "Доступні закриті підключі.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "Для цього потрібен закритий ключ.\n"
@@ -3722,6 +3756,11 @@ msgstr "Зберегти зміни? (y/N або т/Н) "
msgid "Quit without saving? (y/N) "
msgstr "Вийти без збереження? (y/N або т/Н) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "помилка під час спроби вилучення закритого %s: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "Ключ не змінено, отже оновлення непотрібне.\n"
@@ -3967,6 +4006,19 @@ msgstr ""
"Ви справді бажаєте призначити цей ключ як підписане відкликання? (y/N або т/"
"Н) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(якщо ключ не задано відбитком)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "Підключ %s вже відкликано.\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5788,10 +5840,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "ключ %s не можна використовувати для підписування у режимі %s\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "УВАГА: конфлікт контрольних сум підписів у повідомленні\n"
@@ -8005,10 +8053,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "не вдалося створити тимчасовий файл каталогу кешу «%s»: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "помилка під час спроби закрити «%s»: %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "не вдалося хешувати «%s»: %s\n"
@@ -10068,9 +10112,6 @@ msgstr ""
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "перемкнутися між списками закритих і відкритих ключів"
-#~ msgid "Passphrase"
-#~ msgstr "Пароль"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr ""
#~ "використовувати тимчасові файли для передавання даних до допоміжних "
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 9b69aeb45..1b6a221d9 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -123,6 +123,11 @@ msgstr "密码:"
msgid "does not match - try again"
msgstr "不匹配 - 请重试"
+#, fuzzy
+#| msgid "Passphrase Entry"
+msgid "Passphrases match."
+msgstr "密码条目"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1173,6 +1178,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s 太旧 (需要 %s,拥有 %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "创建‘%s’时出现错误:%s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "关闭‘%s’时出现错误:%s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "字符封装:%s\n"
@@ -1372,6 +1385,10 @@ msgstr "非强制"
msgid "forced"
msgstr "强制"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "错误:目前只允许使用纯 ASCII 字符。\n"
@@ -1632,6 +1649,9 @@ msgstr "更改密钥属性"
msgid "change the User Interaction Flag"
msgstr "变更用户交互选项"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/card> "
@@ -1856,10 +1876,6 @@ msgstr "密钥 %s:PGP 2.x 样式的密钥 - 已跳过\n"
msgid "WARNING: nothing exported\n"
msgstr "警告:没有导出任何东西\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "创建‘%s’时出现错误:%s\n"
-
msgid "[User ID not found]"
msgstr "[用户标识未找到]"
@@ -2255,6 +2271,11 @@ msgstr "列出密钥时显示已吊销或已过期的用户标识"
msgid "show revoked and expired subkeys in key listings"
msgstr "列出密钥时显示已吊销或已过期的子密钥"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "列出签名时显示过期日期"
+
msgid "show the keyring name in key listings"
msgstr "列出密钥时显示钥匙环的名称"
@@ -2863,6 +2884,10 @@ msgstr "密钥 %s:私钥已存在\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "密钥 %s:发送至代理人程序时出现错误:%s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3350,6 +3375,11 @@ msgstr "删除选定的子密钥"
msgid "add a revocation key"
msgstr "增加一个吊销用密钥"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "数据解密成功"
+
msgid "delete signatures from the selected user IDs"
msgstr "从所选用户标识上删除签名"
@@ -3410,6 +3440,12 @@ msgstr "私钥可用。\n"
msgid "Secret subkeys are available.\n"
msgstr "私密子密钥可用。\n"
+#, fuzzy
+#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr "主要:只有显示的子钥的秘密部分会被删除。\n"
+
msgid "Need the secret key to do this.\n"
msgstr "要有私钥才能这么做。\n"
@@ -3516,6 +3552,11 @@ msgstr "要保存变更吗?(y/N) "
msgid "Quit without saving? (y/N) "
msgstr "要不保存而退出吗?(y/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "删除私钥 %s 时失败: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "密钥没有变更所以不需要更新。\n"
@@ -3741,6 +3782,19 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "您确定要将这个密钥设置为指定吊销者吗?(y/N): "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(除非您用指纹指定密钥)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "子密钥 %s 已被吊销。\n"
+
msgid ""
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
"N) "
@@ -5448,10 +5502,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "密钥 %s 在 %s 模式中不适用于签名\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr "由于 %s 选项,验证仍在继续中\n"
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "警告:签名散列值与报文不一致\n"
@@ -7479,10 +7529,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "创建临时缓存目录文件‘%s’时失败:%s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "关闭‘%s’时出现错误:%s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "无法取‘%s’的散列:%s\n"
@@ -8621,6 +8667,9 @@ msgstr "Yubikey 管理命令"
msgid "manage the command history"
msgstr "管理命令历史记录"
+#~ msgid "continuing verification anyway due to option %s\n"
+#~ msgstr "由于 %s 选项,验证仍在继续中\n"
+
#~ msgid "selected AEAD algorithm is invalid\n"
#~ msgstr "所选择的 AEAD 算法无效\n"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 92470d47e..066dd0521 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -138,6 +138,11 @@ msgstr "密語:"
msgid "does not match - try again"
msgstr "前後不一致 - 請再試一次"
+#, fuzzy
+#| msgid "Passphrase"
+msgid "Passphrases match."
+msgstr "密語"
+
#. TRANSLATORS: The string is appended to an error message in
#. the pinentry. The %s is the actual error message, the
#. two %d give the current and maximum number of tries.
@@ -1221,6 +1226,14 @@ msgid "%s is too old (need %s, have %s)\n"
msgstr "%s 太舊了 (需要 %s, 但是祇有 %s)\n"
#, c-format
+msgid "error creating '%s': %s\n"
+msgstr "建立 '%s' 時出錯: %s\n"
+
+#, c-format
+msgid "error closing '%s': %s\n"
+msgstr "關閉 '%s' 時出錯: %s\n"
+
+#, c-format
msgid "armor: %s\n"
msgstr "封裝: %s\n"
@@ -1433,6 +1446,10 @@ msgstr "不強迫使用"
msgid "forced"
msgstr "強迫使用"
+#, c-format
+msgid "Please try command \"%s\" if the listing does not look correct\n"
+msgstr ""
+
msgid "Error: Only plain ASCII is currently allowed.\n"
msgstr "錯誤: 目前祇允許使用單純的 ASCII 字符.\n"
@@ -1721,6 +1738,9 @@ msgstr "更改主觀信任"
msgid "change the User Interaction Flag"
msgstr "更改主觀信任"
+msgid "switch to the OpenPGP app"
+msgstr ""
+
msgid "gpg/card> "
msgstr "gpg/卡片> "
@@ -1954,10 +1974,6 @@ msgstr "金鑰 %s: PGP 2.x 型態的金鑰 - 已跳過\n"
msgid "WARNING: nothing exported\n"
msgstr "警告: 沒有匯出任何東西\n"
-#, c-format
-msgid "error creating '%s': %s\n"
-msgstr "建立 '%s' 時出錯: %s\n"
-
msgid "[User ID not found]"
msgstr "[找不到使用者 ID]"
@@ -2389,6 +2405,11 @@ msgstr "列出金鑰時顯示已撤銷或過期的使用者 ID"
msgid "show revoked and expired subkeys in key listings"
msgstr "列出金鑰時顯示已撤銷或過期的子鑰"
+#, fuzzy
+#| msgid "show expiration dates during signature listings"
+msgid "show signatures with invalid algorithms during signature listings"
+msgstr "列出簽章時顯示有效期限"
+
msgid "show the keyring name in key listings"
msgstr "在金鑰清單中顯示鑰匙圈名稱"
@@ -3019,6 +3040,10 @@ msgstr "金鑰 %s: 私鑰已存在\n"
msgid "key %s: error sending to agent: %s\n"
msgstr "金鑰 %s: 送至代理程式時出錯: %s\n"
+#, c-format
+msgid "key %s: card reference is overridden by key material\n"
+msgstr ""
+
#. TRANSLATORS: For a smartcard, each private key on host has a
#. * reference (stub) to a smartcard and actual private key data
#. * is stored on the card. A single smartcard can have up to
@@ -3526,6 +3551,11 @@ msgstr "刪除所選的子鑰"
msgid "add a revocation key"
msgstr "增加撤銷金鑰"
+#, fuzzy
+#| msgid "Data decryption succeeded"
+msgid "add an additional decryption subkey"
+msgstr "資料已解密成功"
+
msgid "delete signatures from the selected user IDs"
msgstr "從所選的使用者 ID 中刪除簽章"
@@ -3588,6 +3618,10 @@ msgstr "私鑰可用.\n"
msgid "Secret subkeys are available.\n"
msgstr "私鑰可用.\n"
+msgid ""
+"Note: the local copy of the secret key will only be deleted with \"save\".\n"
+msgstr ""
+
msgid "Need the secret key to do this.\n"
msgstr "要有私鑰纔能這麼做.\n"
@@ -3696,6 +3730,11 @@ msgstr "要儲存變更嗎? (y/N) "
msgid "Quit without saving? (y/N) "
msgstr "要不儲存就離開嗎? (y/N) "
+#, fuzzy, c-format
+#| msgid "deleting secret %s failed: %s\n"
+msgid "deleting copy of secret key failed: %s\n"
+msgstr "刪除私鑰 %s 時失敗: %s\n"
+
#, c-format
msgid "Key not changed so no update needed.\n"
msgstr "金鑰沒有變更所以不需要更新.\n"
@@ -3940,6 +3979,19 @@ msgid ""
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
msgstr "你確定要指派這把金鑰為指定撤銷者嗎? (y/N) "
+msgid "Enter the fingerprint of the additional decryption subkey: "
+msgstr ""
+
+#, fuzzy, c-format
+#| msgid "(unless you specify the key by fingerprint)\n"
+msgid "Did you specify the fingerprint of a subkey?\n"
+msgstr "(除非你用指紋指定了金鑰)\n"
+
+#, fuzzy, c-format
+#| msgid "Subkey %s is already revoked.\n"
+msgid "key \"%s\" is already on this keyblock\n"
+msgstr "子鑰 %s 已撤銷.\n"
+
#, fuzzy
#| msgid ""
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
@@ -5730,10 +5782,6 @@ msgid "key %s may not be used for signing in %s mode\n"
msgstr "你不能夠將 %s 用於 %s 模式中\n"
#, c-format
-msgid "continuing verification anyway due to option %s\n"
-msgstr ""
-
-#, c-format
msgid "WARNING: signature digest conflict in message\n"
msgstr "警告: 簽章摘要與訊息不一致\n"
@@ -7824,10 +7872,6 @@ msgid "failed to create temporary cache dir file '%s': %s\n"
msgstr "建立暫存快取目錄檔案 '%s' 失敗: %s\n"
#, c-format
-msgid "error closing '%s': %s\n"
-msgstr "關閉 '%s' 時出錯: %s\n"
-
-#, c-format
msgid "can't hash '%s': %s\n"
msgstr "無法計算 '%s' 的雜湊: %s\n"
@@ -9807,9 +9851,6 @@ msgstr ""
#~ msgid "toggle between the secret and public key listings"
#~ msgstr "在私鑰清單和公鑰清單間切換"
-#~ msgid "Passphrase"
-#~ msgstr "密語"
-
#~ msgid "use temporary files to pass data to keyserver helpers"
#~ msgstr "用暫存檔來將資料遞送給金鑰伺服器協助程式"
diff --git a/regexp/UnicodeData.txt b/regexp/UnicodeData.txt
index e22f967bb..ea963a716 100644
--- a/regexp/UnicodeData.txt
+++ b/regexp/UnicodeData.txt
@@ -1525,6 +1525,7 @@
061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;;
+061D;ARABIC END OF TEXT MARK;Po;0;AL;;;;;N;;;;;
061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;;
@@ -2089,6 +2090,47 @@
0868;SYRIAC LETTER MALAYALAM LLA;Lo;0;AL;;;;;N;;;;;
0869;SYRIAC LETTER MALAYALAM LLLA;Lo;0;AL;;;;;N;;;;;
086A;SYRIAC LETTER MALAYALAM SSA;Lo;0;AL;;;;;N;;;;;
+0870;ARABIC LETTER ALEF WITH ATTACHED FATHA;Lo;0;AL;;;;;N;;;;;
+0871;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA;Lo;0;AL;;;;;N;;;;;
+0872;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;;
+0873;ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;;
+0874;ARABIC LETTER ALEF WITH ATTACHED KASRA;Lo;0;AL;;;;;N;;;;;
+0875;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA;Lo;0;AL;;;;;N;;;;;
+0876;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0877;ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT;Lo;0;AL;;;;;N;;;;;
+0878;ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT;Lo;0;AL;;;;;N;;;;;
+0879;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW;Lo;0;AL;;;;;N;;;;;
+087A;ARABIC LETTER ALEF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+087B;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+087C;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+087D;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+087E;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING;Lo;0;AL;;;;;N;;;;;
+087F;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING;Lo;0;AL;;;;;N;;;;;
+0880;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING;Lo;0;AL;;;;;N;;;;;
+0881;ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA;Lo;0;AL;;;;;N;;;;;
+0882;ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA;Lo;0;AL;;;;;N;;;;;
+0883;ARABIC TATWEEL WITH OVERSTRUCK HAMZA;Lo;0;AL;;;;;N;;;;;
+0884;ARABIC TATWEEL WITH OVERSTRUCK WAW;Lo;0;AL;;;;;N;;;;;
+0885;ARABIC TATWEEL WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0886;ARABIC LETTER THIN YEH;Lo;0;AL;;;;;N;;;;;
+0887;ARABIC BASELINE ROUND DOT;Lo;0;AL;;;;;N;;;;;
+0888;ARABIC RAISED ROUND DOT;Sk;0;AL;;;;;N;;;;;
+0889;ARABIC LETTER NOON WITH INVERTED SMALL V;Lo;0;AL;;;;;N;;;;;
+088A;ARABIC LETTER HAH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+088B;ARABIC LETTER TAH WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+088C;ARABIC LETTER TAH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+088D;ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;;
+0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;;
+0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;;
+089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;;
+089B;ARABIC SMALL LOW WORD TASHEEL;Mn;220;NSM;;;;;N;;;;;
+089C;ARABIC MADDA WAAJIB;Mn;230;NSM;;;;;N;;;;;
+089D;ARABIC SUPERSCRIPT ALEF MOKHASSAS;Mn;230;NSM;;;;;N;;;;;
+089E;ARABIC DOUBLED MADDA;Mn;230;NSM;;;;;N;;;;;
+089F;ARABIC HALF MADDA OVER MADDA;Mn;230;NSM;;;;;N;;;;;
08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
08A1;ARABIC LETTER BEH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
@@ -2110,6 +2152,7 @@
08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;;
08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+08B5;ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;
08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;
08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;;
@@ -2128,6 +2171,17 @@
08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
+08C8;ARABIC LETTER GRAF;Lo;0;AL;;;;;N;;;;;
+08C9;ARABIC SMALL FARSI YEH;Lm;0;AL;;;;;N;;;;;
+08CA;ARABIC SMALL HIGH FARSI YEH;Mn;230;NSM;;;;;N;;;;;
+08CB;ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW;Mn;230;NSM;;;;;N;;;;;
+08CC;ARABIC SMALL HIGH WORD SAH;Mn;230;NSM;;;;;N;;;;;
+08CD;ARABIC SMALL HIGH ZAH;Mn;230;NSM;;;;;N;;;;;
+08CE;ARABIC LARGE ROUND DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+08CF;ARABIC LARGE ROUND DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+08D0;ARABIC SUKUN BELOW;Mn;220;NSM;;;;;N;;;;;
+08D1;ARABIC LARGE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;;
+08D2;ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;;
08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;;
08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;
08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;
@@ -2786,6 +2840,7 @@
0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3C;TELUGU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
@@ -2806,6 +2861,7 @@
0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;;
+0C5D;TELUGU LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;;
0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
@@ -2901,6 +2957,7 @@
0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDD;KANNADA LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;;
0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
@@ -2918,6 +2975,7 @@
0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;
0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;
+0CF3;KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT;Mc;0;L;;;;;N;;;;;
0D00;MALAYALAM SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;
0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
@@ -3282,6 +3340,7 @@
0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ECE;LAO YAMAKKAN;Mn;0;NSM;;;;;N;;;;;
0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -5258,6 +5317,7 @@
170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170D;TAGALOG LETTER RA;Lo;0;L;;;;;N;;;;;
170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
@@ -5265,6 +5325,8 @@
1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1715;TAGALOG SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;;
+171F;TAGALOG LETTER ARCHAIC RA;Lo;0;L;;;;;N;;;;;
1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
@@ -5285,7 +5347,7 @@
1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;;
1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
@@ -5455,6 +5517,7 @@
180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+180F;MONGOLIAN FREE VARIATION SELECTOR FOUR;Mn;0;NSM;;;;;N;;;;;
1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -6059,6 +6122,20 @@
1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;;
1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;;
1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;;
+1AC1;COMBINING LEFT PARENTHESIS ABOVE LEFT;Mn;230;NSM;;;;;N;;;;;
+1AC2;COMBINING RIGHT PARENTHESIS ABOVE RIGHT;Mn;230;NSM;;;;;N;;;;;
+1AC3;COMBINING LEFT PARENTHESIS BELOW LEFT;Mn;220;NSM;;;;;N;;;;;
+1AC4;COMBINING RIGHT PARENTHESIS BELOW RIGHT;Mn;220;NSM;;;;;N;;;;;
+1AC5;COMBINING SQUARE BRACKETS ABOVE;Mn;230;NSM;;;;;N;;;;;
+1AC6;COMBINING NUMBER SIGN ABOVE;Mn;230;NSM;;;;;N;;;;;
+1AC7;COMBINING INVERTED DOUBLE ARCH ABOVE;Mn;230;NSM;;;;;N;;;;;
+1AC8;COMBINING PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;;
+1AC9;COMBINING DOUBLE PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;;
+1ACA;COMBINING DOUBLE PLUS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+1ACB;COMBINING TRIPLE ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1ACC;COMBINING LATIN SMALL LETTER INSULAR G;Mn;230;NSM;;;;;N;;;;;
+1ACD;COMBINING LATIN SMALL LETTER INSULAR R;Mn;230;NSM;;;;;N;;;;;
+1ACE;COMBINING LATIN SMALL LETTER INSULAR T;Mn;230;NSM;;;;;N;;;;;
1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;
1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;
1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;
@@ -6135,6 +6212,7 @@
1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
+1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;;
1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -6180,6 +6258,8 @@
1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
+1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;;
+1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;;
1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
@@ -6778,6 +6858,7 @@
1DF7;COMBINING KAVYKA ABOVE LEFT;Mn;228;NSM;;;;;N;;;;;
1DF8;COMBINING DOT ABOVE LEFT;Mn;228;NSM;;;;;N;;;;;
1DF9;COMBINING WIDE INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;;;;;
+1DFA;COMBINING DOT BELOW LEFT;Mn;218;NSM;;;;;N;;;;;
1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;;
1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;;
@@ -7457,6 +7538,7 @@
20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;;
20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;;
20BF;BITCOIN SIGN;Sc;0;ET;;;;;N;;;;;
+20C0;SOM SIGN;Sc;0;ET;;;;;N;;;;;
20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
@@ -10300,6 +10382,7 @@
2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
+2C2F;GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;Lu;0;L;;;;;N;;;;2C5F;
2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
@@ -10347,6 +10430,7 @@
2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
+2C5F;GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;Ll;0;L;;;;;N;;;2C2F;;2C2F
2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
@@ -10795,6 +10879,17 @@
2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;
2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;
2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;;
+2E53;MEDIEVAL EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+2E54;MEDIEVAL QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2E55;LEFT SQUARE BRACKET WITH STROKE;Ps;0;ON;;;;;Y;;;;;
+2E56;RIGHT SQUARE BRACKET WITH STROKE;Pe;0;ON;;;;;Y;;;;;
+2E57;LEFT SQUARE BRACKET WITH DOUBLE STROKE;Ps;0;ON;;;;;Y;;;;;
+2E58;RIGHT SQUARE BRACKET WITH DOUBLE STROKE;Pe;0;ON;;;;;Y;;;;;
+2E59;TOP HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2E5A;TOP HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2E5B;BOTTOM HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2E5C;BOTTOM HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2E5D;OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
@@ -12204,7 +12299,7 @@
4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FFC;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+9FFF;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
@@ -14149,6 +14244,8 @@ A7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0;L;;;;;N;;;;A7BD;
A7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC
A7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF;
A7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE
+A7C0;LATIN CAPITAL LETTER OLD POLISH O;Lu;0;L;;;;;N;;;;A7C1;
+A7C1;LATIN SMALL LETTER OLD POLISH O;Ll;0;L;;;;;N;;;A7C0;;A7C0
A7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3;
A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2
A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794;
@@ -14158,6 +14255,17 @@ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8;
A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7
A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;
A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9
+A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1;
+A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0
+A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;;
+A7D5;LATIN SMALL LETTER DOUBLE WYNN;Ll;0;L;;;;;N;;;;;
+A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7;
+A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6
+A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9;
+A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8
+A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L;<super> 0043;;;;N;;;;;
+A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L;<super> 0046;;;;N;;;;;
+A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L;<super> 0051;;;;N;;;;;
A7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6;
A7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5
A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;
@@ -15794,6 +15902,7 @@ FBBE;ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;Sk;0;AL;;;;;N;;;;;
FBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;;
FBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;;
FBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;;
+FBC2;ARABIC SYMBOL WASLA ABOVE;Sk;0;AL;;;;;N;;;;;
FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
@@ -16159,6 +16268,22 @@ FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;
FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
FD3E;ORNATE LEFT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
FD3F;ORNATE RIGHT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD40;ARABIC LIGATURE RAHIMAHU ALLAAH;So;0;ON;;;;;N;;;;;
+FD41;ARABIC LIGATURE RADI ALLAAHU ANH;So;0;ON;;;;;N;;;;;
+FD42;ARABIC LIGATURE RADI ALLAAHU ANHAA;So;0;ON;;;;;N;;;;;
+FD43;ARABIC LIGATURE RADI ALLAAHU ANHUM;So;0;ON;;;;;N;;;;;
+FD44;ARABIC LIGATURE RADI ALLAAHU ANHUMAA;So;0;ON;;;;;N;;;;;
+FD45;ARABIC LIGATURE RADI ALLAAHU ANHUNNA;So;0;ON;;;;;N;;;;;
+FD46;ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;So;0;ON;;;;;N;;;;;
+FD47;ARABIC LIGATURE ALAYHI AS-SALAAM;So;0;ON;;;;;N;;;;;
+FD48;ARABIC LIGATURE ALAYHIM AS-SALAAM;So;0;ON;;;;;N;;;;;
+FD49;ARABIC LIGATURE ALAYHIMAA AS-SALAAM;So;0;ON;;;;;N;;;;;
+FD4A;ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;So;0;ON;;;;;N;;;;;
+FD4B;ARABIC LIGATURE QUDDISA SIRRAH;So;0;ON;;;;;N;;;;;
+FD4C;ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;So;0;ON;;;;;N;;;;;
+FD4D;ARABIC LIGATURE ALAYHAA AS-SALAAM;So;0;ON;;;;;N;;;;;
+FD4E;ARABIC LIGATURE TABAARAKA WA-TAAALAA;So;0;ON;;;;;N;;;;;
+FD4F;ARABIC LIGATURE RAHIMAHUM ALLAAH;So;0;ON;;;;;N;;;;;
FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
@@ -16277,6 +16402,7 @@ FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639
FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDCF;ARABIC LIGATURE SALAAMUHU ALAYNAA;So;0;ON;;;;;N;;;;;
FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
@@ -16291,6 +16417,8 @@ FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 06
FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+FDFE;ARABIC LIGATURE SUBHAANAHU WA TAAALAA;So;0;ON;;;;;N;;;;;
+FDFF;ARABIC LIGATURE AZZA WA JALL;So;0;ON;;;;;N;;;;;
FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
@@ -17798,6 +17926,76 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10562;CAUCASIAN ALBANIAN LETTER PIWR;Lo;0;L;;;;;N;;;;;
10563;CAUCASIAN ALBANIAN LETTER KIW;Lo;0;L;;;;;N;;;;;
1056F;CAUCASIAN ALBANIAN CITATION MARK;Po;0;L;;;;;N;;;;;
+10570;VITHKUQI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;10597;
+10571;VITHKUQI CAPITAL LETTER BBE;Lu;0;L;;;;;N;;;;10598;
+10572;VITHKUQI CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;10599;
+10573;VITHKUQI CAPITAL LETTER CE;Lu;0;L;;;;;N;;;;1059A;
+10574;VITHKUQI CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;1059B;
+10575;VITHKUQI CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;1059C;
+10576;VITHKUQI CAPITAL LETTER DHE;Lu;0;L;;;;;N;;;;1059D;
+10577;VITHKUQI CAPITAL LETTER EI;Lu;0;L;;;;;N;;;;1059E;
+10578;VITHKUQI CAPITAL LETTER E;Lu;0;L;;;;;N;;;;1059F;
+10579;VITHKUQI CAPITAL LETTER FE;Lu;0;L;;;;;N;;;;105A0;
+1057A;VITHKUQI CAPITAL LETTER GA;Lu;0;L;;;;;N;;;;105A1;
+1057C;VITHKUQI CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;105A3;
+1057D;VITHKUQI CAPITAL LETTER HHA;Lu;0;L;;;;;N;;;;105A4;
+1057E;VITHKUQI CAPITAL LETTER I;Lu;0;L;;;;;N;;;;105A5;
+1057F;VITHKUQI CAPITAL LETTER IJE;Lu;0;L;;;;;N;;;;105A6;
+10580;VITHKUQI CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;105A7;
+10581;VITHKUQI CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;105A8;
+10582;VITHKUQI CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;105A9;
+10583;VITHKUQI CAPITAL LETTER LLA;Lu;0;L;;;;;N;;;;105AA;
+10584;VITHKUQI CAPITAL LETTER ME;Lu;0;L;;;;;N;;;;105AB;
+10585;VITHKUQI CAPITAL LETTER NE;Lu;0;L;;;;;N;;;;105AC;
+10586;VITHKUQI CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;105AD;
+10587;VITHKUQI CAPITAL LETTER O;Lu;0;L;;;;;N;;;;105AE;
+10588;VITHKUQI CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;105AF;
+10589;VITHKUQI CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;105B0;
+1058A;VITHKUQI CAPITAL LETTER RE;Lu;0;L;;;;;N;;;;105B1;
+1058C;VITHKUQI CAPITAL LETTER SE;Lu;0;L;;;;;N;;;;105B3;
+1058D;VITHKUQI CAPITAL LETTER SHE;Lu;0;L;;;;;N;;;;105B4;
+1058E;VITHKUQI CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;105B5;
+1058F;VITHKUQI CAPITAL LETTER THE;Lu;0;L;;;;;N;;;;105B6;
+10590;VITHKUQI CAPITAL LETTER U;Lu;0;L;;;;;N;;;;105B7;
+10591;VITHKUQI CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;105B8;
+10592;VITHKUQI CAPITAL LETTER XE;Lu;0;L;;;;;N;;;;105B9;
+10594;VITHKUQI CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;105BB;
+10595;VITHKUQI CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;105BC;
+10597;VITHKUQI SMALL LETTER A;Ll;0;L;;;;;N;;;10570;;10570
+10598;VITHKUQI SMALL LETTER BBE;Ll;0;L;;;;;N;;;10571;;10571
+10599;VITHKUQI SMALL LETTER BE;Ll;0;L;;;;;N;;;10572;;10572
+1059A;VITHKUQI SMALL LETTER CE;Ll;0;L;;;;;N;;;10573;;10573
+1059B;VITHKUQI SMALL LETTER CHE;Ll;0;L;;;;;N;;;10574;;10574
+1059C;VITHKUQI SMALL LETTER DE;Ll;0;L;;;;;N;;;10575;;10575
+1059D;VITHKUQI SMALL LETTER DHE;Ll;0;L;;;;;N;;;10576;;10576
+1059E;VITHKUQI SMALL LETTER EI;Ll;0;L;;;;;N;;;10577;;10577
+1059F;VITHKUQI SMALL LETTER E;Ll;0;L;;;;;N;;;10578;;10578
+105A0;VITHKUQI SMALL LETTER FE;Ll;0;L;;;;;N;;;10579;;10579
+105A1;VITHKUQI SMALL LETTER GA;Ll;0;L;;;;;N;;;1057A;;1057A
+105A3;VITHKUQI SMALL LETTER HA;Ll;0;L;;;;;N;;;1057C;;1057C
+105A4;VITHKUQI SMALL LETTER HHA;Ll;0;L;;;;;N;;;1057D;;1057D
+105A5;VITHKUQI SMALL LETTER I;Ll;0;L;;;;;N;;;1057E;;1057E
+105A6;VITHKUQI SMALL LETTER IJE;Ll;0;L;;;;;N;;;1057F;;1057F
+105A7;VITHKUQI SMALL LETTER JE;Ll;0;L;;;;;N;;;10580;;10580
+105A8;VITHKUQI SMALL LETTER KA;Ll;0;L;;;;;N;;;10581;;10581
+105A9;VITHKUQI SMALL LETTER LA;Ll;0;L;;;;;N;;;10582;;10582
+105AA;VITHKUQI SMALL LETTER LLA;Ll;0;L;;;;;N;;;10583;;10583
+105AB;VITHKUQI SMALL LETTER ME;Ll;0;L;;;;;N;;;10584;;10584
+105AC;VITHKUQI SMALL LETTER NE;Ll;0;L;;;;;N;;;10585;;10585
+105AD;VITHKUQI SMALL LETTER NJE;Ll;0;L;;;;;N;;;10586;;10586
+105AE;VITHKUQI SMALL LETTER O;Ll;0;L;;;;;N;;;10587;;10587
+105AF;VITHKUQI SMALL LETTER PE;Ll;0;L;;;;;N;;;10588;;10588
+105B0;VITHKUQI SMALL LETTER QA;Ll;0;L;;;;;N;;;10589;;10589
+105B1;VITHKUQI SMALL LETTER RE;Ll;0;L;;;;;N;;;1058A;;1058A
+105B3;VITHKUQI SMALL LETTER SE;Ll;0;L;;;;;N;;;1058C;;1058C
+105B4;VITHKUQI SMALL LETTER SHE;Ll;0;L;;;;;N;;;1058D;;1058D
+105B5;VITHKUQI SMALL LETTER TE;Ll;0;L;;;;;N;;;1058E;;1058E
+105B6;VITHKUQI SMALL LETTER THE;Ll;0;L;;;;;N;;;1058F;;1058F
+105B7;VITHKUQI SMALL LETTER U;Ll;0;L;;;;;N;;;10590;;10590
+105B8;VITHKUQI SMALL LETTER VE;Ll;0;L;;;;;N;;;10591;;10591
+105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592
+105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594
+105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595
10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;;
10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;;
10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;;
@@ -18139,6 +18337,63 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10765;LINEAR A SIGN A805;Lo;0;L;;;;;N;;;;;
10766;LINEAR A SIGN A806;Lo;0;L;;;;;N;;;;;
10767;LINEAR A SIGN A807;Lo;0;L;;;;;N;;;;;
+10780;MODIFIER LETTER SMALL CAPITAL AA;Lm;0;L;;;;;N;;;;;
+10781;MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;Lm;0;L;<super> 02D0;;;;N;;;;;
+10782;MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;Lm;0;L;<super> 02D1;;;;N;;;;;
+10783;MODIFIER LETTER SMALL AE;Lm;0;L;<super> 00E6;;;;N;;;;;
+10784;MODIFIER LETTER SMALL CAPITAL B;Lm;0;L;<super> 0299;;;;N;;;;;
+10785;MODIFIER LETTER SMALL B WITH HOOK;Lm;0;L;<super> 0253;;;;N;;;;;
+10787;MODIFIER LETTER SMALL DZ DIGRAPH;Lm;0;L;<super> 02A3;;;;N;;;;;
+10788;MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;Lm;0;L;<super> AB66;;;;N;;;;;
+10789;MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;Lm;0;L;<super> 02A5;;;;N;;;;;
+1078A;MODIFIER LETTER SMALL DEZH DIGRAPH;Lm;0;L;<super> 02A4;;;;N;;;;;
+1078B;MODIFIER LETTER SMALL D WITH TAIL;Lm;0;L;<super> 0256;;;;N;;;;;
+1078C;MODIFIER LETTER SMALL D WITH HOOK;Lm;0;L;<super> 0257;;;;N;;;;;
+1078D;MODIFIER LETTER SMALL D WITH HOOK AND TAIL;Lm;0;L;<super> 1D91;;;;N;;;;;
+1078E;MODIFIER LETTER SMALL REVERSED E;Lm;0;L;<super> 0258;;;;N;;;;;
+1078F;MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;Lm;0;L;<super> 025E;;;;N;;;;;
+10790;MODIFIER LETTER SMALL FENG DIGRAPH;Lm;0;L;<super> 02A9;;;;N;;;;;
+10791;MODIFIER LETTER SMALL RAMS HORN;Lm;0;L;<super> 0264;;;;N;;;;;
+10792;MODIFIER LETTER SMALL CAPITAL G;Lm;0;L;<super> 0262;;;;N;;;;;
+10793;MODIFIER LETTER SMALL G WITH HOOK;Lm;0;L;<super> 0260;;;;N;;;;;
+10794;MODIFIER LETTER SMALL CAPITAL G WITH HOOK;Lm;0;L;<super> 029B;;;;N;;;;;
+10795;MODIFIER LETTER SMALL H WITH STROKE;Lm;0;L;<super> 0127;;;;N;;;;;
+10796;MODIFIER LETTER SMALL CAPITAL H;Lm;0;L;<super> 029C;;;;N;;;;;
+10797;MODIFIER LETTER SMALL HENG WITH HOOK;Lm;0;L;<super> 0267;;;;N;;;;;
+10798;MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;Lm;0;L;<super> 0284;;;;N;;;;;
+10799;MODIFIER LETTER SMALL LS DIGRAPH;Lm;0;L;<super> 02AA;;;;N;;;;;
+1079A;MODIFIER LETTER SMALL LZ DIGRAPH;Lm;0;L;<super> 02AB;;;;N;;;;;
+1079B;MODIFIER LETTER SMALL L WITH BELT;Lm;0;L;<super> 026C;;;;N;;;;;
+1079C;MODIFIER LETTER SMALL CAPITAL L WITH BELT;Lm;0;L;<super> 1DF04;;;;N;;;;;
+1079D;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;Lm;0;L;<super> A78E;;;;N;;;;;
+1079E;MODIFIER LETTER SMALL LEZH;Lm;0;L;<super> 026E;;;;N;;;;;
+1079F;MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;Lm;0;L;<super> 1DF05;;;;N;;;;;
+107A0;MODIFIER LETTER SMALL TURNED Y;Lm;0;L;<super> 028E;;;;N;;;;;
+107A1;MODIFIER LETTER SMALL TURNED Y WITH BELT;Lm;0;L;<super> 1DF06;;;;N;;;;;
+107A2;MODIFIER LETTER SMALL O WITH STROKE;Lm;0;L;<super> 00F8;;;;N;;;;;
+107A3;MODIFIER LETTER SMALL CAPITAL OE;Lm;0;L;<super> 0276;;;;N;;;;;
+107A4;MODIFIER LETTER SMALL CLOSED OMEGA;Lm;0;L;<super> 0277;;;;N;;;;;
+107A5;MODIFIER LETTER SMALL Q;Lm;0;L;<super> 0071;;;;N;;;;;
+107A6;MODIFIER LETTER SMALL TURNED R WITH LONG LEG;Lm;0;L;<super> 027A;;;;N;;;;;
+107A7;MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;Lm;0;L;<super> 1DF08;;;;N;;;;;
+107A8;MODIFIER LETTER SMALL R WITH TAIL;Lm;0;L;<super> 027D;;;;N;;;;;
+107A9;MODIFIER LETTER SMALL R WITH FISHHOOK;Lm;0;L;<super> 027E;;;;N;;;;;
+107AA;MODIFIER LETTER SMALL CAPITAL R;Lm;0;L;<super> 0280;;;;N;;;;;
+107AB;MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;Lm;0;L;<super> 02A8;;;;N;;;;;
+107AC;MODIFIER LETTER SMALL TS DIGRAPH;Lm;0;L;<super> 02A6;;;;N;;;;;
+107AD;MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;Lm;0;L;<super> AB67;;;;N;;;;;
+107AE;MODIFIER LETTER SMALL TESH DIGRAPH;Lm;0;L;<super> 02A7;;;;N;;;;;
+107AF;MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;Lm;0;L;<super> 0288;;;;N;;;;;
+107B0;MODIFIER LETTER SMALL V WITH RIGHT HOOK;Lm;0;L;<super> 2C71;;;;N;;;;;
+107B2;MODIFIER LETTER SMALL CAPITAL Y;Lm;0;L;<super> 028F;;;;N;;;;;
+107B3;MODIFIER LETTER GLOTTAL STOP WITH STROKE;Lm;0;L;<super> 02A1;;;;N;;;;;
+107B4;MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;Lm;0;L;<super> 02A2;;;;N;;;;;
+107B5;MODIFIER LETTER BILABIAL CLICK;Lm;0;L;<super> 0298;;;;N;;;;;
+107B6;MODIFIER LETTER DENTAL CLICK;Lm;0;L;<super> 01C0;;;;N;;;;;
+107B7;MODIFIER LETTER LATERAL CLICK;Lm;0;L;<super> 01C1;;;;N;;;;;
+107B8;MODIFIER LETTER ALVEOLAR CLICK;Lm;0;L;<super> 01C2;;;;N;;;;;
+107B9;MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lm;0;L;<super> 1DF0A;;;;N;;;;;
+107BA;MODIFIER LETTER SMALL S WITH CURL;Lm;0;L;<super> 1DF1E;;;;N;;;;;
10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
@@ -19140,6 +19395,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
+10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;;
+10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;;
+10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;;
10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;
10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
@@ -19222,6 +19480,32 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;
10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
+10F70;OLD UYGHUR LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+10F71;OLD UYGHUR LETTER BETH;Lo;0;R;;;;;N;;;;;
+10F72;OLD UYGHUR LETTER GIMEL-HETH;Lo;0;R;;;;;N;;;;;
+10F73;OLD UYGHUR LETTER WAW;Lo;0;R;;;;;N;;;;;
+10F74;OLD UYGHUR LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+10F75;OLD UYGHUR LETTER FINAL HETH;Lo;0;R;;;;;N;;;;;
+10F76;OLD UYGHUR LETTER YODH;Lo;0;R;;;;;N;;;;;
+10F77;OLD UYGHUR LETTER KAPH;Lo;0;R;;;;;N;;;;;
+10F78;OLD UYGHUR LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+10F79;OLD UYGHUR LETTER MEM;Lo;0;R;;;;;N;;;;;
+10F7A;OLD UYGHUR LETTER NUN;Lo;0;R;;;;;N;;;;;
+10F7B;OLD UYGHUR LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+10F7C;OLD UYGHUR LETTER PE;Lo;0;R;;;;;N;;;;;
+10F7D;OLD UYGHUR LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10F7E;OLD UYGHUR LETTER RESH;Lo;0;R;;;;;N;;;;;
+10F7F;OLD UYGHUR LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10F80;OLD UYGHUR LETTER TAW;Lo;0;R;;;;;N;;;;;
+10F81;OLD UYGHUR LETTER LESH;Lo;0;R;;;;;N;;;;;
+10F82;OLD UYGHUR COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F83;OLD UYGHUR COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10F84;OLD UYGHUR COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+10F85;OLD UYGHUR COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+10F86;OLD UYGHUR PUNCTUATION BAR;Po;0;R;;;;;N;;;;;
+10F87;OLD UYGHUR PUNCTUATION TWO BARS;Po;0;R;;;;;N;;;;;
+10F88;OLD UYGHUR PUNCTUATION TWO DOTS;Po;0;R;;;;;N;;;;;
+10F89;OLD UYGHUR PUNCTUATION FOUR DOTS;Po;0;R;;;;;N;;;;;
10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;;
10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
@@ -19381,6 +19665,12 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11070;BRAHMI SIGN OLD TAMIL VIRAMA;Mn;9;NSM;;;;;N;;;;;
+11071;BRAHMI LETTER OLD TAMIL SHORT E;Lo;0;L;;;;;N;;;;;
+11072;BRAHMI LETTER OLD TAMIL SHORT O;Lo;0;L;;;;;N;;;;;
+11073;BRAHMI VOWEL SIGN OLD TAMIL SHORT E;Mn;0;NSM;;;;;N;;;;;
+11074;BRAHMI VOWEL SIGN OLD TAMIL SHORT O;Mn;0;NSM;;;;;N;;;;;
+11075;BRAHMI LETTER OLD TAMIL LLA;Lo;0;L;;;;;N;;;;;
1107F;BRAHMI NUMBER JOINER;Mn;9;NSM;;;;;N;;;;;
11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
@@ -19448,6 +19738,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+110C2;KAITHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;;
110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;;
110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;;
@@ -19772,6 +20063,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;;
+1123F;KHOJKI LETTER QA;Lo;0;L;;;;;N;;;;;
+11240;KHOJKI LETTER SHORT I;Lo;0;L;;;;;N;;;;;
+11241;KHOJKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;;
11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;;
11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;;
@@ -20385,6 +20679,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;;
116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;;
+116B9;TAKRI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -20453,6 +20748,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;;
1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;;
1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;;
+11740;AHOM LETTER CA;Lo;0;L;;;;;N;;;;;
+11741;AHOM LETTER TTA;Lo;0;L;;;;;N;;;;;
+11742;AHOM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11743;AHOM LETTER DDA;Lo;0;L;;;;;N;;;;;
+11744;AHOM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11745;AHOM LETTER NNA;Lo;0;L;;;;;N;;;;;
+11746;AHOM LETTER LLA;Lo;0;L;;;;;N;;;;;
11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;;
11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;;
11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;;
@@ -20889,6 +21191,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;;
11AA1;SOYOMBO TERMINAL MARK-1;Po;0;L;;;;;N;;;;;
11AA2;SOYOMBO TERMINAL MARK-2;Po;0;L;;;;;N;;;;;
+11AB0;CANADIAN SYLLABICS NATTILIK HI;Lo;0;L;;;;;N;;;;;
+11AB1;CANADIAN SYLLABICS NATTILIK HII;Lo;0;L;;;;;N;;;;;
+11AB2;CANADIAN SYLLABICS NATTILIK HO;Lo;0;L;;;;;N;;;;;
+11AB3;CANADIAN SYLLABICS NATTILIK HOO;Lo;0;L;;;;;N;;;;;
+11AB4;CANADIAN SYLLABICS NATTILIK HA;Lo;0;L;;;;;N;;;;;
+11AB5;CANADIAN SYLLABICS NATTILIK HAA;Lo;0;L;;;;;N;;;;;
+11AB6;CANADIAN SYLLABICS NATTILIK SHRI;Lo;0;L;;;;;N;;;;;
+11AB7;CANADIAN SYLLABICS NATTILIK SHRII;Lo;0;L;;;;;N;;;;;
+11AB8;CANADIAN SYLLABICS NATTILIK SHRO;Lo;0;L;;;;;N;;;;;
+11AB9;CANADIAN SYLLABICS NATTILIK SHROO;Lo;0;L;;;;;N;;;;;
+11ABA;CANADIAN SYLLABICS NATTILIK SHRA;Lo;0;L;;;;;N;;;;;
+11ABB;CANADIAN SYLLABICS NATTILIK SHRAA;Lo;0;L;;;;;N;;;;;
+11ABC;CANADIAN SYLLABICS SPE;Lo;0;L;;;;;N;;;;;
+11ABD;CANADIAN SYLLABICS SPI;Lo;0;L;;;;;N;;;;;
+11ABE;CANADIAN SYLLABICS SPO;Lo;0;L;;;;;N;;;;;
+11ABF;CANADIAN SYLLABICS SPA;Lo;0;L;;;;;N;;;;;
11AC0;PAU CIN HAU LETTER PA;Lo;0;L;;;;;N;;;;;
11AC1;PAU CIN HAU LETTER KA;Lo;0;L;;;;;N;;;;;
11AC2;PAU CIN HAU LETTER LA;Lo;0;L;;;;;N;;;;;
@@ -20946,6 +21264,16 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;;
11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;;
11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;;
+11B00;DEVANAGARI HEAD MARK;Po;0;L;;;;;N;;;;;
+11B01;DEVANAGARI HEAD MARK WITH HEADSTROKE;Po;0;L;;;;;N;;;;;
+11B02;DEVANAGARI SIGN BHALE;Po;0;L;;;;;N;;;;;
+11B03;DEVANAGARI SIGN BHALE WITH HOOK;Po;0;L;;;;;N;;;;;
+11B04;DEVANAGARI SIGN EXTENDED BHALE;Po;0;L;;;;;N;;;;;
+11B05;DEVANAGARI SIGN EXTENDED BHALE WITH HOOK;Po;0;L;;;;;N;;;;;
+11B06;DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE;Po;0;L;;;;;N;;;;;
+11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
+11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
+11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;;
11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
@@ -21274,6 +21602,92 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
+11F00;KAWI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+11F01;KAWI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11F02;KAWI SIGN REPHA;Lo;0;L;;;;;N;;;;;
+11F03;KAWI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11F04;KAWI LETTER A;Lo;0;L;;;;;N;;;;;
+11F05;KAWI LETTER AA;Lo;0;L;;;;;N;;;;;
+11F06;KAWI LETTER I;Lo;0;L;;;;;N;;;;;
+11F07;KAWI LETTER II;Lo;0;L;;;;;N;;;;;
+11F08;KAWI LETTER U;Lo;0;L;;;;;N;;;;;
+11F09;KAWI LETTER UU;Lo;0;L;;;;;N;;;;;
+11F0A;KAWI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+11F0B;KAWI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+11F0C;KAWI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+11F0D;KAWI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+11F0E;KAWI LETTER E;Lo;0;L;;;;;N;;;;;
+11F0F;KAWI LETTER AI;Lo;0;L;;;;;N;;;;;
+11F10;KAWI LETTER O;Lo;0;L;;;;;N;;;;;
+11F12;KAWI LETTER KA;Lo;0;L;;;;;N;;;;;
+11F13;KAWI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11F14;KAWI LETTER GA;Lo;0;L;;;;;N;;;;;
+11F15;KAWI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11F16;KAWI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11F17;KAWI LETTER CA;Lo;0;L;;;;;N;;;;;
+11F18;KAWI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11F19;KAWI LETTER JA;Lo;0;L;;;;;N;;;;;
+11F1A;KAWI LETTER JHA;Lo;0;L;;;;;N;;;;;
+11F1B;KAWI LETTER NYA;Lo;0;L;;;;;N;;;;;
+11F1C;KAWI LETTER TTA;Lo;0;L;;;;;N;;;;;
+11F1D;KAWI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11F1E;KAWI LETTER DDA;Lo;0;L;;;;;N;;;;;
+11F1F;KAWI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11F20;KAWI LETTER NNA;Lo;0;L;;;;;N;;;;;
+11F21;KAWI LETTER TA;Lo;0;L;;;;;N;;;;;
+11F22;KAWI LETTER THA;Lo;0;L;;;;;N;;;;;
+11F23;KAWI LETTER DA;Lo;0;L;;;;;N;;;;;
+11F24;KAWI LETTER DHA;Lo;0;L;;;;;N;;;;;
+11F25;KAWI LETTER NA;Lo;0;L;;;;;N;;;;;
+11F26;KAWI LETTER PA;Lo;0;L;;;;;N;;;;;
+11F27;KAWI LETTER PHA;Lo;0;L;;;;;N;;;;;
+11F28;KAWI LETTER BA;Lo;0;L;;;;;N;;;;;
+11F29;KAWI LETTER BHA;Lo;0;L;;;;;N;;;;;
+11F2A;KAWI LETTER MA;Lo;0;L;;;;;N;;;;;
+11F2B;KAWI LETTER YA;Lo;0;L;;;;;N;;;;;
+11F2C;KAWI LETTER RA;Lo;0;L;;;;;N;;;;;
+11F2D;KAWI LETTER LA;Lo;0;L;;;;;N;;;;;
+11F2E;KAWI LETTER WA;Lo;0;L;;;;;N;;;;;
+11F2F;KAWI LETTER SHA;Lo;0;L;;;;;N;;;;;
+11F30;KAWI LETTER SSA;Lo;0;L;;;;;N;;;;;
+11F31;KAWI LETTER SA;Lo;0;L;;;;;N;;;;;
+11F32;KAWI LETTER HA;Lo;0;L;;;;;N;;;;;
+11F33;KAWI LETTER JNYA;Lo;0;L;;;;;N;;;;;
+11F34;KAWI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11F35;KAWI VOWEL SIGN ALTERNATE AA;Mc;0;L;;;;;N;;;;;
+11F36;KAWI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+11F37;KAWI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+11F38;KAWI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11F39;KAWI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+11F3A;KAWI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+11F3E;KAWI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+11F3F;KAWI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+11F40;KAWI VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
+11F41;KAWI SIGN KILLER;Mc;9;L;;;;;N;;;;;
+11F42;KAWI CONJOINER;Mn;9;NSM;;;;;N;;;;;
+11F43;KAWI DANDA;Po;0;L;;;;;N;;;;;
+11F44;KAWI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+11F45;KAWI PUNCTUATION SECTION MARKER;Po;0;L;;;;;N;;;;;
+11F46;KAWI PUNCTUATION ALTERNATE SECTION MARKER;Po;0;L;;;;;N;;;;;
+11F47;KAWI PUNCTUATION FLOWER;Po;0;L;;;;;N;;;;;
+11F48;KAWI PUNCTUATION SPACE FILLER;Po;0;L;;;;;N;;;;;
+11F49;KAWI PUNCTUATION DOT;Po;0;L;;;;;N;;;;;
+11F4A;KAWI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;;
+11F4B;KAWI PUNCTUATION TRIPLE DOT;Po;0;L;;;;;N;;;;;
+11F4C;KAWI PUNCTUATION CIRCLE;Po;0;L;;;;;N;;;;;
+11F4D;KAWI PUNCTUATION FILLED CIRCLE;Po;0;L;;;;;N;;;;;
+11F4E;KAWI PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
+11F4F;KAWI PUNCTUATION CLOSING SPIRAL;Po;0;L;;;;;N;;;;;
+11F50;KAWI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11F51;KAWI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11F52;KAWI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11F53;KAWI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11F54;KAWI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11F55;KAWI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11F56;KAWI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
@@ -22560,6 +22974,105 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;;
12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;;
12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;;
+12F90;CYPRO-MINOAN SIGN CM001;Lo;0;L;;;;;N;;;;;
+12F91;CYPRO-MINOAN SIGN CM002;Lo;0;L;;;;;N;;;;;
+12F92;CYPRO-MINOAN SIGN CM004;Lo;0;L;;;;;N;;;;;
+12F93;CYPRO-MINOAN SIGN CM005;Lo;0;L;;;;;N;;;;;
+12F94;CYPRO-MINOAN SIGN CM006;Lo;0;L;;;;;N;;;;;
+12F95;CYPRO-MINOAN SIGN CM007;Lo;0;L;;;;;N;;;;;
+12F96;CYPRO-MINOAN SIGN CM008;Lo;0;L;;;;;N;;;;;
+12F97;CYPRO-MINOAN SIGN CM009;Lo;0;L;;;;;N;;;;;
+12F98;CYPRO-MINOAN SIGN CM010;Lo;0;L;;;;;N;;;;;
+12F99;CYPRO-MINOAN SIGN CM011;Lo;0;L;;;;;N;;;;;
+12F9A;CYPRO-MINOAN SIGN CM012;Lo;0;L;;;;;N;;;;;
+12F9B;CYPRO-MINOAN SIGN CM012B;Lo;0;L;;;;;N;;;;;
+12F9C;CYPRO-MINOAN SIGN CM013;Lo;0;L;;;;;N;;;;;
+12F9D;CYPRO-MINOAN SIGN CM015;Lo;0;L;;;;;N;;;;;
+12F9E;CYPRO-MINOAN SIGN CM017;Lo;0;L;;;;;N;;;;;
+12F9F;CYPRO-MINOAN SIGN CM019;Lo;0;L;;;;;N;;;;;
+12FA0;CYPRO-MINOAN SIGN CM021;Lo;0;L;;;;;N;;;;;
+12FA1;CYPRO-MINOAN SIGN CM023;Lo;0;L;;;;;N;;;;;
+12FA2;CYPRO-MINOAN SIGN CM024;Lo;0;L;;;;;N;;;;;
+12FA3;CYPRO-MINOAN SIGN CM025;Lo;0;L;;;;;N;;;;;
+12FA4;CYPRO-MINOAN SIGN CM026;Lo;0;L;;;;;N;;;;;
+12FA5;CYPRO-MINOAN SIGN CM027;Lo;0;L;;;;;N;;;;;
+12FA6;CYPRO-MINOAN SIGN CM028;Lo;0;L;;;;;N;;;;;
+12FA7;CYPRO-MINOAN SIGN CM029;Lo;0;L;;;;;N;;;;;
+12FA8;CYPRO-MINOAN SIGN CM030;Lo;0;L;;;;;N;;;;;
+12FA9;CYPRO-MINOAN SIGN CM033;Lo;0;L;;;;;N;;;;;
+12FAA;CYPRO-MINOAN SIGN CM034;Lo;0;L;;;;;N;;;;;
+12FAB;CYPRO-MINOAN SIGN CM035;Lo;0;L;;;;;N;;;;;
+12FAC;CYPRO-MINOAN SIGN CM036;Lo;0;L;;;;;N;;;;;
+12FAD;CYPRO-MINOAN SIGN CM037;Lo;0;L;;;;;N;;;;;
+12FAE;CYPRO-MINOAN SIGN CM038;Lo;0;L;;;;;N;;;;;
+12FAF;CYPRO-MINOAN SIGN CM039;Lo;0;L;;;;;N;;;;;
+12FB0;CYPRO-MINOAN SIGN CM040;Lo;0;L;;;;;N;;;;;
+12FB1;CYPRO-MINOAN SIGN CM041;Lo;0;L;;;;;N;;;;;
+12FB2;CYPRO-MINOAN SIGN CM044;Lo;0;L;;;;;N;;;;;
+12FB3;CYPRO-MINOAN SIGN CM046;Lo;0;L;;;;;N;;;;;
+12FB4;CYPRO-MINOAN SIGN CM047;Lo;0;L;;;;;N;;;;;
+12FB5;CYPRO-MINOAN SIGN CM049;Lo;0;L;;;;;N;;;;;
+12FB6;CYPRO-MINOAN SIGN CM050;Lo;0;L;;;;;N;;;;;
+12FB7;CYPRO-MINOAN SIGN CM051;Lo;0;L;;;;;N;;;;;
+12FB8;CYPRO-MINOAN SIGN CM052;Lo;0;L;;;;;N;;;;;
+12FB9;CYPRO-MINOAN SIGN CM053;Lo;0;L;;;;;N;;;;;
+12FBA;CYPRO-MINOAN SIGN CM054;Lo;0;L;;;;;N;;;;;
+12FBB;CYPRO-MINOAN SIGN CM055;Lo;0;L;;;;;N;;;;;
+12FBC;CYPRO-MINOAN SIGN CM056;Lo;0;L;;;;;N;;;;;
+12FBD;CYPRO-MINOAN SIGN CM058;Lo;0;L;;;;;N;;;;;
+12FBE;CYPRO-MINOAN SIGN CM059;Lo;0;L;;;;;N;;;;;
+12FBF;CYPRO-MINOAN SIGN CM060;Lo;0;L;;;;;N;;;;;
+12FC0;CYPRO-MINOAN SIGN CM061;Lo;0;L;;;;;N;;;;;
+12FC1;CYPRO-MINOAN SIGN CM062;Lo;0;L;;;;;N;;;;;
+12FC2;CYPRO-MINOAN SIGN CM063;Lo;0;L;;;;;N;;;;;
+12FC3;CYPRO-MINOAN SIGN CM064;Lo;0;L;;;;;N;;;;;
+12FC4;CYPRO-MINOAN SIGN CM066;Lo;0;L;;;;;N;;;;;
+12FC5;CYPRO-MINOAN SIGN CM067;Lo;0;L;;;;;N;;;;;
+12FC6;CYPRO-MINOAN SIGN CM068;Lo;0;L;;;;;N;;;;;
+12FC7;CYPRO-MINOAN SIGN CM069;Lo;0;L;;;;;N;;;;;
+12FC8;CYPRO-MINOAN SIGN CM070;Lo;0;L;;;;;N;;;;;
+12FC9;CYPRO-MINOAN SIGN CM071;Lo;0;L;;;;;N;;;;;
+12FCA;CYPRO-MINOAN SIGN CM072;Lo;0;L;;;;;N;;;;;
+12FCB;CYPRO-MINOAN SIGN CM073;Lo;0;L;;;;;N;;;;;
+12FCC;CYPRO-MINOAN SIGN CM074;Lo;0;L;;;;;N;;;;;
+12FCD;CYPRO-MINOAN SIGN CM075;Lo;0;L;;;;;N;;;;;
+12FCE;CYPRO-MINOAN SIGN CM075B;Lo;0;L;;;;;N;;;;;
+12FCF;CYPRO-MINOAN SIGN CM076;Lo;0;L;;;;;N;;;;;
+12FD0;CYPRO-MINOAN SIGN CM078;Lo;0;L;;;;;N;;;;;
+12FD1;CYPRO-MINOAN SIGN CM079;Lo;0;L;;;;;N;;;;;
+12FD2;CYPRO-MINOAN SIGN CM080;Lo;0;L;;;;;N;;;;;
+12FD3;CYPRO-MINOAN SIGN CM081;Lo;0;L;;;;;N;;;;;
+12FD4;CYPRO-MINOAN SIGN CM082;Lo;0;L;;;;;N;;;;;
+12FD5;CYPRO-MINOAN SIGN CM083;Lo;0;L;;;;;N;;;;;
+12FD6;CYPRO-MINOAN SIGN CM084;Lo;0;L;;;;;N;;;;;
+12FD7;CYPRO-MINOAN SIGN CM085;Lo;0;L;;;;;N;;;;;
+12FD8;CYPRO-MINOAN SIGN CM086;Lo;0;L;;;;;N;;;;;
+12FD9;CYPRO-MINOAN SIGN CM087;Lo;0;L;;;;;N;;;;;
+12FDA;CYPRO-MINOAN SIGN CM088;Lo;0;L;;;;;N;;;;;
+12FDB;CYPRO-MINOAN SIGN CM089;Lo;0;L;;;;;N;;;;;
+12FDC;CYPRO-MINOAN SIGN CM090;Lo;0;L;;;;;N;;;;;
+12FDD;CYPRO-MINOAN SIGN CM091;Lo;0;L;;;;;N;;;;;
+12FDE;CYPRO-MINOAN SIGN CM092;Lo;0;L;;;;;N;;;;;
+12FDF;CYPRO-MINOAN SIGN CM094;Lo;0;L;;;;;N;;;;;
+12FE0;CYPRO-MINOAN SIGN CM095;Lo;0;L;;;;;N;;;;;
+12FE1;CYPRO-MINOAN SIGN CM096;Lo;0;L;;;;;N;;;;;
+12FE2;CYPRO-MINOAN SIGN CM097;Lo;0;L;;;;;N;;;;;
+12FE3;CYPRO-MINOAN SIGN CM098;Lo;0;L;;;;;N;;;;;
+12FE4;CYPRO-MINOAN SIGN CM099;Lo;0;L;;;;;N;;;;;
+12FE5;CYPRO-MINOAN SIGN CM100;Lo;0;L;;;;;N;;;;;
+12FE6;CYPRO-MINOAN SIGN CM101;Lo;0;L;;;;;N;;;;;
+12FE7;CYPRO-MINOAN SIGN CM102;Lo;0;L;;;;;N;;;;;
+12FE8;CYPRO-MINOAN SIGN CM103;Lo;0;L;;;;;N;;;;;
+12FE9;CYPRO-MINOAN SIGN CM104;Lo;0;L;;;;;N;;;;;
+12FEA;CYPRO-MINOAN SIGN CM105;Lo;0;L;;;;;N;;;;;
+12FEB;CYPRO-MINOAN SIGN CM107;Lo;0;L;;;;;N;;;;;
+12FEC;CYPRO-MINOAN SIGN CM108;Lo;0;L;;;;;N;;;;;
+12FED;CYPRO-MINOAN SIGN CM109;Lo;0;L;;;;;N;;;;;
+12FEE;CYPRO-MINOAN SIGN CM110;Lo;0;L;;;;;N;;;;;
+12FEF;CYPRO-MINOAN SIGN CM112;Lo;0;L;;;;;N;;;;;
+12FF0;CYPRO-MINOAN SIGN CM114;Lo;0;L;;;;;N;;;;;
+12FF1;CYPRO-MINOAN SIGN CM301;Po;0;L;;;;;N;;;;;
+12FF2;CYPRO-MINOAN SIGN CM302;Po;0;L;;;;;N;;;;;
13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
@@ -23631,6 +24144,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;
+1342F;EGYPTIAN HIEROGLYPH V011D;Lo;0;L;;;;;N;;;;;
13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;;
13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;;
13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;;
@@ -23640,6 +24154,35 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;;
13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;;
13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;;
+13439;EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;Cf;0;L;;;;;N;;;;;
+1343A;EGYPTIAN HIEROGLYPH INSERT AT TOP;Cf;0;L;;;;;N;;;;;
+1343B;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;Cf;0;L;;;;;N;;;;;
+1343C;EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;Cf;0;L;;;;;N;;;;;
+1343D;EGYPTIAN HIEROGLYPH END ENCLOSURE;Cf;0;L;;;;;N;;;;;
+1343E;EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;;
+1343F;EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;;
+13440;EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY;Mn;0;NSM;;;;;N;;;;;
+13441;EGYPTIAN HIEROGLYPH FULL BLANK;Lo;0;L;;;;;N;;;;;
+13442;EGYPTIAN HIEROGLYPH HALF BLANK;Lo;0;L;;;;;N;;;;;
+13443;EGYPTIAN HIEROGLYPH LOST SIGN;Lo;0;L;;;;;N;;;;;
+13444;EGYPTIAN HIEROGLYPH HALF LOST SIGN;Lo;0;L;;;;;N;;;;;
+13445;EGYPTIAN HIEROGLYPH TALL LOST SIGN;Lo;0;L;;;;;N;;;;;
+13446;EGYPTIAN HIEROGLYPH WIDE LOST SIGN;Lo;0;L;;;;;N;;;;;
+13447;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START;Mn;0;NSM;;;;;N;;;;;
+13448;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START;Mn;0;NSM;;;;;N;;;;;
+13449;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START;Mn;0;NSM;;;;;N;;;;;
+1344A;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END;Mn;0;NSM;;;;;N;;;;;
+1344B;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP;Mn;0;NSM;;;;;N;;;;;
+1344C;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END;Mn;0;NSM;;;;;N;;;;;
+1344D;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP;Mn;0;NSM;;;;;N;;;;;
+1344E;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END;Mn;0;NSM;;;;;N;;;;;
+1344F;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END;Mn;0;NSM;;;;;N;;;;;
+13450;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM;Mn;0;NSM;;;;;N;;;;;
+13451;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM;Mn;0;NSM;;;;;N;;;;;
+13452;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END;Mn;0;NSM;;;;;N;;;;;
+13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;;
+13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;;
+13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;;
14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
@@ -24835,6 +25378,95 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
16A69;MRO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16A6E;MRO DANDA;Po;0;L;;;;;N;;;;;
16A6F;MRO DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+16A70;TANGSA LETTER OZ;Lo;0;L;;;;;N;;;;;
+16A71;TANGSA LETTER OC;Lo;0;L;;;;;N;;;;;
+16A72;TANGSA LETTER OQ;Lo;0;L;;;;;N;;;;;
+16A73;TANGSA LETTER OX;Lo;0;L;;;;;N;;;;;
+16A74;TANGSA LETTER AZ;Lo;0;L;;;;;N;;;;;
+16A75;TANGSA LETTER AC;Lo;0;L;;;;;N;;;;;
+16A76;TANGSA LETTER AQ;Lo;0;L;;;;;N;;;;;
+16A77;TANGSA LETTER AX;Lo;0;L;;;;;N;;;;;
+16A78;TANGSA LETTER VZ;Lo;0;L;;;;;N;;;;;
+16A79;TANGSA LETTER VC;Lo;0;L;;;;;N;;;;;
+16A7A;TANGSA LETTER VQ;Lo;0;L;;;;;N;;;;;
+16A7B;TANGSA LETTER VX;Lo;0;L;;;;;N;;;;;
+16A7C;TANGSA LETTER EZ;Lo;0;L;;;;;N;;;;;
+16A7D;TANGSA LETTER EC;Lo;0;L;;;;;N;;;;;
+16A7E;TANGSA LETTER EQ;Lo;0;L;;;;;N;;;;;
+16A7F;TANGSA LETTER EX;Lo;0;L;;;;;N;;;;;
+16A80;TANGSA LETTER IZ;Lo;0;L;;;;;N;;;;;
+16A81;TANGSA LETTER IC;Lo;0;L;;;;;N;;;;;
+16A82;TANGSA LETTER IQ;Lo;0;L;;;;;N;;;;;
+16A83;TANGSA LETTER IX;Lo;0;L;;;;;N;;;;;
+16A84;TANGSA LETTER UZ;Lo;0;L;;;;;N;;;;;
+16A85;TANGSA LETTER UC;Lo;0;L;;;;;N;;;;;
+16A86;TANGSA LETTER UQ;Lo;0;L;;;;;N;;;;;
+16A87;TANGSA LETTER UX;Lo;0;L;;;;;N;;;;;
+16A88;TANGSA LETTER AWZ;Lo;0;L;;;;;N;;;;;
+16A89;TANGSA LETTER AWC;Lo;0;L;;;;;N;;;;;
+16A8A;TANGSA LETTER AWQ;Lo;0;L;;;;;N;;;;;
+16A8B;TANGSA LETTER AWX;Lo;0;L;;;;;N;;;;;
+16A8C;TANGSA LETTER UIZ;Lo;0;L;;;;;N;;;;;
+16A8D;TANGSA LETTER UIC;Lo;0;L;;;;;N;;;;;
+16A8E;TANGSA LETTER UIQ;Lo;0;L;;;;;N;;;;;
+16A8F;TANGSA LETTER UIX;Lo;0;L;;;;;N;;;;;
+16A90;TANGSA LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+16A91;TANGSA LETTER LONG UEX;Lo;0;L;;;;;N;;;;;
+16A92;TANGSA LETTER SHORT UEZ;Lo;0;L;;;;;N;;;;;
+16A93;TANGSA LETTER SHORT AWX;Lo;0;L;;;;;N;;;;;
+16A94;TANGSA LETTER UEC;Lo;0;L;;;;;N;;;;;
+16A95;TANGSA LETTER UEZ;Lo;0;L;;;;;N;;;;;
+16A96;TANGSA LETTER UEQ;Lo;0;L;;;;;N;;;;;
+16A97;TANGSA LETTER UEX;Lo;0;L;;;;;N;;;;;
+16A98;TANGSA LETTER UIUZ;Lo;0;L;;;;;N;;;;;
+16A99;TANGSA LETTER UIUC;Lo;0;L;;;;;N;;;;;
+16A9A;TANGSA LETTER UIUQ;Lo;0;L;;;;;N;;;;;
+16A9B;TANGSA LETTER UIUX;Lo;0;L;;;;;N;;;;;
+16A9C;TANGSA LETTER MZ;Lo;0;L;;;;;N;;;;;
+16A9D;TANGSA LETTER MC;Lo;0;L;;;;;N;;;;;
+16A9E;TANGSA LETTER MQ;Lo;0;L;;;;;N;;;;;
+16A9F;TANGSA LETTER MX;Lo;0;L;;;;;N;;;;;
+16AA0;TANGSA LETTER KA;Lo;0;L;;;;;N;;;;;
+16AA1;TANGSA LETTER KHA;Lo;0;L;;;;;N;;;;;
+16AA2;TANGSA LETTER GA;Lo;0;L;;;;;N;;;;;
+16AA3;TANGSA LETTER NGA;Lo;0;L;;;;;N;;;;;
+16AA4;TANGSA LETTER SA;Lo;0;L;;;;;N;;;;;
+16AA5;TANGSA LETTER YA;Lo;0;L;;;;;N;;;;;
+16AA6;TANGSA LETTER WA;Lo;0;L;;;;;N;;;;;
+16AA7;TANGSA LETTER PA;Lo;0;L;;;;;N;;;;;
+16AA8;TANGSA LETTER NYA;Lo;0;L;;;;;N;;;;;
+16AA9;TANGSA LETTER PHA;Lo;0;L;;;;;N;;;;;
+16AAA;TANGSA LETTER BA;Lo;0;L;;;;;N;;;;;
+16AAB;TANGSA LETTER MA;Lo;0;L;;;;;N;;;;;
+16AAC;TANGSA LETTER NA;Lo;0;L;;;;;N;;;;;
+16AAD;TANGSA LETTER HA;Lo;0;L;;;;;N;;;;;
+16AAE;TANGSA LETTER LA;Lo;0;L;;;;;N;;;;;
+16AAF;TANGSA LETTER HTA;Lo;0;L;;;;;N;;;;;
+16AB0;TANGSA LETTER TA;Lo;0;L;;;;;N;;;;;
+16AB1;TANGSA LETTER DA;Lo;0;L;;;;;N;;;;;
+16AB2;TANGSA LETTER RA;Lo;0;L;;;;;N;;;;;
+16AB3;TANGSA LETTER NHA;Lo;0;L;;;;;N;;;;;
+16AB4;TANGSA LETTER SHA;Lo;0;L;;;;;N;;;;;
+16AB5;TANGSA LETTER CA;Lo;0;L;;;;;N;;;;;
+16AB6;TANGSA LETTER TSA;Lo;0;L;;;;;N;;;;;
+16AB7;TANGSA LETTER GHA;Lo;0;L;;;;;N;;;;;
+16AB8;TANGSA LETTER HTTA;Lo;0;L;;;;;N;;;;;
+16AB9;TANGSA LETTER THA;Lo;0;L;;;;;N;;;;;
+16ABA;TANGSA LETTER XA;Lo;0;L;;;;;N;;;;;
+16ABB;TANGSA LETTER FA;Lo;0;L;;;;;N;;;;;
+16ABC;TANGSA LETTER DHA;Lo;0;L;;;;;N;;;;;
+16ABD;TANGSA LETTER CHA;Lo;0;L;;;;;N;;;;;
+16ABE;TANGSA LETTER ZA;Lo;0;L;;;;;N;;;;;
+16AC0;TANGSA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16AC1;TANGSA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16AC2;TANGSA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16AC3;TANGSA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16AC4;TANGSA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16AC5;TANGSA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16AC6;TANGSA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16AC7;TANGSA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16AC8;TANGSA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16AC9;TANGSA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16AD0;BASSA VAH LETTER ENNI;Lo;0;L;;;;;N;;;;;
16AD1;BASSA VAH LETTER KA;Lo;0;L;;;;;N;;;;;
16AD2;BASSA VAH LETTER SE;Lo;0;L;;;;;N;;;;;
@@ -26487,6 +27119,19 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;
18D00;<Tangut Ideograph Supplement, First>;Lo;0;L;;;;;N;;;;;
18D08;<Tangut Ideograph Supplement, Last>;Lo;0;L;;;;;N;;;;;
+1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;;
+1AFF1;KATAKANA LETTER MINNAN TONE-3;Lm;0;L;;;;;N;;;;;
+1AFF2;KATAKANA LETTER MINNAN TONE-4;Lm;0;L;;;;;N;;;;;
+1AFF3;KATAKANA LETTER MINNAN TONE-5;Lm;0;L;;;;;N;;;;;
+1AFF5;KATAKANA LETTER MINNAN TONE-7;Lm;0;L;;;;;N;;;;;
+1AFF6;KATAKANA LETTER MINNAN TONE-8;Lm;0;L;;;;;N;;;;;
+1AFF7;KATAKANA LETTER MINNAN NASALIZED TONE-1;Lm;0;L;;;;;N;;;;;
+1AFF8;KATAKANA LETTER MINNAN NASALIZED TONE-2;Lm;0;L;;;;;N;;;;;
+1AFF9;KATAKANA LETTER MINNAN NASALIZED TONE-3;Lm;0;L;;;;;N;;;;;
+1AFFA;KATAKANA LETTER MINNAN NASALIZED TONE-4;Lm;0;L;;;;;N;;;;;
+1AFFB;KATAKANA LETTER MINNAN NASALIZED TONE-5;Lm;0;L;;;;;N;;;;;
+1AFFD;KATAKANA LETTER MINNAN NASALIZED TONE-7;Lm;0;L;;;;;N;;;;;
+1AFFE;KATAKANA LETTER MINNAN NASALIZED TONE-8;Lm;0;L;;;;;N;;;;;
1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;;
1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;;
@@ -26774,9 +27419,15 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;;
1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;;
1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;;
+1B11F;HIRAGANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;;
+1B120;KATAKANA LETTER ARCHAIC YI;Lo;0;L;;;;;N;;;;;
+1B121;KATAKANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
+1B122;KATAKANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;;
+1B132;HIRAGANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;;
1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
+1B155;KATAKANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;;
1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
@@ -27324,6 +27975,191 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;;
1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;;
1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;;
+1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF03;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF04;ZNAMENNY COMBINING MARK NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF05;ZNAMENNY COMBINING MARK SREDNE ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF06;ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF07;ZNAMENNY COMBINING MARK POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF08;ZNAMENNY COMBINING MARK VYSOKO ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF09;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF0A;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF0B;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF0C;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF0D;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF0E;ZNAMENNY COMBINING MARK TSATA ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF0F;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF10;ZNAMENNY COMBINING MARK NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF11;ZNAMENNY COMBINING MARK SREDNE ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF12;ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF13;ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF14;ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF15;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF16;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF17;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+1CF18;ZNAMENNY COMBINING MARK TSATA S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+1CF19;ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+1CF1A;ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;Mn;0;NSM;;;;;N;;;;;
+1CF1B;ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+1CF1C;ZNAMENNY COMBINING MARK POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;;
+1CF1D;ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+1CF1E;ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;;
+1CF1F;ZNAMENNY COMBINING MARK GORAZDO VYSOKO;Mn;0;NSM;;;;;N;;;;;
+1CF20;ZNAMENNY COMBINING MARK ZELO;Mn;0;NSM;;;;;N;;;;;
+1CF21;ZNAMENNY COMBINING MARK ON;Mn;0;NSM;;;;;N;;;;;
+1CF22;ZNAMENNY COMBINING MARK RAVNO;Mn;0;NSM;;;;;N;;;;;
+1CF23;ZNAMENNY COMBINING MARK TIKHAYA;Mn;0;NSM;;;;;N;;;;;
+1CF24;ZNAMENNY COMBINING MARK BORZAYA;Mn;0;NSM;;;;;N;;;;;
+1CF25;ZNAMENNY COMBINING MARK UDARKA;Mn;0;NSM;;;;;N;;;;;
+1CF26;ZNAMENNY COMBINING MARK PODVERTKA;Mn;0;NSM;;;;;N;;;;;
+1CF27;ZNAMENNY COMBINING MARK LOMKA;Mn;0;NSM;;;;;N;;;;;
+1CF28;ZNAMENNY COMBINING MARK KUPNAYA;Mn;0;NSM;;;;;N;;;;;
+1CF29;ZNAMENNY COMBINING MARK KACHKA;Mn;0;NSM;;;;;N;;;;;
+1CF2A;ZNAMENNY COMBINING MARK ZEVOK;Mn;0;NSM;;;;;N;;;;;
+1CF2B;ZNAMENNY COMBINING MARK SKOBA;Mn;0;NSM;;;;;N;;;;;
+1CF2C;ZNAMENNY COMBINING MARK RAZSEKA;Mn;0;NSM;;;;;N;;;;;
+1CF2D;ZNAMENNY COMBINING MARK KRYZH ON LEFT;Mn;0;NSM;;;;;N;;;;;
+1CF30;ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;Mn;0;NSM;;;;;N;;;;;
+1CF31;ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;Mn;0;NSM;;;;;N;;;;;
+1CF32;ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;Mn;0;NSM;;;;;N;;;;;
+1CF33;ZNAMENNY COMBINING MARK ZADERZHKA;Mn;0;NSM;;;;;N;;;;;
+1CF34;ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;Mn;0;NSM;;;;;N;;;;;
+1CF35;ZNAMENNY COMBINING MARK OTSECHKA;Mn;0;NSM;;;;;N;;;;;
+1CF36;ZNAMENNY COMBINING MARK PODCHASHIE;Mn;0;NSM;;;;;N;;;;;
+1CF37;ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;Mn;0;NSM;;;;;N;;;;;
+1CF38;ZNAMENNY COMBINING MARK CHASHKA;Mn;0;NSM;;;;;N;;;;;
+1CF39;ZNAMENNY COMBINING MARK CHASHKA POLNAYA;Mn;0;NSM;;;;;N;;;;;
+1CF3A;ZNAMENNY COMBINING MARK OBLACHKO;Mn;0;NSM;;;;;N;;;;;
+1CF3B;ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;Mn;0;NSM;;;;;N;;;;;
+1CF3C;ZNAMENNY COMBINING MARK TOCHKA;Mn;0;NSM;;;;;N;;;;;
+1CF3D;ZNAMENNY COMBINING MARK DVOETOCHIE;Mn;0;NSM;;;;;N;;;;;
+1CF3E;ZNAMENNY COMBINING ATTACHING VERTICAL OMET;Mn;0;NSM;;;;;N;;;;;
+1CF3F;ZNAMENNY COMBINING MARK CURVED OMET;Mn;0;NSM;;;;;N;;;;;
+1CF40;ZNAMENNY COMBINING MARK KRYZH;Mn;0;NSM;;;;;N;;;;;
+1CF41;ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;Mn;0;NSM;;;;;N;;;;;
+1CF42;ZNAMENNY PRIZNAK MODIFIER LEVEL-2;Mn;0;NSM;;;;;N;;;;;
+1CF43;ZNAMENNY PRIZNAK MODIFIER LEVEL-3;Mn;0;NSM;;;;;N;;;;;
+1CF44;ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;Mn;0;NSM;;;;;N;;;;;
+1CF45;ZNAMENNY PRIZNAK MODIFIER KRYZH;Mn;0;NSM;;;;;N;;;;;
+1CF46;ZNAMENNY PRIZNAK MODIFIER ROG;Mn;0;NSM;;;;;N;;;;;
+1CF50;ZNAMENNY NEUME KRYUK;So;0;L;;;;;N;;;;;
+1CF51;ZNAMENNY NEUME KRYUK TIKHY;So;0;L;;;;;N;;;;;
+1CF52;ZNAMENNY NEUME PARAKLIT;So;0;L;;;;;N;;;;;
+1CF53;ZNAMENNY NEUME DVA V CHELNU;So;0;L;;;;;N;;;;;
+1CF54;ZNAMENNY NEUME KLYUCH;So;0;L;;;;;N;;;;;
+1CF55;ZNAMENNY NEUME ZANOZHEK;So;0;L;;;;;N;;;;;
+1CF56;ZNAMENNY NEUME STOPITSA;So;0;L;;;;;N;;;;;
+1CF57;ZNAMENNY NEUME STOPITSA S OCHKOM;So;0;L;;;;;N;;;;;
+1CF58;ZNAMENNY NEUME PEREVODKA;So;0;L;;;;;N;;;;;
+1CF59;ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CF5A;ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA;So;0;L;;;;;N;;;;;
+1CF5B;ZNAMENNY NEUME CHELYUSTKA;So;0;L;;;;;N;;;;;
+1CF5C;ZNAMENNY NEUME PALKA;So;0;L;;;;;N;;;;;
+1CF5D;ZNAMENNY NEUME ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CF5E;ZNAMENNY NEUME GOLUBCHIK BORZY;So;0;L;;;;;N;;;;;
+1CF5F;ZNAMENNY NEUME GOLUBCHIK TIKHY;So;0;L;;;;;N;;;;;
+1CF60;ZNAMENNY NEUME GOLUBCHIK MRACHNY;So;0;L;;;;;N;;;;;
+1CF61;ZNAMENNY NEUME GOLUBCHIK SVETLY;So;0;L;;;;;N;;;;;
+1CF62;ZNAMENNY NEUME GOLUBCHIK TRESVETLY;So;0;L;;;;;N;;;;;
+1CF63;ZNAMENNY NEUME VRAKHIYA PROSTAYA;So;0;L;;;;;N;;;;;
+1CF64;ZNAMENNY NEUME VRAKHIYA MRACHNAYA;So;0;L;;;;;N;;;;;
+1CF65;ZNAMENNY NEUME VRAKHIYA SVETLAYA;So;0;L;;;;;N;;;;;
+1CF66;ZNAMENNY NEUME VRAKHIYA TRESVETLAYA;So;0;L;;;;;N;;;;;
+1CF67;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA;So;0;L;;;;;N;;;;;
+1CF68;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA;So;0;L;;;;;N;;;;;
+1CF69;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+1CF6A;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA;So;0;L;;;;;N;;;;;
+1CF6B;ZNAMENNY NEUME DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CF6C;ZNAMENNY NEUME REVERSED CHELYUSTKA;So;0;L;;;;;N;;;;;
+1CF6D;ZNAMENNY NEUME DERBITSA;So;0;L;;;;;N;;;;;
+1CF6E;ZNAMENNY NEUME KHAMILO;So;0;L;;;;;N;;;;;
+1CF6F;ZNAMENNY NEUME CHASHKA;So;0;L;;;;;N;;;;;
+1CF70;ZNAMENNY NEUME PODCHASHIE;So;0;L;;;;;N;;;;;
+1CF71;ZNAMENNY NEUME SKAMEYTSA MRACHNAYA;So;0;L;;;;;N;;;;;
+1CF72;ZNAMENNY NEUME SKAMEYTSA SVETLAYA;So;0;L;;;;;N;;;;;
+1CF73;ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA;So;0;L;;;;;N;;;;;
+1CF74;ZNAMENNY NEUME SKAMEYTSA TIKHAYA;So;0;L;;;;;N;;;;;
+1CF75;ZNAMENNY NEUME DEMESTVENNY KLYUCH;So;0;L;;;;;N;;;;;
+1CF76;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+1CF77;ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CF78;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA;So;0;L;;;;;N;;;;;
+1CF79;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA;So;0;L;;;;;N;;;;;
+1CF7A;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA;So;0;L;;;;;N;;;;;
+1CF7B;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CF7C;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;;
+1CF7D;ZNAMENNY NEUME SLOZHITIE;So;0;L;;;;;N;;;;;
+1CF7E;ZNAMENNY NEUME SLOZHITIE S ZAPYATOY;So;0;L;;;;;N;;;;;
+1CF7F;ZNAMENNY NEUME SLOZHITIE ZAKRYTOE;So;0;L;;;;;N;;;;;
+1CF80;ZNAMENNY NEUME SLOZHITIE S KRYZHEM;So;0;L;;;;;N;;;;;
+1CF81;ZNAMENNY NEUME KRYZH;So;0;L;;;;;N;;;;;
+1CF82;ZNAMENNY NEUME ROG;So;0;L;;;;;N;;;;;
+1CF83;ZNAMENNY NEUME FITA;So;0;L;;;;;N;;;;;
+1CF84;ZNAMENNY NEUME KOBYLA;So;0;L;;;;;N;;;;;
+1CF85;ZNAMENNY NEUME ZMEYTSA;So;0;L;;;;;N;;;;;
+1CF86;ZNAMENNY NEUME STATYA;So;0;L;;;;;N;;;;;
+1CF87;ZNAMENNY NEUME STATYA S ZAPYATOY;So;0;L;;;;;N;;;;;
+1CF88;ZNAMENNY NEUME STATYA S KRYZHEM;So;0;L;;;;;N;;;;;
+1CF89;ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM;So;0;L;;;;;N;;;;;
+1CF8A;ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY;So;0;L;;;;;N;;;;;
+1CF8B;ZNAMENNY NEUME STATYA ZAKRYTAYA;So;0;L;;;;;N;;;;;
+1CF8C;ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY;So;0;L;;;;;N;;;;;
+1CF8D;ZNAMENNY NEUME STATYA S ROGOM;So;0;L;;;;;N;;;;;
+1CF8E;ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI;So;0;L;;;;;N;;;;;
+1CF8F;ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM;So;0;L;;;;;N;;;;;
+1CF90;ZNAMENNY NEUME POLKULIZMY;So;0;L;;;;;N;;;;;
+1CF91;ZNAMENNY NEUME STATYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CF92;ZNAMENNY NEUME STRELA PROSTAYA;So;0;L;;;;;N;;;;;
+1CF93;ZNAMENNY NEUME STRELA MRACHNOTIKHAYA;So;0;L;;;;;N;;;;;
+1CF94;ZNAMENNY NEUME STRELA KRYZHEVAYA;So;0;L;;;;;N;;;;;
+1CF95;ZNAMENNY NEUME STRELA POLUPOVODNAYA;So;0;L;;;;;N;;;;;
+1CF96;ZNAMENNY NEUME STRELA POVODNAYA;So;0;L;;;;;N;;;;;
+1CF97;ZNAMENNY NEUME STRELA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CF98;ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA;So;0;L;;;;;N;;;;;
+1CF99;ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CF9A;ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA;So;0;L;;;;;N;;;;;
+1CF9B;ZNAMENNY NEUME STRELA DVOECHELNAYA;So;0;L;;;;;N;;;;;
+1CF9C;ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA;So;0;L;;;;;N;;;;;
+1CF9D;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA;So;0;L;;;;;N;;;;;
+1CF9E;ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;;
+1CF9F;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;;
+1CFA0;ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CFA1;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CFA2;ZNAMENNY NEUME STRELA GROMNAYA;So;0;L;;;;;N;;;;;
+1CFA3;ZNAMENNY NEUME STRELA GROMOPOVODNAYA;So;0;L;;;;;N;;;;;
+1CFA4;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CFA5;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;;
+1CFA6;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;;
+1CFA7;ZNAMENNY NEUME MECHIK;So;0;L;;;;;N;;;;;
+1CFA8;ZNAMENNY NEUME MECHIK POVODNY;So;0;L;;;;;N;;;;;
+1CFA9;ZNAMENNY NEUME MECHIK KLYUCHEVOY;So;0;L;;;;;N;;;;;
+1CFAA;ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY;So;0;L;;;;;N;;;;;
+1CFAB;ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY;So;0;L;;;;;N;;;;;
+1CFAC;ZNAMENNY NEUME STRELA TRYASOGLASNAYA;So;0;L;;;;;N;;;;;
+1CFAD;ZNAMENNY NEUME STRELA TRYASOPOVODNAYA;So;0;L;;;;;N;;;;;
+1CFAE;ZNAMENNY NEUME STRELA TRYASOSTRELNAYA;So;0;L;;;;;N;;;;;
+1CFAF;ZNAMENNY NEUME OSOKA;So;0;L;;;;;N;;;;;
+1CFB0;ZNAMENNY NEUME OSOKA SVETLAYA;So;0;L;;;;;N;;;;;
+1CFB1;ZNAMENNY NEUME OSOKA TRESVETLAYA;So;0;L;;;;;N;;;;;
+1CFB2;ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+1CFB3;ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+1CFB4;ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+1CFB5;ZNAMENNY NEUME STRELA KRYUKOVAYA;So;0;L;;;;;N;;;;;
+1CFB6;ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA;So;0;L;;;;;N;;;;;
+1CFB7;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CFB8;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CFB9;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA;So;0;L;;;;;N;;;;;
+1CFBA;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA;So;0;L;;;;;N;;;;;
+1CFBB;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+1CFBC;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;;
+1CFBD;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;;
+1CFBE;ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA;So;0;L;;;;;N;;;;;
+1CFBF;ZNAMENNY NEUME KUFISMA;So;0;L;;;;;N;;;;;
+1CFC0;ZNAMENNY NEUME OBLAKO;So;0;L;;;;;N;;;;;
+1CFC1;ZNAMENNY NEUME DUDA;So;0;L;;;;;N;;;;;
+1CFC2;ZNAMENNY NEUME NEMKA;So;0;L;;;;;N;;;;;
+1CFC3;ZNAMENNY NEUME PAUK;So;0;L;;;;;N;;;;;
1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
@@ -27801,6 +28637,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;;
1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;;
1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;;
+1D1E9;MUSICAL SYMBOL SORI;So;0;ON;;;;;N;;;;;
+1D1EA;MUSICAL SYMBOL KORON;So;0;ON;;;;;N;;;;;
1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
@@ -27871,6 +28709,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D2C0;KAKTOVIK NUMERAL ZERO;No;0;L;;;;0;N;;;;;
+1D2C1;KAKTOVIK NUMERAL ONE;No;0;L;;;;1;N;;;;;
+1D2C2;KAKTOVIK NUMERAL TWO;No;0;L;;;;2;N;;;;;
+1D2C3;KAKTOVIK NUMERAL THREE;No;0;L;;;;3;N;;;;;
+1D2C4;KAKTOVIK NUMERAL FOUR;No;0;L;;;;4;N;;;;;
+1D2C5;KAKTOVIK NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+1D2C6;KAKTOVIK NUMERAL SIX;No;0;L;;;;6;N;;;;;
+1D2C7;KAKTOVIK NUMERAL SEVEN;No;0;L;;;;7;N;;;;;
+1D2C8;KAKTOVIK NUMERAL EIGHT;No;0;L;;;;8;N;;;;;
+1D2C9;KAKTOVIK NUMERAL NINE;No;0;L;;;;9;N;;;;;
+1D2CA;KAKTOVIK NUMERAL TEN;No;0;L;;;;10;N;;;;;
+1D2CB;KAKTOVIK NUMERAL ELEVEN;No;0;L;;;;11;N;;;;;
+1D2CC;KAKTOVIK NUMERAL TWELVE;No;0;L;;;;12;N;;;;;
+1D2CD;KAKTOVIK NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;;
+1D2CE;KAKTOVIK NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;;
+1D2CF;KAKTOVIK NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;;
+1D2D0;KAKTOVIK NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;;
+1D2D1;KAKTOVIK NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;;
+1D2D2;KAKTOVIK NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;;
+1D2D3;KAKTOVIK NUMERAL NINETEEN;No;0;L;;;;19;N;;;;;
1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;;
1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;;
1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;;
@@ -29671,6 +30529,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;;
1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;;
1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;;
+1DF00;LATIN SMALL LETTER FENG DIGRAPH WITH TRILL;Ll;0;L;;;;;N;;;;;
+1DF01;LATIN SMALL LETTER REVERSED SCRIPT G;Ll;0;L;;;;;N;;;;;
+1DF02;LATIN LETTER SMALL CAPITAL TURNED G;Ll;0;L;;;;;N;;;;;
+1DF03;LATIN SMALL LETTER REVERSED K;Ll;0;L;;;;;N;;;;;
+1DF04;LATIN LETTER SMALL CAPITAL L WITH BELT;Ll;0;L;;;;;N;;;;;
+1DF05;LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF06;LATIN SMALL LETTER TURNED Y WITH BELT;Ll;0;L;;;;;N;;;;;
+1DF07;LATIN SMALL LETTER REVERSED ENG;Ll;0;L;;;;;N;;;;;
+1DF08;LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF09;LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF0A;LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lo;0;L;;;;;N;;;;;
+1DF0B;LATIN SMALL LETTER ESH WITH DOUBLE BAR;Ll;0;L;;;;;N;;;;;
+1DF0C;LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL;Ll;0;L;;;;;N;;;;;
+1DF0D;LATIN SMALL LETTER TURNED T WITH CURL;Ll;0;L;;;;;N;;;;;
+1DF0E;LATIN LETTER INVERTED GLOTTAL STOP WITH CURL;Ll;0;L;;;;;N;;;;;
+1DF0F;LATIN LETTER STRETCHED C WITH CURL;Ll;0;L;;;;;N;;;;;
+1DF10;LATIN LETTER SMALL CAPITAL TURNED K;Ll;0;L;;;;;N;;;;;
+1DF11;LATIN SMALL LETTER L WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
+1DF12;LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF13;LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF14;LATIN SMALL LETTER ENG WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF15;LATIN SMALL LETTER TURNED R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF16;LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF17;LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF18;LATIN SMALL LETTER EZH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1DF19;LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF1A;LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF1B;LATIN SMALL LETTER O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF1C;LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF1D;LATIN SMALL LETTER C WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1DF1E;LATIN SMALL LETTER S WITH CURL;Ll;0;L;;;;;N;;;;;
+1DF25;LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+1DF26;LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+1DF27;LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+1DF28;LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+1DF29;LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+1DF2A;LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;;
1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;;
1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;;
@@ -29709,6 +30604,69 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;;
1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
+1E030;MODIFIER LETTER CYRILLIC SMALL A;Lm;0;L;<super> 0430;;;;N;;;;;
+1E031;MODIFIER LETTER CYRILLIC SMALL BE;Lm;0;L;<super> 0431;;;;N;;;;;
+1E032;MODIFIER LETTER CYRILLIC SMALL VE;Lm;0;L;<super> 0432;;;;N;;;;;
+1E033;MODIFIER LETTER CYRILLIC SMALL GHE;Lm;0;L;<super> 0433;;;;N;;;;;
+1E034;MODIFIER LETTER CYRILLIC SMALL DE;Lm;0;L;<super> 0434;;;;N;;;;;
+1E035;MODIFIER LETTER CYRILLIC SMALL IE;Lm;0;L;<super> 0435;;;;N;;;;;
+1E036;MODIFIER LETTER CYRILLIC SMALL ZHE;Lm;0;L;<super> 0436;;;;N;;;;;
+1E037;MODIFIER LETTER CYRILLIC SMALL ZE;Lm;0;L;<super> 0437;;;;N;;;;;
+1E038;MODIFIER LETTER CYRILLIC SMALL I;Lm;0;L;<super> 0438;;;;N;;;;;
+1E039;MODIFIER LETTER CYRILLIC SMALL KA;Lm;0;L;<super> 043A;;;;N;;;;;
+1E03A;MODIFIER LETTER CYRILLIC SMALL EL;Lm;0;L;<super> 043B;;;;N;;;;;
+1E03B;MODIFIER LETTER CYRILLIC SMALL EM;Lm;0;L;<super> 043C;;;;N;;;;;
+1E03C;MODIFIER LETTER CYRILLIC SMALL O;Lm;0;L;<super> 043E;;;;N;;;;;
+1E03D;MODIFIER LETTER CYRILLIC SMALL PE;Lm;0;L;<super> 043F;;;;N;;;;;
+1E03E;MODIFIER LETTER CYRILLIC SMALL ER;Lm;0;L;<super> 0440;;;;N;;;;;
+1E03F;MODIFIER LETTER CYRILLIC SMALL ES;Lm;0;L;<super> 0441;;;;N;;;;;
+1E040;MODIFIER LETTER CYRILLIC SMALL TE;Lm;0;L;<super> 0442;;;;N;;;;;
+1E041;MODIFIER LETTER CYRILLIC SMALL U;Lm;0;L;<super> 0443;;;;N;;;;;
+1E042;MODIFIER LETTER CYRILLIC SMALL EF;Lm;0;L;<super> 0444;;;;N;;;;;
+1E043;MODIFIER LETTER CYRILLIC SMALL HA;Lm;0;L;<super> 0445;;;;N;;;;;
+1E044;MODIFIER LETTER CYRILLIC SMALL TSE;Lm;0;L;<super> 0446;;;;N;;;;;
+1E045;MODIFIER LETTER CYRILLIC SMALL CHE;Lm;0;L;<super> 0447;;;;N;;;;;
+1E046;MODIFIER LETTER CYRILLIC SMALL SHA;Lm;0;L;<super> 0448;;;;N;;;;;
+1E047;MODIFIER LETTER CYRILLIC SMALL YERU;Lm;0;L;<super> 044B;;;;N;;;;;
+1E048;MODIFIER LETTER CYRILLIC SMALL E;Lm;0;L;<super> 044D;;;;N;;;;;
+1E049;MODIFIER LETTER CYRILLIC SMALL YU;Lm;0;L;<super> 044E;;;;N;;;;;
+1E04A;MODIFIER LETTER CYRILLIC SMALL DZZE;Lm;0;L;<super> A689;;;;N;;;;;
+1E04B;MODIFIER LETTER CYRILLIC SMALL SCHWA;Lm;0;L;<super> 04D9;;;;N;;;;;
+1E04C;MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;Lm;0;L;<super> 0456;;;;N;;;;;
+1E04D;MODIFIER LETTER CYRILLIC SMALL JE;Lm;0;L;<super> 0458;;;;N;;;;;
+1E04E;MODIFIER LETTER CYRILLIC SMALL BARRED O;Lm;0;L;<super> 04E9;;;;N;;;;;
+1E04F;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;Lm;0;L;<super> 04AF;;;;N;;;;;
+1E050;MODIFIER LETTER CYRILLIC SMALL PALOCHKA;Lm;0;L;<super> 04CF;;;;N;;;;;
+1E051;CYRILLIC SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0430;;;;N;;;;;
+1E052;CYRILLIC SUBSCRIPT SMALL LETTER BE;Lm;0;L;<sub> 0431;;;;N;;;;;
+1E053;CYRILLIC SUBSCRIPT SMALL LETTER VE;Lm;0;L;<sub> 0432;;;;N;;;;;
+1E054;CYRILLIC SUBSCRIPT SMALL LETTER GHE;Lm;0;L;<sub> 0433;;;;N;;;;;
+1E055;CYRILLIC SUBSCRIPT SMALL LETTER DE;Lm;0;L;<sub> 0434;;;;N;;;;;
+1E056;CYRILLIC SUBSCRIPT SMALL LETTER IE;Lm;0;L;<sub> 0435;;;;N;;;;;
+1E057;CYRILLIC SUBSCRIPT SMALL LETTER ZHE;Lm;0;L;<sub> 0436;;;;N;;;;;
+1E058;CYRILLIC SUBSCRIPT SMALL LETTER ZE;Lm;0;L;<sub> 0437;;;;N;;;;;
+1E059;CYRILLIC SUBSCRIPT SMALL LETTER I;Lm;0;L;<sub> 0438;;;;N;;;;;
+1E05A;CYRILLIC SUBSCRIPT SMALL LETTER KA;Lm;0;L;<sub> 043A;;;;N;;;;;
+1E05B;CYRILLIC SUBSCRIPT SMALL LETTER EL;Lm;0;L;<sub> 043B;;;;N;;;;;
+1E05C;CYRILLIC SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 043E;;;;N;;;;;
+1E05D;CYRILLIC SUBSCRIPT SMALL LETTER PE;Lm;0;L;<sub> 043F;;;;N;;;;;
+1E05E;CYRILLIC SUBSCRIPT SMALL LETTER ES;Lm;0;L;<sub> 0441;;;;N;;;;;
+1E05F;CYRILLIC SUBSCRIPT SMALL LETTER U;Lm;0;L;<sub> 0443;;;;N;;;;;
+1E060;CYRILLIC SUBSCRIPT SMALL LETTER EF;Lm;0;L;<sub> 0444;;;;N;;;;;
+1E061;CYRILLIC SUBSCRIPT SMALL LETTER HA;Lm;0;L;<sub> 0445;;;;N;;;;;
+1E062;CYRILLIC SUBSCRIPT SMALL LETTER TSE;Lm;0;L;<sub> 0446;;;;N;;;;;
+1E063;CYRILLIC SUBSCRIPT SMALL LETTER CHE;Lm;0;L;<sub> 0447;;;;N;;;;;
+1E064;CYRILLIC SUBSCRIPT SMALL LETTER SHA;Lm;0;L;<sub> 0448;;;;N;;;;;
+1E065;CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;Lm;0;L;<sub> 044A;;;;N;;;;;
+1E066;CYRILLIC SUBSCRIPT SMALL LETTER YERU;Lm;0;L;<sub> 044B;;;;N;;;;;
+1E067;CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;Lm;0;L;<sub> 0491;;;;N;;;;;
+1E068;CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Lm;0;L;<sub> 0456;;;;N;;;;;
+1E069;CYRILLIC SUBSCRIPT SMALL LETTER DZE;Lm;0;L;<sub> 0455;;;;N;;;;;
+1E06A;CYRILLIC SUBSCRIPT SMALL LETTER DZHE;Lm;0;L;<sub> 045F;;;;N;;;;;
+1E06B;MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;Lm;0;L;<super> 04AB;;;;N;;;;;
+1E06C;MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;Lm;0;L;<super> A651;;;;N;;;;;
+1E06D;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;Lm;0;L;<super> 04B1;;;;N;;;;;
+1E08F;COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Mn;230;NSM;;;;;N;;;;;
1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;;
1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;;
1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;;
@@ -29780,6 +30738,37 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;;
1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;;
+1E290;TOTO LETTER PA;Lo;0;L;;;;;N;;;;;
+1E291;TOTO LETTER BA;Lo;0;L;;;;;N;;;;;
+1E292;TOTO LETTER TA;Lo;0;L;;;;;N;;;;;
+1E293;TOTO LETTER DA;Lo;0;L;;;;;N;;;;;
+1E294;TOTO LETTER KA;Lo;0;L;;;;;N;;;;;
+1E295;TOTO LETTER GA;Lo;0;L;;;;;N;;;;;
+1E296;TOTO LETTER MA;Lo;0;L;;;;;N;;;;;
+1E297;TOTO LETTER NA;Lo;0;L;;;;;N;;;;;
+1E298;TOTO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1E299;TOTO LETTER SA;Lo;0;L;;;;;N;;;;;
+1E29A;TOTO LETTER CHA;Lo;0;L;;;;;N;;;;;
+1E29B;TOTO LETTER YA;Lo;0;L;;;;;N;;;;;
+1E29C;TOTO LETTER WA;Lo;0;L;;;;;N;;;;;
+1E29D;TOTO LETTER JA;Lo;0;L;;;;;N;;;;;
+1E29E;TOTO LETTER HA;Lo;0;L;;;;;N;;;;;
+1E29F;TOTO LETTER RA;Lo;0;L;;;;;N;;;;;
+1E2A0;TOTO LETTER LA;Lo;0;L;;;;;N;;;;;
+1E2A1;TOTO LETTER I;Lo;0;L;;;;;N;;;;;
+1E2A2;TOTO LETTER BREATHY I;Lo;0;L;;;;;N;;;;;
+1E2A3;TOTO LETTER IU;Lo;0;L;;;;;N;;;;;
+1E2A4;TOTO LETTER BREATHY IU;Lo;0;L;;;;;N;;;;;
+1E2A5;TOTO LETTER U;Lo;0;L;;;;;N;;;;;
+1E2A6;TOTO LETTER E;Lo;0;L;;;;;N;;;;;
+1E2A7;TOTO LETTER BREATHY E;Lo;0;L;;;;;N;;;;;
+1E2A8;TOTO LETTER EO;Lo;0;L;;;;;N;;;;;
+1E2A9;TOTO LETTER BREATHY EO;Lo;0;L;;;;;N;;;;;
+1E2AA;TOTO LETTER O;Lo;0;L;;;;;N;;;;;
+1E2AB;TOTO LETTER AE;Lo;0;L;;;;;N;;;;;
+1E2AC;TOTO LETTER BREATHY AE;Lo;0;L;;;;;N;;;;;
+1E2AD;TOTO LETTER A;Lo;0;L;;;;;N;;;;;
+1E2AE;TOTO SIGN RISING TONE;Mn;230;NSM;;;;;N;;;;;
1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;;
1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;;
1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;;
@@ -29839,6 +30828,76 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;;
+1E4D0;NAG MUNDARI LETTER O;Lo;0;L;;;;;N;;;;;
+1E4D1;NAG MUNDARI LETTER OP;Lo;0;L;;;;;N;;;;;
+1E4D2;NAG MUNDARI LETTER OL;Lo;0;L;;;;;N;;;;;
+1E4D3;NAG MUNDARI LETTER OY;Lo;0;L;;;;;N;;;;;
+1E4D4;NAG MUNDARI LETTER ONG;Lo;0;L;;;;;N;;;;;
+1E4D5;NAG MUNDARI LETTER A;Lo;0;L;;;;;N;;;;;
+1E4D6;NAG MUNDARI LETTER AJ;Lo;0;L;;;;;N;;;;;
+1E4D7;NAG MUNDARI LETTER AB;Lo;0;L;;;;;N;;;;;
+1E4D8;NAG MUNDARI LETTER ANY;Lo;0;L;;;;;N;;;;;
+1E4D9;NAG MUNDARI LETTER AH;Lo;0;L;;;;;N;;;;;
+1E4DA;NAG MUNDARI LETTER I;Lo;0;L;;;;;N;;;;;
+1E4DB;NAG MUNDARI LETTER IS;Lo;0;L;;;;;N;;;;;
+1E4DC;NAG MUNDARI LETTER IDD;Lo;0;L;;;;;N;;;;;
+1E4DD;NAG MUNDARI LETTER IT;Lo;0;L;;;;;N;;;;;
+1E4DE;NAG MUNDARI LETTER IH;Lo;0;L;;;;;N;;;;;
+1E4DF;NAG MUNDARI LETTER U;Lo;0;L;;;;;N;;;;;
+1E4E0;NAG MUNDARI LETTER UC;Lo;0;L;;;;;N;;;;;
+1E4E1;NAG MUNDARI LETTER UD;Lo;0;L;;;;;N;;;;;
+1E4E2;NAG MUNDARI LETTER UK;Lo;0;L;;;;;N;;;;;
+1E4E3;NAG MUNDARI LETTER UR;Lo;0;L;;;;;N;;;;;
+1E4E4;NAG MUNDARI LETTER E;Lo;0;L;;;;;N;;;;;
+1E4E5;NAG MUNDARI LETTER ENN;Lo;0;L;;;;;N;;;;;
+1E4E6;NAG MUNDARI LETTER EG;Lo;0;L;;;;;N;;;;;
+1E4E7;NAG MUNDARI LETTER EM;Lo;0;L;;;;;N;;;;;
+1E4E8;NAG MUNDARI LETTER EN;Lo;0;L;;;;;N;;;;;
+1E4E9;NAG MUNDARI LETTER ETT;Lo;0;L;;;;;N;;;;;
+1E4EA;NAG MUNDARI LETTER ELL;Lo;0;L;;;;;N;;;;;
+1E4EB;NAG MUNDARI SIGN OJOD;Lm;0;L;;;;;N;;;;;
+1E4EC;NAG MUNDARI SIGN MUHOR;Mn;232;NSM;;;;;N;;;;;
+1E4ED;NAG MUNDARI SIGN TOYOR;Mn;232;NSM;;;;;N;;;;;
+1E4EE;NAG MUNDARI SIGN IKIR;Mn;220;NSM;;;;;N;;;;;
+1E4EF;NAG MUNDARI SIGN SUTUH;Mn;230;NSM;;;;;N;;;;;
+1E4F0;NAG MUNDARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1E4F1;NAG MUNDARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1E4F2;NAG MUNDARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1E4F3;NAG MUNDARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1E4F4;NAG MUNDARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1E4F5;NAG MUNDARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1E4F6;NAG MUNDARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;;
+1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;;
+1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;;
+1E7E3;ETHIOPIC SYLLABLE HHYAA;Lo;0;L;;;;;N;;;;;
+1E7E4;ETHIOPIC SYLLABLE HHYEE;Lo;0;L;;;;;N;;;;;
+1E7E5;ETHIOPIC SYLLABLE HHYE;Lo;0;L;;;;;N;;;;;
+1E7E6;ETHIOPIC SYLLABLE HHYO;Lo;0;L;;;;;N;;;;;
+1E7E8;ETHIOPIC SYLLABLE GURAGE HHWA;Lo;0;L;;;;;N;;;;;
+1E7E9;ETHIOPIC SYLLABLE HHWI;Lo;0;L;;;;;N;;;;;
+1E7EA;ETHIOPIC SYLLABLE HHWEE;Lo;0;L;;;;;N;;;;;
+1E7EB;ETHIOPIC SYLLABLE HHWE;Lo;0;L;;;;;N;;;;;
+1E7ED;ETHIOPIC SYLLABLE GURAGE MWI;Lo;0;L;;;;;N;;;;;
+1E7EE;ETHIOPIC SYLLABLE GURAGE MWEE;Lo;0;L;;;;;N;;;;;
+1E7F0;ETHIOPIC SYLLABLE GURAGE QWI;Lo;0;L;;;;;N;;;;;
+1E7F1;ETHIOPIC SYLLABLE GURAGE QWEE;Lo;0;L;;;;;N;;;;;
+1E7F2;ETHIOPIC SYLLABLE GURAGE QWE;Lo;0;L;;;;;N;;;;;
+1E7F3;ETHIOPIC SYLLABLE GURAGE BWI;Lo;0;L;;;;;N;;;;;
+1E7F4;ETHIOPIC SYLLABLE GURAGE BWEE;Lo;0;L;;;;;N;;;;;
+1E7F5;ETHIOPIC SYLLABLE GURAGE KWI;Lo;0;L;;;;;N;;;;;
+1E7F6;ETHIOPIC SYLLABLE GURAGE KWEE;Lo;0;L;;;;;N;;;;;
+1E7F7;ETHIOPIC SYLLABLE GURAGE KWE;Lo;0;L;;;;;N;;;;;
+1E7F8;ETHIOPIC SYLLABLE GURAGE GWI;Lo;0;L;;;;;N;;;;;
+1E7F9;ETHIOPIC SYLLABLE GURAGE GWEE;Lo;0;L;;;;;N;;;;;
+1E7FA;ETHIOPIC SYLLABLE GURAGE GWE;Lo;0;L;;;;;N;;;;;
+1E7FB;ETHIOPIC SYLLABLE GURAGE FWI;Lo;0;L;;;;;N;;;;;
+1E7FC;ETHIOPIC SYLLABLE GURAGE FWEE;Lo;0;L;;;;;N;;;;;
+1E7FD;ETHIOPIC SYLLABLE GURAGE PWI;Lo;0;L;;;;;N;;;;;
+1E7FE;ETHIOPIC SYLLABLE GURAGE PWEE;Lo;0;L;;;;;N;;;;;
1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;;
1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;;
1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;;
@@ -31886,6 +32945,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;;
1F6D6;HUT;So;0;ON;;;;;N;;;;;
1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;;
+1F6DC;WIRELESS;So;0;ON;;;;;N;;;;;
+1F6DD;PLAYGROUND SLIDE;So;0;ON;;;;;N;;;;;
+1F6DE;WHEEL;So;0;ON;;;;;N;;;;;
+1F6DF;RING BUOY;So;0;ON;;;;;N;;;;;
1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
@@ -32028,6 +33091,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;;
1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;;
1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;;
+1F774;LOT OF FORTUNE;So;0;ON;;;;;N;;;;;
+1F775;OCCULTATION;So;0;ON;;;;;N;;;;;
+1F776;LUNAR ECLIPSE;So;0;ON;;;;;N;;;;;
+1F77B;HAUMEA;So;0;ON;;;;;N;;;;;
+1F77C;MAKEMAKE;So;0;ON;;;;;N;;;;;
+1F77D;GONGGONG;So;0;ON;;;;;N;;;;;
+1F77E;QUAOAR;So;0;ON;;;;;N;;;;;
+1F77F;ORCUS;So;0;ON;;;;;N;;;;;
1F780;BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
1F781;BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
1F782;BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
@@ -32117,6 +33188,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
+1F7D9;NINE POINTED WHITE STAR;So;0;ON;;;;;N;;;;;
1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;;
1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;;
1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;;
@@ -32129,6 +33201,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;;
1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;;
1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;;
+1F7F0;HEAVY EQUALS SIGN;So;0;ON;;;;;N;;;;;
1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
@@ -32400,6 +33473,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;
1F977;NINJA;So;0;ON;;;;;N;;;;;
1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;;
+1F979;FACE HOLDING BACK TEARS;So;0;ON;;;;;N;;;;;
1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;
1F97B;SARI;So;0;ON;;;;;N;;;;;
1F97C;LAB COAT;So;0;ON;;;;;N;;;;;
@@ -32482,6 +33556,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;;
1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;;
1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;;
+1F9CC;TROLL;So;0;ON;;;;;N;;;;;
1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;;
1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;;
1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;;
@@ -32636,9 +33711,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA72;BRIEFS;So;0;ON;;;;;N;;;;;
1FA73;SHORTS;So;0;ON;;;;;N;;;;;
1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;;
+1FA75;LIGHT BLUE HEART;So;0;ON;;;;;N;;;;;
+1FA76;GREY HEART;So;0;ON;;;;;N;;;;;
+1FA77;PINK HEART;So;0;ON;;;;;N;;;;;
1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;
1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;
1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;
+1FA7B;X-RAY;So;0;ON;;;;;N;;;;;
+1FA7C;CRUTCH;So;0;ON;;;;;N;;;;;
1FA80;YO-YO;So;0;ON;;;;;N;;;;;
1FA81;KITE;So;0;ON;;;;;N;;;;;
1FA82;PARACHUTE;So;0;ON;;;;;N;;;;;
@@ -32646,6 +33726,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;;
1FA85;PINATA;So;0;ON;;;;;N;;;;;
1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
+1FA87;MARACAS;So;0;ON;;;;;N;;;;;
+1FA88;FLUTE;So;0;ON;;;;;N;;;;;
1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
1FA91;CHAIR;So;0;ON;;;;;N;;;;;
1FA92;RAZOR;So;0;ON;;;;;N;;;;;
@@ -32671,6 +33753,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;;
1FAA7;PLACARD;So;0;ON;;;;;N;;;;;
1FAA8;ROCK;So;0;ON;;;;;N;;;;;
+1FAA9;MIRROR BALL;So;0;ON;;;;;N;;;;;
+1FAAA;IDENTIFICATION CARD;So;0;ON;;;;;N;;;;;
+1FAAB;LOW BATTERY;So;0;ON;;;;;N;;;;;
+1FAAC;HAMSA;So;0;ON;;;;;N;;;;;
+1FAAD;FOLDING HAND FAN;So;0;ON;;;;;N;;;;;
+1FAAE;HAIR PICK;So;0;ON;;;;;N;;;;;
+1FAAF;KHANDA;So;0;ON;;;;;N;;;;;
1FAB0;FLY;So;0;ON;;;;;N;;;;;
1FAB1;WORM;So;0;ON;;;;;N;;;;;
1FAB2;BEETLE;So;0;ON;;;;;N;;;;;
@@ -32678,9 +33767,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;;
1FAB5;WOOD;So;0;ON;;;;;N;;;;;
1FAB6;FEATHER;So;0;ON;;;;;N;;;;;
+1FAB7;LOTUS;So;0;ON;;;;;N;;;;;
+1FAB8;CORAL;So;0;ON;;;;;N;;;;;
+1FAB9;EMPTY NEST;So;0;ON;;;;;N;;;;;
+1FABA;NEST WITH EGGS;So;0;ON;;;;;N;;;;;
+1FABB;HYACINTH;So;0;ON;;;;;N;;;;;
+1FABC;JELLYFISH;So;0;ON;;;;;N;;;;;
+1FABD;WING;So;0;ON;;;;;N;;;;;
+1FABF;GOOSE;So;0;ON;;;;;N;;;;;
1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;;
+1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;;
+1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;;
+1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;;
+1FACE;MOOSE;So;0;ON;;;;;N;;;;;
+1FACF;DONKEY;So;0;ON;;;;;N;;;;;
1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;;
1FAD2;OLIVE;So;0;ON;;;;;N;;;;;
@@ -32688,6 +33790,29 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAD4;TAMALE;So;0;ON;;;;;N;;;;;
1FAD5;FONDUE;So;0;ON;;;;;N;;;;;
1FAD6;TEAPOT;So;0;ON;;;;;N;;;;;
+1FAD7;POURING LIQUID;So;0;ON;;;;;N;;;;;
+1FAD8;BEANS;So;0;ON;;;;;N;;;;;
+1FAD9;JAR;So;0;ON;;;;;N;;;;;
+1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;;
+1FADB;PEA POD;So;0;ON;;;;;N;;;;;
+1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;;
+1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;;
+1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;;
+1FAE3;FACE WITH PEEKING EYE;So;0;ON;;;;;N;;;;;
+1FAE4;FACE WITH DIAGONAL MOUTH;So;0;ON;;;;;N;;;;;
+1FAE5;DOTTED LINE FACE;So;0;ON;;;;;N;;;;;
+1FAE6;BITING LIP;So;0;ON;;;;;N;;;;;
+1FAE7;BUBBLES;So;0;ON;;;;;N;;;;;
+1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;;
+1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;;
+1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;;
+1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;;
+1FAF3;PALM DOWN HAND;So;0;ON;;;;;N;;;;;
+1FAF4;PALM UP HAND;So;0;ON;;;;;N;;;;;
+1FAF5;INDEX POINTING AT THE VIEWER;So;0;ON;;;;;N;;;;;
+1FAF6;HEART HANDS;So;0;ON;;;;;N;;;;;
+1FAF7;LEFTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;;
+1FAF8;RIGHTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;;
1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
@@ -32901,9 +34026,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
-2A6DD;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2A6DF;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
-2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
+2B739;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;
2B81D;<CJK Ideograph Extension D, Last>;Lo;0;L;;;;;N;;;;;
2B820;<CJK Ideograph Extension E, First>;Lo;0;L;;;;;N;;;;;
@@ -33454,6 +34579,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
30000;<CJK Ideograph Extension G, First>;Lo;0;L;;;;;N;;;;;
3134A;<CJK Ideograph Extension G, Last>;Lo;0;L;;;;;N;;;;;
+31350;<CJK Ideograph Extension H, First>;Lo;0;L;;;;;N;;;;;
+323AF;<CJK Ideograph Extension H, Last>;Lo;0;L;;;;;N;;;;;
E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
diff --git a/regexp/jimregexp.c b/regexp/jimregexp.c
index 7fd6d473e..d80eabd8e 100644
--- a/regexp/jimregexp.c
+++ b/regexp/jimregexp.c
@@ -778,7 +778,7 @@ static int regatom(regex_t *preg, int *flagp)
preg->err = REG_ERR_NULL_CHAR;
return 0;
}
- if (start == '\\' && *pattern == 0) {
+ if (end == '\\' && *pattern == 0) {
preg->err = REG_ERR_INVALID_ESCAPE;
return 0;
}
@@ -796,6 +796,10 @@ static int regatom(regex_t *preg, int *flagp)
for (cc = 0; cc < CC_NUM; cc++) {
n = strlen(character_class[cc]);
if (strncmp(pattern, character_class[cc], n) == 0) {
+ if (pattern[n] != ']') {
+ preg->err = REG_ERR_UNMATCHED_BRACKET;
+ return 0;
+ }
/* Found a character class */
pattern += n + 1;
break;
@@ -1507,7 +1511,7 @@ static int regmatch(regex_t *preg, int prog)
/* Can't match at BOL */
if (preg->reginput > preg->regbol) {
/* Current must be EOL or nonword */
- if (reg_iseol(preg, c) || !isalnum(UCHAR(c)) || c != '_') {
+ if (reg_iseol(preg, c) || !(isalnum(UCHAR(c)) || c == '_')) {
c = preg->reginput[-1];
/* Previous must be word */
if (isalnum(UCHAR(c)) || c == '_') {
diff --git a/scd/apdu.c b/scd/apdu.c
index ffada1d78..deb1134e6 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -3260,7 +3260,7 @@ apdu_send_simple (int slot, int extended_mode,
* Out of historical reasons the function returns 0 on success and
* outs the status word at the end of the result to be able to get the
* status word in the case of a not provided RETBUF, R_SW can be used
- * to store the SW. But note that R_SW qill only be set if the
+ * to store the SW. But note that R_SW will only be set if the
* function returns 0. */
int
apdu_send_direct (int slot, size_t extended_length,
diff --git a/scd/app-common.h b/scd/app-common.h
index 2eeffbe95..988cddf3f 100644
--- a/scd/app-common.h
+++ b/scd/app-common.h
@@ -119,6 +119,7 @@ struct card_ctx_s {
/* Various flags. */
unsigned int reset_requested:1;
unsigned int periodical_check_needed:1;
+ unsigned int maybe_check_aid:1;
};
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index d3f460106..66ec9f4a9 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -869,10 +869,12 @@ parse_login_data (app_t app)
#define MAX_ARGS_STORE_FPR 3
-/* Note, that FPR must be at least 20 bytes. */
+/* Note, that FPR must be at least 20 bytes. If UPDATE is not set,
+ * the fingerprint and the creation date is not actually stored but
+ * the fingerprint is only returned in FPR. */
static gpg_error_t
-store_fpr (app_t app, int keynumber, u32 timestamp, unsigned char *fpr,
- int algo, ...)
+store_fpr (app_t app, int update, int keynumber, u32 timestamp,
+ unsigned char *fpr, int algo, ...)
{
unsigned int n, nbits;
unsigned char *buffer, *p;
@@ -937,6 +939,9 @@ store_fpr (app_t app, int keynumber, u32 timestamp, unsigned char *fpr,
xfree (buffer);
+ if (!update)
+ return 0;
+
tag = (app->appversion > 0x0007? 0xC7 : 0xC6) + keynumber;
flush_cache_item (app, 0xC5);
tag2 = 0xCE + keynumber;
@@ -1605,7 +1610,8 @@ retrieve_key_material (FILE *fp, const char *hexkeyid,
static gpg_error_t
-rsa_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
+rsa_read_pubkey (app_t app, ctrl_t ctrl, int meta_update,
+ u32 created_at, int keyno,
const unsigned char *data, size_t datalen, gcry_sexp_t *r_sexp)
{
gpg_error_t err;
@@ -1642,7 +1648,11 @@ rsa_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
{
unsigned char fprbuf[20];
- err = store_fpr (app, keyno, created_at, fprbuf, PUBKEY_ALGO_RSA,
+ /* If META_UPDATE is not set we only compute but not store the
+ * fingerprint. This might return a wrong fingerprint if
+ * CREATED_AT is not set. */
+ err = store_fpr (app, meta_update, keyno,
+ created_at, fprbuf, PUBKEY_ALGO_RSA,
m, mlen, e, elen);
if (err)
return err;
@@ -1714,7 +1724,8 @@ ecdh_params (const char *curve)
}
static gpg_error_t
-ecc_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
+ecc_read_pubkey (app_t app, ctrl_t ctrl, int meta_update,
+ u32 created_at, int keyno,
const unsigned char *data, size_t datalen, gcry_sexp_t *r_sexp)
{
gpg_error_t err;
@@ -1783,7 +1794,12 @@ ecc_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
{
unsigned char fprbuf[20];
- err = store_fpr (app, keyno, created_at, fprbuf, algo, oidbuf, oid_len,
+ /* If META_UPDATE is not set we only compute but not store the
+ * fingerprint. This might return a wrong fingerprint if
+ * CREATED_AT is not set or the ECDH params do not match the
+ * current defaults. */
+ err = store_fpr (app, meta_update, keyno,
+ created_at, fprbuf, algo, oidbuf, oid_len,
qbuf, ecc_q_len, ecdh_params (curve), (size_t)4);
if (err)
goto leave;
@@ -1826,13 +1842,15 @@ store_keygrip (app_t app, int keyno)
/* Parse tag-length-value data for public key in BUFFER of BUFLEN
- length. Key of KEYNO in APP is updated with an S-expression of
- public key. When CTRL is not NULL, fingerprint is computed with
- CREATED_AT, and fingerprint is written to the card, and key data
- and fingerprint are send back to the client side.
+ * length. Key of KEYNO in APP is updated with an S-expression of
+ * public key. If CTRL is not NULL, the fingerprint is computed with
+ * CREATED_AT and key data and fingerprint are send back to the client
+ * side. If also META_UPDATE is true the fingerprint and the creation
+ * date are also written to the card.
*/
static gpg_error_t
-read_public_key (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
+read_public_key (app_t app, ctrl_t ctrl, int meta_update,
+ u32 created_at, int keyno,
const unsigned char *buffer, size_t buflen)
{
gpg_error_t err;
@@ -1848,10 +1866,10 @@ read_public_key (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
}
if (app->app_local->keyattr[keyno].key_type == KEY_TYPE_RSA)
- err = rsa_read_pubkey (app, ctrl, created_at, keyno,
+ err = rsa_read_pubkey (app, ctrl, meta_update, created_at, keyno,
data, datalen, &s_pkey);
else if (app->app_local->keyattr[keyno].key_type == KEY_TYPE_ECC)
- err = ecc_read_pubkey (app, ctrl, created_at, keyno,
+ err = ecc_read_pubkey (app, ctrl, meta_update, created_at, keyno,
data, datalen, &s_pkey);
else
err = gpg_error (GPG_ERR_NOT_IMPLEMENTED);
@@ -1947,14 +1965,19 @@ get_public_key (app_t app, int keyno)
/* Yubikey returns wrong code. Fix it up. */
if (APP_CARD(app)->cardtype == CARDTYPE_YUBIKEY)
err = gpg_error (GPG_ERR_NO_OBJ);
- /* Yubikey NEO (!CARDTYPE_YUBIKEY) also returns wrong code. Fix it up. */
+ /* Yubikey NEO (!CARDTYPE_YUBIKEY) also returns wrong code.
+ * Fix it up. */
else if (gpg_err_code (err) == GPG_ERR_CARD)
err = gpg_error (GPG_ERR_NO_OBJ);
log_error (_("reading public key failed: %s\n"), gpg_strerror (err));
goto leave;
}
- err = read_public_key (app, NULL, 0U, keyno, buffer, buflen);
+ /* Note that we use 0 for the creation date and thus the - via
+ * status lines - returned fingerprint will only be valid if the
+ * key has also been created with that date. A similar problem
+ * occurs with the ECDH params which are fixed in the code. */
+ err = read_public_key (app, NULL, 0, 0U, keyno, buffer, buflen);
}
else
{
@@ -4520,7 +4543,7 @@ rsa_writekey (app_t app, ctrl_t ctrl,
goto leave;
}
- err = store_fpr (app, keyno, created_at, fprbuf, PUBKEY_ALGO_RSA,
+ err = store_fpr (app, 1, keyno, created_at, fprbuf, PUBKEY_ALGO_RSA,
rsa_n, rsa_n_len, rsa_e, rsa_e_len);
if (err)
goto leave;
@@ -4545,6 +4568,8 @@ ecc_writekey (app_t app, ctrl_t ctrl,
const unsigned char *ecc_q = NULL;
const unsigned char *ecc_d = NULL;
size_t ecc_q_len, ecc_d_len;
+ const unsigned char *ecdh_param = NULL;
+ size_t ecdh_param_len = 0;
const char *curve = NULL;
u32 created_at = 0;
const char *oidstr;
@@ -4557,7 +4582,7 @@ ecc_writekey (app_t app, ctrl_t ctrl,
unsigned char fprbuf[20];
size_t ecc_d_fixed_len;
- /* (private-key(ecc(curve%s)(q%m)(d%m))(created-at%d)):
+ /* (private-key(ecc(curve%s)(q%m)(d%m))(created-at%d)(ecdh-params%s)):
curve = "NIST P-256" */
/* (private-key(ecc(curve%s)(q%m)(d%m))(created-at%d)):
curve = "secp256k1" */
@@ -4652,6 +4677,7 @@ ecc_writekey (app_t app, ctrl_t ctrl,
}
if ((err = parse_sexp (&buf, &buflen, &depth, &tok, &toklen)))
goto leave;
+
if (tok && toklen == 10 && !memcmp ("created-at", tok, toklen))
{
if ((err = parse_sexp (&buf,&buflen,&depth,&tok,&toklen)))
@@ -4663,6 +4689,17 @@ ecc_writekey (app_t app, ctrl_t ctrl,
created_at = created_at*10 + (*tok - '0');
}
}
+ else if (tok && toklen == 11 && !memcmp ("ecdh-params", tok, toklen))
+ {
+ if ((err = parse_sexp (&buf,&buflen,&depth,&tok,&toklen)))
+ goto leave;
+ if (tok)
+ {
+ ecdh_param = tok;
+ ecdh_param_len = toklen;
+ }
+ }
+
/* Skip until end of list. */
last_depth2 = depth;
while (!(err = parse_sexp (&buf, &buflen, &depth, &tok, &toklen))
@@ -4694,6 +4731,13 @@ ecc_writekey (app_t app, ctrl_t ctrl,
else
algo = PUBKEY_ALGO_ECDSA;
+ if (algo == PUBKEY_ALGO_ECDH && !ecdh_param)
+ {
+ log_error ("opgp: ecdh parameters missing\n");
+ err = gpg_error (GPG_ERR_INV_VALUE);
+ goto leave;
+ }
+
oidstr = openpgp_curve_to_oid (curve, &n, NULL);
ecc_d_fixed_len = (n+7)/8;
err = openpgp_oid_from_str (oidstr, &oid);
@@ -4795,8 +4839,8 @@ ecc_writekey (app_t app, ctrl_t ctrl,
goto leave;
}
- err = store_fpr (app, keyno, created_at, fprbuf, algo, oidbuf, oid_len,
- ecc_q, ecc_q_len, ecdh_params (curve), (size_t)4);
+ err = store_fpr (app, 1, keyno, created_at, fprbuf, algo, oidbuf, oid_len,
+ ecc_q, ecc_q_len, ecdh_param, ecdh_param_len);
leave:
gcry_mpi_release (oid);
@@ -5024,7 +5068,7 @@ do_genkey (app_t app, ctrl_t ctrl, const char *keyref, const char *keyalgo,
send_status_info (ctrl, "KEY-CREATED-AT",
numbuf, (size_t)strlen(numbuf), NULL, 0);
- err = read_public_key (app, ctrl, created_at, keyno, buffer, buflen);
+ err = read_public_key (app, ctrl, 1, created_at, keyno, buffer, buflen);
leave:
xfree (buffer);
return err;
diff --git a/scd/app-p15.c b/scd/app-p15.c
index 29241af6b..92628b926 100644
--- a/scd/app-p15.c
+++ b/scd/app-p15.c
@@ -5211,6 +5211,7 @@ verify_pin (app_t app,
const char *errstr;
const char *s;
int remaining;
+ unsigned int min_length;
int pin_reference;
int verified = 0;
int i;
@@ -5277,12 +5278,16 @@ verify_pin (app_t app,
}
/* We might need to cope with UTF8 things here. Not sure how
- min_length etc. are exactly defined, for now we take them as
- a plain octet count. */
- if (strlen (pinvalue) < aodf->min_length)
+ min_length etc. are exactly defined, for now we take them as a
+ plain octet count. For RSCS we enforce 6 despite that some cards
+ give 4 has min. length. */
+ min_length = aodf->min_length;
+ if (app->app_local->card_product == CARD_PRODUCT_RSCS && min_length < 6)
+ min_length = 6;
+
+ if (strlen (pinvalue) < min_length)
{
- log_error ("p15: PIN is too short; minimum length is %lu\n",
- aodf->min_length);
+ log_error ("p15: PIN is too short; minimum length is %u\n", min_length);
err = gpg_error (GPG_ERR_BAD_PIN);
}
else if (aodf->stored_length && strlen (pinvalue) > aodf->stored_length)
diff --git a/scd/app.c b/scd/app.c
index 3ca9e3a04..468fed294 100644
--- a/scd/app.c
+++ b/scd/app.c
@@ -1606,9 +1606,13 @@ check_external_interference (app_t app, ctrl_t ctrl)
/*
* Only when a user is using Yubikey with pcsc-shared configuration,
* we need this detection. Otherwise, the card/token is under full
- * control of scdaemon, there's no problem at all.
+ * control of scdaemon, there's no problem at all. However, if the
+ * APDU command has been used we better also check whether the AID
+ * is still valid.
*/
- if (!opt.pcsc_shared || app->card->cardtype != CARDTYPE_YUBIKEY)
+ if (app && app->card && app->card->maybe_check_aid)
+ app->card->maybe_check_aid = 0;
+ else if (!opt.pcsc_shared || app->card->cardtype != CARDTYPE_YUBIKEY)
return 0;
if (app->fnc.check_aid)
@@ -1646,6 +1650,20 @@ maybe_switch_app (ctrl_t ctrl, card_t card, const char *keyref)
if (!card->app)
return gpg_error (GPG_ERR_CARD_NOT_INITIALIZED);
+
+ if (card->maybe_check_aid && card->app->fnc.reselect
+ && check_external_interference (card->app, ctrl))
+ {
+ if (DBG_APP)
+ log_debug ("slot %d, app %s: forced re-select due to direct APDU use\n",
+ card->slot, xstrapptype (card->app));
+ err = card->app->fnc.reselect (card->app, ctrl);
+ if (err)
+ log_error ("slot %d, app %s: forced re-select failed: %s - ignored\n",
+ card->slot, xstrapptype (card->app), gpg_strerror (err));
+ err = 0;
+ }
+
if (!ctrl->current_apptype)
{
/* For whatever reasons the current apptype has not been set -
diff --git a/scd/command.c b/scd/command.c
index 0f0c6c9df..0cf66d08c 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -2195,11 +2195,15 @@ cmd_apdu (assuan_context_t ctx, char *line)
unsigned char *result = NULL;
size_t resultlen;
+ card->maybe_check_aid = 1;
rc = apdu_send_direct (card->slot, exlen,
apdu, apdulen, handle_more,
NULL, &result, &resultlen);
if (rc)
- log_error ("apdu_send_direct failed: %s\n", gpg_strerror (rc));
+ {
+ log_error ("apdu_send_direct failed: %s\n", apdu_strerror (rc));
+ rc = iso7816_map_sw (rc);
+ }
else
{
rc = assuan_send_data (ctx, result, resultlen);
diff --git a/tools/gpgtar.c b/tools/gpgtar.c
index 64e5306b2..b2ccc9f8a 100644
--- a/tools/gpgtar.c
+++ b/tools/gpgtar.c
@@ -42,6 +42,7 @@
#include "../common/openpgpdefs.h"
#include "../common/init.h"
#include "../common/strlist.h"
+#include "../common/comopt.h"
#include "gpgtar.h"
@@ -89,6 +90,7 @@ enum cmd_and_opt_values
oTarProgram,
/* Debugging. */
+ oDebug,
oDryRun
};
@@ -145,6 +147,8 @@ static gpgrt_opt_t opts[] = {
ARGPARSE_s_s (oTarArgs, "tar-args", "@"),
ARGPARSE_s_s (oTarProgram, "tar", "@"),
+ ARGPARSE_s_s (oDebug, "debug", "@"),
+
ARGPARSE_end ()
};
@@ -166,7 +170,7 @@ static enum cmd_and_opt_values cmd = 0;
static int skip_crypto = 0;
static const char *files_from = NULL;
static int null_names = 0;
-
+static int any_debug;
@@ -438,6 +442,10 @@ parse_arguments (gpgrt_argparse_t *pargs, gpgrt_opt_t *popts)
}
break;
+ case oDebug:
+ any_debug = 1;
+ break;
+
case oDryRun:
opt.dry_run = 1;
break;
@@ -471,6 +479,10 @@ main (int argc, char **argv)
/* Set default options */
opt.status_fd = -1;
+ /* The configuraton directories for use by gpgrt_argparser. */
+ gpgrt_set_confdir (GPGRT_CONFDIR_SYS, gnupg_sysconfdir ());
+ gpgrt_set_confdir (GPGRT_CONFDIR_USER, gnupg_homedir ());
+
/* Parse the command line. */
pargs.argc = &argc;
pargs.argv = &argv;
@@ -481,6 +493,10 @@ main (int argc, char **argv)
if (log_get_errorcount (0))
exit (2);
+ /* Get a log file from common.conf. */
+ if (!parse_comopt (GNUPG_MODULE_NAME_GPGTAR, any_debug) && comopt.logfile)
+ log_set_file (comopt.logfile);
+
/* Print a warning if an argument looks like an option. */
if (!opt.quiet && !(pargs.flags & ARGPARSE_FLAG_STOP_SEEN))
{