]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Rework] Add C++ guards to all headers
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 8 Jul 2019 14:22:05 +0000 (15:22 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 8 Jul 2019 14:22:05 +0000 (15:22 +0100)
98 files changed:
src/client/rspamdclient.h
src/libcryptobox/base64/base64.h
src/libcryptobox/catena/catena.h
src/libcryptobox/chacha20/chacha.h
src/libcryptobox/cryptobox.h
src/libcryptobox/curve25519/curve25519.h
src/libcryptobox/curve25519/fe.h
src/libcryptobox/ed25519/ed25519.h
src/libcryptobox/keypair.h
src/libcryptobox/keypair_private.h
src/libcryptobox/keypairs_cache.h
src/libmime/archives.h
src/libmime/content_type.h
src/libmime/email_addr.h
src/libmime/filter.h
src/libmime/filter_private.h
src/libmime/images.h
src/libmime/lang_detection.h
src/libmime/message.h
src/libmime/mime_encoding.c
src/libmime/mime_encoding.h
src/libmime/mime_expressions.h
src/libmime/mime_headers.h
src/libmime/mime_parser.h
src/libmime/smtp_parsers.h
src/libserver/async_session.h
src/libserver/cfg_file.h
src/libserver/cfg_file_private.h
src/libserver/cfg_rcl.h
src/libserver/composites.h
src/libserver/dkim.h
src/libserver/dns.h
src/libserver/dynamic_cfg.h
src/libserver/fuzzy_backend.h
src/libserver/fuzzy_backend_redis.h
src/libserver/fuzzy_backend_sqlite.h
src/libserver/fuzzy_wire.h
src/libserver/html.h
src/libserver/html_colors.h
src/libserver/html_entities.h
src/libserver/html_tags.h
src/libserver/milter.h
src/libserver/milter_internal.h
src/libserver/monitored.h
src/libserver/protocol.h
src/libserver/protocol_internal.h
src/libserver/re_cache.h
src/libserver/redis_pool.h
src/libserver/roll_history.h
src/libserver/rspamd_control.h
src/libserver/rspamd_symcache.h
src/libserver/spf.h
src/libserver/task.h
src/libserver/url.h
src/libserver/worker_util.h
src/libstat/backends/backends.h
src/libstat/classifiers/classifiers.h
src/libstat/learn_cache/learn_cache.h
src/libstat/stat_api.h
src/libstat/stat_internal.h
src/libstat/tokenizers/tokenizers.h
src/libutil/addr.h
src/libutil/expression.h
src/libutil/fstring.h
src/libutil/hash.h
src/libutil/heap.h
src/libutil/http_connection.h
src/libutil/http_context.h
src/libutil/http_message.h
src/libutil/http_private.h
src/libutil/http_router.h
src/libutil/http_util.h
src/libutil/libev_helper.h
src/libutil/logger.h
src/libutil/map.h
src/libutil/map_helpers.h
src/libutil/map_private.h
src/libutil/mem_pool.h
src/libutil/multipattern.h
src/libutil/printf.h
src/libutil/radix.h
src/libutil/ref.h
src/libutil/regexp.h
src/libutil/rrd.c
src/libutil/rrd.h
src/libutil/shingles.h
src/libutil/sqlite_utils.h
src/libutil/ssl_util.h
src/libutil/str_util.h
src/libutil/upstream.h
src/libutil/util.h
src/lua/lua_common.h
src/lua/lua_map.h
src/lua/lua_thread_pool.h
src/rspamadm/rspamadm.h
src/rspamd.h
src/worker_private.h
test/tests.h

index 9fced29af7b4df5201784b2401010244f130ff50..dc274b7a8757b4fe094f022cf36313e3ec3bf1a0 100644 (file)
 #include "ucl.h"
 #include "contrib/libev/ev.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_client_connection;
 struct rspamd_http_message;
 
@@ -48,6 +52,7 @@ typedef void (*rspamd_client_callback) (
                GError *err);
 
 struct rspamd_http_context;
+
 /**
  * Start rspamd worker or controller command
  * @param ev_base event base
@@ -56,7 +61,7 @@ struct rspamd_http_context;
  * @param timeout timeout in seconds
  * @return
  */
-struct rspamd_client_connection * rspamd_client_init (
+struct rspamd_client_connection *rspamd_client_init (
                struct rspamd_http_context *http_ctx,
                struct ev_loop *ev_base,
                const gchar *name,
@@ -92,4 +97,8 @@ gboolean rspamd_client_command (
  */
 void rspamd_client_destroy (struct rspamd_client_connection *conn);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* RSPAMDCLIENT_H_ */
index e7c639d585adc081255d7b9a280b3856b702ecf0..e2be379b5c78a4f9e75599af728c26ca9cdec761 100644 (file)
 
 #include "config.h"
 
-const char* base64_load (void);
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+const char *base64_load (void);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBCRYPTOBOX_BASE64_BASE64_H_ */
index 56da560ea31a97195d813a2d02b34acf1fd23b10..bf81cc0f9518ec946ae1baf2faa96499290463a6 100644 (file)
 
 #define CATENA_HLEN 64
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 int
-catena (const uint8_t *pwd,   const uint32_t pwdlen,
-          const uint8_t *salt,  const uint8_t  saltlen,
-          const uint8_t *data,  const uint32_t datalen,
-          const uint8_t lambda, const uint8_t  min_garlic,
-          const uint8_t garlic, const uint8_t hashlen,  uint8_t *hash);
+catena (const uint8_t *pwd, const uint32_t pwdlen,
+               const uint8_t *salt, const uint8_t saltlen,
+               const uint8_t *data, const uint32_t datalen,
+               const uint8_t lambda, const uint8_t min_garlic,
+               const uint8_t garlic, const uint8_t hashlen, uint8_t *hash);
 
 /**
  * Simple interface for catena PBKDF
@@ -43,13 +47,17 @@ catena (const uint8_t *pwd,   const uint32_t pwdlen,
  * @return 0 if hash is generated, -1 in case of error
  */
 int simple_catena (const uint8_t *pwd, const uint32_t pwdlen,
-                  const uint8_t *salt, const uint8_t  saltlen,
-                  const uint8_t *data, const uint32_t datalen,
-                  uint8_t hash[CATENA_HLEN]);
+                                  const uint8_t *salt, const uint8_t saltlen,
+                                  const uint8_t *data, const uint32_t datalen,
+                                  uint8_t hash[CATENA_HLEN]);
 
 /**
  * Run a quick test on catena implementation
  */
 int catena_test (void);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBCRYPTOBOX_CATENA_CATENA_H_ */
index 7f93a451799550e69efb1290780f09c7bb360fad..02d6dba00f1b78d6c037c9dc840b3e76750efdde 100644 (file)
 
 #define CHACHA_BLOCKBYTES 64
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 typedef struct chacha_state_internal_t {
        unsigned char s[48];
        size_t rounds;
@@ -53,26 +57,31 @@ typedef struct chacha_iv24_t {
 } chacha_iv24;
 
 void hchacha (const unsigned char key[32], const unsigned char iv[16],
-               unsigned char out[32], size_t rounds);
+                         unsigned char out[32], size_t rounds);
 
 void chacha_init (chacha_state *S, const chacha_key *key, const chacha_iv *iv,
-               size_t rounds);
+                                 size_t rounds);
 
 void xchacha_init (chacha_state *S, const chacha_key *key,
-               const chacha_iv24 *iv, size_t rounds);
+                                  const chacha_iv24 *iv, size_t rounds);
 
 size_t chacha_update (chacha_state *S, const unsigned char *in,
-               unsigned char *out, size_t inlen);
+                                         unsigned char *out, size_t inlen);
 
 size_t chacha_final (chacha_state *S, unsigned char *out);
 
 void chacha (const chacha_key *key, const chacha_iv *iv,
-               const unsigned char *in, unsigned char *out, size_t inlen,
-               size_t rounds);
+                        const unsigned char *in, unsigned char *out, size_t inlen,
+                        size_t rounds);
+
 void xchacha (const chacha_key *key, const chacha_iv24 *iv,
-               const unsigned char *in, unsigned char *out, size_t inlen,
-               size_t rounds);
+                         const unsigned char *in, unsigned char *out, size_t inlen,
+                         size_t rounds);
+
+const char *chacha_load (void);
 
-const char* chacha_load (void);
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* CHACHA_H_ */
index df713d79b8db15280d7d9cfcc6366b81bf399151..d9e4f51cd73839f6ac438528cd935f129567245c 100644 (file)
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_cryptobox_segment {
        guchar *data;
        gsize len;
 };
 
 #if defined(__GNUC__) && \
-       ((defined(__clang__) && (__clang_major__ >= 4 || (__clang_major__ >= 3 && __clang_minor__ >= 8))) || \
-       ((__GNUC__ == 4) &&  (__GNUC_MINOR__ >= 8) || (__GNUC__ > 4)))
+    ((defined(__clang__) && (__clang_major__ >= 4 || (__clang_major__ >= 3 && __clang_minor__ >= 8))) || \
+    ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8) || (__GNUC__ > 4)))
 #define RSPAMD_HAS_TARGET_ATTR 1
 #endif
 
@@ -81,7 +85,7 @@ struct rspamd_cryptobox_library_ctx {
 /**
  * Init cryptobox library
  */
-struct rspamd_cryptobox_library_ctxrspamd_cryptobox_init (void);
+struct rspamd_cryptobox_library_ctx *rspamd_cryptobox_init (void);
 
 /**
  * Generate new keypair
@@ -89,7 +93,7 @@ struct rspamd_cryptobox_library_ctx* rspamd_cryptobox_init (void);
  * @param sk secret key buffer
  */
 void rspamd_cryptobox_keypair (rspamd_pk_t pk, rspamd_sk_t sk,
-               enum rspamd_cryptobox_mode mode);
+                                                          enum rspamd_cryptobox_mode mode);
 
 /**
  * Generate new keypair for signing
@@ -97,7 +101,7 @@ void rspamd_cryptobox_keypair (rspamd_pk_t pk, rspamd_sk_t sk,
  * @param sk secret key buffer
  */
 void rspamd_cryptobox_keypair_sig (rspamd_sig_pk_t pk, rspamd_sig_sk_t sk,
-               enum rspamd_cryptobox_mode mode);
+                                                                  enum rspamd_cryptobox_mode mode);
 
 /**
  * Encrypt data inplace adding signature to sig afterwards
@@ -107,9 +111,9 @@ void rspamd_cryptobox_keypair_sig (rspamd_sig_pk_t pk, rspamd_sig_sk_t sk,
  * @param sig output signature
  */
 void rspamd_cryptobox_encrypt_inplace (guchar *data, gsize len,
-               const rspamd_nonce_t nonce,
-               const rspamd_pk_t pk, const rspamd_sk_t sk, rspamd_mac_t sig,
-               enum rspamd_cryptobox_mode mode);
+                                                                          const rspamd_nonce_t nonce,
+                                                                          const rspamd_pk_t pk, const rspamd_sk_t sk, rspamd_mac_t sig,
+                                                                          enum rspamd_cryptobox_mode mode);
 
 /**
  * Encrypt segments of data inplace adding signature to sig afterwards
@@ -120,10 +124,10 @@ void rspamd_cryptobox_encrypt_inplace (guchar *data, gsize len,
  * @param sig output signature
  */
 void rspamd_cryptobox_encryptv_inplace (struct rspamd_cryptobox_segment *segments,
-               gsize cnt,
-               const rspamd_nonce_t nonce,
-               const rspamd_pk_t pk, const rspamd_sk_t sk, rspamd_mac_t sig,
-               enum rspamd_cryptobox_mode mode);
+                                                                               gsize cnt,
+                                                                               const rspamd_nonce_t nonce,
+                                                                               const rspamd_pk_t pk, const rspamd_sk_t sk, rspamd_mac_t sig,
+                                                                               enum rspamd_cryptobox_mode mode);
 
 
 /**
@@ -136,9 +140,9 @@ void rspamd_cryptobox_encryptv_inplace (struct rspamd_cryptobox_segment *segment
  * @return TRUE if input has been verified successfully
  */
 gboolean rspamd_cryptobox_decrypt_inplace (guchar *data, gsize len,
-               const rspamd_nonce_t nonce,
-               const rspamd_pk_t pk, const rspamd_sk_t sk, const rspamd_mac_t sig,
-               enum rspamd_cryptobox_mode mode);
+                                                                                  const rspamd_nonce_t nonce,
+                                                                                  const rspamd_pk_t pk, const rspamd_sk_t sk, const rspamd_mac_t sig,
+                                                                                  enum rspamd_cryptobox_mode mode);
 
 /**
  * Encrypt segments of data inplace adding signature to sig afterwards
@@ -149,9 +153,9 @@ gboolean rspamd_cryptobox_decrypt_inplace (guchar *data, gsize len,
  * @param sig output signature
  */
 void rspamd_cryptobox_encrypt_nm_inplace (guchar *data, gsize len,
-               const rspamd_nonce_t nonce,
-               const rspamd_nm_t nm, rspamd_mac_t sig,
-               enum rspamd_cryptobox_mode mode);
+                                                                                 const rspamd_nonce_t nonce,
+                                                                                 const rspamd_nm_t nm, rspamd_mac_t sig,
+                                                                                 enum rspamd_cryptobox_mode mode);
 
 /**
  * Encrypt segments of data inplace adding signature to sig afterwards
@@ -162,10 +166,10 @@ void rspamd_cryptobox_encrypt_nm_inplace (guchar *data, gsize len,
  * @param sig output signature
  */
 void rspamd_cryptobox_encryptv_nm_inplace (struct rspamd_cryptobox_segment *segments,
-               gsize cnt,
-               const rspamd_nonce_t nonce,
-               const rspamd_nm_t nm, rspamd_mac_t sig,
-               enum rspamd_cryptobox_mode mode);
+                                                                                  gsize cnt,
+                                                                                  const rspamd_nonce_t nonce,
+                                                                                  const rspamd_nm_t nm, rspamd_mac_t sig,
+                                                                                  enum rspamd_cryptobox_mode mode);
 
 
 /**
@@ -178,9 +182,9 @@ void rspamd_cryptobox_encryptv_nm_inplace (struct rspamd_cryptobox_segment *segm
  * @return TRUE if input has been verified successfully
  */
 gboolean rspamd_cryptobox_decrypt_nm_inplace (guchar *data, gsize len,
-                const rspamd_nonce_t nonce,
-                const rspamd_nm_t nm, const rspamd_mac_t sig,
-                enum rspamd_cryptobox_mode mode);
+                                                                                         const rspamd_nonce_t nonce,
+                                                                                         const rspamd_nm_t nm, const rspamd_mac_t sig,
+                                                                                         enum rspamd_cryptobox_mode mode);
 
 /**
  * Generate shared secret from local sk and remote pk
@@ -189,7 +193,7 @@ gboolean rspamd_cryptobox_decrypt_nm_inplace (guchar *data, gsize len,
  * @param sk local privkey
  */
 void rspamd_cryptobox_nm (rspamd_nm_t nm, const rspamd_pk_t pk,
-               const rspamd_sk_t sk, enum rspamd_cryptobox_mode mode);
+                                                 const rspamd_sk_t sk, enum rspamd_cryptobox_mode mode);
 
 /**
  * Create digital signature for the specified message and place result in `sig`
@@ -200,9 +204,9 @@ void rspamd_cryptobox_nm (rspamd_nm_t nm, const rspamd_pk_t pk,
  * @param sk secret key
  */
 void rspamd_cryptobox_sign (guchar *sig, gsize *siglen_p,
-               const guchar *m, gsize mlen,
-               const rspamd_sk_t sk,
-               enum rspamd_cryptobox_mode mode);
+                                                       const guchar *m, gsize mlen,
+                                                       const rspamd_sk_t sk,
+                                                       enum rspamd_cryptobox_mode mode);
 
 /**
  * Verifies digital signature for the specified message using the specified
@@ -214,18 +218,18 @@ void rspamd_cryptobox_sign (guchar *sig, gsize *siglen_p,
  * @return true if signature is valid, false otherwise
  */
 bool rspamd_cryptobox_verify (const guchar *sig,
-               gsize siglen,
-               const guchar *m,
-               gsize mlen,
-               const rspamd_pk_t pk,
-               enum rspamd_cryptobox_mode mode);
+                                                         gsize siglen,
+                                                         const guchar *m,
+                                                         gsize mlen,
+                                                         const rspamd_pk_t pk,
+                                                         enum rspamd_cryptobox_mode mode);
 
 /**
  * Securely clear the buffer specified
  * @param buf buffer to zero
  * @param buflen length of buffer
  */
-void rspamd_explicit_memzero (void * const buf, gsize buflen);
+void rspamd_explicit_memzero (void *const buf, gsize buflen);
 
 /**
  * Constant time memcmp
@@ -245,8 +249,8 @@ rspamd_cryptobox_memcmp (const void *const b1_, const void *const b2_, gsize len
  * @param k key (must be 16 bytes)
  */
 void rspamd_cryptobox_siphash (unsigned char *out, const unsigned char *in,
-               unsigned long long inlen,
-               const rspamd_sipkey_t k);
+                                                          unsigned long long inlen,
+                                                          const rspamd_sipkey_t k);
 
 enum rspamd_cryptobox_pbkdf_type {
        RSPAMD_CRYPTOBOX_PBKDF2 = 0,
@@ -266,10 +270,10 @@ enum rspamd_cryptobox_pbkdf_type {
  * @return TRUE in case of success and FALSE if failed
  */
 gboolean rspamd_cryptobox_pbkdf (const char *pass, gsize pass_len,
-               const guint8 *salt, gsize salt_len,
-               guint8 *key, gsize key_len,
-               unsigned int complexity,
-               enum rspamd_cryptobox_pbkdf_type type);
+                                                                const guint8 *salt, gsize salt_len,
+                                                                guint8 *key, gsize key_len,
+                                                                unsigned int complexity,
+                                                                enum rspamd_cryptobox_pbkdf_type type);
 
 
 /**
@@ -313,7 +317,7 @@ guint rspamd_cryptobox_mac_bytes (enum rspamd_cryptobox_mode mode);
 guint rspamd_cryptobox_signature_bytes (enum rspamd_cryptobox_mode mode);
 
 /* Hash IUF interface */
-typedef struct rspamd_cryptobox_hash_state_s  {
+typedef struct rspamd_cryptobox_hash_state_s {
        unsigned char opaque[256];
 } rspamd_cryptobox_hash_state_t;
 
@@ -338,10 +342,10 @@ void rspamd_cryptobox_hash_final (void *st, guchar *out);
  * One in all function
  */
 void rspamd_cryptobox_hash (guchar *out,
-               const guchar *data,
-               gsize len,
-               const guchar *key,
-               gsize keylen);
+                                                       const guchar *data,
+                                                       gsize len,
+                                                       const guchar *key,
+                                                       gsize keylen);
 
 enum rspamd_cryptobox_fast_hash_type {
        RSPAMD_CRYPTOBOX_XXHASH64 = 0,
@@ -353,7 +357,7 @@ enum rspamd_cryptobox_fast_hash_type {
 };
 
 /* Non crypto hash IUF interface */
-typedef struct rspamd_cryptobox_fast_hash_state_s  {
+typedef struct rspamd_cryptobox_fast_hash_state_s {
        guint64 opaque[11];
        enum rspamd_cryptobox_fast_hash_type type;
 } rspamd_cryptobox_fast_hash_state_t;
@@ -364,7 +368,7 @@ typedef struct rspamd_cryptobox_fast_hash_state_s  {
  * non-keyed hash is generated
  */
 void rspamd_cryptobox_fast_hash_init (rspamd_cryptobox_fast_hash_state_t *st,
-               guint64 seed);
+                                                                         guint64 seed);
 
 /**
  * Init cryptobox hash state using key if needed, `st` must point to the buffer
@@ -379,7 +383,7 @@ void rspamd_cryptobox_fast_hash_init_specific (rspamd_cryptobox_fast_hash_state_
  * Update hash with data portion
  */
 void rspamd_cryptobox_fast_hash_update (rspamd_cryptobox_fast_hash_state_t *st,
-               const void *data, gsize len);
+                                                                               const void *data, gsize len);
 
 /**
  * Output hash to the buffer of rspamd_cryptobox_HASHBYTES length
@@ -390,7 +394,7 @@ guint64 rspamd_cryptobox_fast_hash_final (rspamd_cryptobox_fast_hash_state_t *st
  * One in all function
  */
 guint64 rspamd_cryptobox_fast_hash (const void *data,
-               gsize len, guint64 seed);
+                                                                       gsize len, guint64 seed);
 
 /**
  * Platform independent version
@@ -409,7 +413,7 @@ guint64 rspamd_cryptobox_fast_hash_specific (
  * @return
  */
 gboolean rspamd_cryptobox_base64_decode (const gchar *in, gsize inlen,
-               guchar *out, gsize *outlen);
+                                                                                guchar *out, gsize *outlen);
 
 /**
  * Returns TRUE if data looks like a valid base64 string
@@ -419,4 +423,8 @@ gboolean rspamd_cryptobox_base64_decode (const gchar *in, gsize inlen,
  */
 gboolean rspamd_cryptobox_base64_is_valid (const gchar *in, gsize inlen);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* CRYPTOBOX_H_ */
index 8b404f5c613f5b53a2a31ab3f7482e3f7be5bd28..c75c355f85f7ed26e43aa06a4dd4760aad552071 100644 (file)
@@ -3,11 +3,21 @@
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 static const guchar curve25519_basepoint[32] = {9};
 
 int curve25519 (guchar *mypublic, const guchar *secret, const guchar *basepoint);
+
 /* Call for optimized implementation of scalarmult if needed */
 int curve25519_base (guchar *mypublic, const guchar *secret);
-const char* curve25519_load (void);
+
+const char *curve25519_load (void);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index a64206026d46eacecaf2ccbdfef3d42e987d68ff..44e8b44a65953bacb321a926fa7ae3ca5a9c7eec 100644 (file)
 #ifndef SRC_LIBCRYPTOBOX_CURVE25519_FE_H_
 #define SRC_LIBCRYPTOBOX_CURVE25519_FE_H_
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 typedef int32_t fe[10];
 
-void fe_frombytes(fe,const unsigned char *);
-void fe_tobytes(unsigned char *,const fe);
-
-void fe_copy(fe,const fe);
-int fe_isnonzero(const fe);
-int fe_isnegative(const fe);
-void fe_0(fe);
-void fe_1(fe);
-void fe_cmov(fe,const fe,unsigned int);
-void fe_add(fe,const fe,const fe);
-void fe_sub(fe,const fe,const fe);
-void fe_neg(fe,const fe);
-void fe_mul(fe,const fe,const fe);
-void fe_sq(fe,const fe);
-void fe_sq2(fe,const fe);
-void fe_invert(fe,const fe);
-void fe_pow22523(fe,const fe);
+void fe_frombytes (fe, const unsigned char *);
+
+void fe_tobytes (unsigned char *, const fe);
+
+void fe_copy (fe, const fe);
+
+int fe_isnonzero (const fe);
+
+int fe_isnegative (const fe);
+
+void fe_0 (fe);
+
+void fe_1 (fe);
+
+void fe_cmov (fe, const fe, unsigned int);
+
+void fe_add (fe, const fe, const fe);
+
+void fe_sub (fe, const fe, const fe);
+
+void fe_neg (fe, const fe);
+
+void fe_mul (fe, const fe, const fe);
+
+void fe_sq (fe, const fe);
+
+void fe_sq2 (fe, const fe);
+
+void fe_invert (fe, const fe);
+
+void fe_pow22523 (fe, const fe);
 
 /*
 ge means group element.
@@ -51,68 +70,90 @@ Representations:
 */
 
 typedef struct {
-  fe X;
-  fe Y;
-  fe Z;
+       fe X;
+       fe Y;
+       fe Z;
 } ge_p2;
 
 typedef struct {
-  fe X;
-  fe Y;
-  fe Z;
-  fe T;
+       fe X;
+       fe Y;
+       fe Z;
+       fe T;
 } ge_p3;
 
 typedef struct {
-  fe X;
-  fe Y;
-  fe Z;
-  fe T;
+       fe X;
+       fe Y;
+       fe Z;
+       fe T;
 } ge_p1p1;
 
 typedef struct {
-  fe yplusx;
-  fe yminusx;
-  fe xy2d;
+       fe yplusx;
+       fe yminusx;
+       fe xy2d;
 } ge_precomp;
 
 typedef struct {
-  fe YplusX;
-  fe YminusX;
-  fe Z;
-  fe T2d;
+       fe YplusX;
+       fe YminusX;
+       fe Z;
+       fe T2d;
 } ge_cached;
 
 
-void ge_tobytes(unsigned char *,const ge_p2 *);
-void ge_p3_tobytes(unsigned char *,const ge_p3 *);
-int ge_frombytes_negate_vartime(ge_p3 *,const unsigned char *);
-
-void ge_p2_0(ge_p2 *);
-void ge_p3_0(ge_p3 *);
-void ge_precomp_0(ge_precomp *);
-void ge_p3_to_p2(ge_p2 *,const ge_p3 *);
-void ge_p3_to_cached(ge_cached *,const ge_p3 *);
-void ge_p1p1_to_p2(ge_p2 *,const ge_p1p1 *);
-void ge_p1p1_to_p3(ge_p3 *,const ge_p1p1 *);
-void ge_p2_dbl(ge_p1p1 *,const ge_p2 *);
-void ge_p3_dbl(ge_p1p1 *,const ge_p3 *);
-
-void ge_madd(ge_p1p1 *,const ge_p3 *,const ge_precomp *);
-void ge_msub(ge_p1p1 *,const ge_p3 *,const ge_precomp *);
-void ge_add(ge_p1p1 *,const ge_p3 *,const ge_cached *);
-void ge_sub(ge_p1p1 *,const ge_p3 *,const ge_cached *);
-void ge_scalarmult_base(ge_p3 *,const unsigned char *);
-void ge_double_scalarmult_vartime(ge_p2 *,const unsigned char *,const ge_p3 *,const unsigned char *);
-void ge_scalarmult_vartime(ge_p3 *,const unsigned char *,const ge_p3 *);
-int verify_32(const unsigned char *x, const unsigned char *y);
+void ge_tobytes (unsigned char *, const ge_p2 *);
+
+void ge_p3_tobytes (unsigned char *, const ge_p3 *);
+
+int ge_frombytes_negate_vartime (ge_p3 *, const unsigned char *);
+
+void ge_p2_0 (ge_p2 *);
+
+void ge_p3_0 (ge_p3 *);
+
+void ge_precomp_0 (ge_precomp *);
+
+void ge_p3_to_p2 (ge_p2 *, const ge_p3 *);
+
+void ge_p3_to_cached (ge_cached *, const ge_p3 *);
+
+void ge_p1p1_to_p2 (ge_p2 *, const ge_p1p1 *);
+
+void ge_p1p1_to_p3 (ge_p3 *, const ge_p1p1 *);
+
+void ge_p2_dbl (ge_p1p1 *, const ge_p2 *);
+
+void ge_p3_dbl (ge_p1p1 *, const ge_p3 *);
+
+void ge_madd (ge_p1p1 *, const ge_p3 *, const ge_precomp *);
+
+void ge_msub (ge_p1p1 *, const ge_p3 *, const ge_precomp *);
+
+void ge_add (ge_p1p1 *, const ge_p3 *, const ge_cached *);
+
+void ge_sub (ge_p1p1 *, const ge_p3 *, const ge_cached *);
+
+void ge_scalarmult_base (ge_p3 *, const unsigned char *);
+
+void ge_double_scalarmult_vartime (ge_p2 *, const unsigned char *, const ge_p3 *, const unsigned char *);
+
+void ge_scalarmult_vartime (ge_p3 *, const unsigned char *, const ge_p3 *);
+
+int verify_32 (const unsigned char *x, const unsigned char *y);
 
 /*
 The set of scalars is \Z/l
 where l = 2^252 + 27742317777372353535851937790883648493.
 */
 
-void sc_reduce(unsigned char *);
-void sc_muladd(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *);
+void sc_reduce (unsigned char *);
+
+void sc_muladd (unsigned char *, const unsigned char *, const unsigned char *, const unsigned char *);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBCRYPTOBOX_CURVE25519_FE_H_ */
index 0fbf7d6fe31e3de1a6ce24794a3d5dfc4d6a442b..a1f702c4ac0aa1d2cc98c15e07c3be47fa6e27a1 100644 (file)
 #include <stdbool.h>
 #include <stddef.h>
 
-const char* ed25519_load (void);
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+const char *ed25519_load (void);
+
 void ed25519_keypair (unsigned char *pk, unsigned char *sk);
+
 void ed25519_seed_keypair (unsigned char *pk, unsigned char *sk, unsigned char *seed);
+
 void ed25519_sign (unsigned char *sig, size_t *siglen_p,
-               const unsigned char *m, size_t mlen,
-               const unsigned char *sk);
+                                  const unsigned char *m, size_t mlen,
+                                  const unsigned char *sk);
+
 bool ed25519_verify (const unsigned char *sig,
-               const unsigned char *m,
-               size_t mlen,
-               const unsigned char *pk);
+                                        const unsigned char *m,
+                                        size_t mlen,
+                                        const unsigned char *pk);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBCRYPTOBOX_ED25519_ED25519_H_ */
index 92af13b683b337925d611b331562969c494107fb..e2b20dc5538eb2d59cb58aed6df3c346a9cd3020 100644 (file)
 #include "cryptobox.h"
 #include "ucl.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Keypair type
  */
@@ -45,7 +49,7 @@ struct rspamd_cryptobox_pubkey;
  * @param alg algorithm for the keypair
  * @return fresh keypair generated
  */
-struct rspamd_cryptobox_keypairrspamd_keypair_new (
+struct rspamd_cryptobox_keypair *rspamd_keypair_new (
                enum rspamd_cryptobox_keypair_type type,
                enum rspamd_cryptobox_mode alg);
 
@@ -54,7 +58,7 @@ struct rspamd_cryptobox_keypair* rspamd_keypair_new (
  * @param kp
  * @return
  */
-struct rspamd_cryptobox_keypairrspamd_keypair_ref (
+struct rspamd_cryptobox_keypair *rspamd_keypair_ref (
                struct rspamd_cryptobox_keypair *kp);
 
 /**
@@ -68,7 +72,7 @@ void rspamd_keypair_unref (struct rspamd_cryptobox_keypair *kp);
  * @param kp
  * @return
  */
-struct rspamd_cryptobox_pubkeyrspamd_pubkey_ref (
+struct rspamd_cryptobox_pubkey *rspamd_pubkey_ref (
                struct rspamd_cryptobox_pubkey *kp);
 
 /**
@@ -78,10 +82,10 @@ struct rspamd_cryptobox_pubkey* rspamd_pubkey_ref (
  * @param alg algorithm of the key (nist or curve25519)
  * @return new pubkey or NULL in case of error
  */
-struct rspamd_cryptobox_pubkeyrspamd_pubkey_from_base32 (const gchar *b32,
-               gsize len,
-               enum rspamd_cryptobox_keypair_type type,
-               enum rspamd_cryptobox_mode alg);
+struct rspamd_cryptobox_pubkey *rspamd_pubkey_from_base32 (const gchar *b32,
+                                                                                                                  gsize len,
+                                                                                                                  enum rspamd_cryptobox_keypair_type type,
+                                                                                                                  enum rspamd_cryptobox_mode alg);
 
 /**
  * Load pubkey from hex string
@@ -90,10 +94,10 @@ struct rspamd_cryptobox_pubkey* rspamd_pubkey_from_base32 (const gchar *b32,
  * @param alg algorithm of the key (nist or curve25519)
  * @return new pubkey or NULL in case of error
  */
-struct rspamd_cryptobox_pubkeyrspamd_pubkey_from_hex (const gchar *hex,
-               gsize len,
-               enum rspamd_cryptobox_keypair_type type,
-               enum rspamd_cryptobox_mode alg);
+struct rspamd_cryptobox_pubkey *rspamd_pubkey_from_hex (const gchar *hex,
+                                                                                                               gsize len,
+                                                                                                               enum rspamd_cryptobox_keypair_type type,
+                                                                                                               enum rspamd_cryptobox_mode alg);
 
 /**
  * Load pubkey from raw chunk string
@@ -102,10 +106,10 @@ struct rspamd_cryptobox_pubkey* rspamd_pubkey_from_hex (const gchar *hex,
  * @param alg algorithm of the key (nist or curve25519)
  * @return new pubkey or NULL in case of error
  */
-struct rspamd_cryptobox_pubkeyrspamd_pubkey_from_bin (const guchar *raw,
-               gsize len,
-               enum rspamd_cryptobox_keypair_type type,
-               enum rspamd_cryptobox_mode alg);
+struct rspamd_cryptobox_pubkey *rspamd_pubkey_from_bin (const guchar *raw,
+                                                                                                               gsize len,
+                                                                                                               enum rspamd_cryptobox_keypair_type type,
+                                                                                                               enum rspamd_cryptobox_mode alg);
 
 
 /**
@@ -119,6 +123,7 @@ void rspamd_pubkey_unref (struct rspamd_cryptobox_pubkey *kp);
  */
 enum rspamd_cryptobox_keypair_type rspamd_keypair_type (
                struct rspamd_cryptobox_keypair *kp);
+
 /**
  * Get type of pubkey
  */
@@ -129,6 +134,7 @@ enum rspamd_cryptobox_keypair_type rspamd_pubkey_type (
  * Get algorithm of keypair
  */
 enum rspamd_cryptobox_mode rspamd_keypair_alg (struct rspamd_cryptobox_keypair *kp);
+
 /**
  * Get algorithm of pubkey
  */
@@ -139,29 +145,30 @@ enum rspamd_cryptobox_mode rspamd_pubkey_alg (struct rspamd_cryptobox_pubkey *p)
  * @param p
  * @return
  */
-const guchar * rspamd_pubkey_get_nm (struct rspamd_cryptobox_pubkey *p,
-                                                                        struct rspamd_cryptobox_keypair *kp);
+const guchar *rspamd_pubkey_get_nm (struct rspamd_cryptobox_pubkey *p,
+                                                                       struct rspamd_cryptobox_keypair *kp);
 
 /**
  * Calculate and store nm value for the specified local key (performs ECDH)
  * @param p
  * @return
  */
-const guchar * rspamd_pubkey_calculate_nm (struct rspamd_cryptobox_pubkey *p,
-               struct rspamd_cryptobox_keypair *kp);
+const guchar *rspamd_pubkey_calculate_nm (struct rspamd_cryptobox_pubkey *p,
+                                                                                 struct rspamd_cryptobox_keypair *kp);
 
 /**
  * Get raw public key id for a specified keypair (rspamd_cryptobox_HASHBYTES)
  * @param kp
  * @return
  */
-const guchar * rspamd_keypair_get_id (struct rspamd_cryptobox_keypair *kp);
+const guchar *rspamd_keypair_get_id (struct rspamd_cryptobox_keypair *kp);
+
 /**
  * Get raw public key id for a specified key (rspamd_cryptobox_HASHBYTES)
  * @param kp
  * @return
  */
-const guchar * rspamd_pubkey_get_id (struct rspamd_cryptobox_pubkey *pk);
+const guchar *rspamd_pubkey_get_id (struct rspamd_cryptobox_pubkey *pk);
 
 /**
  * Get raw public key from pubkey opaque structure
@@ -169,8 +176,8 @@ const guchar * rspamd_pubkey_get_id (struct rspamd_cryptobox_pubkey *pk);
  * @param len
  * @return
  */
-const guchar * rspamd_pubkey_get_pk (struct rspamd_cryptobox_pubkey *pk,
-               guint *len);
+const guchar *rspamd_pubkey_get_pk (struct rspamd_cryptobox_pubkey *pk,
+                                                                       guint *len);
 
 /** Short ID characters count */
 #define RSPAMD_KEYPAIR_SHORT_ID_LEN 5
@@ -187,6 +194,7 @@ const guchar * rspamd_pubkey_get_pk (struct rspamd_cryptobox_pubkey *pk,
 /** Human readable output */
 #define RSPAMD_KEYPAIR_HUMAN 0x20
 #define RSPAMD_KEYPAIR_HEX 0x40
+
 /**
  * Print keypair encoding it if needed
  * @param key key to print
@@ -194,7 +202,7 @@ const guchar * rspamd_pubkey_get_pk (struct rspamd_cryptobox_pubkey *pk,
  * @return newly allocated string with keypair
  */
 GString *rspamd_keypair_print (struct rspamd_cryptobox_keypair *kp,
-               guint how);
+                                                          guint how);
 
 /**
  * Print pubkey encoding it if needed
@@ -203,7 +211,7 @@ GString *rspamd_keypair_print (struct rspamd_cryptobox_keypair *kp,
  * @return newly allocated string with keypair
  */
 GString *rspamd_pubkey_print (struct rspamd_cryptobox_pubkey *pk,
-               guint how);
+                                                         guint how);
 
 /** Get keypair pubkey ID */
 #define RSPAMD_KEYPAIR_COMPONENT_ID 0
@@ -211,6 +219,7 @@ GString *rspamd_pubkey_print (struct rspamd_cryptobox_pubkey *pk,
 #define RSPAMD_KEYPAIR_COMPONENT_PK 1
 /** Get keypair private key */
 #define RSPAMD_KEYPAIR_COMPONENT_SK 2
+
 /**
  * Get specific component of a keypair
  * @param kp keypair
@@ -218,23 +227,23 @@ GString *rspamd_pubkey_print (struct rspamd_cryptobox_pubkey *pk,
  * @param len length of input
  * @return raw content of the component
  */
-const guchar * rspamd_keypair_component (struct rspamd_cryptobox_keypair *kp,
-               guint ncomp, guint *len);
+const guchar *rspamd_keypair_component (struct rspamd_cryptobox_keypair *kp,
+                                                                               guint ncomp, guint *len);
 
 /**
  * Create a new keypair from ucl object
  * @param obj object to load
  * @return new structure or NULL if an object is invalid
  */
-struct rspamd_cryptobox_keypair * rspamd_keypair_from_ucl (const ucl_object_t *obj);
+struct rspamd_cryptobox_keypair *rspamd_keypair_from_ucl (const ucl_object_t *obj);
 
 /**
  * Converts keypair to ucl object
  * @param kp
  * @return
  */
-ucl_object_t * rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
-               gboolean is_hex);
+ucl_object_t *rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
+                                                                        gboolean is_hex);
 
 /**
  * Signs memory using the specified keypair
@@ -247,8 +256,8 @@ ucl_object_t * rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
  * @return TRUE if signature operation succeeded
  */
 gboolean rspamd_keypair_sign (struct rspamd_cryptobox_keypair *kp,
-               const void *data, gsize len, guchar **sig, gsize *outlen,
-               GError **err);
+                                                         const void *data, gsize len, guchar **sig, gsize *outlen,
+                                                         GError **err);
 
 /***
  * Verifies data using public key
@@ -261,8 +270,8 @@ gboolean rspamd_keypair_sign (struct rspamd_cryptobox_keypair *kp,
  * @return TRUE if signature is valid
  */
 gboolean rspamd_keypair_verify (struct rspamd_cryptobox_pubkey *pk,
-               const void *data, gsize len, const guchar *sig, gsize siglen,
-               GError **err);
+                                                               const void *data, gsize len, const guchar *sig, gsize siglen,
+                                                               GError **err);
 
 /**
  * Compares two public keys
@@ -271,7 +280,7 @@ gboolean rspamd_keypair_verify (struct rspamd_cryptobox_pubkey *pk,
  * @return TRUE if two keys are equal
  */
 gboolean rspamd_pubkey_equal (const struct rspamd_cryptobox_pubkey *k1,
-               const struct rspamd_cryptobox_pubkey *k2);
+                                                         const struct rspamd_cryptobox_pubkey *k2);
 
 /**
  * Decrypts data using keypair and a pubkey stored in in, in must start from
@@ -304,6 +313,7 @@ gboolean rspamd_keypair_encrypt (struct rspamd_cryptobox_keypair *kp,
                                                                 const guchar *in, gsize inlen,
                                                                 guchar **out, gsize *outlen,
                                                                 GError **err);
+
 /**
  * Encrypts data usign specific pubkey (must have KEX type).
  * This method actually generates ephemeral local keypair, use public key from
@@ -317,8 +327,12 @@ gboolean rspamd_keypair_encrypt (struct rspamd_cryptobox_keypair *kp,
  * @return TRUE if encryption has been completed, out must be freed in this case
  */
 gboolean rspamd_pubkey_encrypt (struct rspamd_cryptobox_pubkey *pk,
-                                                                const guchar *in, gsize inlen,
-                                                                guchar **out, gsize *outlen,
-                                                                GError **err);
+                                                               const guchar *in, gsize inlen,
+                                                               guchar **out, gsize *outlen,
+                                                               GError **err);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBCRYPTOBOX_KEYPAIR_H_ */
index 98af52b4c709b974c83d8ced57e42d762629ad70..8d259faaa1107f09970f3af1d93054b3ca4f9b5e 100644 (file)
@@ -20,6 +20,9 @@
 #include "ref.h"
 #include "cryptobox.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
 /*
  * KEX cached data
  */
@@ -32,7 +35,7 @@ struct rspamd_cryptobox_nm {
 /*
  * Generic keypair
  */
-struct rspamd_cryptobox_keypair  {
+struct rspamd_cryptobox_keypair {
        guchar id[rspamd_cryptobox_HASHBYTES];
        enum rspamd_cryptobox_keypair_type type;
        enum rspamd_cryptobox_mode alg;
@@ -127,7 +130,13 @@ struct rspamd_cryptobox_pubkey_sig_25519 {
 };
 
 void rspamd_cryptobox_nm_dtor (struct rspamd_cryptobox_nm *nm);
+
 void rspamd_cryptobox_keypair_dtor (struct rspamd_cryptobox_keypair *kp);
+
 void rspamd_cryptobox_pubkey_dtor (struct rspamd_cryptobox_pubkey *p);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* KEYPAIR_PRIVATE_H_ */
index 3ee7c0d51917f4df42f81a2d36731ba30bd17666..4f54b6c9db278741acfe0c747e0785bcd4b122d4 100644 (file)
 #include "config.h"
 #include "keypair.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_keypair_cache;
 
 /**
@@ -26,7 +31,7 @@ struct rspamd_keypair_cache;
  * @param max_items defines maximum count of elements in the cache
  * @return new cache
  */
-struct rspamd_keypair_cache * rspamd_keypair_cache_new (guint max_items);
+struct rspamd_keypair_cache *rspamd_keypair_cache_new (guint max_items);
 
 
 /**
@@ -36,8 +41,8 @@ struct rspamd_keypair_cache * rspamd_keypair_cache_new (guint max_items);
  * @param rk remote key
  */
 void rspamd_keypair_cache_process (struct rspamd_keypair_cache *c,
-               struct rspamd_cryptobox_keypair *lk,
-               struct rspamd_cryptobox_pubkey *rk);
+                                                                  struct rspamd_cryptobox_keypair *lk,
+                                                                  struct rspamd_cryptobox_pubkey *rk);
 
 /**
  * Destroy old keypair cache
@@ -45,5 +50,8 @@ void rspamd_keypair_cache_process (struct rspamd_keypair_cache *c,
  */
 void rspamd_keypair_cache_destroy (struct rspamd_keypair_cache *c);
 
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* KEYPAIRS_CACHE_H_ */
index 6abfb857a9edb0edee1813287a3501d56ab07470..bb84d4298b86be3d465eebb8191d555c2f9f35fb 100644 (file)
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_archive_type {
        RSPAMD_ARCHIVE_ZIP,
        RSPAMD_ARCHIVE_RAR,
@@ -57,6 +61,10 @@ void rspamd_archives_process (struct rspamd_task *task);
 /**
  * Get textual representation of an archive's type
  */
-const gchar * rspamd_archive_type_str (enum rspamd_archive_type type);
+const gchar *rspamd_archive_type_str (enum rspamd_archive_type type);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBMIME_ARCHIVES_H_ */
index 68b1b81072393115f908dbc86c3247aae1ba1f3b..2e3bf5e406f514ffdcfc3eaee19d26a793aec443 100644 (file)
 #include "libutil/fstring.h"
 #include "libutil/mem_pool.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_content_type_flags {
        RSPAMD_CONTENT_TYPE_VALID = 0,
        RSPAMD_CONTENT_TYPE_BROKEN = 1 << 0,
@@ -84,8 +88,8 @@ struct rspamd_content_disposition {
 void
 rspamd_content_type_add_param (rspamd_mempool_t *pool,
                                                           struct rspamd_content_type *ct,
-                                                          gchar *name_start,  gchar *name_end,
-                                                          gchar *value_start,  gchar *value_end);
+                                                          gchar *name_start, gchar *name_end,
+                                                          gchar *value_start, gchar *value_end);
 
 /**
  * Parse content type from the header (performs copy + lowercase)
@@ -94,8 +98,8 @@ rspamd_content_type_add_param (rspamd_mempool_t *pool,
  * @param pool
  * @return
  */
-struct rspamd_content_type * rspamd_content_type_parse (const gchar *in,
-               gsize len, rspamd_mempool_t *pool);
+struct rspamd_content_type *rspamd_content_type_parse (const gchar *in,
+                                                                                                          gsize len, rspamd_mempool_t *pool);
 
 /**
  * Adds new param for content disposition header
@@ -108,9 +112,9 @@ struct rspamd_content_type * rspamd_content_type_parse (const gchar *in,
  */
 void
 rspamd_content_disposition_add_param (rspamd_mempool_t *pool,
-               struct rspamd_content_disposition *cd,
-               const gchar *name_start, const gchar *name_end,
-               const gchar *value_start, const gchar *value_end);
+                                                                         struct rspamd_content_disposition *cd,
+                                                                         const gchar *name_start, const gchar *name_end,
+                                                                         const gchar *value_start, const gchar *value_end);
 
 /**
  * Parse content-disposition header
@@ -119,7 +123,12 @@ rspamd_content_disposition_add_param (rspamd_mempool_t *pool,
  * @param pool
  * @return
  */
-struct rspamd_content_disposition * rspamd_content_disposition_parse (const gchar *in,
-               gsize len, rspamd_mempool_t *pool);
+struct rspamd_content_disposition *rspamd_content_disposition_parse (const gchar *in,
+                                                                                                                                        gsize len,
+                                                                                                                                        rspamd_mempool_t *pool);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBMIME_CONTENT_TYPE_H_ */
index 666ded0e9243a80062fcb111366d555c37598eab..69aa2aa00f6418aba2503701f78b2728e9327960 100644 (file)
 #include "libutil/mem_pool.h"
 #include "libutil/ref.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_mime_header;
 
 enum rspamd_email_address_flags {
@@ -62,7 +67,7 @@ struct rspamd_task;
  * @param len length of string
  * @return
  */
-struct rspamd_email_address * rspamd_email_address_from_smtp (
+struct rspamd_email_address *rspamd_email_address_from_smtp (
                const gchar *str, guint len);
 
 /**
@@ -75,9 +80,9 @@ struct rspamd_email_address * rspamd_email_address_from_smtp (
  * @return
  */
 GPtrArray *rspamd_email_address_from_mime (rspamd_mempool_t *pool,
-               const gchar *hdr,
-               guint len,
-               GPtrArray *src);
+                                                                                  const gchar *hdr,
+                                                                                  guint len,
+                                                                                  GPtrArray *src);
 
 /**
  * Destroys list of email addresses
@@ -87,4 +92,9 @@ void rspamd_email_address_list_destroy (gpointer ptr);
 
 void rspamd_email_address_free (struct rspamd_email_address *addr);
 
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBMIME_EMAIL_ADDR_H_ */
index f9218194a4a9670ca03bf033f06b4843205417ed..8245f8c53c6e14ce03f68f101b36c1f3997fb734 100644 (file)
 #include "rspamd_symcache.h"
 #include "task.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct rspamd_settings;
 struct rspamd_classifier_config;
@@ -67,14 +71,14 @@ struct kh_rspamd_symbols_group_hash_s;
 
 
 struct rspamd_metric_result {
-       double score;                                                                   /**< total score                                                        */
-       double grow_factor;                                                             /**< current grow factor                                        */
+       double score;                                    /**< total score                                                       */
+       double grow_factor;                                /**< current grow factor                                     */
        struct rspamd_passthrough_result *passthrough_result;
        guint npositive;
        guint nnegative;
        double positive_score;
        double negative_score;
-       struct kh_rspamd_symbols_hash_s *symbols;                       /**< symbols of metric                                          */
+       struct kh_rspamd_symbols_hash_s *symbols;            /**< symbols of metric                                             */
        struct kh_rspamd_symbols_group_hash_s *sym_groups; /**< groups of symbols                                               */
        struct rspamd_action_result *actions_limits;
        guint nactions;
@@ -85,7 +89,7 @@ struct rspamd_metric_result {
  * @param task task object
  * @return metric result or NULL if metric `name` has not been found
  */
-struct rspamd_metric_result * rspamd_create_metric_result (struct rspamd_task *task);
+struct rspamd_metric_result *rspamd_create_metric_result (struct rspamd_task *task);
 
 /**
  * Adds a new passthrough result to a task
@@ -118,16 +122,16 @@ enum rspamd_symbol_insert_flags {
  * @param weight numeric weight for symbol
  * @param opts list of symbol's options
  */
-struct rspamd_symbol_resultrspamd_task_insert_result_full (struct rspamd_task *task,
-       const gchar *symbol,
-       double weight,
-       const gchar *opts,
-       enum rspamd_symbol_insert_flags flags);
+struct rspamd_symbol_result *rspamd_task_insert_result_full (struct rspamd_task *task,
+                                                                                                                        const gchar *symbol,
+                                                                                                                        double weight,
+                                                                                                                        const gchar *opts,
+                                                                                                                        enum rspamd_symbol_insert_flags flags);
 
 #define rspamd_task_insert_result_single(task, symbol, flag, opts) \
-       rspamd_task_insert_result_full (task, symbol, flag, opts, RSPAMD_SYMBOL_INSERT_SINGLE)
+    rspamd_task_insert_result_full (task, symbol, flag, opts, RSPAMD_SYMBOL_INSERT_SINGLE)
 #define rspamd_task_insert_result(task, symbol, flag, opts) \
-       rspamd_task_insert_result_full (task, symbol, flag, opts, RSPAMD_SYMBOL_INSERT_DEFAULT)
+    rspamd_task_insert_result_full (task, symbol, flag, opts, RSPAMD_SYMBOL_INSERT_DEFAULT)
 
 
 /**
@@ -137,7 +141,7 @@ struct rspamd_symbol_result* rspamd_task_insert_result_full (struct rspamd_task
  * @param opt
  */
 gboolean rspamd_task_add_result_option (struct rspamd_task *task,
-               struct rspamd_symbol_result *s, const gchar *opt);
+                                                                               struct rspamd_symbol_result *s, const gchar *opt);
 
 /**
  * Finds symbol result
@@ -145,7 +149,7 @@ gboolean rspamd_task_add_result_option (struct rspamd_task *task,
  * @param sym
  * @return
  */
-struct rspamd_symbol_resultrspamd_task_find_symbol_result (
+struct rspamd_symbol_result *rspamd_task_find_symbol_result (
                struct rspamd_task *task, const char *sym);
 
 /**
@@ -166,8 +170,8 @@ void rspamd_task_symbol_result_foreach (struct rspamd_task *task,
  * @return result metric weight
  */
 double rspamd_factor_consolidation_func (struct rspamd_task *task,
-       const gchar *metric_name,
-       const gchar *unused);
+                                                                                const gchar *metric_name,
+                                                                                const gchar *unused);
 
 
 /**
@@ -175,6 +179,10 @@ double rspamd_factor_consolidation_func (struct rspamd_task *task,
  * @param task
  * @return
  */
-struct rspamd_action* rspamd_check_action_metric (struct rspamd_task *task);
+struct rspamd_action *rspamd_check_action_metric (struct rspamd_task *task);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index 82322a6bbfd4439e31649663b92a89f0a97052eb..31def75e2c585bdb53f51d67df4bded187667ad8 100644 (file)
@@ -8,6 +8,10 @@
 #include "filter.h"
 #include "contrib/libucl/khash.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 KHASH_MAP_INIT_STR (rspamd_options_hash, struct rspamd_symbol_option *);
 /**
  * Result of metric processing
@@ -28,4 +32,8 @@ KHASH_INIT (rspamd_symbols_group_hash,
                rspamd_ptr_hash_func,
                rspamd_ptr_equal_func);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif //RSPAMD_FILTER_PRIVATE_H
index 39a7dc8c51bdf8bdc471391c99c19da2300d80e3..bf1175b2adcba8cc77192942580b2ce3c525a8ec 100644 (file)
@@ -4,6 +4,10 @@
 #include "config.h"
 #include "fstring.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct html_image;
 struct rspamd_task;
 struct rspamd_mime_part;
@@ -41,14 +45,18 @@ void rspamd_images_process (struct rspamd_task *task);
  * @param data
  * @return
  */
-struct rspamd_imagerspamd_maybe_process_image (rspamd_mempool_t *pool,
-               rspamd_ftok_t *data);
+struct rspamd_image *rspamd_maybe_process_image (rspamd_mempool_t *pool,
+                                                                                                rspamd_ftok_t *data);
 
 /*
  * Get textual representation of an image's type
  */
-const gchar * rspamd_image_type_str (enum rspamd_image_type type);
+const gchar *rspamd_image_type_str (enum rspamd_image_type type);
 
 void rspamd_image_normalize (struct rspamd_task *task, struct rspamd_image *img);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* IMAGES_H_ */
index 517ab037efbfaccb4efe70086d667f766c171d7c..3eaa4e2860045d4ba5dd41b05d4bc5a4ee6da1e0 100644 (file)
 #include "libstat/stat_api.h"
 #include "libmime/message.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_lang_detector;
 struct rspamd_language_elt;
 struct rspamd_task;
@@ -57,10 +61,11 @@ struct rspamd_lang_detector_res {
  * @param cfg
  * @return
  */
-struct rspamd_lang_detector* rspamd_language_detector_init (struct rspamd_config *cfg);
+struct rspamd_lang_detector *rspamd_language_detector_init (struct rspamd_config *cfg);
+
+struct rspamd_lang_detector *rspamd_language_detector_ref (struct rspamd_lang_detector *d);
 
-struct rspamd_lang_detector* rspamd_language_detector_ref (struct rspamd_lang_detector* d);
-void rspamd_language_detector_unref (struct rspamd_lang_detector* d);
+void rspamd_language_detector_unref (struct rspamd_lang_detector *d);
 
 /**
  * Try to detect language of words
@@ -70,8 +75,8 @@ void rspamd_language_detector_unref (struct rspamd_lang_detector* d);
  * @return array of struct rspamd_lang_detector_res sorted by freq descending
  */
 gboolean rspamd_language_detector_detect (struct rspamd_task *task,
-               struct rspamd_lang_detector *d,
-               struct rspamd_mime_text_part *part);
+                                                                                 struct rspamd_lang_detector *d,
+                                                                                 struct rspamd_mime_text_part *part);
 
 /**
  * Returns TRUE if the specified word is known to be a stop word
@@ -81,6 +86,11 @@ gboolean rspamd_language_detector_detect (struct rspamd_task *task,
  * @return
  */
 gboolean rspamd_language_detector_is_stop_word (struct rspamd_lang_detector *d,
-               const gchar *word, gsize wlen);
+                                                                                               const gchar *word, gsize wlen);
+
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index eb260cd7792d567f9e0ddfceac0cc683e62f56d0..17c4ec5b98a9c7ffe6bcdfd8aa6d1a807231e342 100644 (file)
 #include <unicode/uchar.h>
 #include <unicode/utext.h>
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct controller_session;
 struct html_content;
@@ -106,9 +110,9 @@ struct rspamd_mime_text_part {
        GArray *utf_words;
        UText utf_stripped_text; /* Used by libicu to represent the utf8 content */
 
-       GPtrArray *newlines;    /**< positions of newlines in text, relative to content*/
+       GPtrArray *newlines;    /**< positions of newlines in text, relative to content*/
        struct html_content *html;
-       GList *exceptions;      /**< list of offsets of urls                                            */
+       GList *exceptions;    /**< list of offsets of urls                                              */
        struct rspamd_mime_part *mime_part;
 
        guint flags;
@@ -146,8 +150,9 @@ void rspamd_message_process (struct rspamd_task *task);
  * @return An array of header's values or NULL. It is NOT permitted to free array or values.
  */
 GPtrArray *rspamd_message_get_header_array (struct rspamd_task *task,
-               const gchar *field,
-               gboolean strong);
+                                                                                       const gchar *field,
+                                                                                       gboolean strong);
+
 /**
  * Get an array of mime parts header's values with specified header's name using raw headers
  * @param task worker task structure
@@ -156,8 +161,8 @@ GPtrArray *rspamd_message_get_header_array (struct rspamd_task *task,
  * @return An array of header's values or NULL. It is NOT permitted to free array or values.
  */
 GPtrArray *rspamd_message_get_mime_header_array (struct rspamd_task *task,
-               const gchar *field,
-               gboolean strong);
+                                                                                                const gchar *field,
+                                                                                                gboolean strong);
 
 /**
  * Get an array of header's values with specified header's name using raw headers
@@ -167,9 +172,9 @@ GPtrArray *rspamd_message_get_mime_header_array (struct rspamd_task *task,
  * @return An array of header's values or NULL. It is NOT permitted to free array or values.
  */
 GPtrArray *rspamd_message_get_header_from_hash (GHashTable *htb,
-               rspamd_mempool_t *pool,
-               const gchar *field,
-               gboolean strong);
+                                                                                               rspamd_mempool_t *pool,
+                                                                                               const gchar *field,
+                                                                                               gboolean strong);
 
 
 /**
@@ -184,6 +189,10 @@ enum rspamd_cte rspamd_cte_from_string (const gchar *str);
  * @param ct
  * @return
  */
-const gchar* rspamd_cte_to_string (enum rspamd_cte ct);
+const gchar *rspamd_cte_to_string (enum rspamd_cte ct);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index 7b897929ead3de7ffaa0e30406f2e9f0311f1626..8dc7da12e189c3554e6b0468e28b85d426890f6a 100644 (file)
@@ -18,6 +18,7 @@
 #include "libutil/mem_pool.h"
 #include "libutil/regexp.h"
 #include "libutil/hash.h"
+#include "libserver/cfg_file.h"
 #include "libserver/task.h"
 #include "mime_encoding.h"
 #include "message.h"
index 1a61339ca22328567148f2ba7980e7cc661323d3..5224d33fb39d5333ce5428872d5f98b57dedcc3c 100644 (file)
 #include "fstring.h"
 #include <unicode/uchar.h>
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct rspamd_mime_part;
 struct rspamd_mime_text_part;
@@ -32,8 +36,8 @@ struct rspamd_charset_converter;
  * @param in
  * @return
  */
-const gchar * rspamd_mime_detect_charset (const rspamd_ftok_t *in,
-               rspamd_mempool_t *pool);
+const gchar *rspamd_mime_detect_charset (const rspamd_ftok_t *in,
+                                                                                rspamd_mempool_t *pool);
 
 /**
  * Convert text chunk to utf-8. Input encoding is substituted using
@@ -48,9 +52,9 @@ const gchar * rspamd_mime_detect_charset (const rspamd_ftok_t *in,
  * @param err
  * @return
  */
-gchar * rspamd_mime_text_to_utf8 (rspamd_mempool_t *pool,
-               gchar *input, gsize len, const gchar *in_enc,
-               gsize *olen, GError **err);
+gchar *rspamd_mime_text_to_utf8 (rspamd_mempool_t *pool,
+                                                                gchar *input, gsize len, const gchar *in_enc,
+                                                                gsize *olen, GError **err);
 
 /**
  * Converts data from `in` to `out`, returns `FALSE` if `enc` is not a valid iconv charset
@@ -60,7 +64,7 @@ gchar * rspamd_mime_text_to_utf8 (rspamd_mempool_t *pool,
  * @return
  */
 gboolean rspamd_mime_to_utf8_byte_array (GByteArray *in,
-               GByteArray *out, const gchar *enc);
+                                                                                GByteArray *out, const gchar *enc);
 
 /**
  * Maybe convert part to utf-8
@@ -69,7 +73,7 @@ gboolean rspamd_mime_to_utf8_byte_array (GByteArray *in,
  * @return
  */
 void rspamd_mime_text_part_maybe_convert (struct rspamd_task *task,
-               struct rspamd_mime_text_part *text_part);
+                                                                                 struct rspamd_mime_text_part *text_part);
 
 /**
  * Checks utf8 charset and normalize/validate utf8 string
@@ -79,7 +83,7 @@ void rspamd_mime_text_part_maybe_convert (struct rspamd_task *task,
  * @return
  */
 gboolean rspamd_mime_charset_utf_check (rspamd_ftok_t *charset,
-               gchar *in, gsize len, gboolean content_check);
+                                                                               gchar *in, gsize len, gboolean content_check);
 
 /**
  * Ensure that all characters in string are valid utf8 chars or replace them
@@ -125,5 +129,8 @@ rspamd_converter_to_uchars (struct rspamd_charset_converter *cnv,
  */
 const char *rspamd_mime_charset_find_by_content (const gchar *in, gsize inlen);
 
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBMIME_MIME_ENCODING_H_ */
index 2677b99685ccc7006f1bc84417ce3bb3a160e1fb..9350274826c0be7c1f8c9cf5b7e28b6d7176da86 100644 (file)
 #include "expression.h"
 #include "contrib/libucl/ucl.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct rspamd_config;
 
@@ -34,8 +38,8 @@ struct expression_argument {
 };
 
 
-typedef gboolean (*rspamd_internal_func_t)(struct rspamd_task *,
-               GArray *args, void *user_data);
+typedef gboolean (*rspamd_internal_func_t) (struct rspamd_task *,
+                                                                                       GArray *args, void *user_data);
 
 
 /**
@@ -44,8 +48,8 @@ typedef gboolean (*rspamd_internal_func_t)(struct rspamd_task *,
  * @param func pointer to function
  */
 void register_expression_function (const gchar *name,
-       rspamd_internal_func_t func,
-       void *user_data);
+                                                                  rspamd_internal_func_t func,
+                                                                  void *user_data);
 
 /**
  * Set global limit of regexp data size to be processed
@@ -54,4 +58,8 @@ void register_expression_function (const gchar *name,
  */
 guint rspamd_mime_expression_set_re_limit (guint limit);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 81fff96a2d11e04becd9018199b8bbd17a1a386b..5cb300978cf38dc4f7869355bfa47e29d6d252e5 100644 (file)
 #include "libutil/mem_pool.h"
 #include "libutil/addr.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 
 enum rspamd_rfc2047_encoding {
@@ -97,9 +101,9 @@ struct received_header {
  * @param check_newlines
  */
 void rspamd_mime_headers_process (struct rspamd_task *task, GHashTable *target,
-               GQueue *order,
-               const gchar *in, gsize len,
-               gboolean check_newlines);
+                                                                 GQueue *order,
+                                                                 const gchar *in, gsize len,
+                                                                 gboolean check_newlines);
 
 /**
  * Perform rfc2047 decoding of a header
@@ -108,8 +112,8 @@ void rspamd_mime_headers_process (struct rspamd_task *task, GHashTable *target,
  * @param inlen
  * @return
  */
-gchar * rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in,
-               gsize inlen, gboolean *invalid_utf);
+gchar *rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in,
+                                                                 gsize inlen, gboolean *invalid_utf);
 
 /**
  * Encode mime header if needed
@@ -117,13 +121,17 @@ gchar * rspamd_mime_header_decode (rspamd_mempool_t *pool, const gchar *in,
  * @param len
  * @return newly allocated encoded header
  */
-gchar * rspamd_mime_header_encode (const gchar *in, gsize len);
+gchar *rspamd_mime_header_encode (const gchar *in, gsize len);
 
 /**
  * Generate new unique message id
  * @param fqdn
  * @return
  */
-gchar * rspamd_mime_message_id_generate (const gchar *fqdn);
+gchar *rspamd_mime_message_id_generate (const gchar *fqdn);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBMIME_MIME_HEADERS_H_ */
index 987ec1395d84a39a963cc6b90cacc984cbe80178..ed3fe5f871764d7458b7a61f1d3398993bd35005 100644 (file)
 
 #include "config.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct rspamd_mime_part;
 
@@ -29,8 +34,13 @@ enum rspamd_mime_parse_error {
 };
 
 enum rspamd_mime_parse_error rspamd_mime_parse_task (struct rspamd_task *task,
-               GError **err);
+                                                                                                        GError **err);
 
 void rspamd_mime_parser_calc_digest (struct rspamd_mime_part *part);
 
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBMIME_MIME_PARSER_H_ */
index 6904bece0780f145fc3979e82ffa8253b829c4c5..b4fb825b4932422bd350a1b02af0a0e2fdc0f896 100644 (file)
 #include "task.h"
 #include "message.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 int rspamd_smtp_received_parse (struct rspamd_task *task,
-               const char *data, size_t len, struct received_header *rh);
+                                                               const char *data, size_t len,
+                                                               struct received_header *rh);
+
 int rspamd_smtp_addr_parse (const char *data, size_t len,
-               struct rspamd_email_address *addr);
+                                                       struct rspamd_email_address *addr);
+
 gboolean rspamd_content_disposition_parser (const char *data, size_t len,
-               struct rspamd_content_disposition *cd, rspamd_mempool_t *pool);
+                                                                                       struct rspamd_content_disposition *cd,
+                                                                                       rspamd_mempool_t *pool);
 
 gboolean
 rspamd_rfc2047_parser (const gchar *in, gsize len, gint *pencoding,
-               const gchar **charset, gsize *charset_len,
-               const gchar **encoded, gsize *encoded_len);
+                                          const gchar **charset, gsize *charset_len,
+                                          const gchar **encoded, gsize *encoded_len);
 
-rspamd_inet_addr_trspamd_parse_smtp_ip (const char *data, size_t len,
-               rspamd_mempool_t *pool);
+rspamd_inet_addr_t *rspamd_parse_smtp_ip (const char *data, size_t len,
+                                                                                 rspamd_mempool_t *pool);
 
 guint64 rspamd_parse_smtp_date (const char *data, size_t len);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBMIME_SMTP_PARSERS_H_ */
index 92454158aa5881d2ecd2447354f79ec8134799cd..ad79769e98f2349c9c228aaa28c68356e0c2dc33 100644 (file)
 #include "config.h"
 #include "mem_pool.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_async_event;
 struct rspamd_async_session;
 
-typedef void (*event_finalizer_t)(gpointer ud);
-typedef gboolean (*session_finalizer_t)(gpointer user_data);
+typedef void (*event_finalizer_t) (gpointer ud);
+
+typedef gboolean (*session_finalizer_t) (gpointer user_data);
 
 /**
  * Make new async session
@@ -34,9 +39,9 @@ typedef gboolean (*session_finalizer_t)(gpointer user_data);
  * @param user_data abstract user data
  * @return
  */
-struct rspamd_async_session * rspamd_session_create (rspamd_mempool_t *pool,
-       session_finalizer_t fin, event_finalizer_t restore,
-       event_finalizer_t cleanup, gpointer user_data);
+struct rspamd_async_session *rspamd_session_create (rspamd_mempool_t *pool,
+                                                                                                       session_finalizer_t fin, event_finalizer_t restore,
+                                                                                                       event_finalizer_t cleanup, gpointer user_data);
 
 /**
  * Insert new event to the session
@@ -47,12 +52,13 @@ struct rspamd_async_session * rspamd_session_create (rspamd_mempool_t *pool,
  */
 struct rspamd_async_event *
 rspamd_session_add_event_full (struct rspamd_async_session *session,
-                                                 event_finalizer_t fin,
-                                                 gpointer user_data,
-                                                 const gchar *subsystem,
-                                                 const gchar *loc);
+                                                          event_finalizer_t fin,
+                                                          gpointer user_data,
+                                                          const gchar *subsystem,
+                                                          const gchar *loc);
+
 #define rspamd_session_add_event(session, fin, user_data, subsystem) \
-       rspamd_session_add_event_full(session, fin, user_data, subsystem, G_STRLOC)
+    rspamd_session_add_event_full(session, fin, user_data, subsystem, G_STRLOC)
 
 /**
  * Remove normal event
@@ -61,11 +67,12 @@ rspamd_session_add_event_full (struct rspamd_async_session *session,
  * @param ud user data object
  */
 void rspamd_session_remove_event_full (struct rspamd_async_session *session,
-                                                                 event_finalizer_t fin,
-                                                                 gpointer ud,
-                                                                 const gchar *loc);
+                                                                          event_finalizer_t fin,
+                                                                          gpointer ud,
+                                                                          const gchar *loc);
+
 #define rspamd_session_remove_event(session, fin, user_data) \
-       rspamd_session_remove_event_full(session, fin, user_data, G_STRLOC)
+    rspamd_session_remove_event_full(session, fin, user_data, G_STRLOC)
 
 /**
  * Must be called at the end of session, it calls fin functions for all non-forced callbacks
@@ -83,7 +90,7 @@ void rspamd_session_cleanup (struct rspamd_async_session *session);
  * @param session
  * @return
  */
-rspamd_mempool_t * rspamd_session_mempool (struct rspamd_async_session *session);
+rspamd_mempool_t *rspamd_session_mempool (struct rspamd_async_session *session);
 
 /**
  * Check session for events pending and call fin callback if no events are pending
@@ -107,4 +114,8 @@ guint rspamd_session_events_pending (struct rspamd_async_session *session);
  */
 gboolean rspamd_session_blocked (struct rspamd_async_session *s);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /*RSPAMD_ASYNC_SESSION_H*/
index 5f70ccda8c3d0012b541a94aa0845756dfecdec0..de00ab128cc36893fc52cd7a1b838df9b0ed8b66 100644 (file)
@@ -25,7 +25,7 @@
 #include "ucl.h"
 #include "regexp.h"
 #include "libserver/re_cache.h"
-#include "ref.h"
+#include "libutil/ref.h"
 #include "libutil/radix.h"
 #include "monitored.h"
 #include "redis_pool.h"
 /* Default metric name */
 #define DEFAULT_METRIC "default"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct expression;
 struct tokenizer;
 struct rspamd_stat_classifier;
@@ -149,13 +153,13 @@ struct rspamd_statfile_config {
        gchar *label;                                   /**< label of this statfile                                                             */
        ucl_object_t *opts;                             /**< other options                                                                              */
        gboolean is_spam;                               /**< spam flag                                                                                  */
-       struct rspamd_classifier_config *clcf;                  /**< parent pointer of classifier configuration                 */
-       gpointer data;                                                                  /**< opaque data                                                                                */
+       struct rspamd_classifier_config *clcf;            /**< parent pointer of classifier configuration                       */
+       gpointer data;                                    /**< opaque data                                                                              */
 };
 
 struct rspamd_tokenizer_config {
        const ucl_object_t *opts;                        /**< other options                                                                             */
-       const gchar *name;                                                              /**< name of tokenizer                                                                  */
+       const gchar *name;                                /**< name of tokenizer                                                                        */
 };
 
 
@@ -344,7 +348,7 @@ struct rspamd_config {
        gdouble grow_factor;                            /**< grow factor for metric                                                     */
        GHashTable *symbols;                            /**< weights of symbols in metric                                       */
        const gchar *subject;                           /**< subject rewrite string                                                     */
-       GHashTable * groups;                            /**< groups of symbols                                                          */
+       GHashTable *groups;                            /**< groups of symbols                                                           */
        struct rspamd_action *actions;                  /**< all actions of the metric                                          */
 
        gboolean raw_mode;                              /**< work in raw mode instead of utf one                                */
@@ -399,17 +403,17 @@ struct rspamd_config {
        ucl_object_t *config_comments;                  /**< comments saved from the config                                             */
        ucl_object_t *doc_strings;                      /**< documentation strings for config options                   */
        GPtrArray *c_modules;                           /**< list of C modules                  */
-       GHashTable * composite_symbols;                 /**< hash of composite symbols indexed by its name              */
+       GHashTable *composite_symbols;                 /**< hash of composite symbols indexed by its name               */
        GList *classifiers;                             /**< list of all classifiers defined                    */
        GList *statfiles;                               /**< list of all statfiles in config file order         */
        GHashTable *classifiers_symbols;                /**< hashtable indexed by symbol name of classifiers    */
-       GHashTable * cfg_params;                        /**< all cfg params indexed by its name in this structure */
+       GHashTable *cfg_params;                        /**< all cfg params indexed by its name in this structure */
        gchar *dynamic_conf;                            /**< path to dynamic configuration                                              */
        ucl_object_t *current_dynamic_conf;             /**< currently loaded dynamic configuration                             */
-       GHashTable * domain_settings;                   /**< settings per-domains                               */
-       GHashTable * user_settings;                     /**< settings per-user                                  */
-       gchar * domain_settings_str;                    /**< string representation of settings                                  */
-       gchar * user_settings_str;
+       GHashTable *domain_settings;                   /**< settings per-domains                               */
+       GHashTable *user_settings;                     /**< settings per-user                                  */
+       gchar *domain_settings_str;                    /**< string representation of settings                                   */
+       gchar *user_settings_str;
        gint clock_res;                                 /**< resolution of clock used                                                   */
 
        GList *maps;                                    /**< maps active                                                                                */
@@ -423,16 +427,16 @@ struct rspamd_config {
        struct rspamd_symcache *cache;                    /**< symbols cache object                                                             */
        gchar *cache_filename;                          /**< filename of cache file                                                             */
        gdouble cache_reload_time;                      /**< how often cache reload should be performed                 */
-       gchar * checksum;                               /**< real checksum of config file                                               */
-       gchar * dump_checksum;                          /**< dump checksum of config file                                               */
+       gchar *checksum;                               /**< real checksum of config file                                                */
+       gchar *dump_checksum;                          /**< dump checksum of config file                                                */
        gpointer lua_state;                             /**< pointer to lua state                                                               */
        gpointer lua_thread_pool;                       /**< pointer to lua thread (coroutine) pool                             */
 
-       gchar * rrd_file;                               /**< rrd file to store statistics                                               */
-       gchar * history_file;                           /**< file to save rolling history                                               */
-       gchar * tld_file;                               /**< file to load effective tld list from                               */
-       gchar * hs_cache_dir;                           /**< directory to save hyperscan databases                              */
-       gchar * magic_file;                             /**< file to initialize libmagic                                                */
+       gchar *rrd_file;                               /**< rrd file to store statistics                                                */
+       gchar *history_file;                           /**< file to save rolling history                                                */
+       gchar *tld_file;                               /**< file to load effective tld list from                                */
+       gchar *hs_cache_dir;                           /**< directory to save hyperscan databases                               */
+       gchar *magic_file;                             /**< file to initialize libmagic                                         */
 
        gdouble dns_timeout;                            /**< timeout in milliseconds for waiting for dns reply  */
        guint32 dns_retransmits;                        /**< maximum retransmits count                                                  */
@@ -443,49 +447,49 @@ struct rspamd_config {
        guint32 dns_max_requests;                       /**< limit of DNS requests per task                                     */
        gboolean enable_dnssec;                         /**< enable dnssec stub resolver                                                */
 
-       guint upstream_max_errors;                                              /**< upstream max errors before shutting off                    */
-       gdouble upstream_error_time;                                    /**< rate of upstream errors                                                    */
-       gdouble upstream_revive_time;                                   /**< revive timeout for upstreams                                               */
-       struct upstream_ctx *ups_ctx;                                   /**< upstream context                                                                   */
-       struct rspamd_dns_resolver *dns_resolver;               /**< dns resolver if loaded                                                             */
+       guint upstream_max_errors;                        /**< upstream max errors before shutting off                  */
+       gdouble upstream_error_time;                    /**< rate of upstream errors                                                    */
+       gdouble upstream_revive_time;                    /**< revive timeout for upstreams                                              */
+       struct upstream_ctx *ups_ctx;                    /**< upstream context                                                                  */
+       struct rspamd_dns_resolver *dns_resolver;        /**< dns resolver if loaded                                                            */
 
-       guint min_word_len;                                                             /**< minimum length of the word to be considered                */
-       guint max_word_len;                                                             /**< maximum length of the word to be considered                */
-       guint words_decay;                                                              /**< limit for words for starting adaptive ignoring             */
-       guint history_rows;                                                             /**< number of history rows stored                                              */
+       guint min_word_len;                                /**< minimum length of the word to be considered             */
+       guint max_word_len;                                /**< maximum length of the word to be considered             */
+       guint words_decay;                                /**< limit for words for starting adaptive ignoring           */
+       guint history_rows;                                /**< number of history rows stored                                           */
        guint max_sessions_cache;                        /**< maximum number of sessions cache elts                             */
-       guint lua_gc_step;                                                              /**< lua gc step                                                                                */
-       guint lua_gc_pause;                                                             /**< lua gc pause                                                                               */
-       guint full_gc_iters;                                                    /**< iterations between full gc cycle                                   */
+       guint lua_gc_step;                                /**< lua gc step                                                                              */
+       guint lua_gc_pause;                                /**< lua gc pause                                                                            */
+       guint full_gc_iters;                            /**< iterations between full gc cycle                                   */
 
-       GList *classify_headers;                                                /**< list of headers using for statistics                               */
-       struct module_s **compiled_modules;                             /**< list of compiled C modules                                                 */
-       struct worker_s **compiled_workers;                             /**< list of compiled C modules                                                 */struct rspamd_log_format *log_format;                 /**< parsed log format                                                                  */
-       gchar *log_format_str;                                                  /**< raw log format string                                                              */
+       GList *classify_headers;                        /**< list of headers using for statistics                               */
+       struct module_s **compiled_modules;                /**< list of compiled C modules                                                      */
+       struct worker_s **compiled_workers;                /**< list of compiled C modules                                                      */struct rspamd_log_format *log_format;            /**< parsed log format                                                                       */
+       gchar *log_format_str;                            /**< raw log format string                                                            */
 
-       struct rspamd_external_libs_ctx *libs_ctx;              /**< context for external libraries                                             */
-       struct rspamd_monitored_ctx *monitored_ctx;             /**< context for monitored resources                                    */
-       struct rspamd_redis_pool *redis_pool;                   /**< redis connectiosn pool                                                             */
+       struct rspamd_external_libs_ctx *libs_ctx;        /**< context for external libraries                                           */
+       struct rspamd_monitored_ctx *monitored_ctx;        /**< context for monitored resources                                 */
+       struct rspamd_redis_pool *redis_pool;            /**< redis connectiosn pool                                                            */
 
-       struct rspamd_re_cache *re_cache;                               /**< static regexp cache                                                                */
+       struct rspamd_re_cache *re_cache;                /**< static regexp cache                                                               */
 
-       GHashTable *trusted_keys;                                               /**< list of trusted public keys                                                */
+       GHashTable *trusted_keys;                        /**< list of trusted public keys                                               */
 
-       struct rspamd_config_cfg_lua_script *on_load_scripts;   /**< list of scripts executed on workers load                   */
-       struct rspamd_config_cfg_lua_script *post_init_scripts; /**< list of scripts executed on config being fully loaded                      */
+       struct rspamd_config_cfg_lua_script *on_load_scripts;    /**< list of scripts executed on workers load                  */
+       struct rspamd_config_cfg_lua_script *post_init_scripts;    /**< list of scripts executed on config being fully loaded                   */
        struct rspamd_config_cfg_lua_script *on_term_scripts; /**< list of callbacks called on worker's termination     */
-       struct rspamd_config_cfg_lua_script *config_unload_scripts;     /**< list of scripts executed on config unload                  */
+       struct rspamd_config_cfg_lua_script *config_unload_scripts;    /**< list of scripts executed on config unload                   */
 
-       gchar *ssl_ca_path;                                                             /**< path to CA certs                                                                   */
-       gchar *ssl_ciphers;                                                             /**< set of preferred ciphers                                                   */
-       gchar *zstd_input_dictionary;                                   /**< path to zstd input dictionary                                              */
-       gchar *zstd_output_dictionary;                                  /**< path to zstd output dictionary                                             */
-       ucl_object_t *neighbours;                                               /**< other servers in the cluster                                               */
+       gchar *ssl_ca_path;                                /**< path to CA certs                                                                        */
+       gchar *ssl_ciphers;                                /**< set of preferred ciphers                                                        */
+       gchar *zstd_input_dictionary;                    /**< path to zstd input dictionary                                             */
+       gchar *zstd_output_dictionary;                    /**< path to zstd output dictionary                                           */
+       ucl_object_t *neighbours;                        /**< other servers in the cluster                                              */
 
-       struct rspamd_config_settings_elt *setting_ids; /**< preprocessed settings ids                                                  */
-       struct rspamd_lang_detector *lang_det;                  /**< language detector                                                                  */
+       struct rspamd_config_settings_elt *setting_ids;    /**< preprocessed settings ids                                                       */
+       struct rspamd_lang_detector *lang_det;            /**< language detector                                                                        */
 
-       ref_entry_t ref;                                                                /**< reference counter                                                                  */
+       ref_entry_t ref;                                /**< reference counter                                                                  */
 };
 
 
@@ -497,7 +501,7 @@ struct rspamd_config {
  * @return 1 if line was successfully parsed and 0 in case of error
  */
 gboolean rspamd_parse_bind_line (struct rspamd_config *cfg,
-       struct rspamd_worker_conf *cf, const gchar *str);
+                                                                struct rspamd_worker_conf *cf, const gchar *str);
 
 
 enum rspamd_config_init_flags {
@@ -505,6 +509,7 @@ enum rspamd_config_init_flags {
        RSPAMD_CONFIG_INIT_SKIP_LUA = (1u << 0u),
        RSPAMD_CONFIG_INIT_WIPE_LUA_MEM = (1u << 1u),
 };
+
 /**
  * Init default values
  * @param cfg config file
@@ -524,9 +529,9 @@ void rspamd_config_free (struct rspamd_config *cfg);
  * @param opt_name name of option to get
  * @return module value or NULL if option does not defined
  */
-const ucl_object_t * rspamd_config_get_module_opt (struct rspamd_config *cfg,
-       const gchar *module_name,
-       const gchar *opt_name);
+const ucl_object_t *rspamd_config_get_module_opt (struct rspamd_config *cfg,
+                                                                                                 const gchar *module_name,
+                                                                                                 const gchar *opt_name);
 
 
 /**
@@ -547,18 +552,18 @@ enum rspamd_post_load_options {
 };
 
 #define RSPAMD_CONFIG_LOAD_ALL (RSPAMD_CONFIG_INIT_URL| \
-               RSPAMD_CONFIG_INIT_LIBS| \
-               RSPAMD_CONFIG_INIT_SYMCACHE| \
-               RSPAMD_CONFIG_INIT_VALIDATE| \
-               RSPAMD_CONFIG_INIT_PRELOAD_MAPS| \
-               RSPAMD_CONFIG_INIT_POST_LOAD_LUA)
+        RSPAMD_CONFIG_INIT_LIBS| \
+        RSPAMD_CONFIG_INIT_SYMCACHE| \
+        RSPAMD_CONFIG_INIT_VALIDATE| \
+        RSPAMD_CONFIG_INIT_PRELOAD_MAPS| \
+        RSPAMD_CONFIG_INIT_POST_LOAD_LUA)
 
 /**
  * Do post load actions for config
  * @param cfg config file
  */
 gboolean rspamd_config_post_load (struct rspamd_config *cfg,
-               enum rspamd_post_load_options opts);
+                                                                 enum rspamd_post_load_options opts);
 
 /**
  * Calculate checksum for config file
@@ -576,20 +581,22 @@ void rspamd_config_unescape_quotes (gchar *line);
 /*
  * Convert comma separated string to a list of strings
  */
-GList * rspamd_config_parse_comma_list (rspamd_mempool_t *pool,
-       const gchar *line);
+GList *rspamd_config_parse_comma_list (rspamd_mempool_t *pool,
+                                                                          const gchar *line);
 
 /*
  * Return a new classifier_config structure, setting default and non-conflicting attributes
  */
-struct rspamd_classifier_config * rspamd_config_new_classifier (
-       struct rspamd_config *cfg,
-       struct rspamd_classifier_config *c);
+struct rspamd_classifier_config *rspamd_config_new_classifier (
+               struct rspamd_config *cfg,
+               struct rspamd_classifier_config *c);
+
 /*
  * Return a new worker_conf structure, setting default and non-conflicting attributes
  */
-struct rspamd_worker_conf * rspamd_config_new_worker (struct rspamd_config *cfg,
-       struct rspamd_worker_conf *c);
+struct rspamd_worker_conf *rspamd_config_new_worker (struct rspamd_config *cfg,
+                                                                                                        struct rspamd_worker_conf *c);
+
 /*
  * Return a new metric structure, setting default and non-conflicting attributes
  */
@@ -598,15 +605,16 @@ void rspamd_config_init_metric (struct rspamd_config *cfg);
 /*
  * Return new symbols group definition
  */
-struct rspamd_symbols_group * rspamd_config_new_group (
+struct rspamd_symbols_group *rspamd_config_new_group (
                struct rspamd_config *cfg,
                const gchar *name);
+
 /*
  * Return a new statfile structure, setting default and non-conflicting attributes
  */
-struct rspamd_statfile_config * rspamd_config_new_statfile (
-       struct rspamd_config *cfg,
-       struct rspamd_statfile_config *c);
+struct rspamd_statfile_config *rspamd_config_new_statfile (
+               struct rspamd_config *cfg,
+               struct rspamd_statfile_config *c);
 
 /*
  * Register symbols of classifiers inside metrics
@@ -621,12 +629,12 @@ gboolean rspamd_config_check_statfiles (struct rspamd_classifier_config *cf);
 /*
  * Find classifier config by name
  */
-struct rspamd_classifier_config * rspamd_config_find_classifier (
-       struct rspamd_config *cfg,
-       const gchar *name);
+struct rspamd_classifier_config *rspamd_config_find_classifier (
+               struct rspamd_config *cfg,
+               const gchar *name);
 
 void rspamd_ucl_add_conf_macros (struct ucl_parser *parser,
-       struct rspamd_config *cfg);
+                                                                struct rspamd_config *cfg);
 
 void rspamd_ucl_add_conf_variables (struct ucl_parser *parser, GHashTable *vars);
 
@@ -681,8 +689,8 @@ gboolean rspamd_config_add_symbol_group (struct rspamd_config *cfg,
  * @return TRUE if symbol has been inserted or FALSE if action already exists with higher priority
  */
 gboolean rspamd_config_set_action_score (struct rspamd_config *cfg,
-               const gchar *action_name,
-               const ucl_object_t *obj);
+                                                                                const gchar *action_name,
+                                                                                const ucl_object_t *obj);
 
 /**
  * Check priority and maybe disable action completely
@@ -709,7 +717,7 @@ gboolean rspamd_config_maybe_disable_action (struct rspamd_config *cfg,
  * @return TRUE if a module is enabled
  */
 gboolean rspamd_config_is_module_enabled (struct rspamd_config *cfg,
-               const gchar *module_name);
+                                                                                 const gchar *module_name);
 
 /*
  * Get action from a string
@@ -719,8 +727,9 @@ gboolean rspamd_action_from_str (const gchar *data, gint *result);
 /*
  * Return textual representation of action enumeration
  */
-const gchar * rspamd_action_to_str (enum rspamd_action_type action);
-const gchar * rspamd_action_to_str_alt (enum rspamd_action_type action);
+const gchar *rspamd_action_to_str (enum rspamd_action_type action);
+
+const gchar *rspamd_action_to_str_alt (enum rspamd_action_type action);
 
 /*
  * Resort all actions (needed to operate with thresholds)
@@ -736,11 +745,12 @@ void rspamd_actions_sort (struct rspamd_config *cfg);
  * @return
  */
 struct rspamd_radix_map_helper;
+
 gboolean rspamd_config_radix_from_ucl (struct rspamd_config *cfg,
-               const ucl_object_t *obj,
-               const gchar *description,
-               struct rspamd_radix_map_helper **target,
-               GError **err);
+                                                                          const ucl_object_t *obj,
+                                                                          const gchar *description,
+                                                                          struct rspamd_radix_map_helper **target,
+                                                                          GError **err);
 
 /**
  * Adds new settings id to be preprocessed
@@ -789,11 +799,11 @@ struct rspamd_config_settings_elt *rspamd_config_find_settings_name_ref (
  * @param name
  * @return
  */
-struct rspamd_action * rspamd_config_get_action (struct rspamd_config *cfg,
-                                                                                                const gchar *name);
+struct rspamd_action *rspamd_config_get_action (struct rspamd_config *cfg,
+                                                                                               const gchar *name);
 
-struct rspamd_action * rspamd_config_get_action_by_type (struct rspamd_config *cfg,
-                                                                                                enum rspamd_action_type type);
+struct rspamd_action *rspamd_config_get_action_by_type (struct rspamd_config *cfg,
+                                                                                                               enum rspamd_action_type type);
 
 #define msg_err_config(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \
         cfg->cfg_pool->tag.tagname, cfg->checksum, \
@@ -817,5 +827,8 @@ extern guint rspamd_config_log_id;
         G_STRFUNC, \
         __VA_ARGS__)
 
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* ifdef CFG_FILE_H */
index 94cb9aa08c57f9b902d699fe0e16b6bd16f221e2..8a88f6e3efb97ef018eeffc4fb440e82398a7f8b 100644 (file)
 #define HASH_CASELESS
 #include "uthash_strcase.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Action config definition
  */
@@ -35,4 +39,8 @@ struct rspamd_action {
        struct UT_hash_handle hh; /* Index by name */
 };
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 8d957a402ec86e7c27ad19b93b345d0d13be4b7f..7f97b100d010f7f27eb2ce291b061af4e3743433 100644 (file)
@@ -28,6 +28,10 @@ cfg_rcl_error_quark (void)
        return g_quark_from_static_string ("cfg-rcl-error-quark");
 }
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_rcl_section;
 struct rspamd_config;
 struct rspamd_rcl_default_handler_data;
@@ -491,4 +495,9 @@ gboolean rspamd_config_read (struct rspamd_config *cfg,
                                                         GHashTable *vars,
                                                         gboolean skip_jinja,
                                                         gchar **lua_env);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* CFG_RCL_H_ */
index a72effdf296bd0707b2e16ca16d70cdd2fec2cc0..d9947a7ddad50a7a5c7a53ff0b8682a3cb4c3d98 100644 (file)
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 
 /**
@@ -52,4 +56,8 @@ void rspamd_make_composites (struct rspamd_task *task);
 
 enum rspamd_composite_policy rspamd_composite_policy_from_str (const gchar *string);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBSERVER_COMPOSITES_H_ */
index 57f761895d6782393f40c269c638aaaef7c62a51..adc68403aee118645c18875e66eab09ba6f132c4 100644 (file)
@@ -21,6 +21,7 @@
 #include "dns.h"
 #include "ref.h"
 
+
 /* Main types and definitions */
 
 #define RSPAMD_DKIM_SIGNHEADER     "DKIM-Signature"
 #define DKIM_SIGERROR_MISSING_V     44  /* v= tag missing */
 #define DKIM_SIGERROR_EMPTY_V       45  /* v= tag empty */
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /* Check results */
 enum rspamd_dkim_check_rcode {
        DKIM_CONTINUE = 0,
@@ -148,8 +153,8 @@ struct rspamd_dkim_check_result {
 
 
 /* Err MUST be freed if it is not NULL, key is allocated by slice allocator */
-typedef void (*dkim_key_handler_f)(rspamd_dkim_key_t *key, gsize keylen,
-       rspamd_dkim_context_t *ctx, gpointer ud, GError *err);
+typedef void (*dkim_key_handler_f) (rspamd_dkim_key_t *key, gsize keylen,
+                                                                       rspamd_dkim_context_t *ctx, gpointer ud, GError *err);
 
 /**
  * Create new dkim context from signature
@@ -159,11 +164,11 @@ typedef void (*dkim_key_handler_f)(rspamd_dkim_key_t *key, gsize keylen,
  * @param err pointer to error object
  * @return new context or NULL
  */
-rspamd_dkim_context_t * rspamd_create_dkim_context (const gchar *sig,
-               rspamd_mempool_t *pool,
-               guint time_jitter,
-               enum rspamd_dkim_type type,
-               GError **err);
+rspamd_dkim_context_t *rspamd_create_dkim_context (const gchar *sig,
+                                                                                                  rspamd_mempool_t *pool,
+                                                                                                  guint time_jitter,
+                                                                                                  enum rspamd_dkim_type type,
+                                                                                                  GError **err);
 
 /**
  * Create new dkim context for making a signature
@@ -172,13 +177,13 @@ rspamd_dkim_context_t * rspamd_create_dkim_context (const gchar *sig,
  * @param err
  * @return
  */
-rspamd_dkim_sign_context_t * rspamd_create_dkim_sign_context (struct rspamd_task *task,
-               rspamd_dkim_sign_key_t *priv_key,
-               gint headers_canon,
-               gint body_canon,
-               const gchar *dkim_headers,
-               enum rspamd_dkim_type type,
-               GError **err);
+rspamd_dkim_sign_context_t *rspamd_create_dkim_sign_context (struct rspamd_task *task,
+                                                                                                                        rspamd_dkim_sign_key_t *priv_key,
+                                                                                                                        gint headers_canon,
+                                                                                                                        gint body_canon,
+                                                                                                                        const gchar *dkim_headers,
+                                                                                                                        enum rspamd_dkim_type type,
+                                                                                                                        GError **err);
 
 /**
  * Load dkim key
@@ -186,9 +191,9 @@ rspamd_dkim_sign_context_t * rspamd_create_dkim_sign_context (struct rspamd_task
  * @param err
  * @return
  */
-rspamd_dkim_sign_key_trspamd_dkim_sign_key_load (const gchar *what, gsize len,
-               enum rspamd_dkim_key_format type,
-               GError **err);
+rspamd_dkim_sign_key_t *rspamd_dkim_sign_key_load (const gchar *what, gsize len,
+                                                                                                  enum rspamd_dkim_key_format type,
+                                                                                                  GError **err);
 
 /**
  * Invalidate modified sign key
@@ -196,7 +201,7 @@ rspamd_dkim_sign_key_t* rspamd_dkim_sign_key_load (const gchar *what, gsize len,
  * @return
 */
 gboolean rspamd_dkim_sign_key_maybe_invalidate (rspamd_dkim_sign_key_t *key,
-               time_t mtime);
+                                                                                               time_t mtime);
 
 /**
  * Make DNS request for specified context and obtain and parse key
@@ -206,9 +211,9 @@ gboolean rspamd_dkim_sign_key_maybe_invalidate (rspamd_dkim_sign_key_t *key,
  * @return
  */
 gboolean rspamd_get_dkim_key (rspamd_dkim_context_t *ctx,
-       struct rspamd_task *task,
-       dkim_key_handler_f handler,
-       gpointer ud);
+                                                         struct rspamd_task *task,
+                                                         dkim_key_handler_f handler,
+                                                         gpointer ud);
 
 /**
  * Check task for dkim context using dkim key
@@ -217,9 +222,9 @@ gboolean rspamd_get_dkim_key (rspamd_dkim_context_t *ctx,
  * @param task task to check
  * @return
  */
-struct rspamd_dkim_check_result * rspamd_dkim_check (rspamd_dkim_context_t *ctx,
-                                                                                                        rspamd_dkim_key_t *key,
-                                                                                                        struct rspamd_task *task);
+struct rspamd_dkim_check_result *rspamd_dkim_check (rspamd_dkim_context_t *ctx,
+                                                                                                       rspamd_dkim_key_t *key,
+                                                                                                       struct rspamd_task *task);
 
 struct rspamd_dkim_check_result *
 rspamd_dkim_create_result (rspamd_dkim_context_t *ctx,
@@ -235,13 +240,20 @@ GString *rspamd_dkim_sign (struct rspamd_task *task,
                                                   const gchar *arc_cv,
                                                   rspamd_dkim_sign_context_t *ctx);
 
-rspamd_dkim_key_t * rspamd_dkim_key_ref (rspamd_dkim_key_t *k);
+rspamd_dkim_key_t *rspamd_dkim_key_ref (rspamd_dkim_key_t *k);
+
 void rspamd_dkim_key_unref (rspamd_dkim_key_t *k);
-rspamd_dkim_sign_key_t * rspamd_dkim_sign_key_ref (rspamd_dkim_sign_key_t *k);
+
+rspamd_dkim_sign_key_t *rspamd_dkim_sign_key_ref (rspamd_dkim_sign_key_t *k);
+
 void rspamd_dkim_sign_key_unref (rspamd_dkim_sign_key_t *k);
-const gchar* rspamd_dkim_get_domain (rspamd_dkim_context_t *ctx);
-const gchar* rspamd_dkim_get_selector (rspamd_dkim_context_t *ctx);
-const gchar* rspamd_dkim_get_dns_key (rspamd_dkim_context_t *ctx);
+
+const gchar *rspamd_dkim_get_domain (rspamd_dkim_context_t *ctx);
+
+const gchar *rspamd_dkim_get_selector (rspamd_dkim_context_t *ctx);
+
+const gchar *rspamd_dkim_get_dns_key (rspamd_dkim_context_t *ctx);
+
 guint rspamd_dkim_key_get_ttl (rspamd_dkim_key_t *k);
 
 /**
@@ -252,9 +264,9 @@ guint rspamd_dkim_key_get_ttl (rspamd_dkim_key_t *k);
  * @param err
  * @return
  */
-rspamd_dkim_key_t * rspamd_dkim_make_key (const gchar *keydata, guint keylen,
-                                                                                 enum rspamd_dkim_key_type type,
-                                                                                 GError **err);
+rspamd_dkim_key_t *rspamd_dkim_make_key (const gchar *keydata, guint keylen,
+                                                                                enum rspamd_dkim_key_type type,
+                                                                                GError **err);
 
 /**
  * Parse DKIM public key from a TXT record
@@ -263,8 +275,8 @@ rspamd_dkim_key_t * rspamd_dkim_make_key (const gchar *keydata, guint keylen,
  * @param err
  * @return
  */
-rspamd_dkim_key_t * rspamd_dkim_parse_key (const gchar *txt, gsize *keylen,
-                                                                                  GError **err);
+rspamd_dkim_key_t *rspamd_dkim_parse_key (const gchar *txt, gsize *keylen,
+                                                                                 GError **err);
 
 /**
  * Canonocalise header using relaxed algorithm
@@ -275,9 +287,9 @@ rspamd_dkim_key_t * rspamd_dkim_parse_key (const gchar *txt, gsize *keylen,
  * @return
  */
 goffset rspamd_dkim_canonize_header_relaxed_str (const gchar *hname,
-               const gchar *hvalue,
-               gchar *out,
-               gsize outlen);
+                                                                                                const gchar *hvalue,
+                                                                                                gchar *out,
+                                                                                                gsize outlen);
 
 /**
  * Checks public and private keys for match
@@ -296,4 +308,8 @@ gboolean rspamd_dkim_match_keys (rspamd_dkim_key_t *pk,
  */
 void rspamd_dkim_key_free (rspamd_dkim_key_t *key);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* DKIM_H_ */
index c744ac42e4ebd9bbc62b3ef49116e448c0a8323d..a9d822703a19b4357180f59215e06673060513b9 100644 (file)
 #include "rdns.h"
 #include "upstream.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_config;
+struct rspamd_task;
 
 struct rspamd_dns_resolver {
        struct rdns_resolver *r;
@@ -40,10 +45,11 @@ struct rspamd_dns_resolver {
 /**
  * Init DNS resolver, params are obtained from a config file or system file /etc/resolv.conf
  */
-struct rspamd_dns_resolver * rspamd_dns_resolver_init (rspamd_logger_t *logger,
-                                                                                                          struct ev_loop *ev_base, struct rspamd_config *cfg);
+struct rspamd_dns_resolver *rspamd_dns_resolver_init (rspamd_logger_t *logger,
+                                                                                                         struct ev_loop *ev_base, struct rspamd_config *cfg);
 
 struct rspamd_dns_request_ud;
+
 /**
  * Make a DNS request
  * @param resolver resolver object
@@ -55,13 +61,13 @@ struct rspamd_dns_request_ud;
  * @param ... string or ip address based on a request type
  * @return TRUE if request was sent.
  */
-struct rspamd_dns_request_ud * rspamd_dns_resolver_request (struct rspamd_dns_resolver *resolver,
-                                                                                                                       struct rspamd_async_session *session,
-                                                                                                                       rspamd_mempool_t *pool,
-                                                                                                                       dns_callback_type cb,
-                                                                                                                       gpointer ud,
-                                                                                                                       enum rdns_request_type type,
-                                                                                                                       const char *name);
+struct rspamd_dns_request_ud *rspamd_dns_resolver_request (struct rspamd_dns_resolver *resolver,
+                                                                                                                  struct rspamd_async_session *session,
+                                                                                                                  rspamd_mempool_t *pool,
+                                                                                                                  dns_callback_type cb,
+                                                                                                                  gpointer ud,
+                                                                                                                  enum rdns_request_type type,
+                                                                                                                  const char *name);
 
 gboolean rspamd_dns_resolver_request_task (struct rspamd_task *task,
                                                                                   dns_callback_type cb,
@@ -75,4 +81,8 @@ gboolean rspamd_dns_resolver_request_task_forced (struct rspamd_task *task,
                                                                                                  enum rdns_request_type type,
                                                                                                  const char *name);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index ebbc8b650f660191051440a746e6b7b98d303ca7..938fbb074a78aadb87c28b5016f5d0c092f72c24 100644 (file)
 #include "config.h"
 #include "cfg_file.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Init dynamic configuration using map logic and specific configuration
  * @param cfg config file
@@ -41,13 +46,13 @@ gboolean dump_dynamic_config (struct rspamd_config *cfg);
  * @return
  */
 gboolean add_dynamic_symbol (struct rspamd_config *cfg,
-       const gchar *metric,
-       const gchar *symbol,
-       gdouble value);
+                                                        const gchar *metric,
+                                                        const gchar *symbol,
+                                                        gdouble value);
 
 gboolean remove_dynamic_symbol (struct rspamd_config *cfg,
-       const gchar *metric,
-       const gchar *symbol);
+                                                               const gchar *metric,
+                                                               const gchar *symbol);
 
 /**
  * Add action for specified metric
@@ -58,15 +63,19 @@ gboolean remove_dynamic_symbol (struct rspamd_config *cfg,
  * @return
  */
 gboolean add_dynamic_action (struct rspamd_config *cfg,
-       const gchar *metric,
-       guint action,
-       gdouble value);
+                                                        const gchar *metric,
+                                                        guint action,
+                                                        gdouble value);
 
 /**
  * Removes dynamic action
  */
 gboolean remove_dynamic_action (struct rspamd_config *cfg,
-               const gchar *metric,
-               guint action);
+                                                               const gchar *metric,
+                                                               guint action);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* DYNAMIC_CFG_H_ */
index 1519761e03c7df21909a6a943268bdada4730edb..23b9b68ef74bfc8745ba6a082aca5b5630d6e4b4 100644 (file)
 #include "contrib/libev/ev.h"
 #include "fuzzy_wire.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_fuzzy_backend;
 struct rspamd_config;
 
@@ -27,14 +31,18 @@ struct rspamd_config;
  * Callbacks for fuzzy methods
  */
 typedef void (*rspamd_fuzzy_check_cb) (struct rspamd_fuzzy_reply *rep, void *ud);
+
 typedef void (*rspamd_fuzzy_update_cb) (gboolean success,
                                                                                guint nadded,
                                                                                guint ndeleted,
                                                                                guint nextended,
                                                                                guint nignored,
                                                                                void *ud);
+
 typedef void (*rspamd_fuzzy_version_cb) (guint64 rev, void *ud);
+
 typedef void (*rspamd_fuzzy_count_cb) (guint64 count, void *ud);
+
 typedef gboolean (*rspamd_fuzzy_periodic_cb) (void *ud);
 
 /**
@@ -44,10 +52,10 @@ typedef gboolean (*rspamd_fuzzy_periodic_cb) (void *ud);
  * @param err
  * @return
  */
-struct rspamd_fuzzy_backend * rspamd_fuzzy_backend_create (struct ev_loop *ev_base,
-               const ucl_object_t *config,
-               struct rspamd_config *cfg,
-               GError **err);
+struct rspamd_fuzzy_backend *rspamd_fuzzy_backend_create (struct ev_loop *ev_base,
+                                                                                                                 const ucl_object_t *config,
+                                                                                                                 struct rspamd_config *cfg,
+                                                                                                                 GError **err);
 
 
 /**
@@ -57,8 +65,8 @@ struct rspamd_fuzzy_backend * rspamd_fuzzy_backend_create (struct ev_loop *ev_ba
  * @param ud
  */
 void rspamd_fuzzy_backend_check (struct rspamd_fuzzy_backend *bk,
-               const struct rspamd_fuzzy_cmd *cmd,
-               rspamd_fuzzy_check_cb cb, void *ud);
+                                                                const struct rspamd_fuzzy_cmd *cmd,
+                                                                rspamd_fuzzy_check_cb cb, void *ud);
 
 /**
  * Process updates for a specific queue
@@ -67,8 +75,8 @@ void rspamd_fuzzy_backend_check (struct rspamd_fuzzy_backend *bk,
  * @param src
  */
 void rspamd_fuzzy_backend_process_updates (struct rspamd_fuzzy_backend *bk,
-               GArray *updates, const gchar *src, rspamd_fuzzy_update_cb cb,
-               void *ud);
+                                                                                  GArray *updates, const gchar *src, rspamd_fuzzy_update_cb cb,
+                                                                                  void *ud);
 
 /**
  * Gets number of hashes from the backend
@@ -77,7 +85,7 @@ void rspamd_fuzzy_backend_process_updates (struct rspamd_fuzzy_backend *bk,
  * @param ud
  */
 void rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *bk,
-               rspamd_fuzzy_count_cb cb, void *ud);
+                                                                rspamd_fuzzy_count_cb cb, void *ud);
 
 /**
  * Returns number of revision for a specific source
@@ -87,26 +95,27 @@ void rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *bk,
  * @param ud
  */
 void rspamd_fuzzy_backend_version (struct rspamd_fuzzy_backend *bk,
-               const gchar *src,
-               rspamd_fuzzy_version_cb cb, void *ud);
+                                                                  const gchar *src,
+                                                                  rspamd_fuzzy_version_cb cb, void *ud);
 
 /**
  * Returns unique id for backend
  * @param backend
  * @return
  */
-const gchar * rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend);
+const gchar *rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend);
 
 /**
  * Starts expire process for the backend
  * @param backend
  */
 void rspamd_fuzzy_backend_start_update (struct rspamd_fuzzy_backend *backend,
-               gdouble timeout,
-               rspamd_fuzzy_periodic_cb cb,
-               void *ud);
+                                                                               gdouble timeout,
+                                                                               rspamd_fuzzy_periodic_cb cb,
+                                                                               void *ud);
+
+struct ev_loop *rspamd_fuzzy_backend_event_base (struct rspamd_fuzzy_backend *backend);
 
-struct ev_loop* rspamd_fuzzy_backend_event_base (struct rspamd_fuzzy_backend *backend);
 gdouble rspamd_fuzzy_backend_get_expire (struct rspamd_fuzzy_backend *backend);
 
 /**
@@ -115,4 +124,8 @@ gdouble rspamd_fuzzy_backend_get_expire (struct rspamd_fuzzy_backend *backend);
  */
 void rspamd_fuzzy_backend_close (struct rspamd_fuzzy_backend *backend);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBSERVER_FUZZY_BACKEND_H_ */
index b10ac332d4d44deb69543dbbbab2994b9528e654..544b20f608a77539dc9605ca60a0191cf091841d 100644 (file)
 #include "config.h"
 #include "fuzzy_backend.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /*
  * Subroutines for fuzzy_backend
  */
-void* rspamd_fuzzy_backend_init_redis (struct rspamd_fuzzy_backend *bk,
-               const ucl_object_t *obj, struct rspamd_config *cfg, GError **err);
+void *rspamd_fuzzy_backend_init_redis (struct rspamd_fuzzy_backend *bk,
+                                                                          const ucl_object_t *obj,
+                                                                          struct rspamd_config *cfg,
+                                                                          GError **err);
+
 void rspamd_fuzzy_backend_check_redis (struct rspamd_fuzzy_backend *bk,
-               const struct rspamd_fuzzy_cmd *cmd,
-               rspamd_fuzzy_check_cb cb, void *ud,
-               void *subr_ud);
+                                                                          const struct rspamd_fuzzy_cmd *cmd,
+                                                                          rspamd_fuzzy_check_cb cb, void *ud,
+                                                                          void *subr_ud);
+
 void rspamd_fuzzy_backend_update_redis (struct rspamd_fuzzy_backend *bk,
-               GArray *updates, const gchar *src,
-               rspamd_fuzzy_update_cb cb, void *ud,
-               void *subr_ud);
+                                                                               GArray *updates, const gchar *src,
+                                                                               rspamd_fuzzy_update_cb cb, void *ud,
+                                                                               void *subr_ud);
+
 void rspamd_fuzzy_backend_count_redis (struct rspamd_fuzzy_backend *bk,
-               rspamd_fuzzy_count_cb cb, void *ud,
-               void *subr_ud);
+                                                                          rspamd_fuzzy_count_cb cb, void *ud,
+                                                                          void *subr_ud);
+
 void rspamd_fuzzy_backend_version_redis (struct rspamd_fuzzy_backend *bk,
-               const gchar *src,
-               rspamd_fuzzy_version_cb cb, void *ud,
-               void *subr_ud);
-const gchar* rspamd_fuzzy_backend_id_redis (struct rspamd_fuzzy_backend *bk,
-               void *subr_ud);
+                                                                                const gchar *src,
+                                                                                rspamd_fuzzy_version_cb cb, void *ud,
+                                                                                void *subr_ud);
+
+const gchar *rspamd_fuzzy_backend_id_redis (struct rspamd_fuzzy_backend *bk,
+                                                                                       void *subr_ud);
+
 void rspamd_fuzzy_backend_expire_redis (struct rspamd_fuzzy_backend *bk,
-               void *subr_ud);
+                                                                               void *subr_ud);
+
 void rspamd_fuzzy_backend_close_redis (struct rspamd_fuzzy_backend *bk,
-               void *subr_ud);
+                                                                          void *subr_ud);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBSERVER_FUZZY_BACKEND_REDIS_H_ */
index 032d1e3cd60b9703c9e385f18f75f5ea5aee0355..33dc94f309ff61bd6b82dadd1d6973aad64e385e 100644 (file)
@@ -19,6 +19,9 @@
 #include "config.h"
 #include "fuzzy_wire.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
 
 struct rspamd_fuzzy_backend_sqlite;
 
@@ -29,8 +32,8 @@ struct rspamd_fuzzy_backend_sqlite;
  * @return backend structure or NULL
  */
 struct rspamd_fuzzy_backend_sqlite *rspamd_fuzzy_backend_sqlite_open (const gchar *path,
-               gboolean vacuum,
-               GError **err);
+                                                                                                                                         gboolean vacuum,
+                                                                                                                                         GError **err);
 
 /**
  * Check specified fuzzy in the backend
@@ -47,7 +50,7 @@ struct rspamd_fuzzy_reply rspamd_fuzzy_backend_sqlite_check (
  * Prepare storage for updates (by starting transaction)
  */
 gboolean rspamd_fuzzy_backend_sqlite_prepare_update (struct rspamd_fuzzy_backend_sqlite *backend,
-               const gchar *source);
+                                                                                                        const gchar *source);
 
 /**
  * Add digest to the database
@@ -56,7 +59,7 @@ gboolean rspamd_fuzzy_backend_sqlite_prepare_update (struct rspamd_fuzzy_backend
  * @return
  */
 gboolean rspamd_fuzzy_backend_sqlite_add (struct rspamd_fuzzy_backend_sqlite *backend,
-               const struct rspamd_fuzzy_cmd *cmd);
+                                                                                 const struct rspamd_fuzzy_cmd *cmd);
 
 /**
  * Delete digest from the database
@@ -72,7 +75,7 @@ gboolean rspamd_fuzzy_backend_sqlite_del (
  * Commit updates to storage
  */
 gboolean rspamd_fuzzy_backend_sqlite_finish_update (struct rspamd_fuzzy_backend_sqlite *backend,
-               const gchar *source, gboolean version_bump);
+                                                                                                       const gchar *source, gboolean version_bump);
 
 /**
  * Sync storage
@@ -80,8 +83,8 @@ gboolean rspamd_fuzzy_backend_sqlite_finish_update (struct rspamd_fuzzy_backend_
  * @return
  */
 gboolean rspamd_fuzzy_backend_sqlite_sync (struct rspamd_fuzzy_backend_sqlite *backend,
-               gint64 expire,
-               gboolean clean_orphaned);
+                                                                                  gint64 expire,
+                                                                                  gboolean clean_orphaned);
 
 /**
  * Close storage
@@ -90,9 +93,15 @@ gboolean rspamd_fuzzy_backend_sqlite_sync (struct rspamd_fuzzy_backend_sqlite *b
 void rspamd_fuzzy_backend_sqlite_close (struct rspamd_fuzzy_backend_sqlite *backend);
 
 gsize rspamd_fuzzy_backend_sqlite_count (struct rspamd_fuzzy_backend_sqlite *backend);
+
 gint rspamd_fuzzy_backend_sqlite_version (struct rspamd_fuzzy_backend_sqlite *backend, const gchar *source);
+
 gsize rspamd_fuzzy_backend_sqlite_expired (struct rspamd_fuzzy_backend_sqlite *backend);
 
-const gchar * rspamd_fuzzy_sqlite_backend_id (struct rspamd_fuzzy_backend_sqlite *backend);
+const gchar *rspamd_fuzzy_sqlite_backend_id (struct rspamd_fuzzy_backend_sqlite *backend);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* FUZZY_BACKEND_H_ */
index 4a1dc3ed4bf8445f0939eadcb1991fe81413ea42..1723370e97e230172c6fee32f58db8178f6e854e 100644 (file)
@@ -6,6 +6,10 @@
 #include "shingles.h"
 #include "cryptobox.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #define RSPAMD_FUZZY_VERSION 4
 #define RSPAMD_FUZZY_KEYLEN 8
 
@@ -103,4 +107,8 @@ RSPAMD_PACKED(fuzzy_peer_cmd) {
        } cmd;
 };
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index ada6dca68e68178ed74aec878db692d1bcff0134..86a266a6240b735b1b4c2eb6d1a7f4d3dcd58064 100644 (file)
@@ -8,6 +8,10 @@
 #include "config.h"
 #include "mem_pool.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /*
  * HTML content flags
  */
@@ -130,13 +134,13 @@ struct html_content {
  */
 guint rspamd_html_decode_entitles_inplace (gchar *s, gsize len);
 
-GByteArrayrspamd_html_process_part (rspamd_mempool_t *pool,
-               struct html_content *hc,
-               GByteArray *in);
+GByteArray *rspamd_html_process_part (rspamd_mempool_t *pool,
+                                                                         struct html_content *hc,
+                                                                         GByteArray *in);
 
-GByteArrayrspamd_html_process_part_full (rspamd_mempool_t *pool,
-               struct html_content *hc,
-               GByteArray *in, GList **exceptions, GHashTable *urls, GHashTable *emails);
+GByteArray *rspamd_html_process_part_full (rspamd_mempool_t *pool,
+                                                                                  struct html_content *hc,
+                                                                                  GByteArray *in, GList **exceptions, GHashTable *urls, GHashTable *emails);
 
 /*
  * Returns true if a specified tag has been seen in a part
@@ -148,7 +152,7 @@ gboolean rspamd_html_tag_seen (struct html_content *hc, const gchar *tagname);
  * @param id
  * @return
  */
-const gcharrspamd_html_tag_by_id (gint id);
+const gchar *rspamd_html_tag_by_id (gint id);
 
 /**
  * Returns HTML tag id by name
@@ -165,8 +169,12 @@ gint rspamd_html_tag_by_name (const gchar *name);
  * @param comp
  * @return
  */
-struct rspamd_url * rspamd_html_process_url (rspamd_mempool_t *pool,
-               const gchar *start, guint len,
-               struct html_tag_component *comp);
+struct rspamd_url *rspamd_html_process_url (rspamd_mempool_t *pool,
+                                                                                       const gchar *start, guint len,
+                                                                                       struct html_tag_component *comp);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index 00fa6fed54135f12b79799b4ef5265f73c6e6745..a22c5dc1629a82609479c548b689e0f4bdccd12d 100644 (file)
 #ifndef SRC_LIBSERVER_HTML_COLORS_H_
 #define SRC_LIBSERVER_HTML_COLORS_H_
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_html_colorname {
        struct {
                guint8 r;
@@ -26,682 +30,686 @@ struct rspamd_html_colorname {
 };
 
 static const struct rspamd_html_colorname html_colornames[] = {
-               { {240, 248, 255}, "aliceblue"},
-               { {250, 235, 215}, "antiquewhite"},
-               { {255, 239, 219}, "antiquewhite1"},
-               { {238, 223, 204}, "antiquewhite2"},
-               { {205, 192, 176}, "antiquewhite3"},
-               { {139, 131, 120}, "antiquewhite4"},
-               { {0, 255, 255}, "aqua"},
-               { {127, 255, 212}, "aquamarine"},
-               { {127, 255, 212}, "aquamarine1"},
-               { {118, 238, 198}, "aquamarine2"},
-               { {102, 205, 170}, "aquamarine3"},
-               { {69, 139, 116}, "aquamarine4"},
-               { {240, 255, 255}, "azure"},
-               { {240, 255, 255}, "azure1"},
-               { {224, 238, 238}, "azure2"},
-               { {193, 205, 205}, "azure3"},
-               { {131, 139, 139}, "azure4"},
-               { {245, 245, 220}, "beige"},
-               { {255, 228, 196}, "bisque"},
-               { {255, 228, 196}, "bisque1"},
-               { {238, 213, 183}, "bisque2"},
-               { {205, 183, 158}, "bisque3"},
-               { {139, 125, 107}, "bisque4"},
-               { {0, 0, 0}, "black"},
-               { {255, 235, 205}, "blanchedalmond"},
-               { {0, 0, 255}, "blue"},
-               { {0, 0, 255}, "blue1"},
-               { {0, 0, 238}, "blue2"},
-               { {0, 0, 205}, "blue3"},
-               { {0, 0, 139}, "blue4"},
-               { {138, 43, 226}, "blueviolet"},
-               { {165, 42, 42}, "brown"},
-               { {255, 64, 64}, "brown1"},
-               { {238, 59, 59}, "brown2"},
-               { {205, 51, 51}, "brown3"},
-               { {139, 35, 35}, "brown4"},
-               { {222, 184, 135}, "burlywood"},
-               { {255, 211, 155}, "burlywood1"},
-               { {238, 197, 145}, "burlywood2"},
-               { {205, 170, 125}, "burlywood3"},
-               { {139, 115, 85}, "burlywood4"},
-               { {95, 158, 160}, "cadetblue"},
-               { {152, 245, 255}, "cadetblue1"},
-               { {142, 229, 238}, "cadetblue2"},
-               { {122, 197, 205}, "cadetblue3"},
-               { {83, 134, 139}, "cadetblue4"},
-               { {127, 255, 0}, "chartreuse"},
-               { {127, 255, 0}, "chartreuse1"},
-               { {118, 238, 0}, "chartreuse2"},
-               { {102, 205, 0}, "chartreuse3"},
-               { {69, 139, 0}, "chartreuse4"},
-               { {210, 105, 30}, "chocolate"},
-               { {255, 127, 36}, "chocolate1"},
-               { {238, 118, 33}, "chocolate2"},
-               { {205, 102, 29}, "chocolate3"},
-               { {139, 69, 19}, "chocolate4"},
-               { {255, 127, 80}, "coral"},
-               { {255, 114, 86}, "coral1"},
-               { {238, 106, 80}, "coral2"},
-               { {205, 91, 69}, "coral3"},
-               { {139, 62, 47}, "coral4"},
-               { {100, 149, 237}, "cornflowerblue"},
-               { {255, 248, 220}, "cornsilk"},
-               { {255, 248, 220}, "cornsilk1"},
-               { {238, 232, 205}, "cornsilk2"},
-               { {205, 200, 177}, "cornsilk3"},
-               { {139, 136, 120}, "cornsilk4"},
-               { {220, 20, 60}, "crimson"},
-               { {0, 255, 255}, "cyan"},
-               { {0, 255, 255}, "cyan1"},
-               { {0, 238, 238}, "cyan2"},
-               { {0, 205, 205}, "cyan3"},
-               { {0, 139, 139}, "cyan4"},
-               { {0, 0, 139}, "darkblue"},
-               { {0, 139, 139}, "darkcyan"},
-               { {184, 134, 11}, "darkgoldenrod"},
-               { {255, 185, 15}, "darkgoldenrod1"},
-               { {238, 173, 14}, "darkgoldenrod2"},
-               { {205, 149, 12}, "darkgoldenrod3"},
-               { {139, 101, 8}, "darkgoldenrod4"},
-               { {169, 169, 169}, "darkgray"},
-               { {0, 100, 0}, "darkgreen"},
-               { {169, 169, 169}, "darkgrey"},
-               { {189, 183, 107}, "darkkhaki"},
-               { {139, 0, 139}, "darkmagenta"},
-               { {85, 107, 47}, "darkolivegreen"},
-               { {202, 255, 112}, "darkolivegreen1"},
-               { {188, 238, 104}, "darkolivegreen2"},
-               { {162, 205, 90}, "darkolivegreen3"},
-               { {110, 139, 61}, "darkolivegreen4"},
-               { {255, 140, 0}, "darkorange"},
-               { {255, 127, 0}, "darkorange1"},
-               { {238, 118, 0}, "darkorange2"},
-               { {205, 102, 0}, "darkorange3"},
-               { {139, 69, 0}, "darkorange4"},
-               { {153, 50, 204}, "darkorchid"},
-               { {191, 62, 255}, "darkorchid1"},
-               { {178, 58, 238}, "darkorchid2"},
-               { {154, 50, 205}, "darkorchid3"},
-               { {104, 34, 139}, "darkorchid4"},
-               { {139, 0, 0}, "darkred"},
-               { {233, 150, 122}, "darksalmon"},
-               { {143, 188, 143}, "darkseagreen"},
-               { {193, 255, 193}, "darkseagreen1"},
-               { {180, 238, 180}, "darkseagreen2"},
-               { {155, 205, 155}, "darkseagreen3"},
-               { {105, 139, 105}, "darkseagreen4"},
-               { {72, 61, 139}, "darkslateblue"},
-               { {47, 79, 79}, "darkslategray"},
-               { {151, 255, 255}, "darkslategray1"},
-               { {141, 238, 238}, "darkslategray2"},
-               { {121, 205, 205}, "darkslategray3"},
-               { {82, 139, 139}, "darkslategray4"},
-               { {47, 79, 79}, "darkslategrey"},
-               { {0, 206, 209}, "darkturquoise"},
-               { {148, 0, 211}, "darkviolet"},
-               { {255, 20, 147}, "deeppink"},
-               { {255, 20, 147}, "deeppink1"},
-               { {238, 18, 137}, "deeppink2"},
-               { {205, 16, 118}, "deeppink3"},
-               { {139, 10, 80}, "deeppink4"},
-               { {0, 191, 255}, "deepskyblue"},
-               { {0, 191, 255}, "deepskyblue1"},
-               { {0, 178, 238}, "deepskyblue2"},
-               { {0, 154, 205}, "deepskyblue3"},
-               { {0, 104, 139}, "deepskyblue4"},
-               { {105, 105, 105}, "dimgray"},
-               { {105, 105, 105}, "dimgrey"},
-               { {30, 144, 255}, "dodgerblue"},
-               { {30, 144, 255}, "dodgerblue1"},
-               { {28, 134, 238}, "dodgerblue2"},
-               { {24, 116, 205}, "dodgerblue3"},
-               { {16, 78, 139}, "dodgerblue4"},
-               { {178, 34, 34}, "firebrick"},
-               { {255, 48, 48}, "firebrick1"},
-               { {238, 44, 44}, "firebrick2"},
-               { {205, 38, 38}, "firebrick3"},
-               { {139, 26, 26}, "firebrick4"},
-               { {255, 250, 240}, "floralwhite"},
-               { {34, 139, 34}, "forestgreen"},
-               { {255, 0, 255}, "fuchsia"},
-               { {220, 220, 220}, "gainsboro"},
-               { {248, 248, 255}, "ghostwhite"},
-               { {255, 215, 0}, "gold"},
-               { {255, 215, 0}, "gold1"},
-               { {238, 201, 0}, "gold2"},
-               { {205, 173, 0}, "gold3"},
-               { {139, 117, 0}, "gold4"},
-               { {218, 165, 32}, "goldenrod"},
-               { {255, 193, 37}, "goldenrod1"},
-               { {238, 180, 34}, "goldenrod2"},
-               { {205, 155, 29}, "goldenrod3"},
-               { {139, 105, 20}, "goldenrod4"},
-               { {190, 190, 190}, "gray"},
-               { {0, 0, 0}, "gray0"},
-               { {3, 3, 3}, "gray1"},
-               { {26, 26, 26}, "gray10"},
-               { {255, 255, 255}, "gray100"},
-               { {28, 28, 28}, "gray11"},
-               { {31, 31, 31}, "gray12"},
-               { {33, 33, 33}, "gray13"},
-               { {36, 36, 36}, "gray14"},
-               { {38, 38, 38}, "gray15"},
-               { {41, 41, 41}, "gray16"},
-               { {43, 43, 43}, "gray17"},
-               { {46, 46, 46}, "gray18"},
-               { {48, 48, 48}, "gray19"},
-               { {5, 5, 5}, "gray2"},
-               { {51, 51, 51}, "gray20"},
-               { {54, 54, 54}, "gray21"},
-               { {56, 56, 56}, "gray22"},
-               { {59, 59, 59}, "gray23"},
-               { {61, 61, 61}, "gray24"},
-               { {64, 64, 64}, "gray25"},
-               { {66, 66, 66}, "gray26"},
-               { {69, 69, 69}, "gray27"},
-               { {71, 71, 71}, "gray28"},
-               { {74, 74, 74}, "gray29"},
-               { {8, 8, 8}, "gray3"},
-               { {77, 77, 77}, "gray30"},
-               { {79, 79, 79}, "gray31"},
-               { {82, 82, 82}, "gray32"},
-               { {84, 84, 84}, "gray33"},
-               { {87, 87, 87}, "gray34"},
-               { {89, 89, 89}, "gray35"},
-               { {92, 92, 92}, "gray36"},
-               { {94, 94, 94}, "gray37"},
-               { {97, 97, 97}, "gray38"},
-               { {99, 99, 99}, "gray39"},
-               { {10, 10, 10}, "gray4"},
-               { {102, 102, 102}, "gray40"},
-               { {105, 105, 105}, "gray41"},
-               { {107, 107, 107}, "gray42"},
-               { {110, 110, 110}, "gray43"},
-               { {112, 112, 112}, "gray44"},
-               { {115, 115, 115}, "gray45"},
-               { {117, 117, 117}, "gray46"},
-               { {120, 120, 120}, "gray47"},
-               { {122, 122, 122}, "gray48"},
-               { {125, 125, 125}, "gray49"},
-               { {13, 13, 13}, "gray5"},
-               { {127, 127, 127}, "gray50"},
-               { {130, 130, 130}, "gray51"},
-               { {133, 133, 133}, "gray52"},
-               { {135, 135, 135}, "gray53"},
-               { {138, 138, 138}, "gray54"},
-               { {140, 140, 140}, "gray55"},
-               { {143, 143, 143}, "gray56"},
-               { {145, 145, 145}, "gray57"},
-               { {148, 148, 148}, "gray58"},
-               { {150, 150, 150}, "gray59"},
-               { {15, 15, 15}, "gray6"},
-               { {153, 153, 153}, "gray60"},
-               { {156, 156, 156}, "gray61"},
-               { {158, 158, 158}, "gray62"},
-               { {161, 161, 161}, "gray63"},
-               { {163, 163, 163}, "gray64"},
-               { {166, 166, 166}, "gray65"},
-               { {168, 168, 168}, "gray66"},
-               { {171, 171, 171}, "gray67"},
-               { {173, 173, 173}, "gray68"},
-               { {176, 176, 176}, "gray69"},
-               { {18, 18, 18}, "gray7"},
-               { {179, 179, 179}, "gray70"},
-               { {181, 181, 181}, "gray71"},
-               { {184, 184, 184}, "gray72"},
-               { {186, 186, 186}, "gray73"},
-               { {189, 189, 189}, "gray74"},
-               { {191, 191, 191}, "gray75"},
-               { {194, 194, 194}, "gray76"},
-               { {196, 196, 196}, "gray77"},
-               { {199, 199, 199}, "gray78"},
-               { {201, 201, 201}, "gray79"},
-               { {20, 20, 20}, "gray8"},
-               { {204, 204, 204}, "gray80"},
-               { {207, 207, 207}, "gray81"},
-               { {209, 209, 209}, "gray82"},
-               { {212, 212, 212}, "gray83"},
-               { {214, 214, 214}, "gray84"},
-               { {217, 217, 217}, "gray85"},
-               { {219, 219, 219}, "gray86"},
-               { {222, 222, 222}, "gray87"},
-               { {224, 224, 224}, "gray88"},
-               { {227, 227, 227}, "gray89"},
-               { {23, 23, 23}, "gray9"},
-               { {229, 229, 229}, "gray90"},
-               { {232, 232, 232}, "gray91"},
-               { {235, 235, 235}, "gray92"},
-               { {237, 237, 237}, "gray93"},
-               { {240, 240, 240}, "gray94"},
-               { {242, 242, 242}, "gray95"},
-               { {245, 245, 245}, "gray96"},
-               { {247, 247, 247}, "gray97"},
-               { {250, 250, 250}, "gray98"},
-               { {252, 252, 252}, "gray99"},
-               { {0, 255, 0}, "green"},
-               { {0, 255, 0}, "green1"},
-               { {0, 238, 0}, "green2"},
-               { {0, 205, 0}, "green3"},
-               { {0, 139, 0}, "green4"},
-               { {173, 255, 47}, "greenyellow"},
-               { {190, 190, 190}, "grey"},
-               { {0, 0, 0}, "grey0"},
-               { {3, 3, 3}, "grey1"},
-               { {26, 26, 26}, "grey10"},
-               { {255, 255, 255}, "grey100"},
-               { {28, 28, 28}, "grey11"},
-               { {31, 31, 31}, "grey12"},
-               { {33, 33, 33}, "grey13"},
-               { {36, 36, 36}, "grey14"},
-               { {38, 38, 38}, "grey15"},
-               { {41, 41, 41}, "grey16"},
-               { {43, 43, 43}, "grey17"},
-               { {46, 46, 46}, "grey18"},
-               { {48, 48, 48}, "grey19"},
-               { {5, 5, 5}, "grey2"},
-               { {51, 51, 51}, "grey20"},
-               { {54, 54, 54}, "grey21"},
-               { {56, 56, 56}, "grey22"},
-               { {59, 59, 59}, "grey23"},
-               { {61, 61, 61}, "grey24"},
-               { {64, 64, 64}, "grey25"},
-               { {66, 66, 66}, "grey26"},
-               { {69, 69, 69}, "grey27"},
-               { {71, 71, 71}, "grey28"},
-               { {74, 74, 74}, "grey29"},
-               { {8, 8, 8}, "grey3"},
-               { {77, 77, 77}, "grey30"},
-               { {79, 79, 79}, "grey31"},
-               { {82, 82, 82}, "grey32"},
-               { {84, 84, 84}, "grey33"},
-               { {87, 87, 87}, "grey34"},
-               { {89, 89, 89}, "grey35"},
-               { {92, 92, 92}, "grey36"},
-               { {94, 94, 94}, "grey37"},
-               { {97, 97, 97}, "grey38"},
-               { {99, 99, 99}, "grey39"},
-               { {10, 10, 10}, "grey4"},
-               { {102, 102, 102}, "grey40"},
-               { {105, 105, 105}, "grey41"},
-               { {107, 107, 107}, "grey42"},
-               { {110, 110, 110}, "grey43"},
-               { {112, 112, 112}, "grey44"},
-               { {115, 115, 115}, "grey45"},
-               { {117, 117, 117}, "grey46"},
-               { {120, 120, 120}, "grey47"},
-               { {122, 122, 122}, "grey48"},
-               { {125, 125, 125}, "grey49"},
-               { {13, 13, 13}, "grey5"},
-               { {127, 127, 127}, "grey50"},
-               { {130, 130, 130}, "grey51"},
-               { {133, 133, 133}, "grey52"},
-               { {135, 135, 135}, "grey53"},
-               { {138, 138, 138}, "grey54"},
-               { {140, 140, 140}, "grey55"},
-               { {143, 143, 143}, "grey56"},
-               { {145, 145, 145}, "grey57"},
-               { {148, 148, 148}, "grey58"},
-               { {150, 150, 150}, "grey59"},
-               { {15, 15, 15}, "grey6"},
-               { {153, 153, 153}, "grey60"},
-               { {156, 156, 156}, "grey61"},
-               { {158, 158, 158}, "grey62"},
-               { {161, 161, 161}, "grey63"},
-               { {163, 163, 163}, "grey64"},
-               { {166, 166, 166}, "grey65"},
-               { {168, 168, 168}, "grey66"},
-               { {171, 171, 171}, "grey67"},
-               { {173, 173, 173}, "grey68"},
-               { {176, 176, 176}, "grey69"},
-               { {18, 18, 18}, "grey7"},
-               { {179, 179, 179}, "grey70"},
-               { {181, 181, 181}, "grey71"},
-               { {184, 184, 184}, "grey72"},
-               { {186, 186, 186}, "grey73"},
-               { {189, 189, 189}, "grey74"},
-               { {191, 191, 191}, "grey75"},
-               { {194, 194, 194}, "grey76"},
-               { {196, 196, 196}, "grey77"},
-               { {199, 199, 199}, "grey78"},
-               { {201, 201, 201}, "grey79"},
-               { {20, 20, 20}, "grey8"},
-               { {204, 204, 204}, "grey80"},
-               { {207, 207, 207}, "grey81"},
-               { {209, 209, 209}, "grey82"},
-               { {212, 212, 212}, "grey83"},
-               { {214, 214, 214}, "grey84"},
-               { {217, 217, 217}, "grey85"},
-               { {219, 219, 219}, "grey86"},
-               { {222, 222, 222}, "grey87"},
-               { {224, 224, 224}, "grey88"},
-               { {227, 227, 227}, "grey89"},
-               { {23, 23, 23}, "grey9"},
-               { {229, 229, 229}, "grey90"},
-               { {232, 232, 232}, "grey91"},
-               { {235, 235, 235}, "grey92"},
-               { {237, 237, 237}, "grey93"},
-               { {240, 240, 240}, "grey94"},
-               { {242, 242, 242}, "grey95"},
-               { {245, 245, 245}, "grey96"},
-               { {247, 247, 247}, "grey97"},
-               { {250, 250, 250}, "grey98"},
-               { {252, 252, 252}, "grey99"},
-               { {240, 255, 240}, "honeydew"},
-               { {240, 255, 240}, "honeydew1"},
-               { {224, 238, 224}, "honeydew2"},
-               { {193, 205, 193}, "honeydew3"},
-               { {131, 139, 131}, "honeydew4"},
-               { {255, 105, 180}, "hotpink"},
-               { {255, 110, 180}, "hotpink1"},
-               { {238, 106, 167}, "hotpink2"},
-               { {205, 96, 144}, "hotpink3"},
-               { {139, 58, 98}, "hotpink4"},
-               { {205, 92, 92}, "indianred"},
-               { {255, 106, 106}, "indianred1"},
-               { {238, 99, 99}, "indianred2"},
-               { {205, 85, 85}, "indianred3"},
-               { {139, 58, 58}, "indianred4"},
-               { {75, 0, 130}, "indigo"},
-               { {255, 255, 240}, "ivory"},
-               { {255, 255, 240}, "ivory1"},
-               { {238, 238, 224}, "ivory2"},
-               { {205, 205, 193}, "ivory3"},
-               { {139, 139, 131}, "ivory4"},
-               { {240, 230, 140}, "khaki"},
-               { {255, 246, 143}, "khaki1"},
-               { {238, 230, 133}, "khaki2"},
-               { {205, 198, 115}, "khaki3"},
-               { {139, 134, 78}, "khaki4"},
-               { {230, 230, 250}, "lavender"},
-               { {255, 240, 245}, "lavenderblush"},
-               { {255, 240, 245}, "lavenderblush1"},
-               { {238, 224, 229}, "lavenderblush2"},
-               { {205, 193, 197}, "lavenderblush3"},
-               { {139, 131, 134}, "lavenderblush4"},
-               { {124, 252, 0}, "lawngreen"},
-               { {255, 250, 205}, "lemonchiffon"},
-               { {255, 250, 205}, "lemonchiffon1"},
-               { {238, 233, 191}, "lemonchiffon2"},
-               { {205, 201, 165}, "lemonchiffon3"},
-               { {139, 137, 112}, "lemonchiffon4"},
-               { {173, 216, 230}, "lightblue"},
-               { {191, 239, 255}, "lightblue1"},
-               { {178, 223, 238}, "lightblue2"},
-               { {154, 192, 205}, "lightblue3"},
-               { {104, 131, 139}, "lightblue4"},
-               { {240, 128, 128}, "lightcoral"},
-               { {224, 255, 255}, "lightcyan"},
-               { {224, 255, 255}, "lightcyan1"},
-               { {209, 238, 238}, "lightcyan2"},
-               { {180, 205, 205}, "lightcyan3"},
-               { {122, 139, 139}, "lightcyan4"},
-               { {238, 221, 130}, "lightgoldenrod"},
-               { {255, 236, 139}, "lightgoldenrod1"},
-               { {238, 220, 130}, "lightgoldenrod2"},
-               { {205, 190, 112}, "lightgoldenrod3"},
-               { {139, 129, 76}, "lightgoldenrod4"},
-               { {250, 250, 210}, "lightgoldenrodyellow"},
-               { {211, 211, 211}, "lightgray"},
-               { {144, 238, 144}, "lightgreen"},
-               { {211, 211, 211}, "lightgrey"},
-               { {255, 182, 193}, "lightpink"},
-               { {255, 174, 185}, "lightpink1"},
-               { {238, 162, 173}, "lightpink2"},
-               { {205, 140, 149}, "lightpink3"},
-               { {139, 95, 101}, "lightpink4"},
-               { {255, 160, 122}, "lightsalmon"},
-               { {255, 160, 122}, "lightsalmon1"},
-               { {238, 149, 114}, "lightsalmon2"},
-               { {205, 129, 98}, "lightsalmon3"},
-               { {139, 87, 66}, "lightsalmon4"},
-               { {32, 178, 170}, "lightseagreen"},
-               { {135, 206, 250}, "lightskyblue"},
-               { {176, 226, 255}, "lightskyblue1"},
-               { {164, 211, 238}, "lightskyblue2"},
-               { {141, 182, 205}, "lightskyblue3"},
-               { {96, 123, 139}, "lightskyblue4"},
-               { {132, 112, 255}, "lightslateblue"},
-               { {119, 136, 153}, "lightslategray"},
-               { {119, 136, 153}, "lightslategrey"},
-               { {176, 196, 222}, "lightsteelblue"},
-               { {202, 225, 255}, "lightsteelblue1"},
-               { {188, 210, 238}, "lightsteelblue2"},
-               { {162, 181, 205}, "lightsteelblue3"},
-               { {110, 123, 139}, "lightsteelblue4"},
-               { {255, 255, 224}, "lightyellow"},
-               { {255, 255, 224}, "lightyellow1"},
-               { {238, 238, 209}, "lightyellow2"},
-               { {205, 205, 180}, "lightyellow3"},
-               { {139, 139, 122}, "lightyellow4"},
-               { {0, 255, 0}, "lime"},
-               { {50, 205, 50}, "limegreen"},
-               { {250, 240, 230}, "linen"},
-               { {255, 0, 255}, "magenta"},
-               { {255, 0, 255}, "magenta1"},
-               { {238, 0, 238}, "magenta2"},
-               { {205, 0, 205}, "magenta3"},
-               { {139, 0, 139}, "magenta4"},
-               { {176, 48, 96}, "maroon"},
-               { {255, 52, 179}, "maroon1"},
-               { {238, 48, 167}, "maroon2"},
-               { {205, 41, 144}, "maroon3"},
-               { {139, 28, 98}, "maroon4"},
-               { {102, 205, 170}, "mediumaquamarine"},
-               { {0, 0, 205}, "mediumblue"},
-               { {186, 85, 211}, "mediumorchid"},
-               { {224, 102, 255}, "mediumorchid1"},
-               { {209, 95, 238}, "mediumorchid2"},
-               { {180, 82, 205}, "mediumorchid3"},
-               { {122, 55, 139}, "mediumorchid4"},
-               { {147, 112, 219}, "mediumpurple"},
-               { {171, 130, 255}, "mediumpurple1"},
-               { {159, 121, 238}, "mediumpurple2"},
-               { {137, 104, 205}, "mediumpurple3"},
-               { {93, 71, 139}, "mediumpurple4"},
-               { {60, 179, 113}, "mediumseagreen"},
-               { {123, 104, 238}, "mediumslateblue"},
-               { {0, 250, 154}, "mediumspringgreen"},
-               { {72, 209, 204}, "mediumturquoise"},
-               { {199, 21, 133}, "mediumvioletred"},
-               { {25, 25, 112}, "midnightblue"},
-               { {245, 255, 250}, "mintcream"},
-               { {255, 228, 225}, "mistyrose"},
-               { {255, 228, 225}, "mistyrose1"},
-               { {238, 213, 210}, "mistyrose2"},
-               { {205, 183, 181}, "mistyrose3"},
-               { {139, 125, 123}, "mistyrose4"},
-               { {255, 228, 181}, "moccasin"},
-               { {255, 222, 173}, "navajowhite"},
-               { {255, 222, 173}, "navajowhite1"},
-               { {238, 207, 161}, "navajowhite2"},
-               { {205, 179, 139}, "navajowhite3"},
-               { {139, 121, 94}, "navajowhite4"},
-               { {0, 0, 128}, "navy"},
-               { {0, 0, 128}, "navyblue"},
-               { {253, 245, 230}, "oldlace"},
-               { {128, 128, 0}, "olive"},
-               { {107, 142, 35}, "olivedrab"},
-               { {192, 255, 62}, "olivedrab1"},
-               { {179, 238, 58}, "olivedrab2"},
-               { {154, 205, 50}, "olivedrab3"},
-               { {105, 139, 34}, "olivedrab4"},
-               { {255, 165, 0}, "orange"},
-               { {255, 165, 0}, "orange1"},
-               { {238, 154, 0}, "orange2"},
-               { {205, 133, 0}, "orange3"},
-               { {139, 90, 0}, "orange4"},
-               { {255, 69, 0}, "orangered"},
-               { {255, 69, 0}, "orangered1"},
-               { {238, 64, 0}, "orangered2"},
-               { {205, 55, 0}, "orangered3"},
-               { {139, 37, 0}, "orangered4"},
-               { {218, 112, 214}, "orchid"},
-               { {255, 131, 250}, "orchid1"},
-               { {238, 122, 233}, "orchid2"},
-               { {205, 105, 201}, "orchid3"},
-               { {139, 71, 137}, "orchid4"},
-               { {238, 232, 170}, "palegoldenrod"},
-               { {152, 251, 152}, "palegreen"},
-               { {154, 255, 154}, "palegreen1"},
-               { {144, 238, 144}, "palegreen2"},
-               { {124, 205, 124}, "palegreen3"},
-               { {84, 139, 84}, "palegreen4"},
-               { {175, 238, 238}, "paleturquoise"},
-               { {187, 255, 255}, "paleturquoise1"},
-               { {174, 238, 238}, "paleturquoise2"},
-               { {150, 205, 205}, "paleturquoise3"},
-               { {102, 139, 139}, "paleturquoise4"},
-               { {219, 112, 147}, "palevioletred"},
-               { {255, 130, 171}, "palevioletred1"},
-               { {238, 121, 159}, "palevioletred2"},
-               { {205, 104, 137}, "palevioletred3"},
-               { {139, 71, 93}, "palevioletred4"},
-               { {255, 239, 213}, "papayawhip"},
-               { {255, 218, 185}, "peachpuff"},
-               { {255, 218, 185}, "peachpuff1"},
-               { {238, 203, 173}, "peachpuff2"},
-               { {205, 175, 149}, "peachpuff3"},
-               { {139, 119, 101}, "peachpuff4"},
-               { {205, 133, 63}, "peru"},
-               { {255, 192, 203}, "pink"},
-               { {255, 181, 197}, "pink1"},
-               { {238, 169, 184}, "pink2"},
-               { {205, 145, 158}, "pink3"},
-               { {139, 99, 108}, "pink4"},
-               { {221, 160, 221}, "plum"},
-               { {255, 187, 255}, "plum1"},
-               { {238, 174, 238}, "plum2"},
-               { {205, 150, 205}, "plum3"},
-               { {139, 102, 139}, "plum4"},
-               { {176, 224, 230}, "powderblue"},
-               { {160, 32, 240}, "purple"},
-               { {155, 48, 255}, "purple1"},
-               { {145, 44, 238}, "purple2"},
-               { {125, 38, 205}, "purple3"},
-               { {85, 26, 139}, "purple4"},
-               { {102, 51, 153}, "rebeccapurple"},
-               { {255, 0, 0}, "red"},
-               { {255, 0, 0}, "red1"},
-               { {238, 0, 0}, "red2"},
-               { {205, 0, 0}, "red3"},
-               { {139, 0, 0}, "red4"},
-               { {188, 143, 143}, "rosybrown"},
-               { {255, 193, 193}, "rosybrown1"},
-               { {238, 180, 180}, "rosybrown2"},
-               { {205, 155, 155}, "rosybrown3"},
-               { {139, 105, 105}, "rosybrown4"},
-               { {65, 105, 225}, "royalblue"},
-               { {72, 118, 255}, "royalblue1"},
-               { {67, 110, 238}, "royalblue2"},
-               { {58, 95, 205}, "royalblue3"},
-               { {39, 64, 139}, "royalblue4"},
-               { {139, 69, 19}, "saddlebrown"},
-               { {250, 128, 114}, "salmon"},
-               { {255, 140, 105}, "salmon1"},
-               { {238, 130, 98}, "salmon2"},
-               { {205, 112, 84}, "salmon3"},
-               { {139, 76, 57}, "salmon4"},
-               { {244, 164, 96}, "sandybrown"},
-               { {46, 139, 87}, "seagreen"},
-               { {84, 255, 159}, "seagreen1"},
-               { {78, 238, 148}, "seagreen2"},
-               { {67, 205, 128}, "seagreen3"},
-               { {46, 139, 87}, "seagreen4"},
-               { {255, 245, 238}, "seashell"},
-               { {255, 245, 238}, "seashell1"},
-               { {238, 229, 222}, "seashell2"},
-               { {205, 197, 191}, "seashell3"},
-               { {139, 134, 130}, "seashell4"},
-               { {160, 82, 45}, "sienna"},
-               { {255, 130, 71}, "sienna1"},
-               { {238, 121, 66}, "sienna2"},
-               { {205, 104, 57}, "sienna3"},
-               { {139, 71, 38}, "sienna4"},
-               { {192, 192, 192}, "silver"},
-               { {135, 206, 235}, "skyblue"},
-               { {135, 206, 255}, "skyblue1"},
-               { {126, 192, 238}, "skyblue2"},
-               { {108, 166, 205}, "skyblue3"},
-               { {74, 112, 139}, "skyblue4"},
-               { {106, 90, 205}, "slateblue"},
-               { {131, 111, 255}, "slateblue1"},
-               { {122, 103, 238}, "slateblue2"},
-               { {105, 89, 205}, "slateblue3"},
-               { {71, 60, 139}, "slateblue4"},
-               { {112, 128, 144}, "slategray"},
-               { {198, 226, 255}, "slategray1"},
-               { {185, 211, 238}, "slategray2"},
-               { {159, 182, 205}, "slategray3"},
-               { {108, 123, 139}, "slategray4"},
-               { {112, 128, 144}, "slategrey"},
-               { {255, 250, 250}, "snow"},
-               { {255, 250, 250}, "snow1"},
-               { {238, 233, 233}, "snow2"},
-               { {205, 201, 201}, "snow3"},
-               { {139, 137, 137}, "snow4"},
-               { {0, 255, 127}, "springgreen"},
-               { {0, 255, 127}, "springgreen1"},
-               { {0, 238, 118}, "springgreen2"},
-               { {0, 205, 102}, "springgreen3"},
-               { {0, 139, 69}, "springgreen4"},
-               { {70, 130, 180}, "steelblue"},
-               { {99, 184, 255}, "steelblue1"},
-               { {92, 172, 238}, "steelblue2"},
-               { {79, 148, 205}, "steelblue3"},
-               { {54, 100, 139}, "steelblue4"},
-               { {210, 180, 140}, "tan"},
-               { {255, 165, 79}, "tan1"},
-               { {238, 154, 73}, "tan2"},
-               { {205, 133, 63}, "tan3"},
-               { {139, 90, 43}, "tan4"},
-               { {0, 128, 128}, "teal"},
-               { {216, 191, 216}, "thistle"},
-               { {255, 225, 255}, "thistle1"},
-               { {238, 210, 238}, "thistle2"},
-               { {205, 181, 205}, "thistle3"},
-               { {139, 123, 139}, "thistle4"},
-               { {255, 99, 71}, "tomato"},
-               { {255, 99, 71}, "tomato1"},
-               { {238, 92, 66}, "tomato2"},
-               { {205, 79, 57}, "tomato3"},
-               { {139, 54, 38}, "tomato4"},
-               { {64, 224, 208}, "turquoise"},
-               { {0, 245, 255}, "turquoise1"},
-               { {0, 229, 238}, "turquoise2"},
-               { {0, 197, 205}, "turquoise3"},
-               { {0, 134, 139}, "turquoise4"},
-               { {238, 130, 238}, "violet"},
-               { {208, 32, 144}, "violetred"},
-               { {255, 62, 150}, "violetred1"},
-               { {238, 58, 140}, "violetred2"},
-               { {205, 50, 120}, "violetred3"},
-               { {139, 34, 82}, "violetred4"},
-               { {128, 128, 128}, "webgray"},
-               { {0, 128, 0}, "webgreen"},
-               { {128, 128, 128}, "webgrey"},
-               { {128, 0, 0}, "webmaroon"},
-               { {128, 0, 128}, "webpurple"},
-               { {245, 222, 179}, "wheat"},
-               { {255, 231, 186}, "wheat1"},
-               { {238, 216, 174}, "wheat2"},
-               { {205, 186, 150}, "wheat3"},
-               { {139, 126, 102}, "wheat4"},
-               { {255, 255, 255}, "white"},
-               { {245, 245, 245}, "whitesmoke"},
-               { {190, 190, 190}, "x11gray"},
-               { {0, 255, 0}, "x11green"},
-               { {190, 190, 190}, "x11grey"},
-               { {176, 48, 96}, "x11maroon"},
-               { {160, 32, 240}, "x11purple"},
-               { {255, 255, 0}, "yellow"},
-               { {255, 255, 0}, "yellow1"},
-               { {238, 238, 0}, "yellow2"},
-               { {205, 205, 0}, "yellow3"},
-               { {139, 139, 0}, "yellow4"},
-               { {154, 205, 50}, "yellowgreen"},
+               {{240, 248, 255}, "aliceblue"},
+               {{250, 235, 215}, "antiquewhite"},
+               {{255, 239, 219}, "antiquewhite1"},
+               {{238, 223, 204}, "antiquewhite2"},
+               {{205, 192, 176}, "antiquewhite3"},
+               {{139, 131, 120}, "antiquewhite4"},
+               {{0,   255, 255}, "aqua"},
+               {{127, 255, 212}, "aquamarine"},
+               {{127, 255, 212}, "aquamarine1"},
+               {{118, 238, 198}, "aquamarine2"},
+               {{102, 205, 170}, "aquamarine3"},
+               {{69,  139, 116}, "aquamarine4"},
+               {{240, 255, 255}, "azure"},
+               {{240, 255, 255}, "azure1"},
+               {{224, 238, 238}, "azure2"},
+               {{193, 205, 205}, "azure3"},
+               {{131, 139, 139}, "azure4"},
+               {{245, 245, 220}, "beige"},
+               {{255, 228, 196}, "bisque"},
+               {{255, 228, 196}, "bisque1"},
+               {{238, 213, 183}, "bisque2"},
+               {{205, 183, 158}, "bisque3"},
+               {{139, 125, 107}, "bisque4"},
+               {{0,   0,   0},   "black"},
+               {{255, 235, 205}, "blanchedalmond"},
+               {{0,   0,   255}, "blue"},
+               {{0,   0,   255}, "blue1"},
+               {{0,   0,   238}, "blue2"},
+               {{0,   0,   205}, "blue3"},
+               {{0,   0,   139}, "blue4"},
+               {{138, 43,  226}, "blueviolet"},
+               {{165, 42,  42},  "brown"},
+               {{255, 64,  64},  "brown1"},
+               {{238, 59,  59},  "brown2"},
+               {{205, 51,  51},  "brown3"},
+               {{139, 35,  35},  "brown4"},
+               {{222, 184, 135}, "burlywood"},
+               {{255, 211, 155}, "burlywood1"},
+               {{238, 197, 145}, "burlywood2"},
+               {{205, 170, 125}, "burlywood3"},
+               {{139, 115, 85},  "burlywood4"},
+               {{95,  158, 160}, "cadetblue"},
+               {{152, 245, 255}, "cadetblue1"},
+               {{142, 229, 238}, "cadetblue2"},
+               {{122, 197, 205}, "cadetblue3"},
+               {{83,  134, 139}, "cadetblue4"},
+               {{127, 255, 0},   "chartreuse"},
+               {{127, 255, 0},   "chartreuse1"},
+               {{118, 238, 0},   "chartreuse2"},
+               {{102, 205, 0},   "chartreuse3"},
+               {{69,  139, 0},   "chartreuse4"},
+               {{210, 105, 30},  "chocolate"},
+               {{255, 127, 36},  "chocolate1"},
+               {{238, 118, 33},  "chocolate2"},
+               {{205, 102, 29},  "chocolate3"},
+               {{139, 69,  19},  "chocolate4"},
+               {{255, 127, 80},  "coral"},
+               {{255, 114, 86},  "coral1"},
+               {{238, 106, 80},  "coral2"},
+               {{205, 91,  69},  "coral3"},
+               {{139, 62,  47},  "coral4"},
+               {{100, 149, 237}, "cornflowerblue"},
+               {{255, 248, 220}, "cornsilk"},
+               {{255, 248, 220}, "cornsilk1"},
+               {{238, 232, 205}, "cornsilk2"},
+               {{205, 200, 177}, "cornsilk3"},
+               {{139, 136, 120}, "cornsilk4"},
+               {{220, 20,  60},  "crimson"},
+               {{0,   255, 255}, "cyan"},
+               {{0,   255, 255}, "cyan1"},
+               {{0,   238, 238}, "cyan2"},
+               {{0,   205, 205}, "cyan3"},
+               {{0,   139, 139}, "cyan4"},
+               {{0,   0,   139}, "darkblue"},
+               {{0,   139, 139}, "darkcyan"},
+               {{184, 134, 11},  "darkgoldenrod"},
+               {{255, 185, 15},  "darkgoldenrod1"},
+               {{238, 173, 14},  "darkgoldenrod2"},
+               {{205, 149, 12},  "darkgoldenrod3"},
+               {{139, 101, 8},   "darkgoldenrod4"},
+               {{169, 169, 169}, "darkgray"},
+               {{0,   100, 0},   "darkgreen"},
+               {{169, 169, 169}, "darkgrey"},
+               {{189, 183, 107}, "darkkhaki"},
+               {{139, 0,   139}, "darkmagenta"},
+               {{85,  107, 47},  "darkolivegreen"},
+               {{202, 255, 112}, "darkolivegreen1"},
+               {{188, 238, 104}, "darkolivegreen2"},
+               {{162, 205, 90},  "darkolivegreen3"},
+               {{110, 139, 61},  "darkolivegreen4"},
+               {{255, 140, 0},   "darkorange"},
+               {{255, 127, 0},   "darkorange1"},
+               {{238, 118, 0},   "darkorange2"},
+               {{205, 102, 0},   "darkorange3"},
+               {{139, 69,  0},   "darkorange4"},
+               {{153, 50,  204}, "darkorchid"},
+               {{191, 62,  255}, "darkorchid1"},
+               {{178, 58,  238}, "darkorchid2"},
+               {{154, 50,  205}, "darkorchid3"},
+               {{104, 34,  139}, "darkorchid4"},
+               {{139, 0,   0},   "darkred"},
+               {{233, 150, 122}, "darksalmon"},
+               {{143, 188, 143}, "darkseagreen"},
+               {{193, 255, 193}, "darkseagreen1"},
+               {{180, 238, 180}, "darkseagreen2"},
+               {{155, 205, 155}, "darkseagreen3"},
+               {{105, 139, 105}, "darkseagreen4"},
+               {{72,  61,  139}, "darkslateblue"},
+               {{47,  79,  79},  "darkslategray"},
+               {{151, 255, 255}, "darkslategray1"},
+               {{141, 238, 238}, "darkslategray2"},
+               {{121, 205, 205}, "darkslategray3"},
+               {{82,  139, 139}, "darkslategray4"},
+               {{47,  79,  79},  "darkslategrey"},
+               {{0,   206, 209}, "darkturquoise"},
+               {{148, 0,   211}, "darkviolet"},
+               {{255, 20,  147}, "deeppink"},
+               {{255, 20,  147}, "deeppink1"},
+               {{238, 18,  137}, "deeppink2"},
+               {{205, 16,  118}, "deeppink3"},
+               {{139, 10,  80},  "deeppink4"},
+               {{0,   191, 255}, "deepskyblue"},
+               {{0,   191, 255}, "deepskyblue1"},
+               {{0,   178, 238}, "deepskyblue2"},
+               {{0,   154, 205}, "deepskyblue3"},
+               {{0,   104, 139}, "deepskyblue4"},
+               {{105, 105, 105}, "dimgray"},
+               {{105, 105, 105}, "dimgrey"},
+               {{30,  144, 255}, "dodgerblue"},
+               {{30,  144, 255}, "dodgerblue1"},
+               {{28,  134, 238}, "dodgerblue2"},
+               {{24,  116, 205}, "dodgerblue3"},
+               {{16,  78,  139}, "dodgerblue4"},
+               {{178, 34,  34},  "firebrick"},
+               {{255, 48,  48},  "firebrick1"},
+               {{238, 44,  44},  "firebrick2"},
+               {{205, 38,  38},  "firebrick3"},
+               {{139, 26,  26},  "firebrick4"},
+               {{255, 250, 240}, "floralwhite"},
+               {{34,  139, 34},  "forestgreen"},
+               {{255, 0,   255}, "fuchsia"},
+               {{220, 220, 220}, "gainsboro"},
+               {{248, 248, 255}, "ghostwhite"},
+               {{255, 215, 0},   "gold"},
+               {{255, 215, 0},   "gold1"},
+               {{238, 201, 0},   "gold2"},
+               {{205, 173, 0},   "gold3"},
+               {{139, 117, 0},   "gold4"},
+               {{218, 165, 32},  "goldenrod"},
+               {{255, 193, 37},  "goldenrod1"},
+               {{238, 180, 34},  "goldenrod2"},
+               {{205, 155, 29},  "goldenrod3"},
+               {{139, 105, 20},  "goldenrod4"},
+               {{190, 190, 190}, "gray"},
+               {{0,   0,   0},   "gray0"},
+               {{3,   3,   3},   "gray1"},
+               {{26,  26,  26},  "gray10"},
+               {{255, 255, 255}, "gray100"},
+               {{28,  28,  28},  "gray11"},
+               {{31,  31,  31},  "gray12"},
+               {{33,  33,  33},  "gray13"},
+               {{36,  36,  36},  "gray14"},
+               {{38,  38,  38},  "gray15"},
+               {{41,  41,  41},  "gray16"},
+               {{43,  43,  43},  "gray17"},
+               {{46,  46,  46},  "gray18"},
+               {{48,  48,  48},  "gray19"},
+               {{5,   5,   5},   "gray2"},
+               {{51,  51,  51},  "gray20"},
+               {{54,  54,  54},  "gray21"},
+               {{56,  56,  56},  "gray22"},
+               {{59,  59,  59},  "gray23"},
+               {{61,  61,  61},  "gray24"},
+               {{64,  64,  64},  "gray25"},
+               {{66,  66,  66},  "gray26"},
+               {{69,  69,  69},  "gray27"},
+               {{71,  71,  71},  "gray28"},
+               {{74,  74,  74},  "gray29"},
+               {{8,   8,   8},   "gray3"},
+               {{77,  77,  77},  "gray30"},
+               {{79,  79,  79},  "gray31"},
+               {{82,  82,  82},  "gray32"},
+               {{84,  84,  84},  "gray33"},
+               {{87,  87,  87},  "gray34"},
+               {{89,  89,  89},  "gray35"},
+               {{92,  92,  92},  "gray36"},
+               {{94,  94,  94},  "gray37"},
+               {{97,  97,  97},  "gray38"},
+               {{99,  99,  99},  "gray39"},
+               {{10,  10,  10},  "gray4"},
+               {{102, 102, 102}, "gray40"},
+               {{105, 105, 105}, "gray41"},
+               {{107, 107, 107}, "gray42"},
+               {{110, 110, 110}, "gray43"},
+               {{112, 112, 112}, "gray44"},
+               {{115, 115, 115}, "gray45"},
+               {{117, 117, 117}, "gray46"},
+               {{120, 120, 120}, "gray47"},
+               {{122, 122, 122}, "gray48"},
+               {{125, 125, 125}, "gray49"},
+               {{13,  13,  13},  "gray5"},
+               {{127, 127, 127}, "gray50"},
+               {{130, 130, 130}, "gray51"},
+               {{133, 133, 133}, "gray52"},
+               {{135, 135, 135}, "gray53"},
+               {{138, 138, 138}, "gray54"},
+               {{140, 140, 140}, "gray55"},
+               {{143, 143, 143}, "gray56"},
+               {{145, 145, 145}, "gray57"},
+               {{148, 148, 148}, "gray58"},
+               {{150, 150, 150}, "gray59"},
+               {{15,  15,  15},  "gray6"},
+               {{153, 153, 153}, "gray60"},
+               {{156, 156, 156}, "gray61"},
+               {{158, 158, 158}, "gray62"},
+               {{161, 161, 161}, "gray63"},
+               {{163, 163, 163}, "gray64"},
+               {{166, 166, 166}, "gray65"},
+               {{168, 168, 168}, "gray66"},
+               {{171, 171, 171}, "gray67"},
+               {{173, 173, 173}, "gray68"},
+               {{176, 176, 176}, "gray69"},
+               {{18,  18,  18},  "gray7"},
+               {{179, 179, 179}, "gray70"},
+               {{181, 181, 181}, "gray71"},
+               {{184, 184, 184}, "gray72"},
+               {{186, 186, 186}, "gray73"},
+               {{189, 189, 189}, "gray74"},
+               {{191, 191, 191}, "gray75"},
+               {{194, 194, 194}, "gray76"},
+               {{196, 196, 196}, "gray77"},
+               {{199, 199, 199}, "gray78"},
+               {{201, 201, 201}, "gray79"},
+               {{20,  20,  20},  "gray8"},
+               {{204, 204, 204}, "gray80"},
+               {{207, 207, 207}, "gray81"},
+               {{209, 209, 209}, "gray82"},
+               {{212, 212, 212}, "gray83"},
+               {{214, 214, 214}, "gray84"},
+               {{217, 217, 217}, "gray85"},
+               {{219, 219, 219}, "gray86"},
+               {{222, 222, 222}, "gray87"},
+               {{224, 224, 224}, "gray88"},
+               {{227, 227, 227}, "gray89"},
+               {{23,  23,  23},  "gray9"},
+               {{229, 229, 229}, "gray90"},
+               {{232, 232, 232}, "gray91"},
+               {{235, 235, 235}, "gray92"},
+               {{237, 237, 237}, "gray93"},
+               {{240, 240, 240}, "gray94"},
+               {{242, 242, 242}, "gray95"},
+               {{245, 245, 245}, "gray96"},
+               {{247, 247, 247}, "gray97"},
+               {{250, 250, 250}, "gray98"},
+               {{252, 252, 252}, "gray99"},
+               {{0,   255, 0},   "green"},
+               {{0,   255, 0},   "green1"},
+               {{0,   238, 0},   "green2"},
+               {{0,   205, 0},   "green3"},
+               {{0,   139, 0},   "green4"},
+               {{173, 255, 47},  "greenyellow"},
+               {{190, 190, 190}, "grey"},
+               {{0,   0,   0},   "grey0"},
+               {{3,   3,   3},   "grey1"},
+               {{26,  26,  26},  "grey10"},
+               {{255, 255, 255}, "grey100"},
+               {{28,  28,  28},  "grey11"},
+               {{31,  31,  31},  "grey12"},
+               {{33,  33,  33},  "grey13"},
+               {{36,  36,  36},  "grey14"},
+               {{38,  38,  38},  "grey15"},
+               {{41,  41,  41},  "grey16"},
+               {{43,  43,  43},  "grey17"},
+               {{46,  46,  46},  "grey18"},
+               {{48,  48,  48},  "grey19"},
+               {{5,   5,   5},   "grey2"},
+               {{51,  51,  51},  "grey20"},
+               {{54,  54,  54},  "grey21"},
+               {{56,  56,  56},  "grey22"},
+               {{59,  59,  59},  "grey23"},
+               {{61,  61,  61},  "grey24"},
+               {{64,  64,  64},  "grey25"},
+               {{66,  66,  66},  "grey26"},
+               {{69,  69,  69},  "grey27"},
+               {{71,  71,  71},  "grey28"},
+               {{74,  74,  74},  "grey29"},
+               {{8,   8,   8},   "grey3"},
+               {{77,  77,  77},  "grey30"},
+               {{79,  79,  79},  "grey31"},
+               {{82,  82,  82},  "grey32"},
+               {{84,  84,  84},  "grey33"},
+               {{87,  87,  87},  "grey34"},
+               {{89,  89,  89},  "grey35"},
+               {{92,  92,  92},  "grey36"},
+               {{94,  94,  94},  "grey37"},
+               {{97,  97,  97},  "grey38"},
+               {{99,  99,  99},  "grey39"},
+               {{10,  10,  10},  "grey4"},
+               {{102, 102, 102}, "grey40"},
+               {{105, 105, 105}, "grey41"},
+               {{107, 107, 107}, "grey42"},
+               {{110, 110, 110}, "grey43"},
+               {{112, 112, 112}, "grey44"},
+               {{115, 115, 115}, "grey45"},
+               {{117, 117, 117}, "grey46"},
+               {{120, 120, 120}, "grey47"},
+               {{122, 122, 122}, "grey48"},
+               {{125, 125, 125}, "grey49"},
+               {{13,  13,  13},  "grey5"},
+               {{127, 127, 127}, "grey50"},
+               {{130, 130, 130}, "grey51"},
+               {{133, 133, 133}, "grey52"},
+               {{135, 135, 135}, "grey53"},
+               {{138, 138, 138}, "grey54"},
+               {{140, 140, 140}, "grey55"},
+               {{143, 143, 143}, "grey56"},
+               {{145, 145, 145}, "grey57"},
+               {{148, 148, 148}, "grey58"},
+               {{150, 150, 150}, "grey59"},
+               {{15,  15,  15},  "grey6"},
+               {{153, 153, 153}, "grey60"},
+               {{156, 156, 156}, "grey61"},
+               {{158, 158, 158}, "grey62"},
+               {{161, 161, 161}, "grey63"},
+               {{163, 163, 163}, "grey64"},
+               {{166, 166, 166}, "grey65"},
+               {{168, 168, 168}, "grey66"},
+               {{171, 171, 171}, "grey67"},
+               {{173, 173, 173}, "grey68"},
+               {{176, 176, 176}, "grey69"},
+               {{18,  18,  18},  "grey7"},
+               {{179, 179, 179}, "grey70"},
+               {{181, 181, 181}, "grey71"},
+               {{184, 184, 184}, "grey72"},
+               {{186, 186, 186}, "grey73"},
+               {{189, 189, 189}, "grey74"},
+               {{191, 191, 191}, "grey75"},
+               {{194, 194, 194}, "grey76"},
+               {{196, 196, 196}, "grey77"},
+               {{199, 199, 199}, "grey78"},
+               {{201, 201, 201}, "grey79"},
+               {{20,  20,  20},  "grey8"},
+               {{204, 204, 204}, "grey80"},
+               {{207, 207, 207}, "grey81"},
+               {{209, 209, 209}, "grey82"},
+               {{212, 212, 212}, "grey83"},
+               {{214, 214, 214}, "grey84"},
+               {{217, 217, 217}, "grey85"},
+               {{219, 219, 219}, "grey86"},
+               {{222, 222, 222}, "grey87"},
+               {{224, 224, 224}, "grey88"},
+               {{227, 227, 227}, "grey89"},
+               {{23,  23,  23},  "grey9"},
+               {{229, 229, 229}, "grey90"},
+               {{232, 232, 232}, "grey91"},
+               {{235, 235, 235}, "grey92"},
+               {{237, 237, 237}, "grey93"},
+               {{240, 240, 240}, "grey94"},
+               {{242, 242, 242}, "grey95"},
+               {{245, 245, 245}, "grey96"},
+               {{247, 247, 247}, "grey97"},
+               {{250, 250, 250}, "grey98"},
+               {{252, 252, 252}, "grey99"},
+               {{240, 255, 240}, "honeydew"},
+               {{240, 255, 240}, "honeydew1"},
+               {{224, 238, 224}, "honeydew2"},
+               {{193, 205, 193}, "honeydew3"},
+               {{131, 139, 131}, "honeydew4"},
+               {{255, 105, 180}, "hotpink"},
+               {{255, 110, 180}, "hotpink1"},
+               {{238, 106, 167}, "hotpink2"},
+               {{205, 96,  144}, "hotpink3"},
+               {{139, 58,  98},  "hotpink4"},
+               {{205, 92,  92},  "indianred"},
+               {{255, 106, 106}, "indianred1"},
+               {{238, 99,  99},  "indianred2"},
+               {{205, 85,  85},  "indianred3"},
+               {{139, 58,  58},  "indianred4"},
+               {{75,  0,   130}, "indigo"},
+               {{255, 255, 240}, "ivory"},
+               {{255, 255, 240}, "ivory1"},
+               {{238, 238, 224}, "ivory2"},
+               {{205, 205, 193}, "ivory3"},
+               {{139, 139, 131}, "ivory4"},
+               {{240, 230, 140}, "khaki"},
+               {{255, 246, 143}, "khaki1"},
+               {{238, 230, 133}, "khaki2"},
+               {{205, 198, 115}, "khaki3"},
+               {{139, 134, 78},  "khaki4"},
+               {{230, 230, 250}, "lavender"},
+               {{255, 240, 245}, "lavenderblush"},
+               {{255, 240, 245}, "lavenderblush1"},
+               {{238, 224, 229}, "lavenderblush2"},
+               {{205, 193, 197}, "lavenderblush3"},
+               {{139, 131, 134}, "lavenderblush4"},
+               {{124, 252, 0},   "lawngreen"},
+               {{255, 250, 205}, "lemonchiffon"},
+               {{255, 250, 205}, "lemonchiffon1"},
+               {{238, 233, 191}, "lemonchiffon2"},
+               {{205, 201, 165}, "lemonchiffon3"},
+               {{139, 137, 112}, "lemonchiffon4"},
+               {{173, 216, 230}, "lightblue"},
+               {{191, 239, 255}, "lightblue1"},
+               {{178, 223, 238}, "lightblue2"},
+               {{154, 192, 205}, "lightblue3"},
+               {{104, 131, 139}, "lightblue4"},
+               {{240, 128, 128}, "lightcoral"},
+               {{224, 255, 255}, "lightcyan"},
+               {{224, 255, 255}, "lightcyan1"},
+               {{209, 238, 238}, "lightcyan2"},
+               {{180, 205, 205}, "lightcyan3"},
+               {{122, 139, 139}, "lightcyan4"},
+               {{238, 221, 130}, "lightgoldenrod"},
+               {{255, 236, 139}, "lightgoldenrod1"},
+               {{238, 220, 130}, "lightgoldenrod2"},
+               {{205, 190, 112}, "lightgoldenrod3"},
+               {{139, 129, 76},  "lightgoldenrod4"},
+               {{250, 250, 210}, "lightgoldenrodyellow"},
+               {{211, 211, 211}, "lightgray"},
+               {{144, 238, 144}, "lightgreen"},
+               {{211, 211, 211}, "lightgrey"},
+               {{255, 182, 193}, "lightpink"},
+               {{255, 174, 185}, "lightpink1"},
+               {{238, 162, 173}, "lightpink2"},
+               {{205, 140, 149}, "lightpink3"},
+               {{139, 95,  101}, "lightpink4"},
+               {{255, 160, 122}, "lightsalmon"},
+               {{255, 160, 122}, "lightsalmon1"},
+               {{238, 149, 114}, "lightsalmon2"},
+               {{205, 129, 98},  "lightsalmon3"},
+               {{139, 87,  66},  "lightsalmon4"},
+               {{32,  178, 170}, "lightseagreen"},
+               {{135, 206, 250}, "lightskyblue"},
+               {{176, 226, 255}, "lightskyblue1"},
+               {{164, 211, 238}, "lightskyblue2"},
+               {{141, 182, 205}, "lightskyblue3"},
+               {{96,  123, 139}, "lightskyblue4"},
+               {{132, 112, 255}, "lightslateblue"},
+               {{119, 136, 153}, "lightslategray"},
+               {{119, 136, 153}, "lightslategrey"},
+               {{176, 196, 222}, "lightsteelblue"},
+               {{202, 225, 255}, "lightsteelblue1"},
+               {{188, 210, 238}, "lightsteelblue2"},
+               {{162, 181, 205}, "lightsteelblue3"},
+               {{110, 123, 139}, "lightsteelblue4"},
+               {{255, 255, 224}, "lightyellow"},
+               {{255, 255, 224}, "lightyellow1"},
+               {{238, 238, 209}, "lightyellow2"},
+               {{205, 205, 180}, "lightyellow3"},
+               {{139, 139, 122}, "lightyellow4"},
+               {{0,   255, 0},   "lime"},
+               {{50,  205, 50},  "limegreen"},
+               {{250, 240, 230}, "linen"},
+               {{255, 0,   255}, "magenta"},
+               {{255, 0,   255}, "magenta1"},
+               {{238, 0,   238}, "magenta2"},
+               {{205, 0,   205}, "magenta3"},
+               {{139, 0,   139}, "magenta4"},
+               {{176, 48,  96},  "maroon"},
+               {{255, 52,  179}, "maroon1"},
+               {{238, 48,  167}, "maroon2"},
+               {{205, 41,  144}, "maroon3"},
+               {{139, 28,  98},  "maroon4"},
+               {{102, 205, 170}, "mediumaquamarine"},
+               {{0,   0,   205}, "mediumblue"},
+               {{186, 85,  211}, "mediumorchid"},
+               {{224, 102, 255}, "mediumorchid1"},
+               {{209, 95,  238}, "mediumorchid2"},
+               {{180, 82,  205}, "mediumorchid3"},
+               {{122, 55,  139}, "mediumorchid4"},
+               {{147, 112, 219}, "mediumpurple"},
+               {{171, 130, 255}, "mediumpurple1"},
+               {{159, 121, 238}, "mediumpurple2"},
+               {{137, 104, 205}, "mediumpurple3"},
+               {{93,  71,  139}, "mediumpurple4"},
+               {{60,  179, 113}, "mediumseagreen"},
+               {{123, 104, 238}, "mediumslateblue"},
+               {{0,   250, 154}, "mediumspringgreen"},
+               {{72,  209, 204}, "mediumturquoise"},
+               {{199, 21,  133}, "mediumvioletred"},
+               {{25,  25,  112}, "midnightblue"},
+               {{245, 255, 250}, "mintcream"},
+               {{255, 228, 225}, "mistyrose"},
+               {{255, 228, 225}, "mistyrose1"},
+               {{238, 213, 210}, "mistyrose2"},
+               {{205, 183, 181}, "mistyrose3"},
+               {{139, 125, 123}, "mistyrose4"},
+               {{255, 228, 181}, "moccasin"},
+               {{255, 222, 173}, "navajowhite"},
+               {{255, 222, 173}, "navajowhite1"},
+               {{238, 207, 161}, "navajowhite2"},
+               {{205, 179, 139}, "navajowhite3"},
+               {{139, 121, 94},  "navajowhite4"},
+               {{0,   0,   128}, "navy"},
+               {{0,   0,   128}, "navyblue"},
+               {{253, 245, 230}, "oldlace"},
+               {{128, 128, 0},   "olive"},
+               {{107, 142, 35},  "olivedrab"},
+               {{192, 255, 62},  "olivedrab1"},
+               {{179, 238, 58},  "olivedrab2"},
+               {{154, 205, 50},  "olivedrab3"},
+               {{105, 139, 34},  "olivedrab4"},
+               {{255, 165, 0},   "orange"},
+               {{255, 165, 0},   "orange1"},
+               {{238, 154, 0},   "orange2"},
+               {{205, 133, 0},   "orange3"},
+               {{139, 90,  0},   "orange4"},
+               {{255, 69,  0},   "orangered"},
+               {{255, 69,  0},   "orangered1"},
+               {{238, 64,  0},   "orangered2"},
+               {{205, 55,  0},   "orangered3"},
+               {{139, 37,  0},   "orangered4"},
+               {{218, 112, 214}, "orchid"},
+               {{255, 131, 250}, "orchid1"},
+               {{238, 122, 233}, "orchid2"},
+               {{205, 105, 201}, "orchid3"},
+               {{139, 71,  137}, "orchid4"},
+               {{238, 232, 170}, "palegoldenrod"},
+               {{152, 251, 152}, "palegreen"},
+               {{154, 255, 154}, "palegreen1"},
+               {{144, 238, 144}, "palegreen2"},
+               {{124, 205, 124}, "palegreen3"},
+               {{84,  139, 84},  "palegreen4"},
+               {{175, 238, 238}, "paleturquoise"},
+               {{187, 255, 255}, "paleturquoise1"},
+               {{174, 238, 238}, "paleturquoise2"},
+               {{150, 205, 205}, "paleturquoise3"},
+               {{102, 139, 139}, "paleturquoise4"},
+               {{219, 112, 147}, "palevioletred"},
+               {{255, 130, 171}, "palevioletred1"},
+               {{238, 121, 159}, "palevioletred2"},
+               {{205, 104, 137}, "palevioletred3"},
+               {{139, 71,  93},  "palevioletred4"},
+               {{255, 239, 213}, "papayawhip"},
+               {{255, 218, 185}, "peachpuff"},
+               {{255, 218, 185}, "peachpuff1"},
+               {{238, 203, 173}, "peachpuff2"},
+               {{205, 175, 149}, "peachpuff3"},
+               {{139, 119, 101}, "peachpuff4"},
+               {{205, 133, 63},  "peru"},
+               {{255, 192, 203}, "pink"},
+               {{255, 181, 197}, "pink1"},
+               {{238, 169, 184}, "pink2"},
+               {{205, 145, 158}, "pink3"},
+               {{139, 99,  108}, "pink4"},
+               {{221, 160, 221}, "plum"},
+               {{255, 187, 255}, "plum1"},
+               {{238, 174, 238}, "plum2"},
+               {{205, 150, 205}, "plum3"},
+               {{139, 102, 139}, "plum4"},
+               {{176, 224, 230}, "powderblue"},
+               {{160, 32,  240}, "purple"},
+               {{155, 48,  255}, "purple1"},
+               {{145, 44,  238}, "purple2"},
+               {{125, 38,  205}, "purple3"},
+               {{85,  26,  139}, "purple4"},
+               {{102, 51,  153}, "rebeccapurple"},
+               {{255, 0,   0},   "red"},
+               {{255, 0,   0},   "red1"},
+               {{238, 0,   0},   "red2"},
+               {{205, 0,   0},   "red3"},
+               {{139, 0,   0},   "red4"},
+               {{188, 143, 143}, "rosybrown"},
+               {{255, 193, 193}, "rosybrown1"},
+               {{238, 180, 180}, "rosybrown2"},
+               {{205, 155, 155}, "rosybrown3"},
+               {{139, 105, 105}, "rosybrown4"},
+               {{65,  105, 225}, "royalblue"},
+               {{72,  118, 255}, "royalblue1"},
+               {{67,  110, 238}, "royalblue2"},
+               {{58,  95,  205}, "royalblue3"},
+               {{39,  64,  139}, "royalblue4"},
+               {{139, 69,  19},  "saddlebrown"},
+               {{250, 128, 114}, "salmon"},
+               {{255, 140, 105}, "salmon1"},
+               {{238, 130, 98},  "salmon2"},
+               {{205, 112, 84},  "salmon3"},
+               {{139, 76,  57},  "salmon4"},
+               {{244, 164, 96},  "sandybrown"},
+               {{46,  139, 87},  "seagreen"},
+               {{84,  255, 159}, "seagreen1"},
+               {{78,  238, 148}, "seagreen2"},
+               {{67,  205, 128}, "seagreen3"},
+               {{46,  139, 87},  "seagreen4"},
+               {{255, 245, 238}, "seashell"},
+               {{255, 245, 238}, "seashell1"},
+               {{238, 229, 222}, "seashell2"},
+               {{205, 197, 191}, "seashell3"},
+               {{139, 134, 130}, "seashell4"},
+               {{160, 82,  45},  "sienna"},
+               {{255, 130, 71},  "sienna1"},
+               {{238, 121, 66},  "sienna2"},
+               {{205, 104, 57},  "sienna3"},
+               {{139, 71,  38},  "sienna4"},
+               {{192, 192, 192}, "silver"},
+               {{135, 206, 235}, "skyblue"},
+               {{135, 206, 255}, "skyblue1"},
+               {{126, 192, 238}, "skyblue2"},
+               {{108, 166, 205}, "skyblue3"},
+               {{74,  112, 139}, "skyblue4"},
+               {{106, 90,  205}, "slateblue"},
+               {{131, 111, 255}, "slateblue1"},
+               {{122, 103, 238}, "slateblue2"},
+               {{105, 89,  205}, "slateblue3"},
+               {{71,  60,  139}, "slateblue4"},
+               {{112, 128, 144}, "slategray"},
+               {{198, 226, 255}, "slategray1"},
+               {{185, 211, 238}, "slategray2"},
+               {{159, 182, 205}, "slategray3"},
+               {{108, 123, 139}, "slategray4"},
+               {{112, 128, 144}, "slategrey"},
+               {{255, 250, 250}, "snow"},
+               {{255, 250, 250}, "snow1"},
+               {{238, 233, 233}, "snow2"},
+               {{205, 201, 201}, "snow3"},
+               {{139, 137, 137}, "snow4"},
+               {{0,   255, 127}, "springgreen"},
+               {{0,   255, 127}, "springgreen1"},
+               {{0,   238, 118}, "springgreen2"},
+               {{0,   205, 102}, "springgreen3"},
+               {{0,   139, 69},  "springgreen4"},
+               {{70,  130, 180}, "steelblue"},
+               {{99,  184, 255}, "steelblue1"},
+               {{92,  172, 238}, "steelblue2"},
+               {{79,  148, 205}, "steelblue3"},
+               {{54,  100, 139}, "steelblue4"},
+               {{210, 180, 140}, "tan"},
+               {{255, 165, 79},  "tan1"},
+               {{238, 154, 73},  "tan2"},
+               {{205, 133, 63},  "tan3"},
+               {{139, 90,  43},  "tan4"},
+               {{0,   128, 128}, "teal"},
+               {{216, 191, 216}, "thistle"},
+               {{255, 225, 255}, "thistle1"},
+               {{238, 210, 238}, "thistle2"},
+               {{205, 181, 205}, "thistle3"},
+               {{139, 123, 139}, "thistle4"},
+               {{255, 99,  71},  "tomato"},
+               {{255, 99,  71},  "tomato1"},
+               {{238, 92,  66},  "tomato2"},
+               {{205, 79,  57},  "tomato3"},
+               {{139, 54,  38},  "tomato4"},
+               {{64,  224, 208}, "turquoise"},
+               {{0,   245, 255}, "turquoise1"},
+               {{0,   229, 238}, "turquoise2"},
+               {{0,   197, 205}, "turquoise3"},
+               {{0,   134, 139}, "turquoise4"},
+               {{238, 130, 238}, "violet"},
+               {{208, 32,  144}, "violetred"},
+               {{255, 62,  150}, "violetred1"},
+               {{238, 58,  140}, "violetred2"},
+               {{205, 50,  120}, "violetred3"},
+               {{139, 34,  82},  "violetred4"},
+               {{128, 128, 128}, "webgray"},
+               {{0,   128, 0},   "webgreen"},
+               {{128, 128, 128}, "webgrey"},
+               {{128, 0,   0},   "webmaroon"},
+               {{128, 0,   128}, "webpurple"},
+               {{245, 222, 179}, "wheat"},
+               {{255, 231, 186}, "wheat1"},
+               {{238, 216, 174}, "wheat2"},
+               {{205, 186, 150}, "wheat3"},
+               {{139, 126, 102}, "wheat4"},
+               {{255, 255, 255}, "white"},
+               {{245, 245, 245}, "whitesmoke"},
+               {{190, 190, 190}, "x11gray"},
+               {{0,   255, 0},   "x11green"},
+               {{190, 190, 190}, "x11grey"},
+               {{176, 48,  96},  "x11maroon"},
+               {{160, 32,  240}, "x11purple"},
+               {{255, 255, 0},   "yellow"},
+               {{255, 255, 0},   "yellow1"},
+               {{238, 238, 0},   "yellow2"},
+               {{205, 205, 0},   "yellow3"},
+               {{139, 139, 0},   "yellow4"},
+               {{154, 205, 50},  "yellowgreen"},
 };
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBSERVER_HTML_COLORS_H_ */
index 1079f2b0e1a540808e20c0b724a536f6b2e08b0b..d659fc4aa5a1c4c534ff3d9ddd19ed04f6c20e44 100644 (file)
 #ifndef RSPAMD_HTML_ENTITIES_H
 #define RSPAMD_HTML_ENTITIES_H
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct _entity;
 typedef struct _entity entity;
 
@@ -27,2131 +31,2135 @@ struct _entity {
 };
 
 static entity entities_defs[] = {
-               {"szlig", 223, "\xc3\x9f"},
-               {"prime", 8242, "\xe2\x80\xb2"},
-               {"lnsim", 8934, "\xe2\x8b\xa6"},
-               {"nvDash", 8877, "\xe2\x8a\xad"},
-               {"isinsv", 8947, "\xe2\x8b\xb3"},
-               {"notin", 8713, "\xe2\x88\x89"},
-               {"becaus", 8757, "\xe2\x88\xb5"},
-               {"Leftrightarrow", 8660, "\xe2\x87\x94"},
-               {"EmptySmallSquare", 9723, "\xe2\x97\xbb"},
-               {"SquareUnion", 8852, "\xe2\x8a\x94"},
-               {"subdot", 10941, "\xe2\xaa\xbd"},
-               {"Dstrok", 272, "\xc4\x90"},
-               {"rrarr", 8649, "\xe2\x87\x89"},
-               {"rArr", 8658, "\xe2\x87\x92"},
-               {"Aacute", 193, "\xc3\x81"},
-               {"kappa", 954, "\xce\xba"},
-               {"Iopf", 120128, "\xf0\x9d\x95\x80"},
-               {"hyphen", 8208, "\xe2\x80\x90"},
-               {"rarrbfs", 10528, "\xe2\xa4\xa0"},
-               {"supsetneqq", 10956, "\xe2\xab\x8c"},
-               {"gacute", 501, "\xc7\xb5"},
-               {"VeryThinSpace", 8202, "\xe2\x80\x8a"},
-               {"tint", 8749, "\xe2\x88\xad"},
-               {"ffr", 120099, "\xf0\x9d\x94\xa3"},
-               {"kgreen", 312, "\xc4\xb8"},
-               {"nis", 8956, "\xe2\x8b\xbc"},
-               {"NotRightTriangleBar", 10704, "\xe2\xa7\x90\xcc\xb8"},
-               {"Eogon", 280, "\xc4\x98"},
-               {"lbrke", 10635, "\xe2\xa6\x8b"},
-               {"phi", 966, "\xcf\x86"},
-               {"notnivc", 8957, "\xe2\x8b\xbd"},
-               {"utilde", 361, "\xc5\xa9"},
-               {"Fopf", 120125, "\xf0\x9d\x94\xbd"},
-               {"Vcy", 1042, "\xd0\x92"},
-               {"erDot", 8787, "\xe2\x89\x93"},
-               {"nsubE", 10949, "\xe2\xab\x85\xcc\xb8"},
-               {"egrave", 232, "\xc3\xa8"},
-               {"Lcedil", 315, "\xc4\xbb"},
-               {"lharul", 10602, "\xe2\xa5\xaa"},
-               {"middot", 183, "\xc2\xb7"},
-               {"ggg", 8921, "\xe2\x8b\x99"},
-               {"NestedLessLess", 8810, "\xe2\x89\xaa"},
-               {"tau", 964, "\xcf\x84"},
-               {"setmn", 8726, "\xe2\x88\x96"},
-               {"frac78", 8542, "\xe2\x85\x9e"},
-               {"para", 182, "\xc2\xb6"},
-               {"Rcedil", 342, "\xc5\x96"},
-               {"propto", 8733, "\xe2\x88\x9d"},
-               {"sqsubset", 8847, "\xe2\x8a\x8f"},
-               {"ensp", 8194, "\xe2\x80\x82"},
-               {"boxvH", 9578, "\xe2\x95\xaa"},
-               {"NotGreaterTilde", 8821, "\xe2\x89\xb5"},
-               {"ffllig", 64260, "\xef\xac\x84"},
-               {"kcedil", 311, "\xc4\xb7"},
-               {"omega", 969, "\xcf\x89"},
-               {"sime", 8771, "\xe2\x89\x83"},
-               {"LeftTriangleEqual", 8884, "\xe2\x8a\xb4"},
-               {"bsemi", 8271, "\xe2\x81\x8f"},
-               {"rdquor", 8221, "\xe2\x80\x9d"},
-               {"Utilde", 360, "\xc5\xa8"},
-               {"bsol", 92, "\x5c"},
-               {"risingdotseq", 8787, "\xe2\x89\x93"},
-               {"ultri", 9720, "\xe2\x97\xb8"},
-               {"rhov", 1009, "\xcf\xb1"},
-               {"TildeEqual", 8771, "\xe2\x89\x83"},
-               {"jukcy", 1108, "\xd1\x94"},
-               {"perp", 8869, "\xe2\x8a\xa5"},
-               {"capbrcup", 10825, "\xe2\xa9\x89"},
-               {"ltrie", 8884, "\xe2\x8a\xb4"},
-               {"LessTilde", 8818, "\xe2\x89\xb2"},
-               {"popf", 120161, "\xf0\x9d\x95\xa1"},
-               {"dbkarow", 10511, "\xe2\xa4\x8f"},
-               {"roang", 10221, "\xe2\x9f\xad"},
-               {"brvbar", 166, "\xc2\xa6"},
-               {"CenterDot", 183, "\xc2\xb7"},
-               {"notindot", 8949, "\xe2\x8b\xb5\xcc\xb8"},
-               {"supmult", 10946, "\xe2\xab\x82"},
-               {"multimap", 8888, "\xe2\x8a\xb8"},
-               {"frac34", 190, "\xc2\xbe"},
-               {"mapsto", 8614, "\xe2\x86\xa6"},
-               {"flat", 9837, "\xe2\x99\xad"},
-               {"updownarrow", 8597, "\xe2\x86\x95"},
-               {"gne", 10888, "\xe2\xaa\x88"},
-               {"nrarrc", 10547, "\xe2\xa4\xb3\xcc\xb8"},
-               {"suphsol", 10185, "\xe2\x9f\x89"},
-               {"nGtv", 8811, "\xe2\x89\xab\xcc\xb8"},
-               {"hopf", 120153, "\xf0\x9d\x95\x99"},
-               {"pointint", 10773, "\xe2\xa8\x95"},
-               {"glj", 10916, "\xe2\xaa\xa4"},
-               {"LeftDoubleBracket", 10214, "\xe2\x9f\xa6"},
-               {"NotSupersetEqual", 8841, "\xe2\x8a\x89"},
-               {"dot", 729, "\xcb\x99"},
-               {"tbrk", 9140, "\xe2\x8e\xb4"},
-               {"LeftUpDownVector", 10577, "\xe2\xa5\x91"},
-               {"uml", 168, "\xc2\xa8"},
-               {"bbrk", 9141, "\xe2\x8e\xb5"},
-               {"nearrow", 8599, "\xe2\x86\x97"},
-               {"backsimeq", 8909, "\xe2\x8b\x8d"},
-               {"dblac", 733, "\xcb\x9d"},
-               {"circleddash", 8861, "\xe2\x8a\x9d"},
-               {"ldsh", 8626, "\xe2\x86\xb2"},
-               {"sce", 10928, "\xe2\xaa\xb0"},
-               {"angst", 197, "\xc3\x85"},
-               {"yen", 165, "\xc2\xa5"},
-               {"nsupE", 10950, "\xe2\xab\x86\xcc\xb8"},
-               {"Uscr", 119984, "\xf0\x9d\x92\xb0"},
-               {"subplus", 10943, "\xe2\xaa\xbf"},
-               {"nleqq", 8806, "\xe2\x89\xa6\xcc\xb8"},
-               {"nprcue", 8928, "\xe2\x8b\xa0"},
-               {"Ocirc", 212, "\xc3\x94"},
-               {"disin", 8946, "\xe2\x8b\xb2"},
-               {"EqualTilde", 8770, "\xe2\x89\x82"},
-               {"YUcy", 1070, "\xd0\xae"},
-               {"Kscr", 119974, "\xf0\x9d\x92\xa6"},
-               {"lg", 8822, "\xe2\x89\xb6"},
-               {"nLeftrightarrow", 8654, "\xe2\x87\x8e"},
-               {"eplus", 10865, "\xe2\xa9\xb1"},
-               {"les", 10877, "\xe2\xa9\xbd"},
-               {"sfr", 120112, "\xf0\x9d\x94\xb0"},
-               {"HumpDownHump", 8782, "\xe2\x89\x8e"},
-               {"Fouriertrf", 8497, "\xe2\x84\xb1"},
-               {"Updownarrow", 8661, "\xe2\x87\x95"},
-               {"nrarr", 8603, "\xe2\x86\x9b"},
-               {"radic", 8730, "\xe2\x88\x9a"},
-               {"gnap", 10890, "\xe2\xaa\x8a"},
-               {"zeta", 950, "\xce\xb6"},
-               {"Qscr", 119980, "\xf0\x9d\x92\xac"},
-               {"NotRightTriangleEqual", 8941, "\xe2\x8b\xad"},
-               {"nshortmid", 8740, "\xe2\x88\xa4"},
-               {"SHCHcy", 1065, "\xd0\xa9"},
-               {"piv", 982, "\xcf\x96"},
-               {"angmsdaa", 10664, "\xe2\xa6\xa8"},
-               {"curlywedge", 8911, "\xe2\x8b\x8f"},
-               {"sqcaps", 8851, "\xe2\x8a\x93\xef\xb8\x80"},
-               {"sum", 8721, "\xe2\x88\x91"},
-               {"rarrtl", 8611, "\xe2\x86\xa3"},
-               {"gescc", 10921, "\xe2\xaa\xa9"},
-               {"sup", 8835, "\xe2\x8a\x83"},
-               {"smid", 8739, "\xe2\x88\xa3"},
-               {"cularr", 8630, "\xe2\x86\xb6"},
-               {"olcross", 10683, "\xe2\xa6\xbb"},
-               {"GT", 62, "\x3e"},
-               {"scap", 10936, "\xe2\xaa\xb8"},
-               {"capcup", 10823, "\xe2\xa9\x87"},
-               {"NotSquareSubsetEqual", 8930, "\xe2\x8b\xa2"},
-               {"uhblk", 9600, "\xe2\x96\x80"},
-               {"latail", 10521, "\xe2\xa4\x99"},
-               {"smtes", 10924, "\xe2\xaa\xac\xef\xb8\x80"},
-               {"RoundImplies", 10608, "\xe2\xa5\xb0"},
-               {"wreath", 8768, "\xe2\x89\x80"},
-               {"curlyvee", 8910, "\xe2\x8b\x8e"},
-               {"uscr", 120010, "\xf0\x9d\x93\x8a"},
-               {"nleftrightarrow", 8622, "\xe2\x86\xae"},
-               {"ucy", 1091, "\xd1\x83"},
-               {"nvge", 8805, "\xe2\x89\xa5\xe2\x83\x92"},
-               {"bnot", 8976, "\xe2\x8c\x90"},
-               {"alefsym", 8501, "\xe2\x84\xb5"},
-               {"star", 9734, "\xe2\x98\x86"},
-               {"boxHd", 9572, "\xe2\x95\xa4"},
-               {"vsubnE", 10955, "\xe2\xab\x8b\xef\xb8\x80"},
-               {"Popf", 8473, "\xe2\x84\x99"},
-               {"simgE", 10912, "\xe2\xaa\xa0"},
-               {"upsilon", 965, "\xcf\x85"},
-               {"NoBreak", 8288, "\xe2\x81\xa0"},
-               {"realine", 8475, "\xe2\x84\x9b"},
-               {"frac38", 8540, "\xe2\x85\x9c"},
-               {"YAcy", 1071, "\xd0\xaf"},
-               {"bnequiv", 8801, "\xe2\x89\xa1\xe2\x83\xa5"},
-               {"cudarrr", 10549, "\xe2\xa4\xb5"},
-               {"lsime", 10893, "\xe2\xaa\x8d"},
-               {"lowbar", 95, "\x5f"},
-               {"utdot", 8944, "\xe2\x8b\xb0"},
-               {"ReverseElement", 8715, "\xe2\x88\x8b"},
-               {"nshortparallel", 8742, "\xe2\x88\xa6"},
-               {"DJcy", 1026, "\xd0\x82"},
-               {"nsube", 8840, "\xe2\x8a\x88"},
-               {"VDash", 8875, "\xe2\x8a\xab"},
-               {"Ncaron", 327, "\xc5\x87"},
-               {"LeftUpVector", 8639, "\xe2\x86\xbf"},
-               {"Kcy", 1050, "\xd0\x9a"},
-               {"NotLeftTriangleEqual", 8940, "\xe2\x8b\xac"},
-               {"nvHarr", 10500, "\xe2\xa4\x84"},
-               {"lotimes", 10804, "\xe2\xa8\xb4"},
-               {"RightFloor", 8971, "\xe2\x8c\x8b"},
-               {"succ", 8827, "\xe2\x89\xbb"},
-               {"Ucy", 1059, "\xd0\xa3"},
-               {"darr", 8595, "\xe2\x86\x93"},
-               {"lbarr", 10508, "\xe2\xa4\x8c"},
-               {"xfr", 120117, "\xf0\x9d\x94\xb5"},
-               {"zopf", 120171, "\xf0\x9d\x95\xab"},
-               {"Phi", 934, "\xce\xa6"},
-               {"ord", 10845, "\xe2\xa9\x9d"},
-               {"iinfin", 10716, "\xe2\xa7\x9c"},
-               {"Xfr", 120091, "\xf0\x9d\x94\x9b"},
-               {"qint", 10764, "\xe2\xa8\x8c"},
-               {"Upsilon", 933, "\xce\xa5"},
-               {"NotSubset", 8834, "\xe2\x8a\x82\xe2\x83\x92"},
-               {"gfr", 120100, "\xf0\x9d\x94\xa4"},
-               {"notnivb", 8958, "\xe2\x8b\xbe"},
-               {"Afr", 120068, "\xf0\x9d\x94\x84"},
-               {"ge", 8805, "\xe2\x89\xa5"},
-               {"iexcl", 161, "\xc2\xa1"},
-               {"dfr", 120097, "\xf0\x9d\x94\xa1"},
-               {"rsaquo", 8250, "\xe2\x80\xba"},
-               {"xcap", 8898, "\xe2\x8b\x82"},
-               {"Jopf", 120129, "\xf0\x9d\x95\x81"},
-               {"Hstrok", 294, "\xc4\xa6"},
-               {"ldca", 10550, "\xe2\xa4\xb6"},
-               {"lmoust", 9136, "\xe2\x8e\xb0"},
-               {"wcirc", 373, "\xc5\xb5"},
-               {"DownRightVector", 8641, "\xe2\x87\x81"},
-               {"LessFullEqual", 8806, "\xe2\x89\xa6"},
-               {"dotsquare", 8865, "\xe2\x8a\xa1"},
-               {"zhcy", 1078, "\xd0\xb6"},
-               {"mDDot", 8762, "\xe2\x88\xba"},
-               {"Prime", 8243, "\xe2\x80\xb3"},
-               {"prec", 8826, "\xe2\x89\xba"},
-               {"swnwar", 10538, "\xe2\xa4\xaa"},
-               {"COPY", 169, "\xc2\xa9"},
-               {"cong", 8773, "\xe2\x89\x85"},
-               {"sacute", 347, "\xc5\x9b"},
-               {"Nopf", 8469, "\xe2\x84\x95"},
-               {"it", 8290, "\xe2\x81\xa2"},
-               {"SOFTcy", 1068, "\xd0\xac"},
-               {"uuarr", 8648, "\xe2\x87\x88"},
-               {"iota", 953, "\xce\xb9"},
-               {"notinE", 8953, "\xe2\x8b\xb9\xcc\xb8"},
-               {"jfr", 120103, "\xf0\x9d\x94\xa7"},
-               {"QUOT", 34, "\x22"},
-               {"vsupnE", 10956, "\xe2\xab\x8c\xef\xb8\x80"},
-               {"igrave", 236, "\xc3\xac"},
-               {"bsim", 8765, "\xe2\x88\xbd"},
-               {"npreceq", 10927, "\xe2\xaa\xaf\xcc\xb8"},
-               {"zcaron", 382, "\xc5\xbe"},
-               {"DD", 8517, "\xe2\x85\x85"},
-               {"gamma", 947, "\xce\xb3"},
-               {"homtht", 8763, "\xe2\x88\xbb"},
-               {"NonBreakingSpace", 160, "\xc2\xa0"},
-               {"Proportion", 8759, "\xe2\x88\xb7"},
-               {"nedot", 8784, "\xe2\x89\x90\xcc\xb8"},
-               {"nabla", 8711, "\xe2\x88\x87"},
-               {"ac", 8766, "\xe2\x88\xbe"},
-               {"nsupe", 8841, "\xe2\x8a\x89"},
-               {"ell", 8467, "\xe2\x84\x93"},
-               {"boxvR", 9566, "\xe2\x95\x9e"},
-               {"LowerRightArrow", 8600, "\xe2\x86\x98"},
-               {"boxHu", 9575, "\xe2\x95\xa7"},
-               {"lE", 8806, "\xe2\x89\xa6"},
-               {"dzigrarr", 10239, "\xe2\x9f\xbf"},
-               {"rfloor", 8971, "\xe2\x8c\x8b"},
-               {"gneq", 10888, "\xe2\xaa\x88"},
-               {"rightleftharpoons", 8652, "\xe2\x87\x8c"},
-               {"gtquest", 10876, "\xe2\xa9\xbc"},
-               {"searhk", 10533, "\xe2\xa4\xa5"},
-               {"gesdoto", 10882, "\xe2\xaa\x82"},
-               {"cross", 10007, "\xe2\x9c\x97"},
-               {"rdquo", 8221, "\xe2\x80\x9d"},
-               {"sqsupset", 8848, "\xe2\x8a\x90"},
-               {"divonx", 8903, "\xe2\x8b\x87"},
-               {"lat", 10923, "\xe2\xaa\xab"},
-               {"rmoustache", 9137, "\xe2\x8e\xb1"},
-               {"succapprox", 10936, "\xe2\xaa\xb8"},
-               {"nhpar", 10994, "\xe2\xab\xb2"},
-               {"sharp", 9839, "\xe2\x99\xaf"},
-               {"lrcorner", 8991, "\xe2\x8c\x9f"},
-               {"Vscr", 119985, "\xf0\x9d\x92\xb1"},
-               {"varsigma", 962, "\xcf\x82"},
-               {"bsolb", 10693, "\xe2\xa7\x85"},
-               {"cupcap", 10822, "\xe2\xa9\x86"},
-               {"leftrightarrow", 8596, "\xe2\x86\x94"},
-               {"LeftTee", 8867, "\xe2\x8a\xa3"},
-               {"Sqrt", 8730, "\xe2\x88\x9a"},
-               {"Odblac", 336, "\xc5\x90"},
-               {"ocir", 8858, "\xe2\x8a\x9a"},
-               {"eqslantless", 10901, "\xe2\xaa\x95"},
-               {"supedot", 10948, "\xe2\xab\x84"},
-               {"intercal", 8890, "\xe2\x8a\xba"},
-               {"Gbreve", 286, "\xc4\x9e"},
-               {"xrArr", 10233, "\xe2\x9f\xb9"},
-               {"NotTildeEqual", 8772, "\xe2\x89\x84"},
-               {"Bfr", 120069, "\xf0\x9d\x94\x85"},
-               {"Iuml", 207, "\xc3\x8f"},
-               {"leg", 8922, "\xe2\x8b\x9a"},
-               {"boxhU", 9576, "\xe2\x95\xa8"},
-               {"Gopf", 120126, "\xf0\x9d\x94\xbe"},
-               {"af", 8289, "\xe2\x81\xa1"},
-               {"xwedge", 8896, "\xe2\x8b\x80"},
-               {"precapprox", 10935, "\xe2\xaa\xb7"},
-               {"lcedil", 316, "\xc4\xbc"},
-               {"between", 8812, "\xe2\x89\xac"},
-               {"Oslash", 216, "\xc3\x98"},
-               {"breve", 728, "\xcb\x98"},
-               {"caps", 8745, "\xe2\x88\xa9\xef\xb8\x80"},
-               {"vangrt", 10652, "\xe2\xa6\x9c"},
-               {"lagran", 8466, "\xe2\x84\x92"},
-               {"kopf", 120156, "\xf0\x9d\x95\x9c"},
-               {"ReverseUpEquilibrium", 10607, "\xe2\xa5\xaf"},
-               {"nlsim", 8820, "\xe2\x89\xb4"},
-               {"Cap", 8914, "\xe2\x8b\x92"},
-               {"angmsdac", 10666, "\xe2\xa6\xaa"},
-               {"iocy", 1105, "\xd1\x91"},
-               {"seswar", 10537, "\xe2\xa4\xa9"},
-               {"dzcy", 1119, "\xd1\x9f"},
-               {"nsubset", 8834, "\xe2\x8a\x82\xe2\x83\x92"},
-               {"cup", 8746, "\xe2\x88\xaa"},
-               {"npar", 8742, "\xe2\x88\xa6"},
-               {"late", 10925, "\xe2\xaa\xad"},
-               {"plussim", 10790, "\xe2\xa8\xa6"},
-               {"Darr", 8609, "\xe2\x86\xa1"},
-               {"nexist", 8708, "\xe2\x88\x84"},
-               {"cent", 162, "\xc2\xa2"},
-               {"khcy", 1093, "\xd1\x85"},
-               {"smallsetminus", 8726, "\xe2\x88\x96"},
-               {"ycirc", 375, "\xc5\xb7"},
-               {"lharu", 8636, "\xe2\x86\xbc"},
-               {"upuparrows", 8648, "\xe2\x87\x88"},
-               {"sigmaf", 962, "\xcf\x82"},
-               {"nltri", 8938, "\xe2\x8b\xaa"},
-               {"mstpos", 8766, "\xe2\x88\xbe"},
-               {"Zopf", 8484, "\xe2\x84\xa4"},
-               {"dwangle", 10662, "\xe2\xa6\xa6"},
-               {"bowtie", 8904, "\xe2\x8b\x88"},
-               {"Dfr", 120071, "\xf0\x9d\x94\x87"},
-               {"iacute", 237, "\xc3\xad"},
-               {"njcy", 1114, "\xd1\x9a"},
-               {"cfr", 120096, "\xf0\x9d\x94\xa0"},
-               {"TripleDot", 8411, "\xe2\x83\x9b"},
-               {"Or", 10836, "\xe2\xa9\x94"},
-               {"blk34", 9619, "\xe2\x96\x93"},
-               {"equiv", 8801, "\xe2\x89\xa1"},
-               {"fflig", 64256, "\xef\xac\x80"},
-               {"Rang", 10219, "\xe2\x9f\xab"},
-               {"Wopf", 120142, "\xf0\x9d\x95\x8e"},
-               {"boxUl", 9564, "\xe2\x95\x9c"},
-               {"frac12", 189, "\xc2\xbd"},
-               {"clubs", 9827, "\xe2\x99\xa3"},
-               {"amalg", 10815, "\xe2\xa8\xbf"},
-               {"Lang", 10218, "\xe2\x9f\xaa"},
-               {"asymp", 8776, "\xe2\x89\x88"},
-               {"models", 8871, "\xe2\x8a\xa7"},
-               {"emptyset", 8709, "\xe2\x88\x85"},
-               {"Tscr", 119983, "\xf0\x9d\x92\xaf"},
-               {"nleftarrow", 8602, "\xe2\x86\x9a"},
-               {"Omacr", 332, "\xc5\x8c"},
-               {"gtrarr", 10616, "\xe2\xa5\xb8"},
-               {"excl", 33, "\x21"},
-               {"rarrw", 8605, "\xe2\x86\x9d"},
-               {"abreve", 259, "\xc4\x83"},
-               {"CircleTimes", 8855, "\xe2\x8a\x97"},
-               {"aopf", 120146, "\xf0\x9d\x95\x92"},
-               {"eqvparsl", 10725, "\xe2\xa7\xa5"},
-               {"boxv", 9474, "\xe2\x94\x82"},
-               {"SuchThat", 8715, "\xe2\x88\x8b"},
-               {"varphi", 981, "\xcf\x95"},
-               {"Ropf", 8477, "\xe2\x84\x9d"},
-               {"rscr", 120007, "\xf0\x9d\x93\x87"},
-               {"Rrightarrow", 8667, "\xe2\x87\x9b"},
-               {"equest", 8799, "\xe2\x89\x9f"},
-               {"ntilde", 241, "\xc3\xb1"},
-               {"Escr", 8496, "\xe2\x84\xb0"},
-               {"Lopf", 120131, "\xf0\x9d\x95\x83"},
-               {"GreaterGreater", 10914, "\xe2\xaa\xa2"},
-               {"pluscir", 10786, "\xe2\xa8\xa2"},
-               {"nsupset", 8835, "\xe2\x8a\x83\xe2\x83\x92"},
-               {"uArr", 8657, "\xe2\x87\x91"},
-               {"nwarhk", 10531, "\xe2\xa4\xa3"},
-               {"Ycirc", 374, "\xc5\xb6"},
-               {"tdot", 8411, "\xe2\x83\x9b"},
-               {"circledS", 9416, "\xe2\x93\x88"},
-               {"lhard", 8637, "\xe2\x86\xbd"},
-               {"iukcy", 1110, "\xd1\x96"},
-               {"PrecedesSlantEqual", 8828, "\xe2\x89\xbc"},
-               {"Sfr", 120086, "\xf0\x9d\x94\x96"},
-               {"egs", 10902, "\xe2\xaa\x96"},
-               {"oelig", 339, "\xc5\x93"},
-               {"bigtriangledown", 9661, "\xe2\x96\xbd"},
-               {"EmptyVerySmallSquare", 9643, "\xe2\x96\xab"},
-               {"Backslash", 8726, "\xe2\x88\x96"},
-               {"nscr", 120003, "\xf0\x9d\x93\x83"},
-               {"uogon", 371, "\xc5\xb3"},
-               {"circeq", 8791, "\xe2\x89\x97"},
-               {"check", 10003, "\xe2\x9c\x93"},
-               {"Sup", 8913, "\xe2\x8b\x91"},
-               {"Rcaron", 344, "\xc5\x98"},
-               {"lneqq", 8808, "\xe2\x89\xa8"},
-               {"lrhar", 8651, "\xe2\x87\x8b"},
-               {"ulcorn", 8988, "\xe2\x8c\x9c"},
-               {"timesd", 10800, "\xe2\xa8\xb0"},
-               {"Sum", 8721, "\xe2\x88\x91"},
-               {"varpropto", 8733, "\xe2\x88\x9d"},
-               {"Lcaron", 317, "\xc4\xbd"},
-               {"lbrkslu", 10637, "\xe2\xa6\x8d"},
-               {"AElig", 198, "\xc3\x86"},
-               {"varr", 8597, "\xe2\x86\x95"},
-               {"nvinfin", 10718, "\xe2\xa7\x9e"},
-               {"leq", 8804, "\xe2\x89\xa4"},
-               {"biguplus", 10756, "\xe2\xa8\x84"},
-               {"rpar", 41, "\x29"},
-               {"eng", 331, "\xc5\x8b"},
-               {"NegativeThinSpace", 8203, "\xe2\x80\x8b"},
-               {"lesssim", 8818, "\xe2\x89\xb2"},
-               {"lBarr", 10510, "\xe2\xa4\x8e"},
-               {"LeftUpTeeVector", 10592, "\xe2\xa5\xa0"},
-               {"gnE", 8809, "\xe2\x89\xa9"},
-               {"efr", 120098, "\xf0\x9d\x94\xa2"},
-               {"barvee", 8893, "\xe2\x8a\xbd"},
-               {"ee", 8519, "\xe2\x85\x87"},
-               {"Uogon", 370, "\xc5\xb2"},
-               {"gnapprox", 10890, "\xe2\xaa\x8a"},
-               {"olcir", 10686, "\xe2\xa6\xbe"},
-               {"boxUL", 9565, "\xe2\x95\x9d"},
-               {"Gg", 8921, "\xe2\x8b\x99"},
-               {"CloseCurlyQuote", 8217, "\xe2\x80\x99"},
-               {"leftharpoondown", 8637, "\xe2\x86\xbd"},
-               {"vfr", 120115, "\xf0\x9d\x94\xb3"},
-               {"gvertneqq", 8809, "\xe2\x89\xa9\xef\xb8\x80"},
-               {"ouml", 246, "\xc3\xb6"},
-               {"raemptyv", 10675, "\xe2\xa6\xb3"},
-               {"Zcaron", 381, "\xc5\xbd"},
-               {"scE", 10932, "\xe2\xaa\xb4"},
-               {"boxvh", 9532, "\xe2\x94\xbc"},
-               {"ominus", 8854, "\xe2\x8a\x96"},
-               {"oopf", 120160, "\xf0\x9d\x95\xa0"},
-               {"nsucceq", 10928, "\xe2\xaa\xb0\xcc\xb8"},
-               {"RBarr", 10512, "\xe2\xa4\x90"},
-               {"iprod", 10812, "\xe2\xa8\xbc"},
-               {"lvnE", 8808, "\xe2\x89\xa8\xef\xb8\x80"},
-               {"andand", 10837, "\xe2\xa9\x95"},
-               {"upharpoonright", 8638, "\xe2\x86\xbe"},
-               {"ncongdot", 10861, "\xe2\xa9\xad\xcc\xb8"},
-               {"drcrop", 8972, "\xe2\x8c\x8c"},
-               {"nsimeq", 8772, "\xe2\x89\x84"},
-               {"subsub", 10965, "\xe2\xab\x95"},
-               {"hardcy", 1098, "\xd1\x8a"},
-               {"leqslant", 10877, "\xe2\xa9\xbd"},
-               {"uharl", 8639, "\xe2\x86\xbf"},
-               {"expectation", 8496, "\xe2\x84\xb0"},
-               {"mdash", 8212, "\xe2\x80\x94"},
-               {"VerticalTilde", 8768, "\xe2\x89\x80"},
-               {"rdldhar", 10601, "\xe2\xa5\xa9"},
-               {"leftharpoonup", 8636, "\xe2\x86\xbc"},
-               {"mu", 956, "\xce\xbc"},
-               {"curarrm", 10556, "\xe2\xa4\xbc"},
-               {"Cdot", 266, "\xc4\x8a"},
-               {"NotTildeTilde", 8777, "\xe2\x89\x89"},
-               {"boxul", 9496, "\xe2\x94\x98"},
-               {"planckh", 8462, "\xe2\x84\x8e"},
-               {"CapitalDifferentialD", 8517, "\xe2\x85\x85"},
-               {"boxDL", 9559, "\xe2\x95\x97"},
-               {"cupbrcap", 10824, "\xe2\xa9\x88"},
-               {"boxdL", 9557, "\xe2\x95\x95"},
-               {"supe", 8839, "\xe2\x8a\x87"},
-               {"nvlt", 60, "\x3c\xe2\x83\x92"},
-               {"par", 8741, "\xe2\x88\xa5"},
-               {"InvisibleComma", 8291, "\xe2\x81\xa3"},
-               {"ring", 730, "\xcb\x9a"},
-               {"nvap", 8781, "\xe2\x89\x8d\xe2\x83\x92"},
-               {"veeeq", 8794, "\xe2\x89\x9a"},
-               {"Hfr", 8460, "\xe2\x84\x8c"},
-               {"dstrok", 273, "\xc4\x91"},
-               {"gesles", 10900, "\xe2\xaa\x94"},
-               {"dash", 8208, "\xe2\x80\x90"},
-               {"SHcy", 1064, "\xd0\xa8"},
-               {"congdot", 10861, "\xe2\xa9\xad"},
-               {"imagline", 8464, "\xe2\x84\x90"},
-               {"ncy", 1085, "\xd0\xbd"},
-               {"bigstar", 9733, "\xe2\x98\x85"},
-               {"REG", 174, "\xc2\xae"},
-               {"triangleq", 8796, "\xe2\x89\x9c"},
-               {"rsqb", 93, "\x5d"},
-               {"ddarr", 8650, "\xe2\x87\x8a"},
-               {"csub", 10959, "\xe2\xab\x8f"},
-               {"quest", 63, "\x3f"},
-               {"Star", 8902, "\xe2\x8b\x86"},
-               {"LT", 60, "\x3c"},
-               {"ncong", 8775, "\xe2\x89\x87"},
-               {"prnE", 10933, "\xe2\xaa\xb5"},
-               {"bigtriangleup", 9651, "\xe2\x96\xb3"},
-               {"Tilde", 8764, "\xe2\x88\xbc"},
-               {"ltrif", 9666, "\xe2\x97\x82"},
-               {"ldrdhar", 10599, "\xe2\xa5\xa7"},
-               {"lcaron", 318, "\xc4\xbe"},
-               {"equivDD", 10872, "\xe2\xa9\xb8"},
-               {"lHar", 10594, "\xe2\xa5\xa2"},
-               {"vBar", 10984, "\xe2\xab\xa8"},
-               {"Mopf", 120132, "\xf0\x9d\x95\x84"},
-               {"LeftArrow", 8592, "\xe2\x86\x90"},
-               {"Rho", 929, "\xce\xa1"},
-               {"Ccirc", 264, "\xc4\x88"},
-               {"ifr", 120102, "\xf0\x9d\x94\xa6"},
-               {"cacute", 263, "\xc4\x87"},
-               {"centerdot", 183, "\xc2\xb7"},
-               {"dollar", 36, "\x24"},
-               {"lang", 10216, "\xe2\x9f\xa8"},
-               {"curvearrowright", 8631, "\xe2\x86\xb7"},
-               {"half", 189, "\xc2\xbd"},
-               {"Ecy", 1069, "\xd0\xad"},
-               {"rcub", 125, "\x7d"},
-               {"rcy", 1088, "\xd1\x80"},
-               {"isins", 8948, "\xe2\x8b\xb4"},
-               {"bsolhsub", 10184, "\xe2\x9f\x88"},
-               {"boxuL", 9563, "\xe2\x95\x9b"},
-               {"shchcy", 1097, "\xd1\x89"},
-               {"cwconint", 8754, "\xe2\x88\xb2"},
-               {"euro", 8364, "\xe2\x82\xac"},
-               {"lesseqqgtr", 10891, "\xe2\xaa\x8b"},
-               {"sim", 8764, "\xe2\x88\xbc"},
-               {"rarrc", 10547, "\xe2\xa4\xb3"},
-               {"boxdl", 9488, "\xe2\x94\x90"},
-               {"Epsilon", 917, "\xce\x95"},
-               {"iiiint", 10764, "\xe2\xa8\x8c"},
-               {"Rightarrow", 8658, "\xe2\x87\x92"},
-               {"conint", 8750, "\xe2\x88\xae"},
-               {"boxDl", 9558, "\xe2\x95\x96"},
-               {"kappav", 1008, "\xcf\xb0"},
-               {"profsurf", 8979, "\xe2\x8c\x93"},
-               {"auml", 228, "\xc3\xa4"},
-               {"heartsuit", 9829, "\xe2\x99\xa5"},
-               {"eacute", 233, "\xc3\xa9"},
-               {"gt", 62, "\x3e"},
-               {"Gcedil", 290, "\xc4\xa2"},
-               {"easter", 10862, "\xe2\xa9\xae"},
-               {"Tcy", 1058, "\xd0\xa2"},
-               {"swarrow", 8601, "\xe2\x86\x99"},
-               {"lopf", 120157, "\xf0\x9d\x95\x9d"},
-               {"Agrave", 192, "\xc3\x80"},
-               {"Aring", 197, "\xc3\x85"},
-               {"fpartint", 10765, "\xe2\xa8\x8d"},
-               {"xoplus", 10753, "\xe2\xa8\x81"},
-               {"LeftDownTeeVector", 10593, "\xe2\xa5\xa1"},
-               {"int", 8747, "\xe2\x88\xab"},
-               {"Zeta", 918, "\xce\x96"},
-               {"loz", 9674, "\xe2\x97\x8a"},
-               {"ncup", 10818, "\xe2\xa9\x82"},
-               {"napE", 10864, "\xe2\xa9\xb0\xcc\xb8"},
-               {"csup", 10960, "\xe2\xab\x90"},
-               {"Ncedil", 325, "\xc5\x85"},
-               {"cuwed", 8911, "\xe2\x8b\x8f"},
-               {"Dot", 168, "\xc2\xa8"},
-               {"SquareIntersection", 8851, "\xe2\x8a\x93"},
-               {"map", 8614, "\xe2\x86\xa6"},
-               {"aelig", 230, "\xc3\xa6"},
-               {"RightArrow", 8594, "\xe2\x86\x92"},
-               {"rightharpoondown", 8641, "\xe2\x87\x81"},
-               {"bNot", 10989, "\xe2\xab\xad"},
-               {"nsccue", 8929, "\xe2\x8b\xa1"},
-               {"zigrarr", 8669, "\xe2\x87\x9d"},
-               {"Sacute", 346, "\xc5\x9a"},
-               {"orv", 10843, "\xe2\xa9\x9b"},
-               {"RightVectorBar", 10579, "\xe2\xa5\x93"},
-               {"nrarrw", 8605, "\xe2\x86\x9d\xcc\xb8"},
-               {"nbump", 8782, "\xe2\x89\x8e\xcc\xb8"},
-               {"iquest", 191, "\xc2\xbf"},
-               {"wr", 8768, "\xe2\x89\x80"},
-               {"UpArrow", 8593, "\xe2\x86\x91"},
-               {"notinva", 8713, "\xe2\x88\x89"},
-               {"ddagger", 8225, "\xe2\x80\xa1"},
-               {"nLeftarrow", 8653, "\xe2\x87\x8d"},
-               {"rbbrk", 10099, "\xe2\x9d\xb3"},
-               {"RightTriangle", 8883, "\xe2\x8a\xb3"},
-               {"leqq", 8806, "\xe2\x89\xa6"},
-               {"Vert", 8214, "\xe2\x80\x96"},
-               {"gesl", 8923, "\xe2\x8b\x9b\xef\xb8\x80"},
-               {"LeftTeeVector", 10586, "\xe2\xa5\x9a"},
-               {"Union", 8899, "\xe2\x8b\x83"},
-               {"sc", 8827, "\xe2\x89\xbb"},
-               {"ofr", 120108, "\xf0\x9d\x94\xac"},
-               {"quatint", 10774, "\xe2\xa8\x96"},
-               {"apacir", 10863, "\xe2\xa9\xaf"},
-               {"profalar", 9006, "\xe2\x8c\xae"},
-               {"subsetneq", 8842, "\xe2\x8a\x8a"},
-               {"Vvdash", 8874, "\xe2\x8a\xaa"},
-               {"ohbar", 10677, "\xe2\xa6\xb5"},
-               {"Gt", 8811, "\xe2\x89\xab"},
-               {"exist", 8707, "\xe2\x88\x83"},
-               {"gtrapprox", 10886, "\xe2\xaa\x86"},
-               {"euml", 235, "\xc3\xab"},
-               {"Equilibrium", 8652, "\xe2\x87\x8c"},
-               {"aacute", 225, "\xc3\xa1"},
-               {"omid", 10678, "\xe2\xa6\xb6"},
-               {"loarr", 8701, "\xe2\x87\xbd"},
-               {"SucceedsSlantEqual", 8829, "\xe2\x89\xbd"},
-               {"angsph", 8738, "\xe2\x88\xa2"},
-               {"nsmid", 8740, "\xe2\x88\xa4"},
-               {"lsquor", 8218, "\xe2\x80\x9a"},
-               {"cemptyv", 10674, "\xe2\xa6\xb2"},
-               {"rAarr", 8667, "\xe2\x87\x9b"},
-               {"searr", 8600, "\xe2\x86\x98"},
-               {"complexes", 8450, "\xe2\x84\x82"},
-               {"UnderParenthesis", 9181, "\xe2\x8f\x9d"},
-               {"nparsl", 11005, "\xe2\xab\xbd\xe2\x83\xa5"},
-               {"Lacute", 313, "\xc4\xb9"},
-               {"deg", 176, "\xc2\xb0"},
-               {"Racute", 340, "\xc5\x94"},
-               {"Verbar", 8214, "\xe2\x80\x96"},
-               {"sqcups", 8852, "\xe2\x8a\x94\xef\xb8\x80"},
-               {"Hopf", 8461, "\xe2\x84\x8d"},
-               {"naturals", 8469, "\xe2\x84\x95"},
-               {"Cedilla", 184, "\xc2\xb8"},
-               {"exponentiale", 8519, "\xe2\x85\x87"},
-               {"vnsup", 8835, "\xe2\x8a\x83\xe2\x83\x92"},
-               {"leftrightarrows", 8646, "\xe2\x87\x86"},
-               {"Laplacetrf", 8466, "\xe2\x84\x92"},
-               {"vartriangleright", 8883, "\xe2\x8a\xb3"},
-               {"rtri", 9657, "\xe2\x96\xb9"},
-               {"gE", 8807, "\xe2\x89\xa7"},
-               {"SmallCircle", 8728, "\xe2\x88\x98"},
-               {"diamondsuit", 9830, "\xe2\x99\xa6"},
-               {"Otilde", 213, "\xc3\x95"},
-               {"lneq", 10887, "\xe2\xaa\x87"},
-               {"lesdoto", 10881, "\xe2\xaa\x81"},
-               {"ltquest", 10875, "\xe2\xa9\xbb"},
-               {"thinsp", 8201, "\xe2\x80\x89"},
-               {"barwed", 8965, "\xe2\x8c\x85"},
-               {"elsdot", 10903, "\xe2\xaa\x97"},
-               {"circ", 710, "\xcb\x86"},
-               {"ni", 8715, "\xe2\x88\x8b"},
-               {"mlcp", 10971, "\xe2\xab\x9b"},
-               {"Vdash", 8873, "\xe2\x8a\xa9"},
-               {"ShortRightArrow", 8594, "\xe2\x86\x92"},
-               {"upharpoonleft", 8639, "\xe2\x86\xbf"},
-               {"UnderBracket", 9141, "\xe2\x8e\xb5"},
-               {"rAtail", 10524, "\xe2\xa4\x9c"},
-               {"iopf", 120154, "\xf0\x9d\x95\x9a"},
-               {"longleftarrow", 10229, "\xe2\x9f\xb5"},
-               {"Zacute", 377, "\xc5\xb9"},
-               {"duhar", 10607, "\xe2\xa5\xaf"},
-               {"Mfr", 120080, "\xf0\x9d\x94\x90"},
-               {"prnap", 10937, "\xe2\xaa\xb9"},
-               {"eqcirc", 8790, "\xe2\x89\x96"},
-               {"rarrlp", 8620, "\xe2\x86\xac"},
-               {"le", 8804, "\xe2\x89\xa4"},
-               {"Oscr", 119978, "\xf0\x9d\x92\xaa"},
-               {"langd", 10641, "\xe2\xa6\x91"},
-               {"Ucirc", 219, "\xc3\x9b"},
-               {"precnapprox", 10937, "\xe2\xaa\xb9"},
-               {"succcurlyeq", 8829, "\xe2\x89\xbd"},
-               {"Tau", 932, "\xce\xa4"},
-               {"larr", 8592, "\xe2\x86\x90"},
-               {"neArr", 8663, "\xe2\x87\x97"},
-               {"subsim", 10951, "\xe2\xab\x87"},
-               {"DScy", 1029, "\xd0\x85"},
-               {"preccurlyeq", 8828, "\xe2\x89\xbc"},
-               {"NotLessLess", 8810, "\xe2\x89\xaa\xcc\xb8"},
-               {"succnapprox", 10938, "\xe2\xaa\xba"},
-               {"prcue", 8828, "\xe2\x89\xbc"},
-               {"Downarrow", 8659, "\xe2\x87\x93"},
-               {"angmsdah", 10671, "\xe2\xa6\xaf"},
-               {"Emacr", 274, "\xc4\x92"},
-               {"lsh", 8624, "\xe2\x86\xb0"},
-               {"simne", 8774, "\xe2\x89\x86"},
-               {"Bumpeq", 8782, "\xe2\x89\x8e"},
-               {"RightUpTeeVector", 10588, "\xe2\xa5\x9c"},
-               {"Sigma", 931, "\xce\xa3"},
-               {"nvltrie", 8884, "\xe2\x8a\xb4\xe2\x83\x92"},
-               {"lfr", 120105, "\xf0\x9d\x94\xa9"},
-               {"emsp13", 8196, "\xe2\x80\x84"},
-               {"parsl", 11005, "\xe2\xab\xbd"},
-               {"ucirc", 251, "\xc3\xbb"},
-               {"gsiml", 10896, "\xe2\xaa\x90"},
-               {"xsqcup", 10758, "\xe2\xa8\x86"},
-               {"Omicron", 927, "\xce\x9f"},
-               {"gsime", 10894, "\xe2\xaa\x8e"},
-               {"circlearrowleft", 8634, "\xe2\x86\xba"},
-               {"sqsupe", 8850, "\xe2\x8a\x92"},
-               {"supE", 10950, "\xe2\xab\x86"},
-               {"dlcrop", 8973, "\xe2\x8c\x8d"},
-               {"RightDownTeeVector", 10589, "\xe2\xa5\x9d"},
-               {"Colone", 10868, "\xe2\xa9\xb4"},
-               {"awconint", 8755, "\xe2\x88\xb3"},
-               {"smte", 10924, "\xe2\xaa\xac"},
-               {"lEg", 10891, "\xe2\xaa\x8b"},
-               {"circledast", 8859, "\xe2\x8a\x9b"},
-               {"ecolon", 8789, "\xe2\x89\x95"},
-               {"rect", 9645, "\xe2\x96\xad"},
-               {"Equal", 10869, "\xe2\xa9\xb5"},
-               {"nwnear", 10535, "\xe2\xa4\xa7"},
-               {"capdot", 10816, "\xe2\xa9\x80"},
-               {"straightphi", 981, "\xcf\x95"},
-               {"forkv", 10969, "\xe2\xab\x99"},
-               {"ZHcy", 1046, "\xd0\x96"},
-               {"Element", 8712, "\xe2\x88\x88"},
-               {"rthree", 8908, "\xe2\x8b\x8c"},
-               {"vzigzag", 10650, "\xe2\xa6\x9a"},
-               {"hybull", 8259, "\xe2\x81\x83"},
-               {"intprod", 10812, "\xe2\xa8\xbc"},
-               {"HumpEqual", 8783, "\xe2\x89\x8f"},
-               {"bigsqcup", 10758, "\xe2\xa8\x86"},
-               {"mp", 8723, "\xe2\x88\x93"},
-               {"lescc", 10920, "\xe2\xaa\xa8"},
-               {"NotPrecedes", 8832, "\xe2\x8a\x80"},
-               {"wedge", 8743, "\xe2\x88\xa7"},
-               {"Supset", 8913, "\xe2\x8b\x91"},
-               {"pm", 177, "\xc2\xb1"},
-               {"kfr", 120104, "\xf0\x9d\x94\xa8"},
-               {"ufisht", 10622, "\xe2\xa5\xbe"},
-               {"ecaron", 283, "\xc4\x9b"},
-               {"chcy", 1095, "\xd1\x87"},
-               {"Esim", 10867, "\xe2\xa9\xb3"},
-               {"fltns", 9649, "\xe2\x96\xb1"},
-               {"nsce", 10928, "\xe2\xaa\xb0\xcc\xb8"},
-               {"hookrightarrow", 8618, "\xe2\x86\xaa"},
-               {"semi", 59, "\x3b"},
-               {"ges", 10878, "\xe2\xa9\xbe"},
-               {"approxeq", 8778, "\xe2\x89\x8a"},
-               {"rarrsim", 10612, "\xe2\xa5\xb4"},
-               {"boxhD", 9573, "\xe2\x95\xa5"},
-               {"varpi", 982, "\xcf\x96"},
-               {"larrb", 8676, "\xe2\x87\xa4"},
-               {"copf", 120148, "\xf0\x9d\x95\x94"},
-               {"Dopf", 120123, "\xf0\x9d\x94\xbb"},
-               {"LeftVector", 8636, "\xe2\x86\xbc"},
-               {"iff", 8660, "\xe2\x87\x94"},
-               {"lnap", 10889, "\xe2\xaa\x89"},
-               {"NotGreaterFullEqual", 8807, "\xe2\x89\xa7\xcc\xb8"},
-               {"varrho", 1009, "\xcf\xb1"},
-               {"NotSucceeds", 8833, "\xe2\x8a\x81"},
-               {"ltrPar", 10646, "\xe2\xa6\x96"},
-               {"nlE", 8806, "\xe2\x89\xa6\xcc\xb8"},
-               {"Zfr", 8488, "\xe2\x84\xa8"},
-               {"LeftArrowBar", 8676, "\xe2\x87\xa4"},
-               {"boxplus", 8862, "\xe2\x8a\x9e"},
-               {"sqsube", 8849, "\xe2\x8a\x91"},
-               {"Re", 8476, "\xe2\x84\x9c"},
-               {"Wfr", 120090, "\xf0\x9d\x94\x9a"},
-               {"epsi", 949, "\xce\xb5"},
-               {"oacute", 243, "\xc3\xb3"},
-               {"bdquo", 8222, "\xe2\x80\x9e"},
-               {"wscr", 120012, "\xf0\x9d\x93\x8c"},
-               {"bullet", 8226, "\xe2\x80\xa2"},
-               {"frown", 8994, "\xe2\x8c\xa2"},
-               {"siml", 10909, "\xe2\xaa\x9d"},
-               {"Rarr", 8608, "\xe2\x86\xa0"},
-               {"Scaron", 352, "\xc5\xa0"},
-               {"gtreqqless", 10892, "\xe2\xaa\x8c"},
-               {"Larr", 8606, "\xe2\x86\x9e"},
-               {"notniva", 8716, "\xe2\x88\x8c"},
-               {"gg", 8811, "\xe2\x89\xab"},
-               {"phmmat", 8499, "\xe2\x84\xb3"},
-               {"boxVL", 9571, "\xe2\x95\xa3"},
-               {"sigmav", 962, "\xcf\x82"},
-               {"order", 8500, "\xe2\x84\xb4"},
-               {"subsup", 10963, "\xe2\xab\x93"},
-               {"afr", 120094, "\xf0\x9d\x94\x9e"},
-               {"lbrace", 123, "\x7b"},
-               {"urcorn", 8989, "\xe2\x8c\x9d"},
-               {"Im", 8465, "\xe2\x84\x91"},
-               {"CounterClockwiseContourIntegral", 8755, "\xe2\x88\xb3"},
-               {"lne", 10887, "\xe2\xaa\x87"},
-               {"chi", 967, "\xcf\x87"},
-               {"cudarrl", 10552, "\xe2\xa4\xb8"},
-               {"ang", 8736, "\xe2\x88\xa0"},
-               {"isindot", 8949, "\xe2\x8b\xb5"},
-               {"Lfr", 120079, "\xf0\x9d\x94\x8f"},
-               {"Rsh", 8625, "\xe2\x86\xb1"},
-               {"Ocy", 1054, "\xd0\x9e"},
-               {"nvrArr", 10499, "\xe2\xa4\x83"},
-               {"otimes", 8855, "\xe2\x8a\x97"},
-               {"eqslantgtr", 10902, "\xe2\xaa\x96"},
-               {"Rfr", 8476, "\xe2\x84\x9c"},
-               {"blacktriangleleft", 9666, "\xe2\x97\x82"},
-               {"Lsh", 8624, "\xe2\x86\xb0"},
-               {"boxvr", 9500, "\xe2\x94\x9c"},
-               {"scedil", 351, "\xc5\x9f"},
-               {"iuml", 239, "\xc3\xaf"},
-               {"NJcy", 1034, "\xd0\x8a"},
-               {"Dagger", 8225, "\xe2\x80\xa1"},
-               {"rarrap", 10613, "\xe2\xa5\xb5"},
-               {"udblac", 369, "\xc5\xb1"},
-               {"Sopf", 120138, "\xf0\x9d\x95\x8a"},
-               {"scnsim", 8937, "\xe2\x8b\xa9"},
-               {"hbar", 8463, "\xe2\x84\x8f"},
-               {"frac15", 8533, "\xe2\x85\x95"},
-               {"sup3", 179, "\xc2\xb3"},
-               {"NegativeThickSpace", 8203, "\xe2\x80\x8b"},
-               {"npr", 8832, "\xe2\x8a\x80"},
-               {"doteq", 8784, "\xe2\x89\x90"},
-               {"subrarr", 10617, "\xe2\xa5\xb9"},
-               {"SquareSubset", 8847, "\xe2\x8a\x8f"},
-               {"vprop", 8733, "\xe2\x88\x9d"},
-               {"OpenCurlyQuote", 8216, "\xe2\x80\x98"},
-               {"supseteq", 8839, "\xe2\x8a\x87"},
-               {"nRightarrow", 8655, "\xe2\x87\x8f"},
-               {"Longleftarrow", 10232, "\xe2\x9f\xb8"},
-               {"lsquo", 8216, "\xe2\x80\x98"},
-               {"hstrok", 295, "\xc4\xa7"},
-               {"NotTilde", 8769, "\xe2\x89\x81"},
-               {"ogt", 10689, "\xe2\xa7\x81"},
-               {"block", 9608, "\xe2\x96\x88"},
-               {"minusd", 8760, "\xe2\x88\xb8"},
-               {"esdot", 8784, "\xe2\x89\x90"},
-               {"nsim", 8769, "\xe2\x89\x81"},
-               {"scsim", 8831, "\xe2\x89\xbf"},
-               {"boxVl", 9570, "\xe2\x95\xa2"},
-               {"ltimes", 8905, "\xe2\x8b\x89"},
-               {"thkap", 8776, "\xe2\x89\x88"},
-               {"vnsub", 8834, "\xe2\x8a\x82\xe2\x83\x92"},
-               {"thetasym", 977, "\xcf\x91"},
-               {"eopf", 120150, "\xf0\x9d\x95\x96"},
-               {"image", 8465, "\xe2\x84\x91"},
-               {"doteqdot", 8785, "\xe2\x89\x91"},
-               {"Udblac", 368, "\xc5\xb0"},
-               {"gnsim", 8935, "\xe2\x8b\xa7"},
-               {"yicy", 1111, "\xd1\x97"},
-               {"vopf", 120167, "\xf0\x9d\x95\xa7"},
-               {"DDotrahd", 10513, "\xe2\xa4\x91"},
-               {"Iota", 921, "\xce\x99"},
-               {"GJcy", 1027, "\xd0\x83"},
-               {"rightthreetimes", 8908, "\xe2\x8b\x8c"},
-               {"nrtri", 8939, "\xe2\x8b\xab"},
-               {"TildeFullEqual", 8773, "\xe2\x89\x85"},
-               {"Dcaron", 270, "\xc4\x8e"},
-               {"ccaron", 269, "\xc4\x8d"},
-               {"lacute", 314, "\xc4\xba"},
-               {"VerticalBar", 8739, "\xe2\x88\xa3"},
-               {"Igrave", 204, "\xc3\x8c"},
-               {"boxH", 9552, "\xe2\x95\x90"},
-               {"Pfr", 120083, "\xf0\x9d\x94\x93"},
-               {"equals", 61, "\x3d"},
-               {"rbrack", 93, "\x5d"},
-               {"OverParenthesis", 9180, "\xe2\x8f\x9c"},
-               {"in", 8712, "\xe2\x88\x88"},
-               {"llcorner", 8990, "\xe2\x8c\x9e"},
-               {"mcomma", 10793, "\xe2\xa8\xa9"},
-               {"NotGreater", 8815, "\xe2\x89\xaf"},
-               {"midcir", 10992, "\xe2\xab\xb0"},
-               {"Edot", 278, "\xc4\x96"},
-               {"oplus", 8853, "\xe2\x8a\x95"},
-               {"geqq", 8807, "\xe2\x89\xa7"},
-               {"curvearrowleft", 8630, "\xe2\x86\xb6"},
-               {"Poincareplane", 8460, "\xe2\x84\x8c"},
-               {"yscr", 120014, "\xf0\x9d\x93\x8e"},
-               {"ccaps", 10829, "\xe2\xa9\x8d"},
-               {"rpargt", 10644, "\xe2\xa6\x94"},
-               {"topfork", 10970, "\xe2\xab\x9a"},
-               {"Gamma", 915, "\xce\x93"},
-               {"umacr", 363, "\xc5\xab"},
-               {"frac13", 8531, "\xe2\x85\x93"},
-               {"cirfnint", 10768, "\xe2\xa8\x90"},
-               {"xlArr", 10232, "\xe2\x9f\xb8"},
-               {"digamma", 989, "\xcf\x9d"},
-               {"Hat", 94, "\x5e"},
-               {"lates", 10925, "\xe2\xaa\xad\xef\xb8\x80"},
-               {"lgE", 10897, "\xe2\xaa\x91"},
-               {"commat", 64, "\x40"},
-               {"NotPrecedesSlantEqual", 8928, "\xe2\x8b\xa0"},
-               {"phone", 9742, "\xe2\x98\x8e"},
-               {"Ecirc", 202, "\xc3\x8a"},
-               {"lt", 60, "\x3c"},
-               {"intcal", 8890, "\xe2\x8a\xba"},
-               {"xdtri", 9661, "\xe2\x96\xbd"},
-               {"Abreve", 258, "\xc4\x82"},
-               {"gopf", 120152, "\xf0\x9d\x95\x98"},
-               {"Xopf", 120143, "\xf0\x9d\x95\x8f"},
-               {"Iacute", 205, "\xc3\x8d"},
-               {"Aopf", 120120, "\xf0\x9d\x94\xb8"},
-               {"gbreve", 287, "\xc4\x9f"},
-               {"nleq", 8816, "\xe2\x89\xb0"},
-               {"xopf", 120169, "\xf0\x9d\x95\xa9"},
-               {"SquareSupersetEqual", 8850, "\xe2\x8a\x92"},
-               {"NotLessTilde", 8820, "\xe2\x89\xb4"},
-               {"SubsetEqual", 8838, "\xe2\x8a\x86"},
-               {"Sc", 10940, "\xe2\xaa\xbc"},
-               {"sdote", 10854, "\xe2\xa9\xa6"},
-               {"loplus", 10797, "\xe2\xa8\xad"},
-               {"zfr", 120119, "\xf0\x9d\x94\xb7"},
-               {"subseteqq", 10949, "\xe2\xab\x85"},
-               {"Vdashl", 10982, "\xe2\xab\xa6"},
-               {"integers", 8484, "\xe2\x84\xa4"},
-               {"Umacr", 362, "\xc5\xaa"},
-               {"dopf", 120149, "\xf0\x9d\x95\x95"},
-               {"RightDownVectorBar", 10581, "\xe2\xa5\x95"},
-               {"angmsdaf", 10669, "\xe2\xa6\xad"},
-               {"Jfr", 120077, "\xf0\x9d\x94\x8d"},
-               {"bernou", 8492, "\xe2\x84\xac"},
-               {"lceil", 8968, "\xe2\x8c\x88"},
-               {"nvsim", 8764, "\xe2\x88\xbc\xe2\x83\x92"},
-               {"NotSucceedsSlantEqual", 8929, "\xe2\x8b\xa1"},
-               {"hearts", 9829, "\xe2\x99\xa5"},
-               {"vee", 8744, "\xe2\x88\xa8"},
-               {"LJcy", 1033, "\xd0\x89"},
-               {"nlt", 8814, "\xe2\x89\xae"},
-               {"because", 8757, "\xe2\x88\xb5"},
-               {"hairsp", 8202, "\xe2\x80\x8a"},
-               {"comma", 44, "\x2c"},
-               {"iecy", 1077, "\xd0\xb5"},
-               {"npre", 10927, "\xe2\xaa\xaf\xcc\xb8"},
-               {"NotSquareSubset", 8847, "\xe2\x8a\x8f\xcc\xb8"},
-               {"mscr", 120002, "\xf0\x9d\x93\x82"},
-               {"jopf", 120155, "\xf0\x9d\x95\x9b"},
-               {"bumpE", 10926, "\xe2\xaa\xae"},
-               {"thicksim", 8764, "\xe2\x88\xbc"},
-               {"Nfr", 120081, "\xf0\x9d\x94\x91"},
-               {"yucy", 1102, "\xd1\x8e"},
-               {"notinvc", 8950, "\xe2\x8b\xb6"},
-               {"lstrok", 322, "\xc5\x82"},
-               {"robrk", 10215, "\xe2\x9f\xa7"},
-               {"LeftTriangleBar", 10703, "\xe2\xa7\x8f"},
-               {"hksearow", 10533, "\xe2\xa4\xa5"},
-               {"bigcap", 8898, "\xe2\x8b\x82"},
-               {"udhar", 10606, "\xe2\xa5\xae"},
-               {"Yscr", 119988, "\xf0\x9d\x92\xb4"},
-               {"smeparsl", 10724, "\xe2\xa7\xa4"},
-               {"NotLess", 8814, "\xe2\x89\xae"},
-               {"dcaron", 271, "\xc4\x8f"},
-               {"ange", 10660, "\xe2\xa6\xa4"},
-               {"dHar", 10597, "\xe2\xa5\xa5"},
-               {"UpperRightArrow", 8599, "\xe2\x86\x97"},
-               {"trpezium", 9186, "\xe2\x8f\xa2"},
-               {"boxminus", 8863, "\xe2\x8a\x9f"},
-               {"notni", 8716, "\xe2\x88\x8c"},
-               {"dtrif", 9662, "\xe2\x96\xbe"},
-               {"nhArr", 8654, "\xe2\x87\x8e"},
-               {"larrpl", 10553, "\xe2\xa4\xb9"},
-               {"simeq", 8771, "\xe2\x89\x83"},
-               {"geqslant", 10878, "\xe2\xa9\xbe"},
-               {"RightUpVectorBar", 10580, "\xe2\xa5\x94"},
-               {"nsc", 8833, "\xe2\x8a\x81"},
-               {"div", 247, "\xc3\xb7"},
-               {"orslope", 10839, "\xe2\xa9\x97"},
-               {"lparlt", 10643, "\xe2\xa6\x93"},
-               {"trie", 8796, "\xe2\x89\x9c"},
-               {"cirmid", 10991, "\xe2\xab\xaf"},
-               {"wp", 8472, "\xe2\x84\x98"},
-               {"dagger", 8224, "\xe2\x80\xa0"},
-               {"utri", 9653, "\xe2\x96\xb5"},
-               {"supnE", 10956, "\xe2\xab\x8c"},
-               {"eg", 10906, "\xe2\xaa\x9a"},
-               {"LeftDownVector", 8643, "\xe2\x87\x83"},
-               {"NotLessEqual", 8816, "\xe2\x89\xb0"},
-               {"Bopf", 120121, "\xf0\x9d\x94\xb9"},
-               {"LongLeftRightArrow", 10231, "\xe2\x9f\xb7"},
-               {"Gfr", 120074, "\xf0\x9d\x94\x8a"},
-               {"sqsubseteq", 8849, "\xe2\x8a\x91"},
-               {"ograve", 242, "\xc3\xb2"},
-               {"larrhk", 8617, "\xe2\x86\xa9"},
-               {"sigma", 963, "\xcf\x83"},
-               {"NotSquareSupersetEqual", 8931, "\xe2\x8b\xa3"},
-               {"gvnE", 8809, "\xe2\x89\xa9\xef\xb8\x80"},
-               {"timesbar", 10801, "\xe2\xa8\xb1"},
-               {"Iukcy", 1030, "\xd0\x86"},
-               {"bscr", 119991, "\xf0\x9d\x92\xb7"},
-               {"Exists", 8707, "\xe2\x88\x83"},
-               {"tscr", 120009, "\xf0\x9d\x93\x89"},
-               {"tcy", 1090, "\xd1\x82"},
-               {"nwarr", 8598, "\xe2\x86\x96"},
-               {"hoarr", 8703, "\xe2\x87\xbf"},
-               {"lnapprox", 10889, "\xe2\xaa\x89"},
-               {"nu", 957, "\xce\xbd"},
-               {"bcy", 1073, "\xd0\xb1"},
-               {"ndash", 8211, "\xe2\x80\x93"},
-               {"smt", 10922, "\xe2\xaa\xaa"},
-               {"scaron", 353, "\xc5\xa1"},
-               {"IOcy", 1025, "\xd0\x81"},
-               {"Ifr", 8465, "\xe2\x84\x91"},
-               {"cularrp", 10557, "\xe2\xa4\xbd"},
-               {"lvertneqq", 8808, "\xe2\x89\xa8\xef\xb8\x80"},
-               {"nlarr", 8602, "\xe2\x86\x9a"},
-               {"colon", 58, "\x3a"},
-               {"ddotseq", 10871, "\xe2\xa9\xb7"},
-               {"zacute", 378, "\xc5\xba"},
-               {"DoubleVerticalBar", 8741, "\xe2\x88\xa5"},
-               {"larrfs", 10525, "\xe2\xa4\x9d"},
-               {"NotExists", 8708, "\xe2\x88\x84"},
-               {"geq", 8805, "\xe2\x89\xa5"},
-               {"Ffr", 120073, "\xf0\x9d\x94\x89"},
-               {"divide", 247, "\xc3\xb7"},
-               {"blank", 9251, "\xe2\x90\xa3"},
-               {"IEcy", 1045, "\xd0\x95"},
-               {"ordm", 186, "\xc2\xba"},
-               {"fopf", 120151, "\xf0\x9d\x95\x97"},
-               {"ecir", 8790, "\xe2\x89\x96"},
-               {"complement", 8705, "\xe2\x88\x81"},
-               {"top", 8868, "\xe2\x8a\xa4"},
-               {"DoubleContourIntegral", 8751, "\xe2\x88\xaf"},
-               {"nisd", 8954, "\xe2\x8b\xba"},
-               {"bcong", 8780, "\xe2\x89\x8c"},
-               {"plusdu", 10789, "\xe2\xa8\xa5"},
-               {"TildeTilde", 8776, "\xe2\x89\x88"},
-               {"lnE", 8808, "\xe2\x89\xa8"},
-               {"DoubleLongRightArrow", 10233, "\xe2\x9f\xb9"},
-               {"nsubseteqq", 10949, "\xe2\xab\x85\xcc\xb8"},
-               {"DownTeeArrow", 8615, "\xe2\x86\xa7"},
-               {"Cscr", 119966, "\xf0\x9d\x92\x9e"},
-               {"NegativeVeryThinSpace", 8203, "\xe2\x80\x8b"},
-               {"emsp", 8195, "\xe2\x80\x83"},
-               {"vartriangleleft", 8882, "\xe2\x8a\xb2"},
-               {"ropar", 10630, "\xe2\xa6\x86"},
-               {"checkmark", 10003, "\xe2\x9c\x93"},
-               {"Ycy", 1067, "\xd0\xab"},
-               {"supset", 8835, "\xe2\x8a\x83"},
-               {"gneqq", 8809, "\xe2\x89\xa9"},
-               {"Lstrok", 321, "\xc5\x81"},
-               {"AMP", 38, "\x26"},
-               {"acE", 8766, "\xe2\x88\xbe\xcc\xb3"},
-               {"sqsupseteq", 8850, "\xe2\x8a\x92"},
-               {"nle", 8816, "\xe2\x89\xb0"},
-               {"nesear", 10536, "\xe2\xa4\xa8"},
-               {"LeftDownVectorBar", 10585, "\xe2\xa5\x99"},
-               {"Integral", 8747, "\xe2\x88\xab"},
-               {"Beta", 914, "\xce\x92"},
-               {"nvdash", 8876, "\xe2\x8a\xac"},
-               {"nges", 10878, "\xe2\xa9\xbe\xcc\xb8"},
-               {"demptyv", 10673, "\xe2\xa6\xb1"},
-               {"eta", 951, "\xce\xb7"},
-               {"GreaterSlantEqual", 10878, "\xe2\xa9\xbe"},
-               {"ccedil", 231, "\xc3\xa7"},
-               {"pfr", 120109, "\xf0\x9d\x94\xad"},
-               {"bbrktbrk", 9142, "\xe2\x8e\xb6"},
-               {"mcy", 1084, "\xd0\xbc"},
-               {"Not", 10988, "\xe2\xab\xac"},
-               {"qscr", 120006, "\xf0\x9d\x93\x86"},
-               {"zwj", 8205, "\xe2\x80\x8d"},
-               {"ntrianglerighteq", 8941, "\xe2\x8b\xad"},
-               {"permil", 8240, "\xe2\x80\xb0"},
-               {"squarf", 9642, "\xe2\x96\xaa"},
-               {"apos", 39, "\x27"},
-               {"lrm", 8206, "\xe2\x80\x8e"},
-               {"male", 9794, "\xe2\x99\x82"},
-               {"agrave", 224, "\xc3\xa0"},
-               {"Lt", 8810, "\xe2\x89\xaa"},
-               {"capand", 10820, "\xe2\xa9\x84"},
-               {"aring", 229, "\xc3\xa5"},
-               {"Jukcy", 1028, "\xd0\x84"},
-               {"bumpe", 8783, "\xe2\x89\x8f"},
-               {"dd", 8518, "\xe2\x85\x86"},
-               {"tscy", 1094, "\xd1\x86"},
-               {"oS", 9416, "\xe2\x93\x88"},
-               {"succeq", 10928, "\xe2\xaa\xb0"},
-               {"xharr", 10231, "\xe2\x9f\xb7"},
-               {"pluse", 10866, "\xe2\xa9\xb2"},
-               {"rfisht", 10621, "\xe2\xa5\xbd"},
-               {"HorizontalLine", 9472, "\xe2\x94\x80"},
-               {"DiacriticalAcute", 180, "\xc2\xb4"},
-               {"hfr", 120101, "\xf0\x9d\x94\xa5"},
-               {"preceq", 10927, "\xe2\xaa\xaf"},
-               {"rationals", 8474, "\xe2\x84\x9a"},
-               {"Auml", 196, "\xc3\x84"},
-               {"LeftRightArrow", 8596, "\xe2\x86\x94"},
-               {"blacktriangleright", 9656, "\xe2\x96\xb8"},
-               {"dharr", 8642, "\xe2\x87\x82"},
-               {"isin", 8712, "\xe2\x88\x88"},
-               {"ldrushar", 10571, "\xe2\xa5\x8b"},
-               {"squ", 9633, "\xe2\x96\xa1"},
-               {"rbrksld", 10638, "\xe2\xa6\x8e"},
-               {"bigwedge", 8896, "\xe2\x8b\x80"},
-               {"swArr", 8665, "\xe2\x87\x99"},
-               {"IJlig", 306, "\xc4\xb2"},
-               {"harr", 8596, "\xe2\x86\x94"},
-               {"range", 10661, "\xe2\xa6\xa5"},
-               {"urtri", 9721, "\xe2\x97\xb9"},
-               {"NotVerticalBar", 8740, "\xe2\x88\xa4"},
-               {"ic", 8291, "\xe2\x81\xa3"},
-               {"solbar", 9023, "\xe2\x8c\xbf"},
-               {"approx", 8776, "\xe2\x89\x88"},
-               {"SquareSuperset", 8848, "\xe2\x8a\x90"},
-               {"numsp", 8199, "\xe2\x80\x87"},
-               {"nLt", 8810, "\xe2\x89\xaa\xe2\x83\x92"},
-               {"tilde", 732, "\xcb\x9c"},
-               {"rlarr", 8644, "\xe2\x87\x84"},
-               {"langle", 10216, "\xe2\x9f\xa8"},
-               {"nleqslant", 10877, "\xe2\xa9\xbd\xcc\xb8"},
-               {"Nacute", 323, "\xc5\x83"},
-               {"NotLeftTriangle", 8938, "\xe2\x8b\xaa"},
-               {"sopf", 120164, "\xf0\x9d\x95\xa4"},
-               {"xmap", 10236, "\xe2\x9f\xbc"},
-               {"supne", 8843, "\xe2\x8a\x8b"},
-               {"Int", 8748, "\xe2\x88\xac"},
-               {"nsupseteqq", 10950, "\xe2\xab\x86\xcc\xb8"},
-               {"circlearrowright", 8635, "\xe2\x86\xbb"},
-               {"NotCongruent", 8802, "\xe2\x89\xa2"},
-               {"Scedil", 350, "\xc5\x9e"},
-               {"raquo", 187, "\xc2\xbb"},
-               {"ycy", 1099, "\xd1\x8b"},
-               {"notinvb", 8951, "\xe2\x8b\xb7"},
-               {"andv", 10842, "\xe2\xa9\x9a"},
-               {"nap", 8777, "\xe2\x89\x89"},
-               {"shcy", 1096, "\xd1\x88"},
-               {"ssetmn", 8726, "\xe2\x88\x96"},
-               {"downarrow", 8595, "\xe2\x86\x93"},
-               {"gesdotol", 10884, "\xe2\xaa\x84"},
-               {"Congruent", 8801, "\xe2\x89\xa1"},
-               {"pound", 163, "\xc2\xa3"},
-               {"ZeroWidthSpace", 8203, "\xe2\x80\x8b"},
-               {"rdca", 10551, "\xe2\xa4\xb7"},
-               {"rmoust", 9137, "\xe2\x8e\xb1"},
-               {"zcy", 1079, "\xd0\xb7"},
-               {"Square", 9633, "\xe2\x96\xa1"},
-               {"subE", 10949, "\xe2\xab\x85"},
-               {"infintie", 10717, "\xe2\xa7\x9d"},
-               {"Cayleys", 8493, "\xe2\x84\xad"},
-               {"lsaquo", 8249, "\xe2\x80\xb9"},
-               {"realpart", 8476, "\xe2\x84\x9c"},
-               {"nprec", 8832, "\xe2\x8a\x80"},
-               {"RightTriangleBar", 10704, "\xe2\xa7\x90"},
-               {"Kopf", 120130, "\xf0\x9d\x95\x82"},
-               {"Ubreve", 364, "\xc5\xac"},
-               {"Uopf", 120140, "\xf0\x9d\x95\x8c"},
-               {"trianglelefteq", 8884, "\xe2\x8a\xb4"},
-               {"rotimes", 10805, "\xe2\xa8\xb5"},
-               {"qfr", 120110, "\xf0\x9d\x94\xae"},
-               {"gtcc", 10919, "\xe2\xaa\xa7"},
-               {"fnof", 402, "\xc6\x92"},
-               {"tritime", 10811, "\xe2\xa8\xbb"},
-               {"andslope", 10840, "\xe2\xa9\x98"},
-               {"harrw", 8621, "\xe2\x86\xad"},
-               {"NotSquareSuperset", 8848, "\xe2\x8a\x90\xcc\xb8"},
-               {"Amacr", 256, "\xc4\x80"},
-               {"OpenCurlyDoubleQuote", 8220, "\xe2\x80\x9c"},
-               {"thorn", 254, "\xc3\xbe"},
-               {"ordf", 170, "\xc2\xaa"},
-               {"natur", 9838, "\xe2\x99\xae"},
-               {"xi", 958, "\xce\xbe"},
-               {"infin", 8734, "\xe2\x88\x9e"},
-               {"nspar", 8742, "\xe2\x88\xa6"},
-               {"Jcy", 1049, "\xd0\x99"},
-               {"DownLeftTeeVector", 10590, "\xe2\xa5\x9e"},
-               {"rbarr", 10509, "\xe2\xa4\x8d"},
-               {"Xi", 926, "\xce\x9e"},
-               {"bull", 8226, "\xe2\x80\xa2"},
-               {"cuesc", 8927, "\xe2\x8b\x9f"},
-               {"backcong", 8780, "\xe2\x89\x8c"},
-               {"frac35", 8535, "\xe2\x85\x97"},
-               {"hscr", 119997, "\xf0\x9d\x92\xbd"},
-               {"LessEqualGreater", 8922, "\xe2\x8b\x9a"},
-               {"Implies", 8658, "\xe2\x87\x92"},
-               {"ETH", 208, "\xc3\x90"},
-               {"Yacute", 221, "\xc3\x9d"},
-               {"shy", 173, "\xc2\xad"},
-               {"Rarrtl", 10518, "\xe2\xa4\x96"},
-               {"sup1", 185, "\xc2\xb9"},
-               {"reals", 8477, "\xe2\x84\x9d"},
-               {"blacklozenge", 10731, "\xe2\xa7\xab"},
-               {"ncedil", 326, "\xc5\x86"},
-               {"Lambda", 923, "\xce\x9b"},
-               {"uopf", 120166, "\xf0\x9d\x95\xa6"},
-               {"bigodot", 10752, "\xe2\xa8\x80"},
-               {"ubreve", 365, "\xc5\xad"},
-               {"drbkarow", 10512, "\xe2\xa4\x90"},
-               {"els", 10901, "\xe2\xaa\x95"},
-               {"shortparallel", 8741, "\xe2\x88\xa5"},
-               {"Pcy", 1055, "\xd0\x9f"},
-               {"dsol", 10742, "\xe2\xa7\xb6"},
-               {"supsim", 10952, "\xe2\xab\x88"},
-               {"Longrightarrow", 10233, "\xe2\x9f\xb9"},
-               {"ThickSpace", 8287, "\xe2\x81\x9f\xe2\x80\x8a"},
-               {"Itilde", 296, "\xc4\xa8"},
-               {"nparallel", 8742, "\xe2\x88\xa6"},
-               {"And", 10835, "\xe2\xa9\x93"},
-               {"boxhd", 9516, "\xe2\x94\xac"},
-               {"Dashv", 10980, "\xe2\xab\xa4"},
-               {"NotSuperset", 8835, "\xe2\x8a\x83\xe2\x83\x92"},
-               {"Eta", 919, "\xce\x97"},
-               {"Qopf", 8474, "\xe2\x84\x9a"},
-               {"period", 46, "\x2e"},
-               {"angmsd", 8737, "\xe2\x88\xa1"},
-               {"fllig", 64258, "\xef\xac\x82"},
-               {"cuvee", 8910, "\xe2\x8b\x8e"},
-               {"wedbar", 10847, "\xe2\xa9\x9f"},
-               {"Fscr", 8497, "\xe2\x84\xb1"},
-               {"veebar", 8891, "\xe2\x8a\xbb"},
-               {"Longleftrightarrow", 10234, "\xe2\x9f\xba"},
-               {"reg", 174, "\xc2\xae"},
-               {"NegativeMediumSpace", 8203, "\xe2\x80\x8b"},
-               {"Upsi", 978, "\xcf\x92"},
-               {"Mellintrf", 8499, "\xe2\x84\xb3"},
-               {"boxHU", 9577, "\xe2\x95\xa9"},
-               {"bne", 61, "\x3d\xe2\x83\xa5"},
-               {"frac56", 8538, "\xe2\x85\x9a"},
-               {"utrif", 9652, "\xe2\x96\xb4"},
-               {"LeftTriangle", 8882, "\xe2\x8a\xb2"},
-               {"nsime", 8772, "\xe2\x89\x84"},
-               {"rcedil", 343, "\xc5\x97"},
-               {"aogon", 261, "\xc4\x85"},
-               {"uHar", 10595, "\xe2\xa5\xa3"},
-               {"ForAll", 8704, "\xe2\x88\x80"},
-               {"prE", 10931, "\xe2\xaa\xb3"},
-               {"boxV", 9553, "\xe2\x95\x91"},
-               {"softcy", 1100, "\xd1\x8c"},
-               {"hercon", 8889, "\xe2\x8a\xb9"},
-               {"lmoustache", 9136, "\xe2\x8e\xb0"},
-               {"Product", 8719, "\xe2\x88\x8f"},
-               {"lsimg", 10895, "\xe2\xaa\x8f"},
-               {"verbar", 124, "\x7c"},
-               {"ofcir", 10687, "\xe2\xa6\xbf"},
-               {"curlyeqprec", 8926, "\xe2\x8b\x9e"},
-               {"ldquo", 8220, "\xe2\x80\x9c"},
-               {"bot", 8869, "\xe2\x8a\xa5"},
-               {"Psi", 936, "\xce\xa8"},
-               {"OElig", 338, "\xc5\x92"},
-               {"DownRightVectorBar", 10583, "\xe2\xa5\x97"},
-               {"minusb", 8863, "\xe2\x8a\x9f"},
-               {"Iscr", 8464, "\xe2\x84\x90"},
-               {"Tcedil", 354, "\xc5\xa2"},
-               {"ffilig", 64259, "\xef\xac\x83"},
-               {"Gcy", 1043, "\xd0\x93"},
-               {"oline", 8254, "\xe2\x80\xbe"},
-               {"bottom", 8869, "\xe2\x8a\xa5"},
-               {"nVDash", 8879, "\xe2\x8a\xaf"},
-               {"lessdot", 8918, "\xe2\x8b\x96"},
-               {"cups", 8746, "\xe2\x88\xaa\xef\xb8\x80"},
-               {"gla", 10917, "\xe2\xaa\xa5"},
-               {"hellip", 8230, "\xe2\x80\xa6"},
-               {"hookleftarrow", 8617, "\xe2\x86\xa9"},
-               {"Cup", 8915, "\xe2\x8b\x93"},
-               {"upsi", 965, "\xcf\x85"},
-               {"DownArrowBar", 10515, "\xe2\xa4\x93"},
-               {"lowast", 8727, "\xe2\x88\x97"},
-               {"profline", 8978, "\xe2\x8c\x92"},
-               {"ngsim", 8821, "\xe2\x89\xb5"},
-               {"boxhu", 9524, "\xe2\x94\xb4"},
-               {"operp", 10681, "\xe2\xa6\xb9"},
-               {"cap", 8745, "\xe2\x88\xa9"},
-               {"Hcirc", 292, "\xc4\xa4"},
-               {"Ncy", 1053, "\xd0\x9d"},
-               {"zeetrf", 8488, "\xe2\x84\xa8"},
-               {"cuepr", 8926, "\xe2\x8b\x9e"},
-               {"supsetneq", 8843, "\xe2\x8a\x8b"},
-               {"lfloor", 8970, "\xe2\x8c\x8a"},
-               {"ngtr", 8815, "\xe2\x89\xaf"},
-               {"ccups", 10828, "\xe2\xa9\x8c"},
-               {"pscr", 120005, "\xf0\x9d\x93\x85"},
-               {"Cfr", 8493, "\xe2\x84\xad"},
-               {"dtri", 9663, "\xe2\x96\xbf"},
-               {"icirc", 238, "\xc3\xae"},
-               {"leftarrow", 8592, "\xe2\x86\x90"},
-               {"vdash", 8866, "\xe2\x8a\xa2"},
-               {"leftrightharpoons", 8651, "\xe2\x87\x8b"},
-               {"rightrightarrows", 8649, "\xe2\x87\x89"},
-               {"strns", 175, "\xc2\xaf"},
-               {"intlarhk", 10775, "\xe2\xa8\x97"},
-               {"downharpoonright", 8642, "\xe2\x87\x82"},
-               {"yacute", 253, "\xc3\xbd"},
-               {"boxUr", 9561, "\xe2\x95\x99"},
-               {"triangleleft", 9667, "\xe2\x97\x83"},
-               {"DiacriticalDot", 729, "\xcb\x99"},
-               {"thetav", 977, "\xcf\x91"},
-               {"OverBracket", 9140, "\xe2\x8e\xb4"},
-               {"PrecedesTilde", 8830, "\xe2\x89\xbe"},
-               {"rtrie", 8885, "\xe2\x8a\xb5"},
-               {"Scirc", 348, "\xc5\x9c"},
-               {"vsupne", 8843, "\xe2\x8a\x8b\xef\xb8\x80"},
-               {"OverBrace", 9182, "\xe2\x8f\x9e"},
-               {"Yfr", 120092, "\xf0\x9d\x94\x9c"},
-               {"scnE", 10934, "\xe2\xaa\xb6"},
-               {"simlE", 10911, "\xe2\xaa\x9f"},
-               {"Proportional", 8733, "\xe2\x88\x9d"},
-               {"edot", 279, "\xc4\x97"},
-               {"loang", 10220, "\xe2\x9f\xac"},
-               {"gesdot", 10880, "\xe2\xaa\x80"},
-               {"DownBreve", 785, "\xcc\x91"},
-               {"pcy", 1087, "\xd0\xbf"},
-               {"Succeeds", 8827, "\xe2\x89\xbb"},
-               {"mfr", 120106, "\xf0\x9d\x94\xaa"},
-               {"Leftarrow", 8656, "\xe2\x87\x90"},
-               {"boxDr", 9555, "\xe2\x95\x93"},
-               {"Nscr", 119977, "\xf0\x9d\x92\xa9"},
-               {"diam", 8900, "\xe2\x8b\x84"},
-               {"CHcy", 1063, "\xd0\xa7"},
-               {"boxdr", 9484, "\xe2\x94\x8c"},
-               {"rlm", 8207, "\xe2\x80\x8f"},
-               {"Coproduct", 8720, "\xe2\x88\x90"},
-               {"RightTeeArrow", 8614, "\xe2\x86\xa6"},
-               {"tridot", 9708, "\xe2\x97\xac"},
-               {"ldquor", 8222, "\xe2\x80\x9e"},
-               {"sol", 47, "\x2f"},
-               {"ecirc", 234, "\xc3\xaa"},
-               {"DoubleLeftArrow", 8656, "\xe2\x87\x90"},
-               {"Gscr", 119970, "\xf0\x9d\x92\xa2"},
-               {"ap", 8776, "\xe2\x89\x88"},
-               {"rbrke", 10636, "\xe2\xa6\x8c"},
-               {"LeftFloor", 8970, "\xe2\x8c\x8a"},
-               {"blk12", 9618, "\xe2\x96\x92"},
-               {"Conint", 8751, "\xe2\x88\xaf"},
-               {"triangledown", 9663, "\xe2\x96\xbf"},
-               {"Icy", 1048, "\xd0\x98"},
-               {"backprime", 8245, "\xe2\x80\xb5"},
-               {"longleftrightarrow", 10231, "\xe2\x9f\xb7"},
-               {"ntriangleleft", 8938, "\xe2\x8b\xaa"},
-               {"copy", 169, "\xc2\xa9"},
-               {"mapstodown", 8615, "\xe2\x86\xa7"},
-               {"seArr", 8664, "\xe2\x87\x98"},
-               {"ENG", 330, "\xc5\x8a"},
-               {"DoubleRightArrow", 8658, "\xe2\x87\x92"},
-               {"tfr", 120113, "\xf0\x9d\x94\xb1"},
-               {"rharul", 10604, "\xe2\xa5\xac"},
-               {"bfr", 120095, "\xf0\x9d\x94\x9f"},
-               {"origof", 8886, "\xe2\x8a\xb6"},
-               {"Therefore", 8756, "\xe2\x88\xb4"},
-               {"glE", 10898, "\xe2\xaa\x92"},
-               {"leftarrowtail", 8610, "\xe2\x86\xa2"},
-               {"NotEqual", 8800, "\xe2\x89\xa0"},
-               {"LeftCeiling", 8968, "\xe2\x8c\x88"},
-               {"lArr", 8656, "\xe2\x87\x90"},
-               {"subseteq", 8838, "\xe2\x8a\x86"},
-               {"larrbfs", 10527, "\xe2\xa4\x9f"},
-               {"Gammad", 988, "\xcf\x9c"},
-               {"rtriltri", 10702, "\xe2\xa7\x8e"},
-               {"Fcy", 1060, "\xd0\xa4"},
-               {"Vopf", 120141, "\xf0\x9d\x95\x8d"},
-               {"lrarr", 8646, "\xe2\x87\x86"},
-               {"delta", 948, "\xce\xb4"},
-               {"xodot", 10752, "\xe2\xa8\x80"},
-               {"larrtl", 8610, "\xe2\x86\xa2"},
-               {"gsim", 8819, "\xe2\x89\xb3"},
-               {"ratail", 10522, "\xe2\xa4\x9a"},
-               {"vsubne", 8842, "\xe2\x8a\x8a\xef\xb8\x80"},
-               {"boxur", 9492, "\xe2\x94\x94"},
-               {"succsim", 8831, "\xe2\x89\xbf"},
-               {"triplus", 10809, "\xe2\xa8\xb9"},
-               {"nless", 8814, "\xe2\x89\xae"},
-               {"uharr", 8638, "\xe2\x86\xbe"},
-               {"lambda", 955, "\xce\xbb"},
-               {"uuml", 252, "\xc3\xbc"},
-               {"horbar", 8213, "\xe2\x80\x95"},
-               {"ccirc", 265, "\xc4\x89"},
-               {"sqcup", 8852, "\xe2\x8a\x94"},
-               {"Pscr", 119979, "\xf0\x9d\x92\xab"},
-               {"supsup", 10966, "\xe2\xab\x96"},
-               {"Cacute", 262, "\xc4\x86"},
-               {"upsih", 978, "\xcf\x92"},
-               {"precsim", 8830, "\xe2\x89\xbe"},
-               {"longrightarrow", 10230, "\xe2\x9f\xb6"},
-               {"circledR", 174, "\xc2\xae"},
-               {"UpTeeArrow", 8613, "\xe2\x86\xa5"},
-               {"bepsi", 1014, "\xcf\xb6"},
-               {"oast", 8859, "\xe2\x8a\x9b"},
-               {"yfr", 120118, "\xf0\x9d\x94\xb6"},
-               {"rdsh", 8627, "\xe2\x86\xb3"},
-               {"Ograve", 210, "\xc3\x92"},
-               {"LeftVectorBar", 10578, "\xe2\xa5\x92"},
-               {"NotNestedLessLess", 10913, "\xe2\xaa\xa1\xcc\xb8"},
-               {"Jscr", 119973, "\xf0\x9d\x92\xa5"},
-               {"psi", 968, "\xcf\x88"},
-               {"orarr", 8635, "\xe2\x86\xbb"},
-               {"Subset", 8912, "\xe2\x8b\x90"},
-               {"curarr", 8631, "\xe2\x86\xb7"},
-               {"CirclePlus", 8853, "\xe2\x8a\x95"},
-               {"gtrless", 8823, "\xe2\x89\xb7"},
-               {"nvle", 8804, "\xe2\x89\xa4\xe2\x83\x92"},
-               {"prop", 8733, "\xe2\x88\x9d"},
-               {"gEl", 10892, "\xe2\xaa\x8c"},
-               {"gtlPar", 10645, "\xe2\xa6\x95"},
-               {"frasl", 8260, "\xe2\x81\x84"},
-               {"nearr", 8599, "\xe2\x86\x97"},
-               {"NotSubsetEqual", 8840, "\xe2\x8a\x88"},
-               {"planck", 8463, "\xe2\x84\x8f"},
-               {"Uuml", 220, "\xc3\x9c"},
-               {"spadesuit", 9824, "\xe2\x99\xa0"},
-               {"sect", 167, "\xc2\xa7"},
-               {"cdot", 267, "\xc4\x8b"},
-               {"boxVh", 9579, "\xe2\x95\xab"},
-               {"zscr", 120015, "\xf0\x9d\x93\x8f"},
-               {"nsqsube", 8930, "\xe2\x8b\xa2"},
-               {"grave", 96, "\x60"},
-               {"angrtvb", 8894, "\xe2\x8a\xbe"},
-               {"MediumSpace", 8287, "\xe2\x81\x9f"},
-               {"Ntilde", 209, "\xc3\x91"},
-               {"solb", 10692, "\xe2\xa7\x84"},
-               {"angzarr", 9084, "\xe2\x8d\xbc"},
-               {"nopf", 120159, "\xf0\x9d\x95\x9f"},
-               {"rtrif", 9656, "\xe2\x96\xb8"},
-               {"nrightarrow", 8603, "\xe2\x86\x9b"},
-               {"Kappa", 922, "\xce\x9a"},
-               {"simrarr", 10610, "\xe2\xa5\xb2"},
-               {"imacr", 299, "\xc4\xab"},
-               {"vrtri", 8883, "\xe2\x8a\xb3"},
-               {"part", 8706, "\xe2\x88\x82"},
-               {"esim", 8770, "\xe2\x89\x82"},
-               {"atilde", 227, "\xc3\xa3"},
-               {"DownRightTeeVector", 10591, "\xe2\xa5\x9f"},
-               {"jcirc", 309, "\xc4\xb5"},
-               {"Ecaron", 282, "\xc4\x9a"},
-               {"VerticalSeparator", 10072, "\xe2\x9d\x98"},
-               {"rHar", 10596, "\xe2\xa5\xa4"},
-               {"rcaron", 345, "\xc5\x99"},
-               {"subnE", 10955, "\xe2\xab\x8b"},
-               {"ii", 8520, "\xe2\x85\x88"},
-               {"Cconint", 8752, "\xe2\x88\xb0"},
-               {"Mcy", 1052, "\xd0\x9c"},
-               {"eqcolon", 8789, "\xe2\x89\x95"},
-               {"cupor", 10821, "\xe2\xa9\x85"},
-               {"DoubleUpArrow", 8657, "\xe2\x87\x91"},
-               {"boxbox", 10697, "\xe2\xa7\x89"},
-               {"setminus", 8726, "\xe2\x88\x96"},
-               {"Lleftarrow", 8666, "\xe2\x87\x9a"},
-               {"nang", 8736, "\xe2\x88\xa0\xe2\x83\x92"},
-               {"TRADE", 8482, "\xe2\x84\xa2"},
-               {"urcorner", 8989, "\xe2\x8c\x9d"},
-               {"lsqb", 91, "\x5b"},
-               {"cupcup", 10826, "\xe2\xa9\x8a"},
-               {"kjcy", 1116, "\xd1\x9c"},
-               {"llhard", 10603, "\xe2\xa5\xab"},
-               {"mumap", 8888, "\xe2\x8a\xb8"},
-               {"iiint", 8749, "\xe2\x88\xad"},
-               {"RightTee", 8866, "\xe2\x8a\xa2"},
-               {"Tcaron", 356, "\xc5\xa4"},
-               {"bigcirc", 9711, "\xe2\x97\xaf"},
-               {"trianglerighteq", 8885, "\xe2\x8a\xb5"},
-               {"NotLessGreater", 8824, "\xe2\x89\xb8"},
-               {"hArr", 8660, "\xe2\x87\x94"},
-               {"ocy", 1086, "\xd0\xbe"},
-               {"tosa", 10537, "\xe2\xa4\xa9"},
-               {"twixt", 8812, "\xe2\x89\xac"},
-               {"square", 9633, "\xe2\x96\xa1"},
-               {"Otimes", 10807, "\xe2\xa8\xb7"},
-               {"Kcedil", 310, "\xc4\xb6"},
-               {"beth", 8502, "\xe2\x84\xb6"},
-               {"triminus", 10810, "\xe2\xa8\xba"},
-               {"nlArr", 8653, "\xe2\x87\x8d"},
-               {"Oacute", 211, "\xc3\x93"},
-               {"zwnj", 8204, "\xe2\x80\x8c"},
-               {"ll", 8810, "\xe2\x89\xaa"},
-               {"smashp", 10803, "\xe2\xa8\xb3"},
-               {"ngeqq", 8807, "\xe2\x89\xa7\xcc\xb8"},
-               {"rnmid", 10990, "\xe2\xab\xae"},
-               {"nwArr", 8662, "\xe2\x87\x96"},
-               {"RightUpDownVector", 10575, "\xe2\xa5\x8f"},
-               {"lbbrk", 10098, "\xe2\x9d\xb2"},
-               {"compfn", 8728, "\xe2\x88\x98"},
-               {"eDDot", 10871, "\xe2\xa9\xb7"},
-               {"Jsercy", 1032, "\xd0\x88"},
-               {"HARDcy", 1066, "\xd0\xaa"},
-               {"nexists", 8708, "\xe2\x88\x84"},
-               {"theta", 952, "\xce\xb8"},
-               {"plankv", 8463, "\xe2\x84\x8f"},
-               {"sup2", 178, "\xc2\xb2"},
-               {"lessapprox", 10885, "\xe2\xaa\x85"},
-               {"gdot", 289, "\xc4\xa1"},
-               {"angmsdae", 10668, "\xe2\xa6\xac"},
-               {"Superset", 8835, "\xe2\x8a\x83"},
-               {"prap", 10935, "\xe2\xaa\xb7"},
-               {"Zscr", 119989, "\xf0\x9d\x92\xb5"},
-               {"nsucc", 8833, "\xe2\x8a\x81"},
-               {"supseteqq", 10950, "\xe2\xab\x86"},
-               {"UpTee", 8869, "\xe2\x8a\xa5"},
-               {"LowerLeftArrow", 8601, "\xe2\x86\x99"},
-               {"ssmile", 8995, "\xe2\x8c\xa3"},
-               {"niv", 8715, "\xe2\x88\x8b"},
-               {"bigvee", 8897, "\xe2\x8b\x81"},
-               {"kscr", 120000, "\xf0\x9d\x93\x80"},
-               {"xutri", 9651, "\xe2\x96\xb3"},
-               {"caret", 8257, "\xe2\x81\x81"},
-               {"caron", 711, "\xcb\x87"},
-               {"Wedge", 8896, "\xe2\x8b\x80"},
-               {"sdotb", 8865, "\xe2\x8a\xa1"},
-               {"bigoplus", 10753, "\xe2\xa8\x81"},
-               {"Breve", 728, "\xcb\x98"},
-               {"ImaginaryI", 8520, "\xe2\x85\x88"},
-               {"longmapsto", 10236, "\xe2\x9f\xbc"},
-               {"boxVH", 9580, "\xe2\x95\xac"},
-               {"lozenge", 9674, "\xe2\x97\x8a"},
-               {"toea", 10536, "\xe2\xa4\xa8"},
-               {"nbumpe", 8783, "\xe2\x89\x8f\xcc\xb8"},
-               {"gcirc", 285, "\xc4\x9d"},
-               {"NotHumpEqual", 8783, "\xe2\x89\x8f\xcc\xb8"},
-               {"pre", 10927, "\xe2\xaa\xaf"},
-               {"ascr", 119990, "\xf0\x9d\x92\xb6"},
-               {"Acirc", 194, "\xc3\x82"},
-               {"questeq", 8799, "\xe2\x89\x9f"},
-               {"ncaron", 328, "\xc5\x88"},
-               {"LeftTeeArrow", 8612, "\xe2\x86\xa4"},
-               {"xcirc", 9711, "\xe2\x97\xaf"},
-               {"swarr", 8601, "\xe2\x86\x99"},
-               {"MinusPlus", 8723, "\xe2\x88\x93"},
-               {"plus", 43, "\x2b"},
-               {"NotDoubleVerticalBar", 8742, "\xe2\x88\xa6"},
-               {"rppolint", 10770, "\xe2\xa8\x92"},
-               {"NotTildeFullEqual", 8775, "\xe2\x89\x87"},
-               {"ltdot", 8918, "\xe2\x8b\x96"},
-               {"NotNestedGreaterGreater", 10914, "\xe2\xaa\xa2\xcc\xb8"},
-               {"Lscr", 8466, "\xe2\x84\x92"},
-               {"pitchfork", 8916, "\xe2\x8b\x94"},
-               {"Eopf", 120124, "\xf0\x9d\x94\xbc"},
-               {"ropf", 120163, "\xf0\x9d\x95\xa3"},
-               {"Delta", 916, "\xce\x94"},
-               {"lozf", 10731, "\xe2\xa7\xab"},
-               {"RightTeeVector", 10587, "\xe2\xa5\x9b"},
-               {"UpDownArrow", 8597, "\xe2\x86\x95"},
-               {"bump", 8782, "\xe2\x89\x8e"},
-               {"Rscr", 8475, "\xe2\x84\x9b"},
-               {"slarr", 8592, "\xe2\x86\x90"},
-               {"lcy", 1083, "\xd0\xbb"},
-               {"Vee", 8897, "\xe2\x8b\x81"},
-               {"Iogon", 302, "\xc4\xae"},
-               {"minus", 8722, "\xe2\x88\x92"},
-               {"GreaterFullEqual", 8807, "\xe2\x89\xa7"},
-               {"xhArr", 10234, "\xe2\x9f\xba"},
-               {"shortmid", 8739, "\xe2\x88\xa3"},
-               {"DoubleDownArrow", 8659, "\xe2\x87\x93"},
-               {"Wscr", 119986, "\xf0\x9d\x92\xb2"},
-               {"rang", 10217, "\xe2\x9f\xa9"},
-               {"lcub", 123, "\x7b"},
-               {"mnplus", 8723, "\xe2\x88\x93"},
-               {"ulcrop", 8975, "\xe2\x8c\x8f"},
-               {"wfr", 120116, "\xf0\x9d\x94\xb4"},
-               {"DifferentialD", 8518, "\xe2\x85\x86"},
-               {"ThinSpace", 8201, "\xe2\x80\x89"},
-               {"NotGreaterGreater", 8811, "\xe2\x89\xab\xcc\xb8"},
-               {"Topf", 120139, "\xf0\x9d\x95\x8b"},
-               {"sbquo", 8218, "\xe2\x80\x9a"},
-               {"sdot", 8901, "\xe2\x8b\x85"},
-               {"DoubleLeftTee", 10980, "\xe2\xab\xa4"},
-               {"vBarv", 10985, "\xe2\xab\xa9"},
-               {"subne", 8842, "\xe2\x8a\x8a"},
-               {"gtrdot", 8919, "\xe2\x8b\x97"},
-               {"opar", 10679, "\xe2\xa6\xb7"},
-               {"apid", 8779, "\xe2\x89\x8b"},
-               {"Cross", 10799, "\xe2\xa8\xaf"},
-               {"lhblk", 9604, "\xe2\x96\x84"},
-               {"capcap", 10827, "\xe2\xa9\x8b"},
-               {"midast", 42, "\x2a"},
-               {"lscr", 120001, "\xf0\x9d\x93\x81"},
-               {"nGt", 8811, "\xe2\x89\xab\xe2\x83\x92"},
-               {"Euml", 203, "\xc3\x8b"},
-               {"blacktriangledown", 9662, "\xe2\x96\xbe"},
-               {"Rcy", 1056, "\xd0\xa0"},
-               {"dfisht", 10623, "\xe2\xa5\xbf"},
-               {"dashv", 8867, "\xe2\x8a\xa3"},
-               {"ast", 42, "\x2a"},
-               {"ContourIntegral", 8750, "\xe2\x88\xae"},
-               {"Ofr", 120082, "\xf0\x9d\x94\x92"},
-               {"Lcy", 1051, "\xd0\x9b"},
-               {"nltrie", 8940, "\xe2\x8b\xac"},
-               {"ShortUpArrow", 8593, "\xe2\x86\x91"},
-               {"acy", 1072, "\xd0\xb0"},
-               {"rightarrow", 8594, "\xe2\x86\x92"},
-               {"UnderBar", 95, "\x5f"},
-               {"LongLeftArrow", 10229, "\xe2\x9f\xb5"},
-               {"andd", 10844, "\xe2\xa9\x9c"},
-               {"xlarr", 10229, "\xe2\x9f\xb5"},
-               {"percnt", 37, "\x25"},
-               {"rharu", 8640, "\xe2\x87\x80"},
-               {"plusdo", 8724, "\xe2\x88\x94"},
-               {"TScy", 1062, "\xd0\xa6"},
-               {"kcy", 1082, "\xd0\xba"},
-               {"boxVR", 9568, "\xe2\x95\xa0"},
-               {"looparrowleft", 8619, "\xe2\x86\xab"},
-               {"scirc", 349, "\xc5\x9d"},
-               {"drcorn", 8991, "\xe2\x8c\x9f"},
-               {"iiota", 8489, "\xe2\x84\xa9"},
-               {"Zcy", 1047, "\xd0\x97"},
-               {"frac58", 8541, "\xe2\x85\x9d"},
-               {"alpha", 945, "\xce\xb1"},
-               {"daleth", 8504, "\xe2\x84\xb8"},
-               {"gtreqless", 8923, "\xe2\x8b\x9b"},
-               {"tstrok", 359, "\xc5\xa7"},
-               {"plusb", 8862, "\xe2\x8a\x9e"},
-               {"odsold", 10684, "\xe2\xa6\xbc"},
-               {"varsupsetneqq", 10956, "\xe2\xab\x8c\xef\xb8\x80"},
-               {"otilde", 245, "\xc3\xb5"},
-               {"gtcir", 10874, "\xe2\xa9\xba"},
-               {"lltri", 9722, "\xe2\x97\xba"},
-               {"rx", 8478, "\xe2\x84\x9e"},
-               {"ljcy", 1113, "\xd1\x99"},
-               {"parsim", 10995, "\xe2\xab\xb3"},
-               {"NotElement", 8713, "\xe2\x88\x89"},
-               {"plusmn", 177, "\xc2\xb1"},
-               {"varsubsetneq", 8842, "\xe2\x8a\x8a\xef\xb8\x80"},
-               {"subset", 8834, "\xe2\x8a\x82"},
-               {"awint", 10769, "\xe2\xa8\x91"},
-               {"laemptyv", 10676, "\xe2\xa6\xb4"},
-               {"phiv", 981, "\xcf\x95"},
-               {"sfrown", 8994, "\xe2\x8c\xa2"},
-               {"DoubleUpDownArrow", 8661, "\xe2\x87\x95"},
-               {"lpar", 40, "\x28"},
-               {"frac45", 8536, "\xe2\x85\x98"},
-               {"rBarr", 10511, "\xe2\xa4\x8f"},
-               {"npolint", 10772, "\xe2\xa8\x94"},
-               {"emacr", 275, "\xc4\x93"},
-               {"maltese", 10016, "\xe2\x9c\xa0"},
-               {"PlusMinus", 177, "\xc2\xb1"},
-               {"ReverseEquilibrium", 8651, "\xe2\x87\x8b"},
-               {"oscr", 8500, "\xe2\x84\xb4"},
-               {"blacksquare", 9642, "\xe2\x96\xaa"},
-               {"TSHcy", 1035, "\xd0\x8b"},
-               {"gap", 10886, "\xe2\xaa\x86"},
-               {"xnis", 8955, "\xe2\x8b\xbb"},
-               {"Ll", 8920, "\xe2\x8b\x98"},
-               {"PrecedesEqual", 10927, "\xe2\xaa\xaf"},
-               {"incare", 8453, "\xe2\x84\x85"},
-               {"nharr", 8622, "\xe2\x86\xae"},
-               {"varnothing", 8709, "\xe2\x88\x85"},
-               {"ShortDownArrow", 8595, "\xe2\x86\x93"},
-               {"nbsp", 160, " "},
-               {"asympeq", 8781, "\xe2\x89\x8d"},
-               {"rbrkslu", 10640, "\xe2\xa6\x90"},
-               {"rho", 961, "\xcf\x81"},
-               {"Mscr", 8499, "\xe2\x84\xb3"},
-               {"eth", 240, "\xc3\xb0"},
-               {"suplarr", 10619, "\xe2\xa5\xbb"},
-               {"Tab", 9, "\x09"},
-               {"omicron", 959, "\xce\xbf"},
-               {"blacktriangle", 9652, "\xe2\x96\xb4"},
-               {"nldr", 8229, "\xe2\x80\xa5"},
-               {"downharpoonleft", 8643, "\xe2\x87\x83"},
-               {"circledcirc", 8858, "\xe2\x8a\x9a"},
-               {"leftleftarrows", 8647, "\xe2\x87\x87"},
-               {"NotHumpDownHump", 8782, "\xe2\x89\x8e\xcc\xb8"},
-               {"nvgt", 62, "\x3e\xe2\x83\x92"},
-               {"rhard", 8641, "\xe2\x87\x81"},
-               {"nGg", 8921, "\xe2\x8b\x99\xcc\xb8"},
-               {"lurdshar", 10570, "\xe2\xa5\x8a"},
-               {"cirE", 10691, "\xe2\xa7\x83"},
-               {"isinE", 8953, "\xe2\x8b\xb9"},
-               {"eparsl", 10723, "\xe2\xa7\xa3"},
-               {"RightAngleBracket", 10217, "\xe2\x9f\xa9"},
-               {"hcirc", 293, "\xc4\xa5"},
-               {"bumpeq", 8783, "\xe2\x89\x8f"},
-               {"cire", 8791, "\xe2\x89\x97"},
-               {"dotplus", 8724, "\xe2\x88\x94"},
-               {"itilde", 297, "\xc4\xa9"},
-               {"uwangle", 10663, "\xe2\xa6\xa7"},
-               {"rlhar", 8652, "\xe2\x87\x8c"},
-               {"rbrace", 125, "\x7d"},
-               {"mid", 8739, "\xe2\x88\xa3"},
-               {"el", 10905, "\xe2\xaa\x99"},
-               {"KJcy", 1036, "\xd0\x8c"},
-               {"odiv", 10808, "\xe2\xa8\xb8"},
-               {"amacr", 257, "\xc4\x81"},
-               {"qprime", 8279, "\xe2\x81\x97"},
-               {"tcedil", 355, "\xc5\xa3"},
-               {"UpArrowDownArrow", 8645, "\xe2\x87\x85"},
-               {"spades", 9824, "\xe2\x99\xa0"},
-               {"napos", 329, "\xc5\x89"},
-               {"straightepsilon", 1013, "\xcf\xb5"},
-               {"CupCap", 8781, "\xe2\x89\x8d"},
-               {"Oopf", 120134, "\xf0\x9d\x95\x86"},
-               {"sub", 8834, "\xe2\x8a\x82"},
-               {"ohm", 937, "\xce\xa9"},
-               {"UnderBrace", 9183, "\xe2\x8f\x9f"},
-               {"looparrowright", 8620, "\xe2\x86\xac"},
-               {"xotime", 10754, "\xe2\xa8\x82"},
-               {"ntgl", 8825, "\xe2\x89\xb9"},
-               {"minusdu", 10794, "\xe2\xa8\xaa"},
-               {"rarrb", 8677, "\xe2\x87\xa5"},
-               {"nvlArr", 10498, "\xe2\xa4\x82"},
-               {"triangle", 9653, "\xe2\x96\xb5"},
-               {"nacute", 324, "\xc5\x84"},
-               {"boxHD", 9574, "\xe2\x95\xa6"},
-               {"ratio", 8758, "\xe2\x88\xb6"},
-               {"larrsim", 10611, "\xe2\xa5\xb3"},
-               {"LessLess", 10913, "\xe2\xaa\xa1"},
-               {"yacy", 1103, "\xd1\x8f"},
-               {"ctdot", 8943, "\xe2\x8b\xaf"},
-               {"and", 8743, "\xe2\x88\xa7"},
-               {"lrtri", 8895, "\xe2\x8a\xbf"},
-               {"eDot", 8785, "\xe2\x89\x91"},
-               {"sqsub", 8847, "\xe2\x8a\x8f"},
-               {"real", 8476, "\xe2\x84\x9c"},
-               {"Dcy", 1044, "\xd0\x94"},
-               {"vartheta", 977, "\xcf\x91"},
-               {"nsub", 8836, "\xe2\x8a\x84"},
-               {"DownTee", 8868, "\xe2\x8a\xa4"},
-               {"acute", 180, "\xc2\xb4"},
-               {"GreaterLess", 8823, "\xe2\x89\xb7"},
-               {"supplus", 10944, "\xe2\xab\x80"},
-               {"Vbar", 10987, "\xe2\xab\xab"},
-               {"divideontimes", 8903, "\xe2\x8b\x87"},
-               {"lsim", 8818, "\xe2\x89\xb2"},
-               {"nearhk", 10532, "\xe2\xa4\xa4"},
-               {"nLtv", 8810, "\xe2\x89\xaa\xcc\xb8"},
-               {"RuleDelayed", 10740, "\xe2\xa7\xb4"},
-               {"smile", 8995, "\xe2\x8c\xa3"},
-               {"coprod", 8720, "\xe2\x88\x90"},
-               {"imof", 8887, "\xe2\x8a\xb7"},
-               {"ecy", 1101, "\xd1\x8d"},
-               {"RightCeiling", 8969, "\xe2\x8c\x89"},
-               {"dlcorn", 8990, "\xe2\x8c\x9e"},
-               {"Nu", 925, "\xce\x9d"},
-               {"frac18", 8539, "\xe2\x85\x9b"},
-               {"diamond", 8900, "\xe2\x8b\x84"},
-               {"Icirc", 206, "\xc3\x8e"},
-               {"ngeq", 8817, "\xe2\x89\xb1"},
-               {"epsilon", 949, "\xce\xb5"},
-               {"fork", 8916, "\xe2\x8b\x94"},
-               {"xrarr", 10230, "\xe2\x9f\xb6"},
-               {"racute", 341, "\xc5\x95"},
-               {"ntlg", 8824, "\xe2\x89\xb8"},
-               {"xvee", 8897, "\xe2\x8b\x81"},
-               {"LeftArrowRightArrow", 8646, "\xe2\x87\x86"},
-               {"DownLeftRightVector", 10576, "\xe2\xa5\x90"},
-               {"Eacute", 201, "\xc3\x89"},
-               {"gimel", 8503, "\xe2\x84\xb7"},
-               {"rtimes", 8906, "\xe2\x8b\x8a"},
-               {"forall", 8704, "\xe2\x88\x80"},
-               {"DiacriticalDoubleAcute", 733, "\xcb\x9d"},
-               {"dArr", 8659, "\xe2\x87\x93"},
-               {"fallingdotseq", 8786, "\xe2\x89\x92"},
-               {"Aogon", 260, "\xc4\x84"},
-               {"PartialD", 8706, "\xe2\x88\x82"},
-               {"mapstoup", 8613, "\xe2\x86\xa5"},
-               {"die", 168, "\xc2\xa8"},
-               {"ngt", 8815, "\xe2\x89\xaf"},
-               {"vcy", 1074, "\xd0\xb2"},
-               {"fjlig", 0, "\x66\x6a"},
-               {"submult", 10945, "\xe2\xab\x81"},
-               {"ubrcy", 1118, "\xd1\x9e"},
-               {"ovbar", 9021, "\xe2\x8c\xbd"},
-               {"bsime", 8909, "\xe2\x8b\x8d"},
-               {"precnsim", 8936, "\xe2\x8b\xa8"},
-               {"DiacriticalTilde", 732, "\xcb\x9c"},
-               {"cwint", 8753, "\xe2\x88\xb1"},
-               {"Scy", 1057, "\xd0\xa1"},
-               {"NotGreaterEqual", 8817, "\xe2\x89\xb1"},
-               {"boxUR", 9562, "\xe2\x95\x9a"},
-               {"LessSlantEqual", 10877, "\xe2\xa9\xbd"},
-               {"Barwed", 8966, "\xe2\x8c\x86"},
-               {"supdot", 10942, "\xe2\xaa\xbe"},
-               {"gel", 8923, "\xe2\x8b\x9b"},
-               {"iscr", 119998, "\xf0\x9d\x92\xbe"},
-               {"doublebarwedge", 8966, "\xe2\x8c\x86"},
-               {"Idot", 304, "\xc4\xb0"},
-               {"DoubleDot", 168, "\xc2\xa8"},
-               {"rsquo", 8217, "\xe2\x80\x99"},
-               {"subsetneqq", 10955, "\xe2\xab\x8b"},
-               {"UpEquilibrium", 10606, "\xe2\xa5\xae"},
-               {"copysr", 8471, "\xe2\x84\x97"},
-               {"RightDoubleBracket", 10215, "\xe2\x9f\xa7"},
-               {"LeftRightVector", 10574, "\xe2\xa5\x8e"},
-               {"DownLeftVectorBar", 10582, "\xe2\xa5\x96"},
-               {"suphsub", 10967, "\xe2\xab\x97"},
-               {"cedil", 184, "\xc2\xb8"},
-               {"prurel", 8880, "\xe2\x8a\xb0"},
-               {"imagpart", 8465, "\xe2\x84\x91"},
-               {"Hscr", 8459, "\xe2\x84\x8b"},
-               {"jmath", 567, "\xc8\xb7"},
-               {"nrtrie", 8941, "\xe2\x8b\xad"},
-               {"nsup", 8837, "\xe2\x8a\x85"},
-               {"Ubrcy", 1038, "\xd0\x8e"},
-               {"succnsim", 8937, "\xe2\x8b\xa9"},
-               {"nesim", 8770, "\xe2\x89\x82\xcc\xb8"},
-               {"varepsilon", 1013, "\xcf\xb5"},
-               {"DoubleRightTee", 8872, "\xe2\x8a\xa8"},
-               {"not", 172, "\xc2\xac"},
-               {"lesdot", 10879, "\xe2\xa9\xbf"},
-               {"backepsilon", 1014, "\xcf\xb6"},
-               {"srarr", 8594, "\xe2\x86\x92"},
-               {"varsubsetneqq", 10955, "\xe2\xab\x8b\xef\xb8\x80"},
-               {"sqcap", 8851, "\xe2\x8a\x93"},
-               {"rightleftarrows", 8644, "\xe2\x87\x84"},
-               {"diams", 9830, "\xe2\x99\xa6"},
-               {"boxdR", 9554, "\xe2\x95\x92"},
-               {"ngeqslant", 10878, "\xe2\xa9\xbe\xcc\xb8"},
-               {"boxDR", 9556, "\xe2\x95\x94"},
-               {"sext", 10038, "\xe2\x9c\xb6"},
-               {"backsim", 8765, "\xe2\x88\xbd"},
-               {"nfr", 120107, "\xf0\x9d\x94\xab"},
-               {"CloseCurlyDoubleQuote", 8221, "\xe2\x80\x9d"},
-               {"npart", 8706, "\xe2\x88\x82\xcc\xb8"},
-               {"dharl", 8643, "\xe2\x87\x83"},
-               {"NewLine", 10, "\x0a"},
-               {"bigotimes", 10754, "\xe2\xa8\x82"},
-               {"lAtail", 10523, "\xe2\xa4\x9b"},
-               {"frac14", 188, "\xc2\xbc"},
-               {"or", 8744, "\xe2\x88\xa8"},
-               {"subedot", 10947, "\xe2\xab\x83"},
-               {"nmid", 8740, "\xe2\x88\xa4"},
-               {"DownArrowUpArrow", 8693, "\xe2\x87\xb5"},
-               {"icy", 1080, "\xd0\xb8"},
-               {"num", 35, "\x23"},
-               {"Gdot", 288, "\xc4\xa0"},
-               {"urcrop", 8974, "\xe2\x8c\x8e"},
-               {"epsiv", 1013, "\xcf\xb5"},
-               {"topcir", 10993, "\xe2\xab\xb1"},
-               {"ne", 8800, "\xe2\x89\xa0"},
-               {"osol", 8856, "\xe2\x8a\x98"},
-               {"amp", 38, "\x26"},
-               {"ncap", 10819, "\xe2\xa9\x83"},
-               {"Sscr", 119982, "\xf0\x9d\x92\xae"},
-               {"sung", 9834, "\xe2\x99\xaa"},
-               {"ltri", 9667, "\xe2\x97\x83"},
-               {"frac25", 8534, "\xe2\x85\x96"},
-               {"DZcy", 1039, "\xd0\x8f"},
-               {"RightUpVector", 8638, "\xe2\x86\xbe"},
-               {"rsquor", 8217, "\xe2\x80\x99"},
-               {"uplus", 8846, "\xe2\x8a\x8e"},
-               {"triangleright", 9657, "\xe2\x96\xb9"},
-               {"lAarr", 8666, "\xe2\x87\x9a"},
-               {"HilbertSpace", 8459, "\xe2\x84\x8b"},
-               {"there4", 8756, "\xe2\x88\xb4"},
-               {"vscr", 120011, "\xf0\x9d\x93\x8b"},
-               {"cirscir", 10690, "\xe2\xa7\x82"},
-               {"roarr", 8702, "\xe2\x87\xbe"},
-               {"hslash", 8463, "\xe2\x84\x8f"},
-               {"supdsub", 10968, "\xe2\xab\x98"},
-               {"simg", 10910, "\xe2\xaa\x9e"},
-               {"trade", 8482, "\xe2\x84\xa2"},
-               {"searrow", 8600, "\xe2\x86\x98"},
-               {"DownLeftVector", 8637, "\xe2\x86\xbd"},
-               {"FilledSmallSquare", 9724, "\xe2\x97\xbc"},
-               {"prod", 8719, "\xe2\x88\x8f"},
-               {"oror", 10838, "\xe2\xa9\x96"},
-               {"udarr", 8645, "\xe2\x87\x85"},
-               {"jsercy", 1112, "\xd1\x98"},
-               {"tprime", 8244, "\xe2\x80\xb4"},
-               {"bprime", 8245, "\xe2\x80\xb5"},
-               {"malt", 10016, "\xe2\x9c\xa0"},
-               {"bigcup", 8899, "\xe2\x8b\x83"},
-               {"oint", 8750, "\xe2\x88\xae"},
-               {"female", 9792, "\xe2\x99\x80"},
-               {"omacr", 333, "\xc5\x8d"},
-               {"SquareSubsetEqual", 8849, "\xe2\x8a\x91"},
-               {"SucceedsEqual", 10928, "\xe2\xaa\xb0"},
-               {"plusacir", 10787, "\xe2\xa8\xa3"},
-               {"Gcirc", 284, "\xc4\x9c"},
-               {"lesdotor", 10883, "\xe2\xaa\x83"},
-               {"escr", 8495, "\xe2\x84\xaf"},
-               {"THORN", 222, "\xc3\x9e"},
-               {"UpArrowBar", 10514, "\xe2\xa4\x92"},
-               {"nvrtrie", 8885, "\xe2\x8a\xb5\xe2\x83\x92"},
-               {"varkappa", 1008, "\xcf\xb0"},
-               {"NotReverseElement", 8716, "\xe2\x88\x8c"},
-               {"zdot", 380, "\xc5\xbc"},
-               {"ExponentialE", 8519, "\xe2\x85\x87"},
-               {"lesseqgtr", 8922, "\xe2\x8b\x9a"},
-               {"cscr", 119992, "\xf0\x9d\x92\xb8"},
-               {"Dscr", 119967, "\xf0\x9d\x92\x9f"},
-               {"lthree", 8907, "\xe2\x8b\x8b"},
-               {"Ccedil", 199, "\xc3\x87"},
-               {"nge", 8817, "\xe2\x89\xb1"},
-               {"UpperLeftArrow", 8598, "\xe2\x86\x96"},
-               {"vDash", 8872, "\xe2\x8a\xa8"},
-               {"efDot", 8786, "\xe2\x89\x92"},
-               {"telrec", 8981, "\xe2\x8c\x95"},
-               {"vellip", 8942, "\xe2\x8b\xae"},
-               {"nrArr", 8655, "\xe2\x87\x8f"},
-               {"ugrave", 249, "\xc3\xb9"},
-               {"uring", 367, "\xc5\xaf"},
-               {"Bernoullis", 8492, "\xe2\x84\xac"},
-               {"nles", 10877, "\xe2\xa9\xbd\xcc\xb8"},
-               {"macr", 175, "\xc2\xaf"},
-               {"boxuR", 9560, "\xe2\x95\x98"},
-               {"clubsuit", 9827, "\xe2\x99\xa3"},
-               {"rightarrowtail", 8611, "\xe2\x86\xa3"},
-               {"epar", 8917, "\xe2\x8b\x95"},
-               {"ltcc", 10918, "\xe2\xaa\xa6"},
-               {"twoheadleftarrow", 8606, "\xe2\x86\x9e"},
-               {"aleph", 8501, "\xe2\x84\xb5"},
-               {"Colon", 8759, "\xe2\x88\xb7"},
-               {"vltri", 8882, "\xe2\x8a\xb2"},
-               {"quaternions", 8461, "\xe2\x84\x8d"},
-               {"rfr", 120111, "\xf0\x9d\x94\xaf"},
-               {"Ouml", 214, "\xc3\x96"},
-               {"rsh", 8625, "\xe2\x86\xb1"},
-               {"emptyv", 8709, "\xe2\x88\x85"},
-               {"sqsup", 8848, "\xe2\x8a\x90"},
-               {"marker", 9646, "\xe2\x96\xae"},
-               {"Efr", 120072, "\xf0\x9d\x94\x88"},
-               {"DotEqual", 8784, "\xe2\x89\x90"},
-               {"eqsim", 8770, "\xe2\x89\x82"},
-               {"NotSucceedsEqual", 10928, "\xe2\xaa\xb0\xcc\xb8"},
-               {"primes", 8473, "\xe2\x84\x99"},
-               {"times", 215, "\xc3\x97"},
-               {"rangd", 10642, "\xe2\xa6\x92"},
-               {"rightharpoonup", 8640, "\xe2\x87\x80"},
-               {"lrhard", 10605, "\xe2\xa5\xad"},
-               {"ape", 8778, "\xe2\x89\x8a"},
-               {"varsupsetneq", 8843, "\xe2\x8a\x8b\xef\xb8\x80"},
-               {"larrlp", 8619, "\xe2\x86\xab"},
-               {"NotPrecedesEqual", 10927, "\xe2\xaa\xaf\xcc\xb8"},
-               {"ulcorner", 8988, "\xe2\x8c\x9c"},
-               {"acd", 8767, "\xe2\x88\xbf"},
-               {"Hacek", 711, "\xcb\x87"},
-               {"xuplus", 10756, "\xe2\xa8\x84"},
-               {"therefore", 8756, "\xe2\x88\xb4"},
-               {"YIcy", 1031, "\xd0\x87"},
-               {"Tfr", 120087, "\xf0\x9d\x94\x97"},
-               {"Jcirc", 308, "\xc4\xb4"},
-               {"LessGreater", 8822, "\xe2\x89\xb6"},
-               {"Uring", 366, "\xc5\xae"},
-               {"Ugrave", 217, "\xc3\x99"},
-               {"rarr", 8594, "\xe2\x86\x92"},
-               {"wopf", 120168, "\xf0\x9d\x95\xa8"},
-               {"imath", 305, "\xc4\xb1"},
-               {"Yopf", 120144, "\xf0\x9d\x95\x90"},
-               {"colone", 8788, "\xe2\x89\x94"},
-               {"csube", 10961, "\xe2\xab\x91"},
-               {"odash", 8861, "\xe2\x8a\x9d"},
-               {"olarr", 8634, "\xe2\x86\xba"},
-               {"angrt", 8735, "\xe2\x88\x9f"},
-               {"NotLeftTriangleBar", 10703, "\xe2\xa7\x8f\xcc\xb8"},
-               {"GreaterEqual", 8805, "\xe2\x89\xa5"},
-               {"scnap", 10938, "\xe2\xaa\xba"},
-               {"pi", 960, "\xcf\x80"},
-               {"lesg", 8922, "\xe2\x8b\x9a\xef\xb8\x80"},
-               {"orderof", 8500, "\xe2\x84\xb4"},
-               {"uacute", 250, "\xc3\xba"},
-               {"Barv", 10983, "\xe2\xab\xa7"},
-               {"Theta", 920, "\xce\x98"},
-               {"leftrightsquigarrow", 8621, "\xe2\x86\xad"},
-               {"Atilde", 195, "\xc3\x83"},
-               {"cupdot", 8845, "\xe2\x8a\x8d"},
-               {"ntriangleright", 8939, "\xe2\x8b\xab"},
-               {"measuredangle", 8737, "\xe2\x88\xa1"},
-               {"jscr", 119999, "\xf0\x9d\x92\xbf"},
-               {"inodot", 305, "\xc4\xb1"},
-               {"mopf", 120158, "\xf0\x9d\x95\x9e"},
-               {"hkswarow", 10534, "\xe2\xa4\xa6"},
-               {"lopar", 10629, "\xe2\xa6\x85"},
-               {"thksim", 8764, "\xe2\x88\xbc"},
-               {"bkarow", 10509, "\xe2\xa4\x8d"},
-               {"rarrfs", 10526, "\xe2\xa4\x9e"},
-               {"ntrianglelefteq", 8940, "\xe2\x8b\xac"},
-               {"Bscr", 8492, "\xe2\x84\xac"},
-               {"topf", 120165, "\xf0\x9d\x95\xa5"},
-               {"Uacute", 218, "\xc3\x9a"},
-               {"lap", 10885, "\xe2\xaa\x85"},
-               {"djcy", 1106, "\xd1\x92"},
-               {"bopf", 120147, "\xf0\x9d\x95\x93"},
-               {"empty", 8709, "\xe2\x88\x85"},
-               {"LeftAngleBracket", 10216, "\xe2\x9f\xa8"},
-               {"Imacr", 298, "\xc4\xaa"},
-               {"ltcir", 10873, "\xe2\xa9\xb9"},
-               {"trisb", 10701, "\xe2\xa7\x8d"},
-               {"gjcy", 1107, "\xd1\x93"},
-               {"pr", 8826, "\xe2\x89\xba"},
-               {"Mu", 924, "\xce\x9c"},
-               {"ogon", 731, "\xcb\x9b"},
-               {"pertenk", 8241, "\xe2\x80\xb1"},
-               {"plustwo", 10791, "\xe2\xa8\xa7"},
-               {"Vfr", 120089, "\xf0\x9d\x94\x99"},
-               {"ApplyFunction", 8289, "\xe2\x81\xa1"},
-               {"Sub", 8912, "\xe2\x8b\x90"},
-               {"DoubleLeftRightArrow", 8660, "\xe2\x87\x94"},
-               {"Lmidot", 319, "\xc4\xbf"},
-               {"nwarrow", 8598, "\xe2\x86\x96"},
-               {"angrtvbd", 10653, "\xe2\xa6\x9d"},
-               {"fcy", 1092, "\xd1\x84"},
-               {"ltlarr", 10614, "\xe2\xa5\xb6"},
-               {"CircleMinus", 8854, "\xe2\x8a\x96"},
-               {"angmsdab", 10665, "\xe2\xa6\xa9"},
-               {"wedgeq", 8793, "\xe2\x89\x99"},
-               {"iogon", 303, "\xc4\xaf"},
-               {"laquo", 171, "\xc2\xab"},
-               {"NestedGreaterGreater", 8811, "\xe2\x89\xab"},
-               {"UnionPlus", 8846, "\xe2\x8a\x8e"},
-               {"CircleDot", 8857, "\xe2\x8a\x99"},
-               {"coloneq", 8788, "\xe2\x89\x94"},
-               {"csupe", 10962, "\xe2\xab\x92"},
-               {"tcaron", 357, "\xc5\xa5"},
-               {"GreaterTilde", 8819, "\xe2\x89\xb3"},
-               {"Map", 10501, "\xe2\xa4\x85"},
-               {"DoubleLongLeftArrow", 10232, "\xe2\x9f\xb8"},
-               {"Uparrow", 8657, "\xe2\x87\x91"},
-               {"scy", 1089, "\xd1\x81"},
-               {"llarr", 8647, "\xe2\x87\x87"},
-               {"rangle", 10217, "\xe2\x9f\xa9"},
-               {"sstarf", 8902, "\xe2\x8b\x86"},
-               {"InvisibleTimes", 8290, "\xe2\x81\xa2"},
-               {"egsdot", 10904, "\xe2\xaa\x98"},
-               {"target", 8982, "\xe2\x8c\x96"},
-               {"lesges", 10899, "\xe2\xaa\x93"},
-               {"curren", 164, "\xc2\xa4"},
-               {"yopf", 120170, "\xf0\x9d\x95\xaa"},
-               {"frac23", 8532, "\xe2\x85\x94"},
-               {"NotSucceedsTilde", 8831, "\xe2\x89\xbf\xcc\xb8"},
-               {"napprox", 8777, "\xe2\x89\x89"},
-               {"odblac", 337, "\xc5\x91"},
-               {"gammad", 989, "\xcf\x9d"},
-               {"dscr", 119993, "\xf0\x9d\x92\xb9"},
-               {"SupersetEqual", 8839, "\xe2\x8a\x87"},
-               {"squf", 9642, "\xe2\x96\xaa"},
-               {"Because", 8757, "\xe2\x88\xb5"},
-               {"sccue", 8829, "\xe2\x89\xbd"},
-               {"KHcy", 1061, "\xd0\xa5"},
-               {"Wcirc", 372, "\xc5\xb4"},
-               {"uparrow", 8593, "\xe2\x86\x91"},
-               {"lessgtr", 8822, "\xe2\x89\xb6"},
-               {"thickapprox", 8776, "\xe2\x89\x88"},
-               {"lbrksld", 10639, "\xe2\xa6\x8f"},
-               {"oslash", 248, "\xc3\xb8"},
-               {"NotCupCap", 8813, "\xe2\x89\xad"},
-               {"elinters", 9191, "\xe2\x8f\xa7"},
-               {"Assign", 8788, "\xe2\x89\x94"},
-               {"ClockwiseContourIntegral", 8754, "\xe2\x88\xb2"},
-               {"lfisht", 10620, "\xe2\xa5\xbc"},
-               {"DownArrow", 8595, "\xe2\x86\x93"},
-               {"Zdot", 379, "\xc5\xbb"},
-               {"xscr", 120013, "\xf0\x9d\x93\x8d"},
-               {"DiacriticalGrave", 96, "\x60"},
-               {"DoubleLongLeftRightArrow", 10234, "\xe2\x9f\xba"},
-               {"angle", 8736, "\xe2\x88\xa0"},
-               {"race", 8765, "\xe2\x88\xbd\xcc\xb1"},
-               {"Ascr", 119964, "\xf0\x9d\x92\x9c"},
-               {"Xscr", 119987, "\xf0\x9d\x92\xb3"},
-               {"acirc", 226, "\xc3\xa2"},
-               {"otimesas", 10806, "\xe2\xa8\xb6"},
-               {"gscr", 8458, "\xe2\x84\x8a"},
-               {"gcy", 1075, "\xd0\xb3"},
-               {"angmsdag", 10670, "\xe2\xa6\xae"},
-               {"tshcy", 1115, "\xd1\x9b"},
-               {"Acy", 1040, "\xd0\x90"},
-               {"NotGreaterLess", 8825, "\xe2\x89\xb9"},
-               {"dtdot", 8945, "\xe2\x8b\xb1"},
-               {"quot", 34, "\x22"},
-               {"micro", 181, "\xc2\xb5"},
-               {"simplus", 10788, "\xe2\xa8\xa4"},
-               {"nsupseteq", 8841, "\xe2\x8a\x89"},
-               {"Ufr", 120088, "\xf0\x9d\x94\x98"},
-               {"Pr", 10939, "\xe2\xaa\xbb"},
-               {"napid", 8779, "\xe2\x89\x8b\xcc\xb8"},
-               {"rceil", 8969, "\xe2\x8c\x89"},
-               {"boxtimes", 8864, "\xe2\x8a\xa0"},
-               {"erarr", 10609, "\xe2\xa5\xb1"},
-               {"downdownarrows", 8650, "\xe2\x87\x8a"},
-               {"Kfr", 120078, "\xf0\x9d\x94\x8e"},
-               {"mho", 8487, "\xe2\x84\xa7"},
-               {"scpolint", 10771, "\xe2\xa8\x93"},
-               {"vArr", 8661, "\xe2\x87\x95"},
-               {"Ccaron", 268, "\xc4\x8c"},
-               {"NotRightTriangle", 8939, "\xe2\x8b\xab"},
-               {"topbot", 9014, "\xe2\x8c\xb6"},
-               {"qopf", 120162, "\xf0\x9d\x95\xa2"},
-               {"eogon", 281, "\xc4\x99"},
-               {"luruhar", 10598, "\xe2\xa5\xa6"},
-               {"gtdot", 8919, "\xe2\x8b\x97"},
-               {"Egrave", 200, "\xc3\x88"},
-               {"roplus", 10798, "\xe2\xa8\xae"},
-               {"Intersection", 8898, "\xe2\x8b\x82"},
-               {"Uarr", 8607, "\xe2\x86\x9f"},
-               {"dcy", 1076, "\xd0\xb4"},
-               {"boxvl", 9508, "\xe2\x94\xa4"},
-               {"RightArrowBar", 8677, "\xe2\x87\xa5"},
-               {"yuml", 255, "\xc3\xbf"},
-               {"parallel", 8741, "\xe2\x88\xa5"},
-               {"succneqq", 10934, "\xe2\xaa\xb6"},
-               {"bemptyv", 10672, "\xe2\xa6\xb0"},
-               {"starf", 9733, "\xe2\x98\x85"},
-               {"OverBar", 8254, "\xe2\x80\xbe"},
-               {"Alpha", 913, "\xce\x91"},
-               {"LeftUpVectorBar", 10584, "\xe2\xa5\x98"},
-               {"ufr", 120114, "\xf0\x9d\x94\xb2"},
-               {"swarhk", 10534, "\xe2\xa4\xa6"},
-               {"GreaterEqualLess", 8923, "\xe2\x8b\x9b"},
-               {"sscr", 120008, "\xf0\x9d\x93\x88"},
-               {"Pi", 928, "\xce\xa0"},
-               {"boxh", 9472, "\xe2\x94\x80"},
-               {"frac16", 8537, "\xe2\x85\x99"},
-               {"lbrack", 91, "\x5b"},
-               {"vert", 124, "\x7c"},
-               {"precneqq", 10933, "\xe2\xaa\xb5"},
-               {"NotGreaterSlantEqual", 10878, "\xe2\xa9\xbe\xcc\xb8"},
-               {"Omega", 937, "\xce\xa9"},
-               {"uarr", 8593, "\xe2\x86\x91"},
-               {"boxVr", 9567, "\xe2\x95\x9f"},
-               {"ruluhar", 10600, "\xe2\xa5\xa8"},
-               {"ShortLeftArrow", 8592, "\xe2\x86\x90"},
-               {"Qfr", 120084, "\xf0\x9d\x94\x94"},
-               {"olt", 10688, "\xe2\xa7\x80"},
-               {"nequiv", 8802, "\xe2\x89\xa2"},
-               {"fscr", 119995, "\xf0\x9d\x92\xbb"},
-               {"rarrhk", 8618, "\xe2\x86\xaa"},
-               {"nsqsupe", 8931, "\xe2\x8b\xa3"},
-               {"nsubseteq", 8840, "\xe2\x8a\x88"},
-               {"numero", 8470, "\xe2\x84\x96"},
-               {"emsp14", 8197, "\xe2\x80\x85"},
-               {"gl", 8823, "\xe2\x89\xb7"},
-               {"ocirc", 244, "\xc3\xb4"},
-               {"weierp", 8472, "\xe2\x84\x98"},
-               {"boxvL", 9569, "\xe2\x95\xa1"},
-               {"RightArrowLeftArrow", 8644, "\xe2\x87\x84"},
-               {"Precedes", 8826, "\xe2\x89\xba"},
-               {"RightVector", 8640, "\xe2\x87\x80"},
-               {"xcup", 8899, "\xe2\x8b\x83"},
-               {"angmsdad", 10667, "\xe2\xa6\xab"},
-               {"gtrsim", 8819, "\xe2\x89\xb3"},
-               {"natural", 9838, "\xe2\x99\xae"},
-               {"nVdash", 8878, "\xe2\x8a\xae"},
-               {"RightTriangleEqual", 8885, "\xe2\x8a\xb5"},
-               {"dscy", 1109, "\xd1\x95"},
-               {"leftthreetimes", 8907, "\xe2\x8b\x8b"},
-               {"prsim", 8830, "\xe2\x89\xbe"},
-               {"Bcy", 1041, "\xd0\x91"},
-               {"Chi", 935, "\xce\xa7"},
-               {"timesb", 8864, "\xe2\x8a\xa0"},
-               {"Del", 8711, "\xe2\x88\x87"},
-               {"lmidot", 320, "\xc5\x80"},
-               {"RightDownVector", 8642, "\xe2\x87\x82"},
-               {"simdot", 10858, "\xe2\xa9\xaa"},
-               {"FilledVerySmallSquare", 9642, "\xe2\x96\xaa"},
-               {"NotLessSlantEqual", 10877, "\xe2\xa9\xbd\xcc\xb8"},
-               {"SucceedsTilde", 8831, "\xe2\x89\xbf"},
-               {"duarr", 8693, "\xe2\x87\xb5"},
-               {"apE", 10864, "\xe2\xa9\xb0"},
-               {"odot", 8857, "\xe2\x8a\x99"},
-               {"mldr", 8230, "\xe2\x80\xa6"},
-               {"Uarrocir", 10569, "\xe2\xa5\x89"},
-               {"nLl", 8920, "\xe2\x8b\x98\xcc\xb8"},
-               {"rarrpl", 10565, "\xe2\xa5\x85"},
-               {"cir", 9675, "\xe2\x97\x8b"},
-               {"blk14", 9617, "\xe2\x96\x91"},
-               {"VerticalLine", 124, "\x7c"},
-               {"jcy", 1081, "\xd0\xb9"},
-               {"filig", 64257, "\xef\xac\x81"},
-               {"LongRightArrow", 10230, "\xe2\x9f\xb6"},
-               {"beta", 946, "\xce\xb2"},
-               {"ccupssm", 10832, "\xe2\xa9\x90"},
-               {"supsub", 10964, "\xe2\xab\x94"},
-               {"spar", 8741, "\xe2\x88\xa5"},
-               {"Tstrok", 358, "\xc5\xa6"},
-               {"isinv", 8712, "\xe2\x88\x88"},
-               {"rightsquigarrow", 8605, "\xe2\x86\x9d"},
-               {"Diamond", 8900, "\xe2\x8b\x84"},
-               {"curlyeqsucc", 8927, "\xe2\x8b\x9f"},
-               {"ijlig", 307, "\xc4\xb3"},
-               {"puncsp", 8200, "\xe2\x80\x88"},
-               {"hamilt", 8459, "\xe2\x84\x8b"},
-               {"mapstoleft", 8612, "\xe2\x86\xa4"},
-               {"Copf", 8450, "\xe2\x84\x82"},
-               {"prnsim", 8936, "\xe2\x8b\xa8"},
-               {"DotDot", 8412, "\xe2\x83\x9c"},
-               {"lobrk", 10214, "\xe2\x9f\xa6"},
-               {"twoheadrightarrow", 8608, "\xe2\x86\xa0"},
-               {"ngE", 8807, "\xe2\x89\xa7\xcc\xb8"},
-               {"cylcty", 9005, "\xe2\x8c\xad"},
-               {"sube", 8838, "\xe2\x8a\x86"},
-               {"NotEqualTilde", 8770, "\xe2\x89\x82\xcc\xb8"},
-               {"Yuml", 376, "\xc5\xb8"},
-               {"comp", 8705, "\xe2\x88\x81"},
-               {"dotminus", 8760, "\xe2\x88\xb8"},
-               {"crarr", 8629, "\xe2\x86\xb5"},
-               {"imped", 437, "\xc6\xb5"},
-               {"barwedge", 8965, "\xe2\x8c\x85"},
-               {"harrcir", 10568, "\xe2\xa5\x88"},
+               {"szlig",                           223,    "\xc3\x9f"},
+               {"prime",                           8242,   "\xe2\x80\xb2"},
+               {"lnsim",                           8934,   "\xe2\x8b\xa6"},
+               {"nvDash",                          8877,   "\xe2\x8a\xad"},
+               {"isinsv",                          8947,   "\xe2\x8b\xb3"},
+               {"notin",                           8713,   "\xe2\x88\x89"},
+               {"becaus",                          8757,   "\xe2\x88\xb5"},
+               {"Leftrightarrow",                  8660,   "\xe2\x87\x94"},
+               {"EmptySmallSquare",                9723,   "\xe2\x97\xbb"},
+               {"SquareUnion",                     8852,   "\xe2\x8a\x94"},
+               {"subdot",                          10941,  "\xe2\xaa\xbd"},
+               {"Dstrok",                          272,    "\xc4\x90"},
+               {"rrarr",                           8649,   "\xe2\x87\x89"},
+               {"rArr",                            8658,   "\xe2\x87\x92"},
+               {"Aacute",                          193,    "\xc3\x81"},
+               {"kappa",                           954,    "\xce\xba"},
+               {"Iopf",                            120128, "\xf0\x9d\x95\x80"},
+               {"hyphen",                          8208,   "\xe2\x80\x90"},
+               {"rarrbfs",                         10528,  "\xe2\xa4\xa0"},
+               {"supsetneqq",                      10956,  "\xe2\xab\x8c"},
+               {"gacute",                          501,    "\xc7\xb5"},
+               {"VeryThinSpace",                   8202,   "\xe2\x80\x8a"},
+               {"tint",                            8749,   "\xe2\x88\xad"},
+               {"ffr",                             120099, "\xf0\x9d\x94\xa3"},
+               {"kgreen",                          312,    "\xc4\xb8"},
+               {"nis",                             8956,   "\xe2\x8b\xbc"},
+               {"NotRightTriangleBar",             10704,  "\xe2\xa7\x90\xcc\xb8"},
+               {"Eogon",                           280,    "\xc4\x98"},
+               {"lbrke",                           10635,  "\xe2\xa6\x8b"},
+               {"phi",                             966,    "\xcf\x86"},
+               {"notnivc",                         8957,   "\xe2\x8b\xbd"},
+               {"utilde",                          361,    "\xc5\xa9"},
+               {"Fopf",                            120125, "\xf0\x9d\x94\xbd"},
+               {"Vcy",                             1042,   "\xd0\x92"},
+               {"erDot",                           8787,   "\xe2\x89\x93"},
+               {"nsubE",                           10949,  "\xe2\xab\x85\xcc\xb8"},
+               {"egrave",                          232,    "\xc3\xa8"},
+               {"Lcedil",                          315,    "\xc4\xbb"},
+               {"lharul",                          10602,  "\xe2\xa5\xaa"},
+               {"middot",                          183,    "\xc2\xb7"},
+               {"ggg",                             8921,   "\xe2\x8b\x99"},
+               {"NestedLessLess",                  8810,   "\xe2\x89\xaa"},
+               {"tau",                             964,    "\xcf\x84"},
+               {"setmn",                           8726,   "\xe2\x88\x96"},
+               {"frac78",                          8542,   "\xe2\x85\x9e"},
+               {"para",                            182,    "\xc2\xb6"},
+               {"Rcedil",                          342,    "\xc5\x96"},
+               {"propto",                          8733,   "\xe2\x88\x9d"},
+               {"sqsubset",                        8847,   "\xe2\x8a\x8f"},
+               {"ensp",                            8194,   "\xe2\x80\x82"},
+               {"boxvH",                           9578,   "\xe2\x95\xaa"},
+               {"NotGreaterTilde",                 8821,   "\xe2\x89\xb5"},
+               {"ffllig",                          64260,  "\xef\xac\x84"},
+               {"kcedil",                          311,    "\xc4\xb7"},
+               {"omega",                           969,    "\xcf\x89"},
+               {"sime",                            8771,   "\xe2\x89\x83"},
+               {"LeftTriangleEqual",               8884,   "\xe2\x8a\xb4"},
+               {"bsemi",                           8271,   "\xe2\x81\x8f"},
+               {"rdquor",                          8221,   "\xe2\x80\x9d"},
+               {"Utilde",                          360,    "\xc5\xa8"},
+               {"bsol",                            92,     "\x5c"},
+               {"risingdotseq",                    8787,   "\xe2\x89\x93"},
+               {"ultri",                           9720,   "\xe2\x97\xb8"},
+               {"rhov",                            1009,   "\xcf\xb1"},
+               {"TildeEqual",                      8771,   "\xe2\x89\x83"},
+               {"jukcy",                           1108,   "\xd1\x94"},
+               {"perp",                            8869,   "\xe2\x8a\xa5"},
+               {"capbrcup",                        10825,  "\xe2\xa9\x89"},
+               {"ltrie",                           8884,   "\xe2\x8a\xb4"},
+               {"LessTilde",                       8818,   "\xe2\x89\xb2"},
+               {"popf",                            120161, "\xf0\x9d\x95\xa1"},
+               {"dbkarow",                         10511,  "\xe2\xa4\x8f"},
+               {"roang",                           10221,  "\xe2\x9f\xad"},
+               {"brvbar",                          166,    "\xc2\xa6"},
+               {"CenterDot",                       183,    "\xc2\xb7"},
+               {"notindot",                        8949,   "\xe2\x8b\xb5\xcc\xb8"},
+               {"supmult",                         10946,  "\xe2\xab\x82"},
+               {"multimap",                        8888,   "\xe2\x8a\xb8"},
+               {"frac34",                          190,    "\xc2\xbe"},
+               {"mapsto",                          8614,   "\xe2\x86\xa6"},
+               {"flat",                            9837,   "\xe2\x99\xad"},
+               {"updownarrow",                     8597,   "\xe2\x86\x95"},
+               {"gne",                             10888,  "\xe2\xaa\x88"},
+               {"nrarrc",                          10547,  "\xe2\xa4\xb3\xcc\xb8"},
+               {"suphsol",                         10185,  "\xe2\x9f\x89"},
+               {"nGtv",                            8811,   "\xe2\x89\xab\xcc\xb8"},
+               {"hopf",                            120153, "\xf0\x9d\x95\x99"},
+               {"pointint",                        10773,  "\xe2\xa8\x95"},
+               {"glj",                             10916,  "\xe2\xaa\xa4"},
+               {"LeftDoubleBracket",               10214,  "\xe2\x9f\xa6"},
+               {"NotSupersetEqual",                8841,   "\xe2\x8a\x89"},
+               {"dot",                             729,    "\xcb\x99"},
+               {"tbrk",                            9140,   "\xe2\x8e\xb4"},
+               {"LeftUpDownVector",                10577,  "\xe2\xa5\x91"},
+               {"uml",                             168,    "\xc2\xa8"},
+               {"bbrk",                            9141,   "\xe2\x8e\xb5"},
+               {"nearrow",                         8599,   "\xe2\x86\x97"},
+               {"backsimeq",                       8909,   "\xe2\x8b\x8d"},
+               {"dblac",                           733,    "\xcb\x9d"},
+               {"circleddash",                     8861,   "\xe2\x8a\x9d"},
+               {"ldsh",                            8626,   "\xe2\x86\xb2"},
+               {"sce",                             10928,  "\xe2\xaa\xb0"},
+               {"angst",                           197,    "\xc3\x85"},
+               {"yen",                             165,    "\xc2\xa5"},
+               {"nsupE",                           10950,  "\xe2\xab\x86\xcc\xb8"},
+               {"Uscr",                            119984, "\xf0\x9d\x92\xb0"},
+               {"subplus",                         10943,  "\xe2\xaa\xbf"},
+               {"nleqq",                           8806,   "\xe2\x89\xa6\xcc\xb8"},
+               {"nprcue",                          8928,   "\xe2\x8b\xa0"},
+               {"Ocirc",                           212,    "\xc3\x94"},
+               {"disin",                           8946,   "\xe2\x8b\xb2"},
+               {"EqualTilde",                      8770,   "\xe2\x89\x82"},
+               {"YUcy",                            1070,   "\xd0\xae"},
+               {"Kscr",                            119974, "\xf0\x9d\x92\xa6"},
+               {"lg",                              8822,   "\xe2\x89\xb6"},
+               {"nLeftrightarrow",                 8654,   "\xe2\x87\x8e"},
+               {"eplus",                           10865,  "\xe2\xa9\xb1"},
+               {"les",                             10877,  "\xe2\xa9\xbd"},
+               {"sfr",                             120112, "\xf0\x9d\x94\xb0"},
+               {"HumpDownHump",                    8782,   "\xe2\x89\x8e"},
+               {"Fouriertrf",                      8497,   "\xe2\x84\xb1"},
+               {"Updownarrow",                     8661,   "\xe2\x87\x95"},
+               {"nrarr",                           8603,   "\xe2\x86\x9b"},
+               {"radic",                           8730,   "\xe2\x88\x9a"},
+               {"gnap",                            10890,  "\xe2\xaa\x8a"},
+               {"zeta",                            950,    "\xce\xb6"},
+               {"Qscr",                            119980, "\xf0\x9d\x92\xac"},
+               {"NotRightTriangleEqual",           8941,   "\xe2\x8b\xad"},
+               {"nshortmid",                       8740,   "\xe2\x88\xa4"},
+               {"SHCHcy",                          1065,   "\xd0\xa9"},
+               {"piv",                             982,    "\xcf\x96"},
+               {"angmsdaa",                        10664,  "\xe2\xa6\xa8"},
+               {"curlywedge",                      8911,   "\xe2\x8b\x8f"},
+               {"sqcaps",                          8851,   "\xe2\x8a\x93\xef\xb8\x80"},
+               {"sum",                             8721,   "\xe2\x88\x91"},
+               {"rarrtl",                          8611,   "\xe2\x86\xa3"},
+               {"gescc",                           10921,  "\xe2\xaa\xa9"},
+               {"sup",                             8835,   "\xe2\x8a\x83"},
+               {"smid",                            8739,   "\xe2\x88\xa3"},
+               {"cularr",                          8630,   "\xe2\x86\xb6"},
+               {"olcross",                         10683,  "\xe2\xa6\xbb"},
+               {"GT",                              62,     "\x3e"},
+               {"scap",                            10936,  "\xe2\xaa\xb8"},
+               {"capcup",                          10823,  "\xe2\xa9\x87"},
+               {"NotSquareSubsetEqual",            8930,   "\xe2\x8b\xa2"},
+               {"uhblk",                           9600,   "\xe2\x96\x80"},
+               {"latail",                          10521,  "\xe2\xa4\x99"},
+               {"smtes",                           10924,  "\xe2\xaa\xac\xef\xb8\x80"},
+               {"RoundImplies",                    10608,  "\xe2\xa5\xb0"},
+               {"wreath",                          8768,   "\xe2\x89\x80"},
+               {"curlyvee",                        8910,   "\xe2\x8b\x8e"},
+               {"uscr",                            120010, "\xf0\x9d\x93\x8a"},
+               {"nleftrightarrow",                 8622,   "\xe2\x86\xae"},
+               {"ucy",                             1091,   "\xd1\x83"},
+               {"nvge",                            8805,   "\xe2\x89\xa5\xe2\x83\x92"},
+               {"bnot",                            8976,   "\xe2\x8c\x90"},
+               {"alefsym",                         8501,   "\xe2\x84\xb5"},
+               {"star",                            9734,   "\xe2\x98\x86"},
+               {"boxHd",                           9572,   "\xe2\x95\xa4"},
+               {"vsubnE",                          10955,  "\xe2\xab\x8b\xef\xb8\x80"},
+               {"Popf",                            8473,   "\xe2\x84\x99"},
+               {"simgE",                           10912,  "\xe2\xaa\xa0"},
+               {"upsilon",                         965,    "\xcf\x85"},
+               {"NoBreak",                         8288,   "\xe2\x81\xa0"},
+               {"realine",                         8475,   "\xe2\x84\x9b"},
+               {"frac38",                          8540,   "\xe2\x85\x9c"},
+               {"YAcy",                            1071,   "\xd0\xaf"},
+               {"bnequiv",                         8801,   "\xe2\x89\xa1\xe2\x83\xa5"},
+               {"cudarrr",                         10549,  "\xe2\xa4\xb5"},
+               {"lsime",                           10893,  "\xe2\xaa\x8d"},
+               {"lowbar",                          95,     "\x5f"},
+               {"utdot",                           8944,   "\xe2\x8b\xb0"},
+               {"ReverseElement",                  8715,   "\xe2\x88\x8b"},
+               {"nshortparallel",                  8742,   "\xe2\x88\xa6"},
+               {"DJcy",                            1026,   "\xd0\x82"},
+               {"nsube",                           8840,   "\xe2\x8a\x88"},
+               {"VDash",                           8875,   "\xe2\x8a\xab"},
+               {"Ncaron",                          327,    "\xc5\x87"},
+               {"LeftUpVector",                    8639,   "\xe2\x86\xbf"},
+               {"Kcy",                             1050,   "\xd0\x9a"},
+               {"NotLeftTriangleEqual",            8940,   "\xe2\x8b\xac"},
+               {"nvHarr",                          10500,  "\xe2\xa4\x84"},
+               {"lotimes",                         10804,  "\xe2\xa8\xb4"},
+               {"RightFloor",                      8971,   "\xe2\x8c\x8b"},
+               {"succ",                            8827,   "\xe2\x89\xbb"},
+               {"Ucy",                             1059,   "\xd0\xa3"},
+               {"darr",                            8595,   "\xe2\x86\x93"},
+               {"lbarr",                           10508,  "\xe2\xa4\x8c"},
+               {"xfr",                             120117, "\xf0\x9d\x94\xb5"},
+               {"zopf",                            120171, "\xf0\x9d\x95\xab"},
+               {"Phi",                             934,    "\xce\xa6"},
+               {"ord",                             10845,  "\xe2\xa9\x9d"},
+               {"iinfin",                          10716,  "\xe2\xa7\x9c"},
+               {"Xfr",                             120091, "\xf0\x9d\x94\x9b"},
+               {"qint",                            10764,  "\xe2\xa8\x8c"},
+               {"Upsilon",                         933,    "\xce\xa5"},
+               {"NotSubset",                       8834,   "\xe2\x8a\x82\xe2\x83\x92"},
+               {"gfr",                             120100, "\xf0\x9d\x94\xa4"},
+               {"notnivb",                         8958,   "\xe2\x8b\xbe"},
+               {"Afr",                             120068, "\xf0\x9d\x94\x84"},
+               {"ge",                              8805,   "\xe2\x89\xa5"},
+               {"iexcl",                           161,    "\xc2\xa1"},
+               {"dfr",                             120097, "\xf0\x9d\x94\xa1"},
+               {"rsaquo",                          8250,   "\xe2\x80\xba"},
+               {"xcap",                            8898,   "\xe2\x8b\x82"},
+               {"Jopf",                            120129, "\xf0\x9d\x95\x81"},
+               {"Hstrok",                          294,    "\xc4\xa6"},
+               {"ldca",                            10550,  "\xe2\xa4\xb6"},
+               {"lmoust",                          9136,   "\xe2\x8e\xb0"},
+               {"wcirc",                           373,    "\xc5\xb5"},
+               {"DownRightVector",                 8641,   "\xe2\x87\x81"},
+               {"LessFullEqual",                   8806,   "\xe2\x89\xa6"},
+               {"dotsquare",                       8865,   "\xe2\x8a\xa1"},
+               {"zhcy",                            1078,   "\xd0\xb6"},
+               {"mDDot",                           8762,   "\xe2\x88\xba"},
+               {"Prime",                           8243,   "\xe2\x80\xb3"},
+               {"prec",                            8826,   "\xe2\x89\xba"},
+               {"swnwar",                          10538,  "\xe2\xa4\xaa"},
+               {"COPY",                            169,    "\xc2\xa9"},
+               {"cong",                            8773,   "\xe2\x89\x85"},
+               {"sacute",                          347,    "\xc5\x9b"},
+               {"Nopf",                            8469,   "\xe2\x84\x95"},
+               {"it",                              8290,   "\xe2\x81\xa2"},
+               {"SOFTcy",                          1068,   "\xd0\xac"},
+               {"uuarr",                           8648,   "\xe2\x87\x88"},
+               {"iota",                            953,    "\xce\xb9"},
+               {"notinE",                          8953,   "\xe2\x8b\xb9\xcc\xb8"},
+               {"jfr",                             120103, "\xf0\x9d\x94\xa7"},
+               {"QUOT",                            34,     "\x22"},
+               {"vsupnE",                          10956,  "\xe2\xab\x8c\xef\xb8\x80"},
+               {"igrave",                          236,    "\xc3\xac"},
+               {"bsim",                            8765,   "\xe2\x88\xbd"},
+               {"npreceq",                         10927,  "\xe2\xaa\xaf\xcc\xb8"},
+               {"zcaron",                          382,    "\xc5\xbe"},
+               {"DD",                              8517,   "\xe2\x85\x85"},
+               {"gamma",                           947,    "\xce\xb3"},
+               {"homtht",                          8763,   "\xe2\x88\xbb"},
+               {"NonBreakingSpace",                160,    "\xc2\xa0"},
+               {"Proportion",                      8759,   "\xe2\x88\xb7"},
+               {"nedot",                           8784,   "\xe2\x89\x90\xcc\xb8"},
+               {"nabla",                           8711,   "\xe2\x88\x87"},
+               {"ac",                              8766,   "\xe2\x88\xbe"},
+               {"nsupe",                           8841,   "\xe2\x8a\x89"},
+               {"ell",                             8467,   "\xe2\x84\x93"},
+               {"boxvR",                           9566,   "\xe2\x95\x9e"},
+               {"LowerRightArrow",                 8600,   "\xe2\x86\x98"},
+               {"boxHu",                           9575,   "\xe2\x95\xa7"},
+               {"lE",                              8806,   "\xe2\x89\xa6"},
+               {"dzigrarr",                        10239,  "\xe2\x9f\xbf"},
+               {"rfloor",                          8971,   "\xe2\x8c\x8b"},
+               {"gneq",                            10888,  "\xe2\xaa\x88"},
+               {"rightleftharpoons",               8652,   "\xe2\x87\x8c"},
+               {"gtquest",                         10876,  "\xe2\xa9\xbc"},
+               {"searhk",                          10533,  "\xe2\xa4\xa5"},
+               {"gesdoto",                         10882,  "\xe2\xaa\x82"},
+               {"cross",                           10007,  "\xe2\x9c\x97"},
+               {"rdquo",                           8221,   "\xe2\x80\x9d"},
+               {"sqsupset",                        8848,   "\xe2\x8a\x90"},
+               {"divonx",                          8903,   "\xe2\x8b\x87"},
+               {"lat",                             10923,  "\xe2\xaa\xab"},
+               {"rmoustache",                      9137,   "\xe2\x8e\xb1"},
+               {"succapprox",                      10936,  "\xe2\xaa\xb8"},
+               {"nhpar",                           10994,  "\xe2\xab\xb2"},
+               {"sharp",                           9839,   "\xe2\x99\xaf"},
+               {"lrcorner",                        8991,   "\xe2\x8c\x9f"},
+               {"Vscr",                            119985, "\xf0\x9d\x92\xb1"},
+               {"varsigma",                        962,    "\xcf\x82"},
+               {"bsolb",                           10693,  "\xe2\xa7\x85"},
+               {"cupcap",                          10822,  "\xe2\xa9\x86"},
+               {"leftrightarrow",                  8596,   "\xe2\x86\x94"},
+               {"LeftTee",                         8867,   "\xe2\x8a\xa3"},
+               {"Sqrt",                            8730,   "\xe2\x88\x9a"},
+               {"Odblac",                          336,    "\xc5\x90"},
+               {"ocir",                            8858,   "\xe2\x8a\x9a"},
+               {"eqslantless",                     10901,  "\xe2\xaa\x95"},
+               {"supedot",                         10948,  "\xe2\xab\x84"},
+               {"intercal",                        8890,   "\xe2\x8a\xba"},
+               {"Gbreve",                          286,    "\xc4\x9e"},
+               {"xrArr",                           10233,  "\xe2\x9f\xb9"},
+               {"NotTildeEqual",                   8772,   "\xe2\x89\x84"},
+               {"Bfr",                             120069, "\xf0\x9d\x94\x85"},
+               {"Iuml",                            207,    "\xc3\x8f"},
+               {"leg",                             8922,   "\xe2\x8b\x9a"},
+               {"boxhU",                           9576,   "\xe2\x95\xa8"},
+               {"Gopf",                            120126, "\xf0\x9d\x94\xbe"},
+               {"af",                              8289,   "\xe2\x81\xa1"},
+               {"xwedge",                          8896,   "\xe2\x8b\x80"},
+               {"precapprox",                      10935,  "\xe2\xaa\xb7"},
+               {"lcedil",                          316,    "\xc4\xbc"},
+               {"between",                         8812,   "\xe2\x89\xac"},
+               {"Oslash",                          216,    "\xc3\x98"},
+               {"breve",                           728,    "\xcb\x98"},
+               {"caps",                            8745,   "\xe2\x88\xa9\xef\xb8\x80"},
+               {"vangrt",                          10652,  "\xe2\xa6\x9c"},
+               {"lagran",                          8466,   "\xe2\x84\x92"},
+               {"kopf",                            120156, "\xf0\x9d\x95\x9c"},
+               {"ReverseUpEquilibrium",            10607,  "\xe2\xa5\xaf"},
+               {"nlsim",                           8820,   "\xe2\x89\xb4"},
+               {"Cap",                             8914,   "\xe2\x8b\x92"},
+               {"angmsdac",                        10666,  "\xe2\xa6\xaa"},
+               {"iocy",                            1105,   "\xd1\x91"},
+               {"seswar",                          10537,  "\xe2\xa4\xa9"},
+               {"dzcy",                            1119,   "\xd1\x9f"},
+               {"nsubset",                         8834,   "\xe2\x8a\x82\xe2\x83\x92"},
+               {"cup",                             8746,   "\xe2\x88\xaa"},
+               {"npar",                            8742,   "\xe2\x88\xa6"},
+               {"late",                            10925,  "\xe2\xaa\xad"},
+               {"plussim",                         10790,  "\xe2\xa8\xa6"},
+               {"Darr",                            8609,   "\xe2\x86\xa1"},
+               {"nexist",                          8708,   "\xe2\x88\x84"},
+               {"cent",                            162,    "\xc2\xa2"},
+               {"khcy",                            1093,   "\xd1\x85"},
+               {"smallsetminus",                   8726,   "\xe2\x88\x96"},
+               {"ycirc",                           375,    "\xc5\xb7"},
+               {"lharu",                           8636,   "\xe2\x86\xbc"},
+               {"upuparrows",                      8648,   "\xe2\x87\x88"},
+               {"sigmaf",                          962,    "\xcf\x82"},
+               {"nltri",                           8938,   "\xe2\x8b\xaa"},
+               {"mstpos",                          8766,   "\xe2\x88\xbe"},
+               {"Zopf",                            8484,   "\xe2\x84\xa4"},
+               {"dwangle",                         10662,  "\xe2\xa6\xa6"},
+               {"bowtie",                          8904,   "\xe2\x8b\x88"},
+               {"Dfr",                             120071, "\xf0\x9d\x94\x87"},
+               {"iacute",                          237,    "\xc3\xad"},
+               {"njcy",                            1114,   "\xd1\x9a"},
+               {"cfr",                             120096, "\xf0\x9d\x94\xa0"},
+               {"TripleDot",                       8411,   "\xe2\x83\x9b"},
+               {"Or",                              10836,  "\xe2\xa9\x94"},
+               {"blk34",                           9619,   "\xe2\x96\x93"},
+               {"equiv",                           8801,   "\xe2\x89\xa1"},
+               {"fflig",                           64256,  "\xef\xac\x80"},
+               {"Rang",                            10219,  "\xe2\x9f\xab"},
+               {"Wopf",                            120142, "\xf0\x9d\x95\x8e"},
+               {"boxUl",                           9564,   "\xe2\x95\x9c"},
+               {"frac12",                          189,    "\xc2\xbd"},
+               {"clubs",                           9827,   "\xe2\x99\xa3"},
+               {"amalg",                           10815,  "\xe2\xa8\xbf"},
+               {"Lang",                            10218,  "\xe2\x9f\xaa"},
+               {"asymp",                           8776,   "\xe2\x89\x88"},
+               {"models",                          8871,   "\xe2\x8a\xa7"},
+               {"emptyset",                        8709,   "\xe2\x88\x85"},
+               {"Tscr",                            119983, "\xf0\x9d\x92\xaf"},
+               {"nleftarrow",                      8602,   "\xe2\x86\x9a"},
+               {"Omacr",                           332,    "\xc5\x8c"},
+               {"gtrarr",                          10616,  "\xe2\xa5\xb8"},
+               {"excl",                            33,     "\x21"},
+               {"rarrw",                           8605,   "\xe2\x86\x9d"},
+               {"abreve",                          259,    "\xc4\x83"},
+               {"CircleTimes",                     8855,   "\xe2\x8a\x97"},
+               {"aopf",                            120146, "\xf0\x9d\x95\x92"},
+               {"eqvparsl",                        10725,  "\xe2\xa7\xa5"},
+               {"boxv",                            9474,   "\xe2\x94\x82"},
+               {"SuchThat",                        8715,   "\xe2\x88\x8b"},
+               {"varphi",                          981,    "\xcf\x95"},
+               {"Ropf",                            8477,   "\xe2\x84\x9d"},
+               {"rscr",                            120007, "\xf0\x9d\x93\x87"},
+               {"Rrightarrow",                     8667,   "\xe2\x87\x9b"},
+               {"equest",                          8799,   "\xe2\x89\x9f"},
+               {"ntilde",                          241,    "\xc3\xb1"},
+               {"Escr",                            8496,   "\xe2\x84\xb0"},
+               {"Lopf",                            120131, "\xf0\x9d\x95\x83"},
+               {"GreaterGreater",                  10914,  "\xe2\xaa\xa2"},
+               {"pluscir",                         10786,  "\xe2\xa8\xa2"},
+               {"nsupset",                         8835,   "\xe2\x8a\x83\xe2\x83\x92"},
+               {"uArr",                            8657,   "\xe2\x87\x91"},
+               {"nwarhk",                          10531,  "\xe2\xa4\xa3"},
+               {"Ycirc",                           374,    "\xc5\xb6"},
+               {"tdot",                            8411,   "\xe2\x83\x9b"},
+               {"circledS",                        9416,   "\xe2\x93\x88"},
+               {"lhard",                           8637,   "\xe2\x86\xbd"},
+               {"iukcy",                           1110,   "\xd1\x96"},
+               {"PrecedesSlantEqual",              8828,   "\xe2\x89\xbc"},
+               {"Sfr",                             120086, "\xf0\x9d\x94\x96"},
+               {"egs",                             10902,  "\xe2\xaa\x96"},
+               {"oelig",                           339,    "\xc5\x93"},
+               {"bigtriangledown",                 9661,   "\xe2\x96\xbd"},
+               {"EmptyVerySmallSquare",            9643,   "\xe2\x96\xab"},
+               {"Backslash",                       8726,   "\xe2\x88\x96"},
+               {"nscr",                            120003, "\xf0\x9d\x93\x83"},
+               {"uogon",                           371,    "\xc5\xb3"},
+               {"circeq",                          8791,   "\xe2\x89\x97"},
+               {"check",                           10003,  "\xe2\x9c\x93"},
+               {"Sup",                             8913,   "\xe2\x8b\x91"},
+               {"Rcaron",                          344,    "\xc5\x98"},
+               {"lneqq",                           8808,   "\xe2\x89\xa8"},
+               {"lrhar",                           8651,   "\xe2\x87\x8b"},
+               {"ulcorn",                          8988,   "\xe2\x8c\x9c"},
+               {"timesd",                          10800,  "\xe2\xa8\xb0"},
+               {"Sum",                             8721,   "\xe2\x88\x91"},
+               {"varpropto",                       8733,   "\xe2\x88\x9d"},
+               {"Lcaron",                          317,    "\xc4\xbd"},
+               {"lbrkslu",                         10637,  "\xe2\xa6\x8d"},
+               {"AElig",                           198,    "\xc3\x86"},
+               {"varr",                            8597,   "\xe2\x86\x95"},
+               {"nvinfin",                         10718,  "\xe2\xa7\x9e"},
+               {"leq",                             8804,   "\xe2\x89\xa4"},
+               {"biguplus",                        10756,  "\xe2\xa8\x84"},
+               {"rpar",                            41,     "\x29"},
+               {"eng",                             331,    "\xc5\x8b"},
+               {"NegativeThinSpace",               8203,   "\xe2\x80\x8b"},
+               {"lesssim",                         8818,   "\xe2\x89\xb2"},
+               {"lBarr",                           10510,  "\xe2\xa4\x8e"},
+               {"LeftUpTeeVector",                 10592,  "\xe2\xa5\xa0"},
+               {"gnE",                             8809,   "\xe2\x89\xa9"},
+               {"efr",                             120098, "\xf0\x9d\x94\xa2"},
+               {"barvee",                          8893,   "\xe2\x8a\xbd"},
+               {"ee",                              8519,   "\xe2\x85\x87"},
+               {"Uogon",                           370,    "\xc5\xb2"},
+               {"gnapprox",                        10890,  "\xe2\xaa\x8a"},
+               {"olcir",                           10686,  "\xe2\xa6\xbe"},
+               {"boxUL",                           9565,   "\xe2\x95\x9d"},
+               {"Gg",                              8921,   "\xe2\x8b\x99"},
+               {"CloseCurlyQuote",                 8217,   "\xe2\x80\x99"},
+               {"leftharpoondown",                 8637,   "\xe2\x86\xbd"},
+               {"vfr",                             120115, "\xf0\x9d\x94\xb3"},
+               {"gvertneqq",                       8809,   "\xe2\x89\xa9\xef\xb8\x80"},
+               {"ouml",                            246,    "\xc3\xb6"},
+               {"raemptyv",                        10675,  "\xe2\xa6\xb3"},
+               {"Zcaron",                          381,    "\xc5\xbd"},
+               {"scE",                             10932,  "\xe2\xaa\xb4"},
+               {"boxvh",                           9532,   "\xe2\x94\xbc"},
+               {"ominus",                          8854,   "\xe2\x8a\x96"},
+               {"oopf",                            120160, "\xf0\x9d\x95\xa0"},
+               {"nsucceq",                         10928,  "\xe2\xaa\xb0\xcc\xb8"},
+               {"RBarr",                           10512,  "\xe2\xa4\x90"},
+               {"iprod",                           10812,  "\xe2\xa8\xbc"},
+               {"lvnE",                            8808,   "\xe2\x89\xa8\xef\xb8\x80"},
+               {"andand",                          10837,  "\xe2\xa9\x95"},
+               {"upharpoonright",                  8638,   "\xe2\x86\xbe"},
+               {"ncongdot",                        10861,  "\xe2\xa9\xad\xcc\xb8"},
+               {"drcrop",                          8972,   "\xe2\x8c\x8c"},
+               {"nsimeq",                          8772,   "\xe2\x89\x84"},
+               {"subsub",                          10965,  "\xe2\xab\x95"},
+               {"hardcy",                          1098,   "\xd1\x8a"},
+               {"leqslant",                        10877,  "\xe2\xa9\xbd"},
+               {"uharl",                           8639,   "\xe2\x86\xbf"},
+               {"expectation",                     8496,   "\xe2\x84\xb0"},
+               {"mdash",                           8212,   "\xe2\x80\x94"},
+               {"VerticalTilde",                   8768,   "\xe2\x89\x80"},
+               {"rdldhar",                         10601,  "\xe2\xa5\xa9"},
+               {"leftharpoonup",                   8636,   "\xe2\x86\xbc"},
+               {"mu",                              956,    "\xce\xbc"},
+               {"curarrm",                         10556,  "\xe2\xa4\xbc"},
+               {"Cdot",                            266,    "\xc4\x8a"},
+               {"NotTildeTilde",                   8777,   "\xe2\x89\x89"},
+               {"boxul",                           9496,   "\xe2\x94\x98"},
+               {"planckh",                         8462,   "\xe2\x84\x8e"},
+               {"CapitalDifferentialD",            8517,   "\xe2\x85\x85"},
+               {"boxDL",                           9559,   "\xe2\x95\x97"},
+               {"cupbrcap",                        10824,  "\xe2\xa9\x88"},
+               {"boxdL",                           9557,   "\xe2\x95\x95"},
+               {"supe",                            8839,   "\xe2\x8a\x87"},
+               {"nvlt",                            60,     "\x3c\xe2\x83\x92"},
+               {"par",                             8741,   "\xe2\x88\xa5"},
+               {"InvisibleComma",                  8291,   "\xe2\x81\xa3"},
+               {"ring",                            730,    "\xcb\x9a"},
+               {"nvap",                            8781,   "\xe2\x89\x8d\xe2\x83\x92"},
+               {"veeeq",                           8794,   "\xe2\x89\x9a"},
+               {"Hfr",                             8460,   "\xe2\x84\x8c"},
+               {"dstrok",                          273,    "\xc4\x91"},
+               {"gesles",                          10900,  "\xe2\xaa\x94"},
+               {"dash",                            8208,   "\xe2\x80\x90"},
+               {"SHcy",                            1064,   "\xd0\xa8"},
+               {"congdot",                         10861,  "\xe2\xa9\xad"},
+               {"imagline",                        8464,   "\xe2\x84\x90"},
+               {"ncy",                             1085,   "\xd0\xbd"},
+               {"bigstar",                         9733,   "\xe2\x98\x85"},
+               {"REG",                             174,    "\xc2\xae"},
+               {"triangleq",                       8796,   "\xe2\x89\x9c"},
+               {"rsqb",                            93,     "\x5d"},
+               {"ddarr",                           8650,   "\xe2\x87\x8a"},
+               {"csub",                            10959,  "\xe2\xab\x8f"},
+               {"quest",                           63,     "\x3f"},
+               {"Star",                            8902,   "\xe2\x8b\x86"},
+               {"LT",                              60,     "\x3c"},
+               {"ncong",                           8775,   "\xe2\x89\x87"},
+               {"prnE",                            10933,  "\xe2\xaa\xb5"},
+               {"bigtriangleup",                   9651,   "\xe2\x96\xb3"},
+               {"Tilde",                           8764,   "\xe2\x88\xbc"},
+               {"ltrif",                           9666,   "\xe2\x97\x82"},
+               {"ldrdhar",                         10599,  "\xe2\xa5\xa7"},
+               {"lcaron",                          318,    "\xc4\xbe"},
+               {"equivDD",                         10872,  "\xe2\xa9\xb8"},
+               {"lHar",                            10594,  "\xe2\xa5\xa2"},
+               {"vBar",                            10984,  "\xe2\xab\xa8"},
+               {"Mopf",                            120132, "\xf0\x9d\x95\x84"},
+               {"LeftArrow",                       8592,   "\xe2\x86\x90"},
+               {"Rho",                             929,    "\xce\xa1"},
+               {"Ccirc",                           264,    "\xc4\x88"},
+               {"ifr",                             120102, "\xf0\x9d\x94\xa6"},
+               {"cacute",                          263,    "\xc4\x87"},
+               {"centerdot",                       183,    "\xc2\xb7"},
+               {"dollar",                          36,     "\x24"},
+               {"lang",                            10216,  "\xe2\x9f\xa8"},
+               {"curvearrowright",                 8631,   "\xe2\x86\xb7"},
+               {"half",                            189,    "\xc2\xbd"},
+               {"Ecy",                             1069,   "\xd0\xad"},
+               {"rcub",                            125,    "\x7d"},
+               {"rcy",                             1088,   "\xd1\x80"},
+               {"isins",                           8948,   "\xe2\x8b\xb4"},
+               {"bsolhsub",                        10184,  "\xe2\x9f\x88"},
+               {"boxuL",                           9563,   "\xe2\x95\x9b"},
+               {"shchcy",                          1097,   "\xd1\x89"},
+               {"cwconint",                        8754,   "\xe2\x88\xb2"},
+               {"euro",                            8364,   "\xe2\x82\xac"},
+               {"lesseqqgtr",                      10891,  "\xe2\xaa\x8b"},
+               {"sim",                             8764,   "\xe2\x88\xbc"},
+               {"rarrc",                           10547,  "\xe2\xa4\xb3"},
+               {"boxdl",                           9488,   "\xe2\x94\x90"},
+               {"Epsilon",                         917,    "\xce\x95"},
+               {"iiiint",                          10764,  "\xe2\xa8\x8c"},
+               {"Rightarrow",                      8658,   "\xe2\x87\x92"},
+               {"conint",                          8750,   "\xe2\x88\xae"},
+               {"boxDl",                           9558,   "\xe2\x95\x96"},
+               {"kappav",                          1008,   "\xcf\xb0"},
+               {"profsurf",                        8979,   "\xe2\x8c\x93"},
+               {"auml",                            228,    "\xc3\xa4"},
+               {"heartsuit",                       9829,   "\xe2\x99\xa5"},
+               {"eacute",                          233,    "\xc3\xa9"},
+               {"gt",                              62,     "\x3e"},
+               {"Gcedil",                          290,    "\xc4\xa2"},
+               {"easter",                          10862,  "\xe2\xa9\xae"},
+               {"Tcy",                             1058,   "\xd0\xa2"},
+               {"swarrow",                         8601,   "\xe2\x86\x99"},
+               {"lopf",                            120157, "\xf0\x9d\x95\x9d"},
+               {"Agrave",                          192,    "\xc3\x80"},
+               {"Aring",                           197,    "\xc3\x85"},
+               {"fpartint",                        10765,  "\xe2\xa8\x8d"},
+               {"xoplus",                          10753,  "\xe2\xa8\x81"},
+               {"LeftDownTeeVector",               10593,  "\xe2\xa5\xa1"},
+               {"int",                             8747,   "\xe2\x88\xab"},
+               {"Zeta",                            918,    "\xce\x96"},
+               {"loz",                             9674,   "\xe2\x97\x8a"},
+               {"ncup",                            10818,  "\xe2\xa9\x82"},
+               {"napE",                            10864,  "\xe2\xa9\xb0\xcc\xb8"},
+               {"csup",                            10960,  "\xe2\xab\x90"},
+               {"Ncedil",                          325,    "\xc5\x85"},
+               {"cuwed",                           8911,   "\xe2\x8b\x8f"},
+               {"Dot",                             168,    "\xc2\xa8"},
+               {"SquareIntersection",              8851,   "\xe2\x8a\x93"},
+               {"map",                             8614,   "\xe2\x86\xa6"},
+               {"aelig",                           230,    "\xc3\xa6"},
+               {"RightArrow",                      8594,   "\xe2\x86\x92"},
+               {"rightharpoondown",                8641,   "\xe2\x87\x81"},
+               {"bNot",                            10989,  "\xe2\xab\xad"},
+               {"nsccue",                          8929,   "\xe2\x8b\xa1"},
+               {"zigrarr",                         8669,   "\xe2\x87\x9d"},
+               {"Sacute",                          346,    "\xc5\x9a"},
+               {"orv",                             10843,  "\xe2\xa9\x9b"},
+               {"RightVectorBar",                  10579,  "\xe2\xa5\x93"},
+               {"nrarrw",                          8605,   "\xe2\x86\x9d\xcc\xb8"},
+               {"nbump",                           8782,   "\xe2\x89\x8e\xcc\xb8"},
+               {"iquest",                          191,    "\xc2\xbf"},
+               {"wr",                              8768,   "\xe2\x89\x80"},
+               {"UpArrow",                         8593,   "\xe2\x86\x91"},
+               {"notinva",                         8713,   "\xe2\x88\x89"},
+               {"ddagger",                         8225,   "\xe2\x80\xa1"},
+               {"nLeftarrow",                      8653,   "\xe2\x87\x8d"},
+               {"rbbrk",                           10099,  "\xe2\x9d\xb3"},
+               {"RightTriangle",                   8883,   "\xe2\x8a\xb3"},
+               {"leqq",                            8806,   "\xe2\x89\xa6"},
+               {"Vert",                            8214,   "\xe2\x80\x96"},
+               {"gesl",                            8923,   "\xe2\x8b\x9b\xef\xb8\x80"},
+               {"LeftTeeVector",                   10586,  "\xe2\xa5\x9a"},
+               {"Union",                           8899,   "\xe2\x8b\x83"},
+               {"sc",                              8827,   "\xe2\x89\xbb"},
+               {"ofr",                             120108, "\xf0\x9d\x94\xac"},
+               {"quatint",                         10774,  "\xe2\xa8\x96"},
+               {"apacir",                          10863,  "\xe2\xa9\xaf"},
+               {"profalar",                        9006,   "\xe2\x8c\xae"},
+               {"subsetneq",                       8842,   "\xe2\x8a\x8a"},
+               {"Vvdash",                          8874,   "\xe2\x8a\xaa"},
+               {"ohbar",                           10677,  "\xe2\xa6\xb5"},
+               {"Gt",                              8811,   "\xe2\x89\xab"},
+               {"exist",                           8707,   "\xe2\x88\x83"},
+               {"gtrapprox",                       10886,  "\xe2\xaa\x86"},
+               {"euml",                            235,    "\xc3\xab"},
+               {"Equilibrium",                     8652,   "\xe2\x87\x8c"},
+               {"aacute",                          225,    "\xc3\xa1"},
+               {"omid",                            10678,  "\xe2\xa6\xb6"},
+               {"loarr",                           8701,   "\xe2\x87\xbd"},
+               {"SucceedsSlantEqual",              8829,   "\xe2\x89\xbd"},
+               {"angsph",                          8738,   "\xe2\x88\xa2"},
+               {"nsmid",                           8740,   "\xe2\x88\xa4"},
+               {"lsquor",                          8218,   "\xe2\x80\x9a"},
+               {"cemptyv",                         10674,  "\xe2\xa6\xb2"},
+               {"rAarr",                           8667,   "\xe2\x87\x9b"},
+               {"searr",                           8600,   "\xe2\x86\x98"},
+               {"complexes",                       8450,   "\xe2\x84\x82"},
+               {"UnderParenthesis",                9181,   "\xe2\x8f\x9d"},
+               {"nparsl",                          11005,  "\xe2\xab\xbd\xe2\x83\xa5"},
+               {"Lacute",                          313,    "\xc4\xb9"},
+               {"deg",                             176,    "\xc2\xb0"},
+               {"Racute",                          340,    "\xc5\x94"},
+               {"Verbar",                          8214,   "\xe2\x80\x96"},
+               {"sqcups",                          8852,   "\xe2\x8a\x94\xef\xb8\x80"},
+               {"Hopf",                            8461,   "\xe2\x84\x8d"},
+               {"naturals",                        8469,   "\xe2\x84\x95"},
+               {"Cedilla",                         184,    "\xc2\xb8"},
+               {"exponentiale",                    8519,   "\xe2\x85\x87"},
+               {"vnsup",                           8835,   "\xe2\x8a\x83\xe2\x83\x92"},
+               {"leftrightarrows",                 8646,   "\xe2\x87\x86"},
+               {"Laplacetrf",                      8466,   "\xe2\x84\x92"},
+               {"vartriangleright",                8883,   "\xe2\x8a\xb3"},
+               {"rtri",                            9657,   "\xe2\x96\xb9"},
+               {"gE",                              8807,   "\xe2\x89\xa7"},
+               {"SmallCircle",                     8728,   "\xe2\x88\x98"},
+               {"diamondsuit",                     9830,   "\xe2\x99\xa6"},
+               {"Otilde",                          213,    "\xc3\x95"},
+               {"lneq",                            10887,  "\xe2\xaa\x87"},
+               {"lesdoto",                         10881,  "\xe2\xaa\x81"},
+               {"ltquest",                         10875,  "\xe2\xa9\xbb"},
+               {"thinsp",                          8201,   "\xe2\x80\x89"},
+               {"barwed",                          8965,   "\xe2\x8c\x85"},
+               {"elsdot",                          10903,  "\xe2\xaa\x97"},
+               {"circ",                            710,    "\xcb\x86"},
+               {"ni",                              8715,   "\xe2\x88\x8b"},
+               {"mlcp",                            10971,  "\xe2\xab\x9b"},
+               {"Vdash",                           8873,   "\xe2\x8a\xa9"},
+               {"ShortRightArrow",                 8594,   "\xe2\x86\x92"},
+               {"upharpoonleft",                   8639,   "\xe2\x86\xbf"},
+               {"UnderBracket",                    9141,   "\xe2\x8e\xb5"},
+               {"rAtail",                          10524,  "\xe2\xa4\x9c"},
+               {"iopf",                            120154, "\xf0\x9d\x95\x9a"},
+               {"longleftarrow",                   10229,  "\xe2\x9f\xb5"},
+               {"Zacute",                          377,    "\xc5\xb9"},
+               {"duhar",                           10607,  "\xe2\xa5\xaf"},
+               {"Mfr",                             120080, "\xf0\x9d\x94\x90"},
+               {"prnap",                           10937,  "\xe2\xaa\xb9"},
+               {"eqcirc",                          8790,   "\xe2\x89\x96"},
+               {"rarrlp",                          8620,   "\xe2\x86\xac"},
+               {"le",                              8804,   "\xe2\x89\xa4"},
+               {"Oscr",                            119978, "\xf0\x9d\x92\xaa"},
+               {"langd",                           10641,  "\xe2\xa6\x91"},
+               {"Ucirc",                           219,    "\xc3\x9b"},
+               {"precnapprox",                     10937,  "\xe2\xaa\xb9"},
+               {"succcurlyeq",                     8829,   "\xe2\x89\xbd"},
+               {"Tau",                             932,    "\xce\xa4"},
+               {"larr",                            8592,   "\xe2\x86\x90"},
+               {"neArr",                           8663,   "\xe2\x87\x97"},
+               {"subsim",                          10951,  "\xe2\xab\x87"},
+               {"DScy",                            1029,   "\xd0\x85"},
+               {"preccurlyeq",                     8828,   "\xe2\x89\xbc"},
+               {"NotLessLess",                     8810,   "\xe2\x89\xaa\xcc\xb8"},
+               {"succnapprox",                     10938,  "\xe2\xaa\xba"},
+               {"prcue",                           8828,   "\xe2\x89\xbc"},
+               {"Downarrow",                       8659,   "\xe2\x87\x93"},
+               {"angmsdah",                        10671,  "\xe2\xa6\xaf"},
+               {"Emacr",                           274,    "\xc4\x92"},
+               {"lsh",                             8624,   "\xe2\x86\xb0"},
+               {"simne",                           8774,   "\xe2\x89\x86"},
+               {"Bumpeq",                          8782,   "\xe2\x89\x8e"},
+               {"RightUpTeeVector",                10588,  "\xe2\xa5\x9c"},
+               {"Sigma",                           931,    "\xce\xa3"},
+               {"nvltrie",                         8884,   "\xe2\x8a\xb4\xe2\x83\x92"},
+               {"lfr",                             120105, "\xf0\x9d\x94\xa9"},
+               {"emsp13",                          8196,   "\xe2\x80\x84"},
+               {"parsl",                           11005,  "\xe2\xab\xbd"},
+               {"ucirc",                           251,    "\xc3\xbb"},
+               {"gsiml",                           10896,  "\xe2\xaa\x90"},
+               {"xsqcup",                          10758,  "\xe2\xa8\x86"},
+               {"Omicron",                         927,    "\xce\x9f"},
+               {"gsime",                           10894,  "\xe2\xaa\x8e"},
+               {"circlearrowleft",                 8634,   "\xe2\x86\xba"},
+               {"sqsupe",                          8850,   "\xe2\x8a\x92"},
+               {"supE",                            10950,  "\xe2\xab\x86"},
+               {"dlcrop",                          8973,   "\xe2\x8c\x8d"},
+               {"RightDownTeeVector",              10589,  "\xe2\xa5\x9d"},
+               {"Colone",                          10868,  "\xe2\xa9\xb4"},
+               {"awconint",                        8755,   "\xe2\x88\xb3"},
+               {"smte",                            10924,  "\xe2\xaa\xac"},
+               {"lEg",                             10891,  "\xe2\xaa\x8b"},
+               {"circledast",                      8859,   "\xe2\x8a\x9b"},
+               {"ecolon",                          8789,   "\xe2\x89\x95"},
+               {"rect",                            9645,   "\xe2\x96\xad"},
+               {"Equal",                           10869,  "\xe2\xa9\xb5"},
+               {"nwnear",                          10535,  "\xe2\xa4\xa7"},
+               {"capdot",                          10816,  "\xe2\xa9\x80"},
+               {"straightphi",                     981,    "\xcf\x95"},
+               {"forkv",                           10969,  "\xe2\xab\x99"},
+               {"ZHcy",                            1046,   "\xd0\x96"},
+               {"Element",                         8712,   "\xe2\x88\x88"},
+               {"rthree",                          8908,   "\xe2\x8b\x8c"},
+               {"vzigzag",                         10650,  "\xe2\xa6\x9a"},
+               {"hybull",                          8259,   "\xe2\x81\x83"},
+               {"intprod",                         10812,  "\xe2\xa8\xbc"},
+               {"HumpEqual",                       8783,   "\xe2\x89\x8f"},
+               {"bigsqcup",                        10758,  "\xe2\xa8\x86"},
+               {"mp",                              8723,   "\xe2\x88\x93"},
+               {"lescc",                           10920,  "\xe2\xaa\xa8"},
+               {"NotPrecedes",                     8832,   "\xe2\x8a\x80"},
+               {"wedge",                           8743,   "\xe2\x88\xa7"},
+               {"Supset",                          8913,   "\xe2\x8b\x91"},
+               {"pm",                              177,    "\xc2\xb1"},
+               {"kfr",                             120104, "\xf0\x9d\x94\xa8"},
+               {"ufisht",                          10622,  "\xe2\xa5\xbe"},
+               {"ecaron",                          283,    "\xc4\x9b"},
+               {"chcy",                            1095,   "\xd1\x87"},
+               {"Esim",                            10867,  "\xe2\xa9\xb3"},
+               {"fltns",                           9649,   "\xe2\x96\xb1"},
+               {"nsce",                            10928,  "\xe2\xaa\xb0\xcc\xb8"},
+               {"hookrightarrow",                  8618,   "\xe2\x86\xaa"},
+               {"semi",                            59,     "\x3b"},
+               {"ges",                             10878,  "\xe2\xa9\xbe"},
+               {"approxeq",                        8778,   "\xe2\x89\x8a"},
+               {"rarrsim",                         10612,  "\xe2\xa5\xb4"},
+               {"boxhD",                           9573,   "\xe2\x95\xa5"},
+               {"varpi",                           982,    "\xcf\x96"},
+               {"larrb",                           8676,   "\xe2\x87\xa4"},
+               {"copf",                            120148, "\xf0\x9d\x95\x94"},
+               {"Dopf",                            120123, "\xf0\x9d\x94\xbb"},
+               {"LeftVector",                      8636,   "\xe2\x86\xbc"},
+               {"iff",                             8660,   "\xe2\x87\x94"},
+               {"lnap",                            10889,  "\xe2\xaa\x89"},
+               {"NotGreaterFullEqual",             8807,   "\xe2\x89\xa7\xcc\xb8"},
+               {"varrho",                          1009,   "\xcf\xb1"},
+               {"NotSucceeds",                     8833,   "\xe2\x8a\x81"},
+               {"ltrPar",                          10646,  "\xe2\xa6\x96"},
+               {"nlE",                             8806,   "\xe2\x89\xa6\xcc\xb8"},
+               {"Zfr",                             8488,   "\xe2\x84\xa8"},
+               {"LeftArrowBar",                    8676,   "\xe2\x87\xa4"},
+               {"boxplus",                         8862,   "\xe2\x8a\x9e"},
+               {"sqsube",                          8849,   "\xe2\x8a\x91"},
+               {"Re",                              8476,   "\xe2\x84\x9c"},
+               {"Wfr",                             120090, "\xf0\x9d\x94\x9a"},
+               {"epsi",                            949,    "\xce\xb5"},
+               {"oacute",                          243,    "\xc3\xb3"},
+               {"bdquo",                           8222,   "\xe2\x80\x9e"},
+               {"wscr",                            120012, "\xf0\x9d\x93\x8c"},
+               {"bullet",                          8226,   "\xe2\x80\xa2"},
+               {"frown",                           8994,   "\xe2\x8c\xa2"},
+               {"siml",                            10909,  "\xe2\xaa\x9d"},
+               {"Rarr",                            8608,   "\xe2\x86\xa0"},
+               {"Scaron",                          352,    "\xc5\xa0"},
+               {"gtreqqless",                      10892,  "\xe2\xaa\x8c"},
+               {"Larr",                            8606,   "\xe2\x86\x9e"},
+               {"notniva",                         8716,   "\xe2\x88\x8c"},
+               {"gg",                              8811,   "\xe2\x89\xab"},
+               {"phmmat",                          8499,   "\xe2\x84\xb3"},
+               {"boxVL",                           9571,   "\xe2\x95\xa3"},
+               {"sigmav",                          962,    "\xcf\x82"},
+               {"order",                           8500,   "\xe2\x84\xb4"},
+               {"subsup",                          10963,  "\xe2\xab\x93"},
+               {"afr",                             120094, "\xf0\x9d\x94\x9e"},
+               {"lbrace",                          123,    "\x7b"},
+               {"urcorn",                          8989,   "\xe2\x8c\x9d"},
+               {"Im",                              8465,   "\xe2\x84\x91"},
+               {"CounterClockwiseContourIntegral", 8755,   "\xe2\x88\xb3"},
+               {"lne",                             10887,  "\xe2\xaa\x87"},
+               {"chi",                             967,    "\xcf\x87"},
+               {"cudarrl",                         10552,  "\xe2\xa4\xb8"},
+               {"ang",                             8736,   "\xe2\x88\xa0"},
+               {"isindot",                         8949,   "\xe2\x8b\xb5"},
+               {"Lfr",                             120079, "\xf0\x9d\x94\x8f"},
+               {"Rsh",                             8625,   "\xe2\x86\xb1"},
+               {"Ocy",                             1054,   "\xd0\x9e"},
+               {"nvrArr",                          10499,  "\xe2\xa4\x83"},
+               {"otimes",                          8855,   "\xe2\x8a\x97"},
+               {"eqslantgtr",                      10902,  "\xe2\xaa\x96"},
+               {"Rfr",                             8476,   "\xe2\x84\x9c"},
+               {"blacktriangleleft",               9666,   "\xe2\x97\x82"},
+               {"Lsh",                             8624,   "\xe2\x86\xb0"},
+               {"boxvr",                           9500,   "\xe2\x94\x9c"},
+               {"scedil",                          351,    "\xc5\x9f"},
+               {"iuml",                            239,    "\xc3\xaf"},
+               {"NJcy",                            1034,   "\xd0\x8a"},
+               {"Dagger",                          8225,   "\xe2\x80\xa1"},
+               {"rarrap",                          10613,  "\xe2\xa5\xb5"},
+               {"udblac",                          369,    "\xc5\xb1"},
+               {"Sopf",                            120138, "\xf0\x9d\x95\x8a"},
+               {"scnsim",                          8937,   "\xe2\x8b\xa9"},
+               {"hbar",                            8463,   "\xe2\x84\x8f"},
+               {"frac15",                          8533,   "\xe2\x85\x95"},
+               {"sup3",                            179,    "\xc2\xb3"},
+               {"NegativeThickSpace",              8203,   "\xe2\x80\x8b"},
+               {"npr",                             8832,   "\xe2\x8a\x80"},
+               {"doteq",                           8784,   "\xe2\x89\x90"},
+               {"subrarr",                         10617,  "\xe2\xa5\xb9"},
+               {"SquareSubset",                    8847,   "\xe2\x8a\x8f"},
+               {"vprop",                           8733,   "\xe2\x88\x9d"},
+               {"OpenCurlyQuote",                  8216,   "\xe2\x80\x98"},
+               {"supseteq",                        8839,   "\xe2\x8a\x87"},
+               {"nRightarrow",                     8655,   "\xe2\x87\x8f"},
+               {"Longleftarrow",                   10232,  "\xe2\x9f\xb8"},
+               {"lsquo",                           8216,   "\xe2\x80\x98"},
+               {"hstrok",                          295,    "\xc4\xa7"},
+               {"NotTilde",                        8769,   "\xe2\x89\x81"},
+               {"ogt",                             10689,  "\xe2\xa7\x81"},
+               {"block",                           9608,   "\xe2\x96\x88"},
+               {"minusd",                          8760,   "\xe2\x88\xb8"},
+               {"esdot",                           8784,   "\xe2\x89\x90"},
+               {"nsim",                            8769,   "\xe2\x89\x81"},
+               {"scsim",                           8831,   "\xe2\x89\xbf"},
+               {"boxVl",                           9570,   "\xe2\x95\xa2"},
+               {"ltimes",                          8905,   "\xe2\x8b\x89"},
+               {"thkap",                           8776,   "\xe2\x89\x88"},
+               {"vnsub",                           8834,   "\xe2\x8a\x82\xe2\x83\x92"},
+               {"thetasym",                        977,    "\xcf\x91"},
+               {"eopf",                            120150, "\xf0\x9d\x95\x96"},
+               {"image",                           8465,   "\xe2\x84\x91"},
+               {"doteqdot",                        8785,   "\xe2\x89\x91"},
+               {"Udblac",                          368,    "\xc5\xb0"},
+               {"gnsim",                           8935,   "\xe2\x8b\xa7"},
+               {"yicy",                            1111,   "\xd1\x97"},
+               {"vopf",                            120167, "\xf0\x9d\x95\xa7"},
+               {"DDotrahd",                        10513,  "\xe2\xa4\x91"},
+               {"Iota",                            921,    "\xce\x99"},
+               {"GJcy",                            1027,   "\xd0\x83"},
+               {"rightthreetimes",                 8908,   "\xe2\x8b\x8c"},
+               {"nrtri",                           8939,   "\xe2\x8b\xab"},
+               {"TildeFullEqual",                  8773,   "\xe2\x89\x85"},
+               {"Dcaron",                          270,    "\xc4\x8e"},
+               {"ccaron",                          269,    "\xc4\x8d"},
+               {"lacute",                          314,    "\xc4\xba"},
+               {"VerticalBar",                     8739,   "\xe2\x88\xa3"},
+               {"Igrave",                          204,    "\xc3\x8c"},
+               {"boxH",                            9552,   "\xe2\x95\x90"},
+               {"Pfr",                             120083, "\xf0\x9d\x94\x93"},
+               {"equals",                          61,     "\x3d"},
+               {"rbrack",                          93,     "\x5d"},
+               {"OverParenthesis",                 9180,   "\xe2\x8f\x9c"},
+               {"in",                              8712,   "\xe2\x88\x88"},
+               {"llcorner",                        8990,   "\xe2\x8c\x9e"},
+               {"mcomma",                          10793,  "\xe2\xa8\xa9"},
+               {"NotGreater",                      8815,   "\xe2\x89\xaf"},
+               {"midcir",                          10992,  "\xe2\xab\xb0"},
+               {"Edot",                            278,    "\xc4\x96"},
+               {"oplus",                           8853,   "\xe2\x8a\x95"},
+               {"geqq",                            8807,   "\xe2\x89\xa7"},
+               {"curvearrowleft",                  8630,   "\xe2\x86\xb6"},
+               {"Poincareplane",                   8460,   "\xe2\x84\x8c"},
+               {"yscr",                            120014, "\xf0\x9d\x93\x8e"},
+               {"ccaps",                           10829,  "\xe2\xa9\x8d"},
+               {"rpargt",                          10644,  "\xe2\xa6\x94"},
+               {"topfork",                         10970,  "\xe2\xab\x9a"},
+               {"Gamma",                           915,    "\xce\x93"},
+               {"umacr",                           363,    "\xc5\xab"},
+               {"frac13",                          8531,   "\xe2\x85\x93"},
+               {"cirfnint",                        10768,  "\xe2\xa8\x90"},
+               {"xlArr",                           10232,  "\xe2\x9f\xb8"},
+               {"digamma",                         989,    "\xcf\x9d"},
+               {"Hat",                             94,     "\x5e"},
+               {"lates",                           10925,  "\xe2\xaa\xad\xef\xb8\x80"},
+               {"lgE",                             10897,  "\xe2\xaa\x91"},
+               {"commat",                          64,     "\x40"},
+               {"NotPrecedesSlantEqual",           8928,   "\xe2\x8b\xa0"},
+               {"phone",                           9742,   "\xe2\x98\x8e"},
+               {"Ecirc",                           202,    "\xc3\x8a"},
+               {"lt",                              60,     "\x3c"},
+               {"intcal",                          8890,   "\xe2\x8a\xba"},
+               {"xdtri",                           9661,   "\xe2\x96\xbd"},
+               {"Abreve",                          258,    "\xc4\x82"},
+               {"gopf",                            120152, "\xf0\x9d\x95\x98"},
+               {"Xopf",                            120143, "\xf0\x9d\x95\x8f"},
+               {"Iacute",                          205,    "\xc3\x8d"},
+               {"Aopf",                            120120, "\xf0\x9d\x94\xb8"},
+               {"gbreve",                          287,    "\xc4\x9f"},
+               {"nleq",                            8816,   "\xe2\x89\xb0"},
+               {"xopf",                            120169, "\xf0\x9d\x95\xa9"},
+               {"SquareSupersetEqual",             8850,   "\xe2\x8a\x92"},
+               {"NotLessTilde",                    8820,   "\xe2\x89\xb4"},
+               {"SubsetEqual",                     8838,   "\xe2\x8a\x86"},
+               {"Sc",                              10940,  "\xe2\xaa\xbc"},
+               {"sdote",                           10854,  "\xe2\xa9\xa6"},
+               {"loplus",                          10797,  "\xe2\xa8\xad"},
+               {"zfr",                             120119, "\xf0\x9d\x94\xb7"},
+               {"subseteqq",                       10949,  "\xe2\xab\x85"},
+               {"Vdashl",                          10982,  "\xe2\xab\xa6"},
+               {"integers",                        8484,   "\xe2\x84\xa4"},
+               {"Umacr",                           362,    "\xc5\xaa"},
+               {"dopf",                            120149, "\xf0\x9d\x95\x95"},
+               {"RightDownVectorBar",              10581,  "\xe2\xa5\x95"},
+               {"angmsdaf",                        10669,  "\xe2\xa6\xad"},
+               {"Jfr",                             120077, "\xf0\x9d\x94\x8d"},
+               {"bernou",                          8492,   "\xe2\x84\xac"},
+               {"lceil",                           8968,   "\xe2\x8c\x88"},
+               {"nvsim",                           8764,   "\xe2\x88\xbc\xe2\x83\x92"},
+               {"NotSucceedsSlantEqual",           8929,   "\xe2\x8b\xa1"},
+               {"hearts",                          9829,   "\xe2\x99\xa5"},
+               {"vee",                             8744,   "\xe2\x88\xa8"},
+               {"LJcy",                            1033,   "\xd0\x89"},
+               {"nlt",                             8814,   "\xe2\x89\xae"},
+               {"because",                         8757,   "\xe2\x88\xb5"},
+               {"hairsp",                          8202,   "\xe2\x80\x8a"},
+               {"comma",                           44,     "\x2c"},
+               {"iecy",                            1077,   "\xd0\xb5"},
+               {"npre",                            10927,  "\xe2\xaa\xaf\xcc\xb8"},
+               {"NotSquareSubset",                 8847,   "\xe2\x8a\x8f\xcc\xb8"},
+               {"mscr",                            120002, "\xf0\x9d\x93\x82"},
+               {"jopf",                            120155, "\xf0\x9d\x95\x9b"},
+               {"bumpE",                           10926,  "\xe2\xaa\xae"},
+               {"thicksim",                        8764,   "\xe2\x88\xbc"},
+               {"Nfr",                             120081, "\xf0\x9d\x94\x91"},
+               {"yucy",                            1102,   "\xd1\x8e"},
+               {"notinvc",                         8950,   "\xe2\x8b\xb6"},
+               {"lstrok",                          322,    "\xc5\x82"},
+               {"robrk",                           10215,  "\xe2\x9f\xa7"},
+               {"LeftTriangleBar",                 10703,  "\xe2\xa7\x8f"},
+               {"hksearow",                        10533,  "\xe2\xa4\xa5"},
+               {"bigcap",                          8898,   "\xe2\x8b\x82"},
+               {"udhar",                           10606,  "\xe2\xa5\xae"},
+               {"Yscr",                            119988, "\xf0\x9d\x92\xb4"},
+               {"smeparsl",                        10724,  "\xe2\xa7\xa4"},
+               {"NotLess",                         8814,   "\xe2\x89\xae"},
+               {"dcaron",                          271,    "\xc4\x8f"},
+               {"ange",                            10660,  "\xe2\xa6\xa4"},
+               {"dHar",                            10597,  "\xe2\xa5\xa5"},
+               {"UpperRightArrow",                 8599,   "\xe2\x86\x97"},
+               {"trpezium",                        9186,   "\xe2\x8f\xa2"},
+               {"boxminus",                        8863,   "\xe2\x8a\x9f"},
+               {"notni",                           8716,   "\xe2\x88\x8c"},
+               {"dtrif",                           9662,   "\xe2\x96\xbe"},
+               {"nhArr",                           8654,   "\xe2\x87\x8e"},
+               {"larrpl",                          10553,  "\xe2\xa4\xb9"},
+               {"simeq",                           8771,   "\xe2\x89\x83"},
+               {"geqslant",                        10878,  "\xe2\xa9\xbe"},
+               {"RightUpVectorBar",                10580,  "\xe2\xa5\x94"},
+               {"nsc",                             8833,   "\xe2\x8a\x81"},
+               {"div",                             247,    "\xc3\xb7"},
+               {"orslope",                         10839,  "\xe2\xa9\x97"},
+               {"lparlt",                          10643,  "\xe2\xa6\x93"},
+               {"trie",                            8796,   "\xe2\x89\x9c"},
+               {"cirmid",                          10991,  "\xe2\xab\xaf"},
+               {"wp",                              8472,   "\xe2\x84\x98"},
+               {"dagger",                          8224,   "\xe2\x80\xa0"},
+               {"utri",                            9653,   "\xe2\x96\xb5"},
+               {"supnE",                           10956,  "\xe2\xab\x8c"},
+               {"eg",                              10906,  "\xe2\xaa\x9a"},
+               {"LeftDownVector",                  8643,   "\xe2\x87\x83"},
+               {"NotLessEqual",                    8816,   "\xe2\x89\xb0"},
+               {"Bopf",                            120121, "\xf0\x9d\x94\xb9"},
+               {"LongLeftRightArrow",              10231,  "\xe2\x9f\xb7"},
+               {"Gfr",                             120074, "\xf0\x9d\x94\x8a"},
+               {"sqsubseteq",                      8849,   "\xe2\x8a\x91"},
+               {"ograve",                          242,    "\xc3\xb2"},
+               {"larrhk",                          8617,   "\xe2\x86\xa9"},
+               {"sigma",                           963,    "\xcf\x83"},
+               {"NotSquareSupersetEqual",          8931,   "\xe2\x8b\xa3"},
+               {"gvnE",                            8809,   "\xe2\x89\xa9\xef\xb8\x80"},
+               {"timesbar",                        10801,  "\xe2\xa8\xb1"},
+               {"Iukcy",                           1030,   "\xd0\x86"},
+               {"bscr",                            119991, "\xf0\x9d\x92\xb7"},
+               {"Exists",                          8707,   "\xe2\x88\x83"},
+               {"tscr",                            120009, "\xf0\x9d\x93\x89"},
+               {"tcy",                             1090,   "\xd1\x82"},
+               {"nwarr",                           8598,   "\xe2\x86\x96"},
+               {"hoarr",                           8703,   "\xe2\x87\xbf"},
+               {"lnapprox",                        10889,  "\xe2\xaa\x89"},
+               {"nu",                              957,    "\xce\xbd"},
+               {"bcy",                             1073,   "\xd0\xb1"},
+               {"ndash",                           8211,   "\xe2\x80\x93"},
+               {"smt",                             10922,  "\xe2\xaa\xaa"},
+               {"scaron",                          353,    "\xc5\xa1"},
+               {"IOcy",                            1025,   "\xd0\x81"},
+               {"Ifr",                             8465,   "\xe2\x84\x91"},
+               {"cularrp",                         10557,  "\xe2\xa4\xbd"},
+               {"lvertneqq",                       8808,   "\xe2\x89\xa8\xef\xb8\x80"},
+               {"nlarr",                           8602,   "\xe2\x86\x9a"},
+               {"colon",                           58,     "\x3a"},
+               {"ddotseq",                         10871,  "\xe2\xa9\xb7"},
+               {"zacute",                          378,    "\xc5\xba"},
+               {"DoubleVerticalBar",               8741,   "\xe2\x88\xa5"},
+               {"larrfs",                          10525,  "\xe2\xa4\x9d"},
+               {"NotExists",                       8708,   "\xe2\x88\x84"},
+               {"geq",                             8805,   "\xe2\x89\xa5"},
+               {"Ffr",                             120073, "\xf0\x9d\x94\x89"},
+               {"divide",                          247,    "\xc3\xb7"},
+               {"blank",                           9251,   "\xe2\x90\xa3"},
+               {"IEcy",                            1045,   "\xd0\x95"},
+               {"ordm",                            186,    "\xc2\xba"},
+               {"fopf",                            120151, "\xf0\x9d\x95\x97"},
+               {"ecir",                            8790,   "\xe2\x89\x96"},
+               {"complement",                      8705,   "\xe2\x88\x81"},
+               {"top",                             8868,   "\xe2\x8a\xa4"},
+               {"DoubleContourIntegral",           8751,   "\xe2\x88\xaf"},
+               {"nisd",                            8954,   "\xe2\x8b\xba"},
+               {"bcong",                           8780,   "\xe2\x89\x8c"},
+               {"plusdu",                          10789,  "\xe2\xa8\xa5"},
+               {"TildeTilde",                      8776,   "\xe2\x89\x88"},
+               {"lnE",                             8808,   "\xe2\x89\xa8"},
+               {"DoubleLongRightArrow",            10233,  "\xe2\x9f\xb9"},
+               {"nsubseteqq",                      10949,  "\xe2\xab\x85\xcc\xb8"},
+               {"DownTeeArrow",                    8615,   "\xe2\x86\xa7"},
+               {"Cscr",                            119966, "\xf0\x9d\x92\x9e"},
+               {"NegativeVeryThinSpace",           8203,   "\xe2\x80\x8b"},
+               {"emsp",                            8195,   "\xe2\x80\x83"},
+               {"vartriangleleft",                 8882,   "\xe2\x8a\xb2"},
+               {"ropar",                           10630,  "\xe2\xa6\x86"},
+               {"checkmark",                       10003,  "\xe2\x9c\x93"},
+               {"Ycy",                             1067,   "\xd0\xab"},
+               {"supset",                          8835,   "\xe2\x8a\x83"},
+               {"gneqq",                           8809,   "\xe2\x89\xa9"},
+               {"Lstrok",                          321,    "\xc5\x81"},
+               {"AMP",                             38,     "\x26"},
+               {"acE",                             8766,   "\xe2\x88\xbe\xcc\xb3"},
+               {"sqsupseteq",                      8850,   "\xe2\x8a\x92"},
+               {"nle",                             8816,   "\xe2\x89\xb0"},
+               {"nesear",                          10536,  "\xe2\xa4\xa8"},
+               {"LeftDownVectorBar",               10585,  "\xe2\xa5\x99"},
+               {"Integral",                        8747,   "\xe2\x88\xab"},
+               {"Beta",                            914,    "\xce\x92"},
+               {"nvdash",                          8876,   "\xe2\x8a\xac"},
+               {"nges",                            10878,  "\xe2\xa9\xbe\xcc\xb8"},
+               {"demptyv",                         10673,  "\xe2\xa6\xb1"},
+               {"eta",                             951,    "\xce\xb7"},
+               {"GreaterSlantEqual",               10878,  "\xe2\xa9\xbe"},
+               {"ccedil",                          231,    "\xc3\xa7"},
+               {"pfr",                             120109, "\xf0\x9d\x94\xad"},
+               {"bbrktbrk",                        9142,   "\xe2\x8e\xb6"},
+               {"mcy",                             1084,   "\xd0\xbc"},
+               {"Not",                             10988,  "\xe2\xab\xac"},
+               {"qscr",                            120006, "\xf0\x9d\x93\x86"},
+               {"zwj",                             8205,   "\xe2\x80\x8d"},
+               {"ntrianglerighteq",                8941,   "\xe2\x8b\xad"},
+               {"permil",                          8240,   "\xe2\x80\xb0"},
+               {"squarf",                          9642,   "\xe2\x96\xaa"},
+               {"apos",                            39,     "\x27"},
+               {"lrm",                             8206,   "\xe2\x80\x8e"},
+               {"male",                            9794,   "\xe2\x99\x82"},
+               {"agrave",                          224,    "\xc3\xa0"},
+               {"Lt",                              8810,   "\xe2\x89\xaa"},
+               {"capand",                          10820,  "\xe2\xa9\x84"},
+               {"aring",                           229,    "\xc3\xa5"},
+               {"Jukcy",                           1028,   "\xd0\x84"},
+               {"bumpe",                           8783,   "\xe2\x89\x8f"},
+               {"dd",                              8518,   "\xe2\x85\x86"},
+               {"tscy",                            1094,   "\xd1\x86"},
+               {"oS",                              9416,   "\xe2\x93\x88"},
+               {"succeq",                          10928,  "\xe2\xaa\xb0"},
+               {"xharr",                           10231,  "\xe2\x9f\xb7"},
+               {"pluse",                           10866,  "\xe2\xa9\xb2"},
+               {"rfisht",                          10621,  "\xe2\xa5\xbd"},
+               {"HorizontalLine",                  9472,   "\xe2\x94\x80"},
+               {"DiacriticalAcute",                180,    "\xc2\xb4"},
+               {"hfr",                             120101, "\xf0\x9d\x94\xa5"},
+               {"preceq",                          10927,  "\xe2\xaa\xaf"},
+               {"rationals",                       8474,   "\xe2\x84\x9a"},
+               {"Auml",                            196,    "\xc3\x84"},
+               {"LeftRightArrow",                  8596,   "\xe2\x86\x94"},
+               {"blacktriangleright",              9656,   "\xe2\x96\xb8"},
+               {"dharr",                           8642,   "\xe2\x87\x82"},
+               {"isin",                            8712,   "\xe2\x88\x88"},
+               {"ldrushar",                        10571,  "\xe2\xa5\x8b"},
+               {"squ",                             9633,   "\xe2\x96\xa1"},
+               {"rbrksld",                         10638,  "\xe2\xa6\x8e"},
+               {"bigwedge",                        8896,   "\xe2\x8b\x80"},
+               {"swArr",                           8665,   "\xe2\x87\x99"},
+               {"IJlig",                           306,    "\xc4\xb2"},
+               {"harr",                            8596,   "\xe2\x86\x94"},
+               {"range",                           10661,  "\xe2\xa6\xa5"},
+               {"urtri",                           9721,   "\xe2\x97\xb9"},
+               {"NotVerticalBar",                  8740,   "\xe2\x88\xa4"},
+               {"ic",                              8291,   "\xe2\x81\xa3"},
+               {"solbar",                          9023,   "\xe2\x8c\xbf"},
+               {"approx",                          8776,   "\xe2\x89\x88"},
+               {"SquareSuperset",                  8848,   "\xe2\x8a\x90"},
+               {"numsp",                           8199,   "\xe2\x80\x87"},
+               {"nLt",                             8810,   "\xe2\x89\xaa\xe2\x83\x92"},
+               {"tilde",                           732,    "\xcb\x9c"},
+               {"rlarr",                           8644,   "\xe2\x87\x84"},
+               {"langle",                          10216,  "\xe2\x9f\xa8"},
+               {"nleqslant",                       10877,  "\xe2\xa9\xbd\xcc\xb8"},
+               {"Nacute",                          323,    "\xc5\x83"},
+               {"NotLeftTriangle",                 8938,   "\xe2\x8b\xaa"},
+               {"sopf",                            120164, "\xf0\x9d\x95\xa4"},
+               {"xmap",                            10236,  "\xe2\x9f\xbc"},
+               {"supne",                           8843,   "\xe2\x8a\x8b"},
+               {"Int",                             8748,   "\xe2\x88\xac"},
+               {"nsupseteqq",                      10950,  "\xe2\xab\x86\xcc\xb8"},
+               {"circlearrowright",                8635,   "\xe2\x86\xbb"},
+               {"NotCongruent",                    8802,   "\xe2\x89\xa2"},
+               {"Scedil",                          350,    "\xc5\x9e"},
+               {"raquo",                           187,    "\xc2\xbb"},
+               {"ycy",                             1099,   "\xd1\x8b"},
+               {"notinvb",                         8951,   "\xe2\x8b\xb7"},
+               {"andv",                            10842,  "\xe2\xa9\x9a"},
+               {"nap",                             8777,   "\xe2\x89\x89"},
+               {"shcy",                            1096,   "\xd1\x88"},
+               {"ssetmn",                          8726,   "\xe2\x88\x96"},
+               {"downarrow",                       8595,   "\xe2\x86\x93"},
+               {"gesdotol",                        10884,  "\xe2\xaa\x84"},
+               {"Congruent",                       8801,   "\xe2\x89\xa1"},
+               {"pound",                           163,    "\xc2\xa3"},
+               {"ZeroWidthSpace",                  8203,   "\xe2\x80\x8b"},
+               {"rdca",                            10551,  "\xe2\xa4\xb7"},
+               {"rmoust",                          9137,   "\xe2\x8e\xb1"},
+               {"zcy",                             1079,   "\xd0\xb7"},
+               {"Square",                          9633,   "\xe2\x96\xa1"},
+               {"subE",                            10949,  "\xe2\xab\x85"},
+               {"infintie",                        10717,  "\xe2\xa7\x9d"},
+               {"Cayleys",                         8493,   "\xe2\x84\xad"},
+               {"lsaquo",                          8249,   "\xe2\x80\xb9"},
+               {"realpart",                        8476,   "\xe2\x84\x9c"},
+               {"nprec",                           8832,   "\xe2\x8a\x80"},
+               {"RightTriangleBar",                10704,  "\xe2\xa7\x90"},
+               {"Kopf",                            120130, "\xf0\x9d\x95\x82"},
+               {"Ubreve",                          364,    "\xc5\xac"},
+               {"Uopf",                            120140, "\xf0\x9d\x95\x8c"},
+               {"trianglelefteq",                  8884,   "\xe2\x8a\xb4"},
+               {"rotimes",                         10805,  "\xe2\xa8\xb5"},
+               {"qfr",                             120110, "\xf0\x9d\x94\xae"},
+               {"gtcc",                            10919,  "\xe2\xaa\xa7"},
+               {"fnof",                            402,    "\xc6\x92"},
+               {"tritime",                         10811,  "\xe2\xa8\xbb"},
+               {"andslope",                        10840,  "\xe2\xa9\x98"},
+               {"harrw",                           8621,   "\xe2\x86\xad"},
+               {"NotSquareSuperset",               8848,   "\xe2\x8a\x90\xcc\xb8"},
+               {"Amacr",                           256,    "\xc4\x80"},
+               {"OpenCurlyDoubleQuote",            8220,   "\xe2\x80\x9c"},
+               {"thorn",                           254,    "\xc3\xbe"},
+               {"ordf",                            170,    "\xc2\xaa"},
+               {"natur",                           9838,   "\xe2\x99\xae"},
+               {"xi",                              958,    "\xce\xbe"},
+               {"infin",                           8734,   "\xe2\x88\x9e"},
+               {"nspar",                           8742,   "\xe2\x88\xa6"},
+               {"Jcy",                             1049,   "\xd0\x99"},
+               {"DownLeftTeeVector",               10590,  "\xe2\xa5\x9e"},
+               {"rbarr",                           10509,  "\xe2\xa4\x8d"},
+               {"Xi",                              926,    "\xce\x9e"},
+               {"bull",                            8226,   "\xe2\x80\xa2"},
+               {"cuesc",                           8927,   "\xe2\x8b\x9f"},
+               {"backcong",                        8780,   "\xe2\x89\x8c"},
+               {"frac35",                          8535,   "\xe2\x85\x97"},
+               {"hscr",                            119997, "\xf0\x9d\x92\xbd"},
+               {"LessEqualGreater",                8922,   "\xe2\x8b\x9a"},
+               {"Implies",                         8658,   "\xe2\x87\x92"},
+               {"ETH",                             208,    "\xc3\x90"},
+               {"Yacute",                          221,    "\xc3\x9d"},
+               {"shy",                             173,    "\xc2\xad"},
+               {"Rarrtl",                          10518,  "\xe2\xa4\x96"},
+               {"sup1",                            185,    "\xc2\xb9"},
+               {"reals",                           8477,   "\xe2\x84\x9d"},
+               {"blacklozenge",                    10731,  "\xe2\xa7\xab"},
+               {"ncedil",                          326,    "\xc5\x86"},
+               {"Lambda",                          923,    "\xce\x9b"},
+               {"uopf",                            120166, "\xf0\x9d\x95\xa6"},
+               {"bigodot",                         10752,  "\xe2\xa8\x80"},
+               {"ubreve",                          365,    "\xc5\xad"},
+               {"drbkarow",                        10512,  "\xe2\xa4\x90"},
+               {"els",                             10901,  "\xe2\xaa\x95"},
+               {"shortparallel",                   8741,   "\xe2\x88\xa5"},
+               {"Pcy",                             1055,   "\xd0\x9f"},
+               {"dsol",                            10742,  "\xe2\xa7\xb6"},
+               {"supsim",                          10952,  "\xe2\xab\x88"},
+               {"Longrightarrow",                  10233,  "\xe2\x9f\xb9"},
+               {"ThickSpace",                      8287,   "\xe2\x81\x9f\xe2\x80\x8a"},
+               {"Itilde",                          296,    "\xc4\xa8"},
+               {"nparallel",                       8742,   "\xe2\x88\xa6"},
+               {"And",                             10835,  "\xe2\xa9\x93"},
+               {"boxhd",                           9516,   "\xe2\x94\xac"},
+               {"Dashv",                           10980,  "\xe2\xab\xa4"},
+               {"NotSuperset",                     8835,   "\xe2\x8a\x83\xe2\x83\x92"},
+               {"Eta",                             919,    "\xce\x97"},
+               {"Qopf",                            8474,   "\xe2\x84\x9a"},
+               {"period",                          46,     "\x2e"},
+               {"angmsd",                          8737,   "\xe2\x88\xa1"},
+               {"fllig",                           64258,  "\xef\xac\x82"},
+               {"cuvee",                           8910,   "\xe2\x8b\x8e"},
+               {"wedbar",                          10847,  "\xe2\xa9\x9f"},
+               {"Fscr",                            8497,   "\xe2\x84\xb1"},
+               {"veebar",                          8891,   "\xe2\x8a\xbb"},
+               {"Longleftrightarrow",              10234,  "\xe2\x9f\xba"},
+               {"reg",                             174,    "\xc2\xae"},
+               {"NegativeMediumSpace",             8203,   "\xe2\x80\x8b"},
+               {"Upsi",                            978,    "\xcf\x92"},
+               {"Mellintrf",                       8499,   "\xe2\x84\xb3"},
+               {"boxHU",                           9577,   "\xe2\x95\xa9"},
+               {"bne",                             61,     "\x3d\xe2\x83\xa5"},
+               {"frac56",                          8538,   "\xe2\x85\x9a"},
+               {"utrif",                           9652,   "\xe2\x96\xb4"},
+               {"LeftTriangle",                    8882,   "\xe2\x8a\xb2"},
+               {"nsime",                           8772,   "\xe2\x89\x84"},
+               {"rcedil",                          343,    "\xc5\x97"},
+               {"aogon",                           261,    "\xc4\x85"},
+               {"uHar",                            10595,  "\xe2\xa5\xa3"},
+               {"ForAll",                          8704,   "\xe2\x88\x80"},
+               {"prE",                             10931,  "\xe2\xaa\xb3"},
+               {"boxV",                            9553,   "\xe2\x95\x91"},
+               {"softcy",                          1100,   "\xd1\x8c"},
+               {"hercon",                          8889,   "\xe2\x8a\xb9"},
+               {"lmoustache",                      9136,   "\xe2\x8e\xb0"},
+               {"Product",                         8719,   "\xe2\x88\x8f"},
+               {"lsimg",                           10895,  "\xe2\xaa\x8f"},
+               {"verbar",                          124,    "\x7c"},
+               {"ofcir",                           10687,  "\xe2\xa6\xbf"},
+               {"curlyeqprec",                     8926,   "\xe2\x8b\x9e"},
+               {"ldquo",                           8220,   "\xe2\x80\x9c"},
+               {"bot",                             8869,   "\xe2\x8a\xa5"},
+               {"Psi",                             936,    "\xce\xa8"},
+               {"OElig",                           338,    "\xc5\x92"},
+               {"DownRightVectorBar",              10583,  "\xe2\xa5\x97"},
+               {"minusb",                          8863,   "\xe2\x8a\x9f"},
+               {"Iscr",                            8464,   "\xe2\x84\x90"},
+               {"Tcedil",                          354,    "\xc5\xa2"},
+               {"ffilig",                          64259,  "\xef\xac\x83"},
+               {"Gcy",                             1043,   "\xd0\x93"},
+               {"oline",                           8254,   "\xe2\x80\xbe"},
+               {"bottom",                          8869,   "\xe2\x8a\xa5"},
+               {"nVDash",                          8879,   "\xe2\x8a\xaf"},
+               {"lessdot",                         8918,   "\xe2\x8b\x96"},
+               {"cups",                            8746,   "\xe2\x88\xaa\xef\xb8\x80"},
+               {"gla",                             10917,  "\xe2\xaa\xa5"},
+               {"hellip",                          8230,   "\xe2\x80\xa6"},
+               {"hookleftarrow",                   8617,   "\xe2\x86\xa9"},
+               {"Cup",                             8915,   "\xe2\x8b\x93"},
+               {"upsi",                            965,    "\xcf\x85"},
+               {"DownArrowBar",                    10515,  "\xe2\xa4\x93"},
+               {"lowast",                          8727,   "\xe2\x88\x97"},
+               {"profline",                        8978,   "\xe2\x8c\x92"},
+               {"ngsim",                           8821,   "\xe2\x89\xb5"},
+               {"boxhu",                           9524,   "\xe2\x94\xb4"},
+               {"operp",                           10681,  "\xe2\xa6\xb9"},
+               {"cap",                             8745,   "\xe2\x88\xa9"},
+               {"Hcirc",                           292,    "\xc4\xa4"},
+               {"Ncy",                             1053,   "\xd0\x9d"},
+               {"zeetrf",                          8488,   "\xe2\x84\xa8"},
+               {"cuepr",                           8926,   "\xe2\x8b\x9e"},
+               {"supsetneq",                       8843,   "\xe2\x8a\x8b"},
+               {"lfloor",                          8970,   "\xe2\x8c\x8a"},
+               {"ngtr",                            8815,   "\xe2\x89\xaf"},
+               {"ccups",                           10828,  "\xe2\xa9\x8c"},
+               {"pscr",                            120005, "\xf0\x9d\x93\x85"},
+               {"Cfr",                             8493,   "\xe2\x84\xad"},
+               {"dtri",                            9663,   "\xe2\x96\xbf"},
+               {"icirc",                           238,    "\xc3\xae"},
+               {"leftarrow",                       8592,   "\xe2\x86\x90"},
+               {"vdash",                           8866,   "\xe2\x8a\xa2"},
+               {"leftrightharpoons",               8651,   "\xe2\x87\x8b"},
+               {"rightrightarrows",                8649,   "\xe2\x87\x89"},
+               {"strns",                           175,    "\xc2\xaf"},
+               {"intlarhk",                        10775,  "\xe2\xa8\x97"},
+               {"downharpoonright",                8642,   "\xe2\x87\x82"},
+               {"yacute",                          253,    "\xc3\xbd"},
+               {"boxUr",                           9561,   "\xe2\x95\x99"},
+               {"triangleleft",                    9667,   "\xe2\x97\x83"},
+               {"DiacriticalDot",                  729,    "\xcb\x99"},
+               {"thetav",                          977,    "\xcf\x91"},
+               {"OverBracket",                     9140,   "\xe2\x8e\xb4"},
+               {"PrecedesTilde",                   8830,   "\xe2\x89\xbe"},
+               {"rtrie",                           8885,   "\xe2\x8a\xb5"},
+               {"Scirc",                           348,    "\xc5\x9c"},
+               {"vsupne",                          8843,   "\xe2\x8a\x8b\xef\xb8\x80"},
+               {"OverBrace",                       9182,   "\xe2\x8f\x9e"},
+               {"Yfr",                             120092, "\xf0\x9d\x94\x9c"},
+               {"scnE",                            10934,  "\xe2\xaa\xb6"},
+               {"simlE",                           10911,  "\xe2\xaa\x9f"},
+               {"Proportional",                    8733,   "\xe2\x88\x9d"},
+               {"edot",                            279,    "\xc4\x97"},
+               {"loang",                           10220,  "\xe2\x9f\xac"},
+               {"gesdot",                          10880,  "\xe2\xaa\x80"},
+               {"DownBreve",                       785,    "\xcc\x91"},
+               {"pcy",                             1087,   "\xd0\xbf"},
+               {"Succeeds",                        8827,   "\xe2\x89\xbb"},
+               {"mfr",                             120106, "\xf0\x9d\x94\xaa"},
+               {"Leftarrow",                       8656,   "\xe2\x87\x90"},
+               {"boxDr",                           9555,   "\xe2\x95\x93"},
+               {"Nscr",                            119977, "\xf0\x9d\x92\xa9"},
+               {"diam",                            8900,   "\xe2\x8b\x84"},
+               {"CHcy",                            1063,   "\xd0\xa7"},
+               {"boxdr",                           9484,   "\xe2\x94\x8c"},
+               {"rlm",                             8207,   "\xe2\x80\x8f"},
+               {"Coproduct",                       8720,   "\xe2\x88\x90"},
+               {"RightTeeArrow",                   8614,   "\xe2\x86\xa6"},
+               {"tridot",                          9708,   "\xe2\x97\xac"},
+               {"ldquor",                          8222,   "\xe2\x80\x9e"},
+               {"sol",                             47,     "\x2f"},
+               {"ecirc",                           234,    "\xc3\xaa"},
+               {"DoubleLeftArrow",                 8656,   "\xe2\x87\x90"},
+               {"Gscr",                            119970, "\xf0\x9d\x92\xa2"},
+               {"ap",                              8776,   "\xe2\x89\x88"},
+               {"rbrke",                           10636,  "\xe2\xa6\x8c"},
+               {"LeftFloor",                       8970,   "\xe2\x8c\x8a"},
+               {"blk12",                           9618,   "\xe2\x96\x92"},
+               {"Conint",                          8751,   "\xe2\x88\xaf"},
+               {"triangledown",                    9663,   "\xe2\x96\xbf"},
+               {"Icy",                             1048,   "\xd0\x98"},
+               {"backprime",                       8245,   "\xe2\x80\xb5"},
+               {"longleftrightarrow",              10231,  "\xe2\x9f\xb7"},
+               {"ntriangleleft",                   8938,   "\xe2\x8b\xaa"},
+               {"copy",                            169,    "\xc2\xa9"},
+               {"mapstodown",                      8615,   "\xe2\x86\xa7"},
+               {"seArr",                           8664,   "\xe2\x87\x98"},
+               {"ENG",                             330,    "\xc5\x8a"},
+               {"DoubleRightArrow",                8658,   "\xe2\x87\x92"},
+               {"tfr",                             120113, "\xf0\x9d\x94\xb1"},
+               {"rharul",                          10604,  "\xe2\xa5\xac"},
+               {"bfr",                             120095, "\xf0\x9d\x94\x9f"},
+               {"origof",                          8886,   "\xe2\x8a\xb6"},
+               {"Therefore",                       8756,   "\xe2\x88\xb4"},
+               {"glE",                             10898,  "\xe2\xaa\x92"},
+               {"leftarrowtail",                   8610,   "\xe2\x86\xa2"},
+               {"NotEqual",                        8800,   "\xe2\x89\xa0"},
+               {"LeftCeiling",                     8968,   "\xe2\x8c\x88"},
+               {"lArr",                            8656,   "\xe2\x87\x90"},
+               {"subseteq",                        8838,   "\xe2\x8a\x86"},
+               {"larrbfs",                         10527,  "\xe2\xa4\x9f"},
+               {"Gammad",                          988,    "\xcf\x9c"},
+               {"rtriltri",                        10702,  "\xe2\xa7\x8e"},
+               {"Fcy",                             1060,   "\xd0\xa4"},
+               {"Vopf",                            120141, "\xf0\x9d\x95\x8d"},
+               {"lrarr",                           8646,   "\xe2\x87\x86"},
+               {"delta",                           948,    "\xce\xb4"},
+               {"xodot",                           10752,  "\xe2\xa8\x80"},
+               {"larrtl",                          8610,   "\xe2\x86\xa2"},
+               {"gsim",                            8819,   "\xe2\x89\xb3"},
+               {"ratail",                          10522,  "\xe2\xa4\x9a"},
+               {"vsubne",                          8842,   "\xe2\x8a\x8a\xef\xb8\x80"},
+               {"boxur",                           9492,   "\xe2\x94\x94"},
+               {"succsim",                         8831,   "\xe2\x89\xbf"},
+               {"triplus",                         10809,  "\xe2\xa8\xb9"},
+               {"nless",                           8814,   "\xe2\x89\xae"},
+               {"uharr",                           8638,   "\xe2\x86\xbe"},
+               {"lambda",                          955,    "\xce\xbb"},
+               {"uuml",                            252,    "\xc3\xbc"},
+               {"horbar",                          8213,   "\xe2\x80\x95"},
+               {"ccirc",                           265,    "\xc4\x89"},
+               {"sqcup",                           8852,   "\xe2\x8a\x94"},
+               {"Pscr",                            119979, "\xf0\x9d\x92\xab"},
+               {"supsup",                          10966,  "\xe2\xab\x96"},
+               {"Cacute",                          262,    "\xc4\x86"},
+               {"upsih",                           978,    "\xcf\x92"},
+               {"precsim",                         8830,   "\xe2\x89\xbe"},
+               {"longrightarrow",                  10230,  "\xe2\x9f\xb6"},
+               {"circledR",                        174,    "\xc2\xae"},
+               {"UpTeeArrow",                      8613,   "\xe2\x86\xa5"},
+               {"bepsi",                           1014,   "\xcf\xb6"},
+               {"oast",                            8859,   "\xe2\x8a\x9b"},
+               {"yfr",                             120118, "\xf0\x9d\x94\xb6"},
+               {"rdsh",                            8627,   "\xe2\x86\xb3"},
+               {"Ograve",                          210,    "\xc3\x92"},
+               {"LeftVectorBar",                   10578,  "\xe2\xa5\x92"},
+               {"NotNestedLessLess",               10913,  "\xe2\xaa\xa1\xcc\xb8"},
+               {"Jscr",                            119973, "\xf0\x9d\x92\xa5"},
+               {"psi",                             968,    "\xcf\x88"},
+               {"orarr",                           8635,   "\xe2\x86\xbb"},
+               {"Subset",                          8912,   "\xe2\x8b\x90"},
+               {"curarr",                          8631,   "\xe2\x86\xb7"},
+               {"CirclePlus",                      8853,   "\xe2\x8a\x95"},
+               {"gtrless",                         8823,   "\xe2\x89\xb7"},
+               {"nvle",                            8804,   "\xe2\x89\xa4\xe2\x83\x92"},
+               {"prop",                            8733,   "\xe2\x88\x9d"},
+               {"gEl",                             10892,  "\xe2\xaa\x8c"},
+               {"gtlPar",                          10645,  "\xe2\xa6\x95"},
+               {"frasl",                           8260,   "\xe2\x81\x84"},
+               {"nearr",                           8599,   "\xe2\x86\x97"},
+               {"NotSubsetEqual",                  8840,   "\xe2\x8a\x88"},
+               {"planck",                          8463,   "\xe2\x84\x8f"},
+               {"Uuml",                            220,    "\xc3\x9c"},
+               {"spadesuit",                       9824,   "\xe2\x99\xa0"},
+               {"sect",                            167,    "\xc2\xa7"},
+               {"cdot",                            267,    "\xc4\x8b"},
+               {"boxVh",                           9579,   "\xe2\x95\xab"},
+               {"zscr",                            120015, "\xf0\x9d\x93\x8f"},
+               {"nsqsube",                         8930,   "\xe2\x8b\xa2"},
+               {"grave",                           96,     "\x60"},
+               {"angrtvb",                         8894,   "\xe2\x8a\xbe"},
+               {"MediumSpace",                     8287,   "\xe2\x81\x9f"},
+               {"Ntilde",                          209,    "\xc3\x91"},
+               {"solb",                            10692,  "\xe2\xa7\x84"},
+               {"angzarr",                         9084,   "\xe2\x8d\xbc"},
+               {"nopf",                            120159, "\xf0\x9d\x95\x9f"},
+               {"rtrif",                           9656,   "\xe2\x96\xb8"},
+               {"nrightarrow",                     8603,   "\xe2\x86\x9b"},
+               {"Kappa",                           922,    "\xce\x9a"},
+               {"simrarr",                         10610,  "\xe2\xa5\xb2"},
+               {"imacr",                           299,    "\xc4\xab"},
+               {"vrtri",                           8883,   "\xe2\x8a\xb3"},
+               {"part",                            8706,   "\xe2\x88\x82"},
+               {"esim",                            8770,   "\xe2\x89\x82"},
+               {"atilde",                          227,    "\xc3\xa3"},
+               {"DownRightTeeVector",              10591,  "\xe2\xa5\x9f"},
+               {"jcirc",                           309,    "\xc4\xb5"},
+               {"Ecaron",                          282,    "\xc4\x9a"},
+               {"VerticalSeparator",               10072,  "\xe2\x9d\x98"},
+               {"rHar",                            10596,  "\xe2\xa5\xa4"},
+               {"rcaron",                          345,    "\xc5\x99"},
+               {"subnE",                           10955,  "\xe2\xab\x8b"},
+               {"ii",                              8520,   "\xe2\x85\x88"},
+               {"Cconint",                         8752,   "\xe2\x88\xb0"},
+               {"Mcy",                             1052,   "\xd0\x9c"},
+               {"eqcolon",                         8789,   "\xe2\x89\x95"},
+               {"cupor",                           10821,  "\xe2\xa9\x85"},
+               {"DoubleUpArrow",                   8657,   "\xe2\x87\x91"},
+               {"boxbox",                          10697,  "\xe2\xa7\x89"},
+               {"setminus",                        8726,   "\xe2\x88\x96"},
+               {"Lleftarrow",                      8666,   "\xe2\x87\x9a"},
+               {"nang",                            8736,   "\xe2\x88\xa0\xe2\x83\x92"},
+               {"TRADE",                           8482,   "\xe2\x84\xa2"},
+               {"urcorner",                        8989,   "\xe2\x8c\x9d"},
+               {"lsqb",                            91,     "\x5b"},
+               {"cupcup",                          10826,  "\xe2\xa9\x8a"},
+               {"kjcy",                            1116,   "\xd1\x9c"},
+               {"llhard",                          10603,  "\xe2\xa5\xab"},
+               {"mumap",                           8888,   "\xe2\x8a\xb8"},
+               {"iiint",                           8749,   "\xe2\x88\xad"},
+               {"RightTee",                        8866,   "\xe2\x8a\xa2"},
+               {"Tcaron",                          356,    "\xc5\xa4"},
+               {"bigcirc",                         9711,   "\xe2\x97\xaf"},
+               {"trianglerighteq",                 8885,   "\xe2\x8a\xb5"},
+               {"NotLessGreater",                  8824,   "\xe2\x89\xb8"},
+               {"hArr",                            8660,   "\xe2\x87\x94"},
+               {"ocy",                             1086,   "\xd0\xbe"},
+               {"tosa",                            10537,  "\xe2\xa4\xa9"},
+               {"twixt",                           8812,   "\xe2\x89\xac"},
+               {"square",                          9633,   "\xe2\x96\xa1"},
+               {"Otimes",                          10807,  "\xe2\xa8\xb7"},
+               {"Kcedil",                          310,    "\xc4\xb6"},
+               {"beth",                            8502,   "\xe2\x84\xb6"},
+               {"triminus",                        10810,  "\xe2\xa8\xba"},
+               {"nlArr",                           8653,   "\xe2\x87\x8d"},
+               {"Oacute",                          211,    "\xc3\x93"},
+               {"zwnj",                            8204,   "\xe2\x80\x8c"},
+               {"ll",                              8810,   "\xe2\x89\xaa"},
+               {"smashp",                          10803,  "\xe2\xa8\xb3"},
+               {"ngeqq",                           8807,   "\xe2\x89\xa7\xcc\xb8"},
+               {"rnmid",                           10990,  "\xe2\xab\xae"},
+               {"nwArr",                           8662,   "\xe2\x87\x96"},
+               {"RightUpDownVector",               10575,  "\xe2\xa5\x8f"},
+               {"lbbrk",                           10098,  "\xe2\x9d\xb2"},
+               {"compfn",                          8728,   "\xe2\x88\x98"},
+               {"eDDot",                           10871,  "\xe2\xa9\xb7"},
+               {"Jsercy",                          1032,   "\xd0\x88"},
+               {"HARDcy",                          1066,   "\xd0\xaa"},
+               {"nexists",                         8708,   "\xe2\x88\x84"},
+               {"theta",                           952,    "\xce\xb8"},
+               {"plankv",                          8463,   "\xe2\x84\x8f"},
+               {"sup2",                            178,    "\xc2\xb2"},
+               {"lessapprox",                      10885,  "\xe2\xaa\x85"},
+               {"gdot",                            289,    "\xc4\xa1"},
+               {"angmsdae",                        10668,  "\xe2\xa6\xac"},
+               {"Superset",                        8835,   "\xe2\x8a\x83"},
+               {"prap",                            10935,  "\xe2\xaa\xb7"},
+               {"Zscr",                            119989, "\xf0\x9d\x92\xb5"},
+               {"nsucc",                           8833,   "\xe2\x8a\x81"},
+               {"supseteqq",                       10950,  "\xe2\xab\x86"},
+               {"UpTee",                           8869,   "\xe2\x8a\xa5"},
+               {"LowerLeftArrow",                  8601,   "\xe2\x86\x99"},
+               {"ssmile",                          8995,   "\xe2\x8c\xa3"},
+               {"niv",                             8715,   "\xe2\x88\x8b"},
+               {"bigvee",                          8897,   "\xe2\x8b\x81"},
+               {"kscr",                            120000, "\xf0\x9d\x93\x80"},
+               {"xutri",                           9651,   "\xe2\x96\xb3"},
+               {"caret",                           8257,   "\xe2\x81\x81"},
+               {"caron",                           711,    "\xcb\x87"},
+               {"Wedge",                           8896,   "\xe2\x8b\x80"},
+               {"sdotb",                           8865,   "\xe2\x8a\xa1"},
+               {"bigoplus",                        10753,  "\xe2\xa8\x81"},
+               {"Breve",                           728,    "\xcb\x98"},
+               {"ImaginaryI",                      8520,   "\xe2\x85\x88"},
+               {"longmapsto",                      10236,  "\xe2\x9f\xbc"},
+               {"boxVH",                           9580,   "\xe2\x95\xac"},
+               {"lozenge",                         9674,   "\xe2\x97\x8a"},
+               {"toea",                            10536,  "\xe2\xa4\xa8"},
+               {"nbumpe",                          8783,   "\xe2\x89\x8f\xcc\xb8"},
+               {"gcirc",                           285,    "\xc4\x9d"},
+               {"NotHumpEqual",                    8783,   "\xe2\x89\x8f\xcc\xb8"},
+               {"pre",                             10927,  "\xe2\xaa\xaf"},
+               {"ascr",                            119990, "\xf0\x9d\x92\xb6"},
+               {"Acirc",                           194,    "\xc3\x82"},
+               {"questeq",                         8799,   "\xe2\x89\x9f"},
+               {"ncaron",                          328,    "\xc5\x88"},
+               {"LeftTeeArrow",                    8612,   "\xe2\x86\xa4"},
+               {"xcirc",                           9711,   "\xe2\x97\xaf"},
+               {"swarr",                           8601,   "\xe2\x86\x99"},
+               {"MinusPlus",                       8723,   "\xe2\x88\x93"},
+               {"plus",                            43,     "\x2b"},
+               {"NotDoubleVerticalBar",            8742,   "\xe2\x88\xa6"},
+               {"rppolint",                        10770,  "\xe2\xa8\x92"},
+               {"NotTildeFullEqual",               8775,   "\xe2\x89\x87"},
+               {"ltdot",                           8918,   "\xe2\x8b\x96"},
+               {"NotNestedGreaterGreater",         10914,  "\xe2\xaa\xa2\xcc\xb8"},
+               {"Lscr",                            8466,   "\xe2\x84\x92"},
+               {"pitchfork",                       8916,   "\xe2\x8b\x94"},
+               {"Eopf",                            120124, "\xf0\x9d\x94\xbc"},
+               {"ropf",                            120163, "\xf0\x9d\x95\xa3"},
+               {"Delta",                           916,    "\xce\x94"},
+               {"lozf",                            10731,  "\xe2\xa7\xab"},
+               {"RightTeeVector",                  10587,  "\xe2\xa5\x9b"},
+               {"UpDownArrow",                     8597,   "\xe2\x86\x95"},
+               {"bump",                            8782,   "\xe2\x89\x8e"},
+               {"Rscr",                            8475,   "\xe2\x84\x9b"},
+               {"slarr",                           8592,   "\xe2\x86\x90"},
+               {"lcy",                             1083,   "\xd0\xbb"},
+               {"Vee",                             8897,   "\xe2\x8b\x81"},
+               {"Iogon",                           302,    "\xc4\xae"},
+               {"minus",                           8722,   "\xe2\x88\x92"},
+               {"GreaterFullEqual",                8807,   "\xe2\x89\xa7"},
+               {"xhArr",                           10234,  "\xe2\x9f\xba"},
+               {"shortmid",                        8739,   "\xe2\x88\xa3"},
+               {"DoubleDownArrow",                 8659,   "\xe2\x87\x93"},
+               {"Wscr",                            119986, "\xf0\x9d\x92\xb2"},
+               {"rang",                            10217,  "\xe2\x9f\xa9"},
+               {"lcub",                            123,    "\x7b"},
+               {"mnplus",                          8723,   "\xe2\x88\x93"},
+               {"ulcrop",                          8975,   "\xe2\x8c\x8f"},
+               {"wfr",                             120116, "\xf0\x9d\x94\xb4"},
+               {"DifferentialD",                   8518,   "\xe2\x85\x86"},
+               {"ThinSpace",                       8201,   "\xe2\x80\x89"},
+               {"NotGreaterGreater",               8811,   "\xe2\x89\xab\xcc\xb8"},
+               {"Topf",                            120139, "\xf0\x9d\x95\x8b"},
+               {"sbquo",                           8218,   "\xe2\x80\x9a"},
+               {"sdot",                            8901,   "\xe2\x8b\x85"},
+               {"DoubleLeftTee",                   10980,  "\xe2\xab\xa4"},
+               {"vBarv",                           10985,  "\xe2\xab\xa9"},
+               {"subne",                           8842,   "\xe2\x8a\x8a"},
+               {"gtrdot",                          8919,   "\xe2\x8b\x97"},
+               {"opar",                            10679,  "\xe2\xa6\xb7"},
+               {"apid",                            8779,   "\xe2\x89\x8b"},
+               {"Cross",                           10799,  "\xe2\xa8\xaf"},
+               {"lhblk",                           9604,   "\xe2\x96\x84"},
+               {"capcap",                          10827,  "\xe2\xa9\x8b"},
+               {"midast",                          42,     "\x2a"},
+               {"lscr",                            120001, "\xf0\x9d\x93\x81"},
+               {"nGt",                             8811,   "\xe2\x89\xab\xe2\x83\x92"},
+               {"Euml",                            203,    "\xc3\x8b"},
+               {"blacktriangledown",               9662,   "\xe2\x96\xbe"},
+               {"Rcy",                             1056,   "\xd0\xa0"},
+               {"dfisht",                          10623,  "\xe2\xa5\xbf"},
+               {"dashv",                           8867,   "\xe2\x8a\xa3"},
+               {"ast",                             42,     "\x2a"},
+               {"ContourIntegral",                 8750,   "\xe2\x88\xae"},
+               {"Ofr",                             120082, "\xf0\x9d\x94\x92"},
+               {"Lcy",                             1051,   "\xd0\x9b"},
+               {"nltrie",                          8940,   "\xe2\x8b\xac"},
+               {"ShortUpArrow",                    8593,   "\xe2\x86\x91"},
+               {"acy",                             1072,   "\xd0\xb0"},
+               {"rightarrow",                      8594,   "\xe2\x86\x92"},
+               {"UnderBar",                        95,     "\x5f"},
+               {"LongLeftArrow",                   10229,  "\xe2\x9f\xb5"},
+               {"andd",                            10844,  "\xe2\xa9\x9c"},
+               {"xlarr",                           10229,  "\xe2\x9f\xb5"},
+               {"percnt",                          37,     "\x25"},
+               {"rharu",                           8640,   "\xe2\x87\x80"},
+               {"plusdo",                          8724,   "\xe2\x88\x94"},
+               {"TScy",                            1062,   "\xd0\xa6"},
+               {"kcy",                             1082,   "\xd0\xba"},
+               {"boxVR",                           9568,   "\xe2\x95\xa0"},
+               {"looparrowleft",                   8619,   "\xe2\x86\xab"},
+               {"scirc",                           349,    "\xc5\x9d"},
+               {"drcorn",                          8991,   "\xe2\x8c\x9f"},
+               {"iiota",                           8489,   "\xe2\x84\xa9"},
+               {"Zcy",                             1047,   "\xd0\x97"},
+               {"frac58",                          8541,   "\xe2\x85\x9d"},
+               {"alpha",                           945,    "\xce\xb1"},
+               {"daleth",                          8504,   "\xe2\x84\xb8"},
+               {"gtreqless",                       8923,   "\xe2\x8b\x9b"},
+               {"tstrok",                          359,    "\xc5\xa7"},
+               {"plusb",                           8862,   "\xe2\x8a\x9e"},
+               {"odsold",                          10684,  "\xe2\xa6\xbc"},
+               {"varsupsetneqq",                   10956,  "\xe2\xab\x8c\xef\xb8\x80"},
+               {"otilde",                          245,    "\xc3\xb5"},
+               {"gtcir",                           10874,  "\xe2\xa9\xba"},
+               {"lltri",                           9722,   "\xe2\x97\xba"},
+               {"rx",                              8478,   "\xe2\x84\x9e"},
+               {"ljcy",                            1113,   "\xd1\x99"},
+               {"parsim",                          10995,  "\xe2\xab\xb3"},
+               {"NotElement",                      8713,   "\xe2\x88\x89"},
+               {"plusmn",                          177,    "\xc2\xb1"},
+               {"varsubsetneq",                    8842,   "\xe2\x8a\x8a\xef\xb8\x80"},
+               {"subset",                          8834,   "\xe2\x8a\x82"},
+               {"awint",                           10769,  "\xe2\xa8\x91"},
+               {"laemptyv",                        10676,  "\xe2\xa6\xb4"},
+               {"phiv",                            981,    "\xcf\x95"},
+               {"sfrown",                          8994,   "\xe2\x8c\xa2"},
+               {"DoubleUpDownArrow",               8661,   "\xe2\x87\x95"},
+               {"lpar",                            40,     "\x28"},
+               {"frac45",                          8536,   "\xe2\x85\x98"},
+               {"rBarr",                           10511,  "\xe2\xa4\x8f"},
+               {"npolint",                         10772,  "\xe2\xa8\x94"},
+               {"emacr",                           275,    "\xc4\x93"},
+               {"maltese",                         10016,  "\xe2\x9c\xa0"},
+               {"PlusMinus",                       177,    "\xc2\xb1"},
+               {"ReverseEquilibrium",              8651,   "\xe2\x87\x8b"},
+               {"oscr",                            8500,   "\xe2\x84\xb4"},
+               {"blacksquare",                     9642,   "\xe2\x96\xaa"},
+               {"TSHcy",                           1035,   "\xd0\x8b"},
+               {"gap",                             10886,  "\xe2\xaa\x86"},
+               {"xnis",                            8955,   "\xe2\x8b\xbb"},
+               {"Ll",                              8920,   "\xe2\x8b\x98"},
+               {"PrecedesEqual",                   10927,  "\xe2\xaa\xaf"},
+               {"incare",                          8453,   "\xe2\x84\x85"},
+               {"nharr",                           8622,   "\xe2\x86\xae"},
+               {"varnothing",                      8709,   "\xe2\x88\x85"},
+               {"ShortDownArrow",                  8595,   "\xe2\x86\x93"},
+               {"nbsp",                            160,    " "},
+               {"asympeq",                         8781,   "\xe2\x89\x8d"},
+               {"rbrkslu",                         10640,  "\xe2\xa6\x90"},
+               {"rho",                             961,    "\xcf\x81"},
+               {"Mscr",                            8499,   "\xe2\x84\xb3"},
+               {"eth",                             240,    "\xc3\xb0"},
+               {"suplarr",                         10619,  "\xe2\xa5\xbb"},
+               {"Tab",                             9,      "\x09"},
+               {"omicron",                         959,    "\xce\xbf"},
+               {"blacktriangle",                   9652,   "\xe2\x96\xb4"},
+               {"nldr",                            8229,   "\xe2\x80\xa5"},
+               {"downharpoonleft",                 8643,   "\xe2\x87\x83"},
+               {"circledcirc",                     8858,   "\xe2\x8a\x9a"},
+               {"leftleftarrows",                  8647,   "\xe2\x87\x87"},
+               {"NotHumpDownHump",                 8782,   "\xe2\x89\x8e\xcc\xb8"},
+               {"nvgt",                            62,     "\x3e\xe2\x83\x92"},
+               {"rhard",                           8641,   "\xe2\x87\x81"},
+               {"nGg",                             8921,   "\xe2\x8b\x99\xcc\xb8"},
+               {"lurdshar",                        10570,  "\xe2\xa5\x8a"},
+               {"cirE",                            10691,  "\xe2\xa7\x83"},
+               {"isinE",                           8953,   "\xe2\x8b\xb9"},
+               {"eparsl",                          10723,  "\xe2\xa7\xa3"},
+               {"RightAngleBracket",               10217,  "\xe2\x9f\xa9"},
+               {"hcirc",                           293,    "\xc4\xa5"},
+               {"bumpeq",                          8783,   "\xe2\x89\x8f"},
+               {"cire",                            8791,   "\xe2\x89\x97"},
+               {"dotplus",                         8724,   "\xe2\x88\x94"},
+               {"itilde",                          297,    "\xc4\xa9"},
+               {"uwangle",                         10663,  "\xe2\xa6\xa7"},
+               {"rlhar",                           8652,   "\xe2\x87\x8c"},
+               {"rbrace",                          125,    "\x7d"},
+               {"mid",                             8739,   "\xe2\x88\xa3"},
+               {"el",                              10905,  "\xe2\xaa\x99"},
+               {"KJcy",                            1036,   "\xd0\x8c"},
+               {"odiv",                            10808,  "\xe2\xa8\xb8"},
+               {"amacr",                           257,    "\xc4\x81"},
+               {"qprime",                          8279,   "\xe2\x81\x97"},
+               {"tcedil",                          355,    "\xc5\xa3"},
+               {"UpArrowDownArrow",                8645,   "\xe2\x87\x85"},
+               {"spades",                          9824,   "\xe2\x99\xa0"},
+               {"napos",                           329,    "\xc5\x89"},
+               {"straightepsilon",                 1013,   "\xcf\xb5"},
+               {"CupCap",                          8781,   "\xe2\x89\x8d"},
+               {"Oopf",                            120134, "\xf0\x9d\x95\x86"},
+               {"sub",                             8834,   "\xe2\x8a\x82"},
+               {"ohm",                             937,    "\xce\xa9"},
+               {"UnderBrace",                      9183,   "\xe2\x8f\x9f"},
+               {"looparrowright",                  8620,   "\xe2\x86\xac"},
+               {"xotime",                          10754,  "\xe2\xa8\x82"},
+               {"ntgl",                            8825,   "\xe2\x89\xb9"},
+               {"minusdu",                         10794,  "\xe2\xa8\xaa"},
+               {"rarrb",                           8677,   "\xe2\x87\xa5"},
+               {"nvlArr",                          10498,  "\xe2\xa4\x82"},
+               {"triangle",                        9653,   "\xe2\x96\xb5"},
+               {"nacute",                          324,    "\xc5\x84"},
+               {"boxHD",                           9574,   "\xe2\x95\xa6"},
+               {"ratio",                           8758,   "\xe2\x88\xb6"},
+               {"larrsim",                         10611,  "\xe2\xa5\xb3"},
+               {"LessLess",                        10913,  "\xe2\xaa\xa1"},
+               {"yacy",                            1103,   "\xd1\x8f"},
+               {"ctdot",                           8943,   "\xe2\x8b\xaf"},
+               {"and",                             8743,   "\xe2\x88\xa7"},
+               {"lrtri",                           8895,   "\xe2\x8a\xbf"},
+               {"eDot",                            8785,   "\xe2\x89\x91"},
+               {"sqsub",                           8847,   "\xe2\x8a\x8f"},
+               {"real",                            8476,   "\xe2\x84\x9c"},
+               {"Dcy",                             1044,   "\xd0\x94"},
+               {"vartheta",                        977,    "\xcf\x91"},
+               {"nsub",                            8836,   "\xe2\x8a\x84"},
+               {"DownTee",                         8868,   "\xe2\x8a\xa4"},
+               {"acute",                           180,    "\xc2\xb4"},
+               {"GreaterLess",                     8823,   "\xe2\x89\xb7"},
+               {"supplus",                         10944,  "\xe2\xab\x80"},
+               {"Vbar",                            10987,  "\xe2\xab\xab"},
+               {"divideontimes",                   8903,   "\xe2\x8b\x87"},
+               {"lsim",                            8818,   "\xe2\x89\xb2"},
+               {"nearhk",                          10532,  "\xe2\xa4\xa4"},
+               {"nLtv",                            8810,   "\xe2\x89\xaa\xcc\xb8"},
+               {"RuleDelayed",                     10740,  "\xe2\xa7\xb4"},
+               {"smile",                           8995,   "\xe2\x8c\xa3"},
+               {"coprod",                          8720,   "\xe2\x88\x90"},
+               {"imof",                            8887,   "\xe2\x8a\xb7"},
+               {"ecy",                             1101,   "\xd1\x8d"},
+               {"RightCeiling",                    8969,   "\xe2\x8c\x89"},
+               {"dlcorn",                          8990,   "\xe2\x8c\x9e"},
+               {"Nu",                              925,    "\xce\x9d"},
+               {"frac18",                          8539,   "\xe2\x85\x9b"},
+               {"diamond",                         8900,   "\xe2\x8b\x84"},
+               {"Icirc",                           206,    "\xc3\x8e"},
+               {"ngeq",                            8817,   "\xe2\x89\xb1"},
+               {"epsilon",                         949,    "\xce\xb5"},
+               {"fork",                            8916,   "\xe2\x8b\x94"},
+               {"xrarr",                           10230,  "\xe2\x9f\xb6"},
+               {"racute",                          341,    "\xc5\x95"},
+               {"ntlg",                            8824,   "\xe2\x89\xb8"},
+               {"xvee",                            8897,   "\xe2\x8b\x81"},
+               {"LeftArrowRightArrow",             8646,   "\xe2\x87\x86"},
+               {"DownLeftRightVector",             10576,  "\xe2\xa5\x90"},
+               {"Eacute",                          201,    "\xc3\x89"},
+               {"gimel",                           8503,   "\xe2\x84\xb7"},
+               {"rtimes",                          8906,   "\xe2\x8b\x8a"},
+               {"forall",                          8704,   "\xe2\x88\x80"},
+               {"DiacriticalDoubleAcute",          733,    "\xcb\x9d"},
+               {"dArr",                            8659,   "\xe2\x87\x93"},
+               {"fallingdotseq",                   8786,   "\xe2\x89\x92"},
+               {"Aogon",                           260,    "\xc4\x84"},
+               {"PartialD",                        8706,   "\xe2\x88\x82"},
+               {"mapstoup",                        8613,   "\xe2\x86\xa5"},
+               {"die",                             168,    "\xc2\xa8"},
+               {"ngt",                             8815,   "\xe2\x89\xaf"},
+               {"vcy",                             1074,   "\xd0\xb2"},
+               {"fjlig",                           0,      "\x66\x6a"},
+               {"submult",                         10945,  "\xe2\xab\x81"},
+               {"ubrcy",                           1118,   "\xd1\x9e"},
+               {"ovbar",                           9021,   "\xe2\x8c\xbd"},
+               {"bsime",                           8909,   "\xe2\x8b\x8d"},
+               {"precnsim",                        8936,   "\xe2\x8b\xa8"},
+               {"DiacriticalTilde",                732,    "\xcb\x9c"},
+               {"cwint",                           8753,   "\xe2\x88\xb1"},
+               {"Scy",                             1057,   "\xd0\xa1"},
+               {"NotGreaterEqual",                 8817,   "\xe2\x89\xb1"},
+               {"boxUR",                           9562,   "\xe2\x95\x9a"},
+               {"LessSlantEqual",                  10877,  "\xe2\xa9\xbd"},
+               {"Barwed",                          8966,   "\xe2\x8c\x86"},
+               {"supdot",                          10942,  "\xe2\xaa\xbe"},
+               {"gel",                             8923,   "\xe2\x8b\x9b"},
+               {"iscr",                            119998, "\xf0\x9d\x92\xbe"},
+               {"doublebarwedge",                  8966,   "\xe2\x8c\x86"},
+               {"Idot",                            304,    "\xc4\xb0"},
+               {"DoubleDot",                       168,    "\xc2\xa8"},
+               {"rsquo",                           8217,   "\xe2\x80\x99"},
+               {"subsetneqq",                      10955,  "\xe2\xab\x8b"},
+               {"UpEquilibrium",                   10606,  "\xe2\xa5\xae"},
+               {"copysr",                          8471,   "\xe2\x84\x97"},
+               {"RightDoubleBracket",              10215,  "\xe2\x9f\xa7"},
+               {"LeftRightVector",                 10574,  "\xe2\xa5\x8e"},
+               {"DownLeftVectorBar",               10582,  "\xe2\xa5\x96"},
+               {"suphsub",                         10967,  "\xe2\xab\x97"},
+               {"cedil",                           184,    "\xc2\xb8"},
+               {"prurel",                          8880,   "\xe2\x8a\xb0"},
+               {"imagpart",                        8465,   "\xe2\x84\x91"},
+               {"Hscr",                            8459,   "\xe2\x84\x8b"},
+               {"jmath",                           567,    "\xc8\xb7"},
+               {"nrtrie",                          8941,   "\xe2\x8b\xad"},
+               {"nsup",                            8837,   "\xe2\x8a\x85"},
+               {"Ubrcy",                           1038,   "\xd0\x8e"},
+               {"succnsim",                        8937,   "\xe2\x8b\xa9"},
+               {"nesim",                           8770,   "\xe2\x89\x82\xcc\xb8"},
+               {"varepsilon",                      1013,   "\xcf\xb5"},
+               {"DoubleRightTee",                  8872,   "\xe2\x8a\xa8"},
+               {"not",                             172,    "\xc2\xac"},
+               {"lesdot",                          10879,  "\xe2\xa9\xbf"},
+               {"backepsilon",                     1014,   "\xcf\xb6"},
+               {"srarr",                           8594,   "\xe2\x86\x92"},
+               {"varsubsetneqq",                   10955,  "\xe2\xab\x8b\xef\xb8\x80"},
+               {"sqcap",                           8851,   "\xe2\x8a\x93"},
+               {"rightleftarrows",                 8644,   "\xe2\x87\x84"},
+               {"diams",                           9830,   "\xe2\x99\xa6"},
+               {"boxdR",                           9554,   "\xe2\x95\x92"},
+               {"ngeqslant",                       10878,  "\xe2\xa9\xbe\xcc\xb8"},
+               {"boxDR",                           9556,   "\xe2\x95\x94"},
+               {"sext",                            10038,  "\xe2\x9c\xb6"},
+               {"backsim",                         8765,   "\xe2\x88\xbd"},
+               {"nfr",                             120107, "\xf0\x9d\x94\xab"},
+               {"CloseCurlyDoubleQuote",           8221,   "\xe2\x80\x9d"},
+               {"npart",                           8706,   "\xe2\x88\x82\xcc\xb8"},
+               {"dharl",                           8643,   "\xe2\x87\x83"},
+               {"NewLine",                         10,     "\x0a"},
+               {"bigotimes",                       10754,  "\xe2\xa8\x82"},
+               {"lAtail",                          10523,  "\xe2\xa4\x9b"},
+               {"frac14",                          188,    "\xc2\xbc"},
+               {"or",                              8744,   "\xe2\x88\xa8"},
+               {"subedot",                         10947,  "\xe2\xab\x83"},
+               {"nmid",                            8740,   "\xe2\x88\xa4"},
+               {"DownArrowUpArrow",                8693,   "\xe2\x87\xb5"},
+               {"icy",                             1080,   "\xd0\xb8"},
+               {"num",                             35,     "\x23"},
+               {"Gdot",                            288,    "\xc4\xa0"},
+               {"urcrop",                          8974,   "\xe2\x8c\x8e"},
+               {"epsiv",                           1013,   "\xcf\xb5"},
+               {"topcir",                          10993,  "\xe2\xab\xb1"},
+               {"ne",                              8800,   "\xe2\x89\xa0"},
+               {"osol",                            8856,   "\xe2\x8a\x98"},
+               {"amp",                             38,     "\x26"},
+               {"ncap",                            10819,  "\xe2\xa9\x83"},
+               {"Sscr",                            119982, "\xf0\x9d\x92\xae"},
+               {"sung",                            9834,   "\xe2\x99\xaa"},
+               {"ltri",                            9667,   "\xe2\x97\x83"},
+               {"frac25",                          8534,   "\xe2\x85\x96"},
+               {"DZcy",                            1039,   "\xd0\x8f"},
+               {"RightUpVector",                   8638,   "\xe2\x86\xbe"},
+               {"rsquor",                          8217,   "\xe2\x80\x99"},
+               {"uplus",                           8846,   "\xe2\x8a\x8e"},
+               {"triangleright",                   9657,   "\xe2\x96\xb9"},
+               {"lAarr",                           8666,   "\xe2\x87\x9a"},
+               {"HilbertSpace",                    8459,   "\xe2\x84\x8b"},
+               {"there4",                          8756,   "\xe2\x88\xb4"},
+               {"vscr",                            120011, "\xf0\x9d\x93\x8b"},
+               {"cirscir",                         10690,  "\xe2\xa7\x82"},
+               {"roarr",                           8702,   "\xe2\x87\xbe"},
+               {"hslash",                          8463,   "\xe2\x84\x8f"},
+               {"supdsub",                         10968,  "\xe2\xab\x98"},
+               {"simg",                            10910,  "\xe2\xaa\x9e"},
+               {"trade",                           8482,   "\xe2\x84\xa2"},
+               {"searrow",                         8600,   "\xe2\x86\x98"},
+               {"DownLeftVector",                  8637,   "\xe2\x86\xbd"},
+               {"FilledSmallSquare",               9724,   "\xe2\x97\xbc"},
+               {"prod",                            8719,   "\xe2\x88\x8f"},
+               {"oror",                            10838,  "\xe2\xa9\x96"},
+               {"udarr",                           8645,   "\xe2\x87\x85"},
+               {"jsercy",                          1112,   "\xd1\x98"},
+               {"tprime",                          8244,   "\xe2\x80\xb4"},
+               {"bprime",                          8245,   "\xe2\x80\xb5"},
+               {"malt",                            10016,  "\xe2\x9c\xa0"},
+               {"bigcup",                          8899,   "\xe2\x8b\x83"},
+               {"oint",                            8750,   "\xe2\x88\xae"},
+               {"female",                          9792,   "\xe2\x99\x80"},
+               {"omacr",                           333,    "\xc5\x8d"},
+               {"SquareSubsetEqual",               8849,   "\xe2\x8a\x91"},
+               {"SucceedsEqual",                   10928,  "\xe2\xaa\xb0"},
+               {"plusacir",                        10787,  "\xe2\xa8\xa3"},
+               {"Gcirc",                           284,    "\xc4\x9c"},
+               {"lesdotor",                        10883,  "\xe2\xaa\x83"},
+               {"escr",                            8495,   "\xe2\x84\xaf"},
+               {"THORN",                           222,    "\xc3\x9e"},
+               {"UpArrowBar",                      10514,  "\xe2\xa4\x92"},
+               {"nvrtrie",                         8885,   "\xe2\x8a\xb5\xe2\x83\x92"},
+               {"varkappa",                        1008,   "\xcf\xb0"},
+               {"NotReverseElement",               8716,   "\xe2\x88\x8c"},
+               {"zdot",                            380,    "\xc5\xbc"},
+               {"ExponentialE",                    8519,   "\xe2\x85\x87"},
+               {"lesseqgtr",                       8922,   "\xe2\x8b\x9a"},
+               {"cscr",                            119992, "\xf0\x9d\x92\xb8"},
+               {"Dscr",                            119967, "\xf0\x9d\x92\x9f"},
+               {"lthree",                          8907,   "\xe2\x8b\x8b"},
+               {"Ccedil",                          199,    "\xc3\x87"},
+               {"nge",                             8817,   "\xe2\x89\xb1"},
+               {"UpperLeftArrow",                  8598,   "\xe2\x86\x96"},
+               {"vDash",                           8872,   "\xe2\x8a\xa8"},
+               {"efDot",                           8786,   "\xe2\x89\x92"},
+               {"telrec",                          8981,   "\xe2\x8c\x95"},
+               {"vellip",                          8942,   "\xe2\x8b\xae"},
+               {"nrArr",                           8655,   "\xe2\x87\x8f"},
+               {"ugrave",                          249,    "\xc3\xb9"},
+               {"uring",                           367,    "\xc5\xaf"},
+               {"Bernoullis",                      8492,   "\xe2\x84\xac"},
+               {"nles",                            10877,  "\xe2\xa9\xbd\xcc\xb8"},
+               {"macr",                            175,    "\xc2\xaf"},
+               {"boxuR",                           9560,   "\xe2\x95\x98"},
+               {"clubsuit",                        9827,   "\xe2\x99\xa3"},
+               {"rightarrowtail",                  8611,   "\xe2\x86\xa3"},
+               {"epar",                            8917,   "\xe2\x8b\x95"},
+               {"ltcc",                            10918,  "\xe2\xaa\xa6"},
+               {"twoheadleftarrow",                8606,   "\xe2\x86\x9e"},
+               {"aleph",                           8501,   "\xe2\x84\xb5"},
+               {"Colon",                           8759,   "\xe2\x88\xb7"},
+               {"vltri",                           8882,   "\xe2\x8a\xb2"},
+               {"quaternions",                     8461,   "\xe2\x84\x8d"},
+               {"rfr",                             120111, "\xf0\x9d\x94\xaf"},
+               {"Ouml",                            214,    "\xc3\x96"},
+               {"rsh",                             8625,   "\xe2\x86\xb1"},
+               {"emptyv",                          8709,   "\xe2\x88\x85"},
+               {"sqsup",                           8848,   "\xe2\x8a\x90"},
+               {"marker",                          9646,   "\xe2\x96\xae"},
+               {"Efr",                             120072, "\xf0\x9d\x94\x88"},
+               {"DotEqual",                        8784,   "\xe2\x89\x90"},
+               {"eqsim",                           8770,   "\xe2\x89\x82"},
+               {"NotSucceedsEqual",                10928,  "\xe2\xaa\xb0\xcc\xb8"},
+               {"primes",                          8473,   "\xe2\x84\x99"},
+               {"times",                           215,    "\xc3\x97"},
+               {"rangd",                           10642,  "\xe2\xa6\x92"},
+               {"rightharpoonup",                  8640,   "\xe2\x87\x80"},
+               {"lrhard",                          10605,  "\xe2\xa5\xad"},
+               {"ape",                             8778,   "\xe2\x89\x8a"},
+               {"varsupsetneq",                    8843,   "\xe2\x8a\x8b\xef\xb8\x80"},
+               {"larrlp",                          8619,   "\xe2\x86\xab"},
+               {"NotPrecedesEqual",                10927,  "\xe2\xaa\xaf\xcc\xb8"},
+               {"ulcorner",                        8988,   "\xe2\x8c\x9c"},
+               {"acd",                             8767,   "\xe2\x88\xbf"},
+               {"Hacek",                           711,    "\xcb\x87"},
+               {"xuplus",                          10756,  "\xe2\xa8\x84"},
+               {"therefore",                       8756,   "\xe2\x88\xb4"},
+               {"YIcy",                            1031,   "\xd0\x87"},
+               {"Tfr",                             120087, "\xf0\x9d\x94\x97"},
+               {"Jcirc",                           308,    "\xc4\xb4"},
+               {"LessGreater",                     8822,   "\xe2\x89\xb6"},
+               {"Uring",                           366,    "\xc5\xae"},
+               {"Ugrave",                          217,    "\xc3\x99"},
+               {"rarr",                            8594,   "\xe2\x86\x92"},
+               {"wopf",                            120168, "\xf0\x9d\x95\xa8"},
+               {"imath",                           305,    "\xc4\xb1"},
+               {"Yopf",                            120144, "\xf0\x9d\x95\x90"},
+               {"colone",                          8788,   "\xe2\x89\x94"},
+               {"csube",                           10961,  "\xe2\xab\x91"},
+               {"odash",                           8861,   "\xe2\x8a\x9d"},
+               {"olarr",                           8634,   "\xe2\x86\xba"},
+               {"angrt",                           8735,   "\xe2\x88\x9f"},
+               {"NotLeftTriangleBar",              10703,  "\xe2\xa7\x8f\xcc\xb8"},
+               {"GreaterEqual",                    8805,   "\xe2\x89\xa5"},
+               {"scnap",                           10938,  "\xe2\xaa\xba"},
+               {"pi",                              960,    "\xcf\x80"},
+               {"lesg",                            8922,   "\xe2\x8b\x9a\xef\xb8\x80"},
+               {"orderof",                         8500,   "\xe2\x84\xb4"},
+               {"uacute",                          250,    "\xc3\xba"},
+               {"Barv",                            10983,  "\xe2\xab\xa7"},
+               {"Theta",                           920,    "\xce\x98"},
+               {"leftrightsquigarrow",             8621,   "\xe2\x86\xad"},
+               {"Atilde",                          195,    "\xc3\x83"},
+               {"cupdot",                          8845,   "\xe2\x8a\x8d"},
+               {"ntriangleright",                  8939,   "\xe2\x8b\xab"},
+               {"measuredangle",                   8737,   "\xe2\x88\xa1"},
+               {"jscr",                            119999, "\xf0\x9d\x92\xbf"},
+               {"inodot",                          305,    "\xc4\xb1"},
+               {"mopf",                            120158, "\xf0\x9d\x95\x9e"},
+               {"hkswarow",                        10534,  "\xe2\xa4\xa6"},
+               {"lopar",                           10629,  "\xe2\xa6\x85"},
+               {"thksim",                          8764,   "\xe2\x88\xbc"},
+               {"bkarow",                          10509,  "\xe2\xa4\x8d"},
+               {"rarrfs",                          10526,  "\xe2\xa4\x9e"},
+               {"ntrianglelefteq",                 8940,   "\xe2\x8b\xac"},
+               {"Bscr",                            8492,   "\xe2\x84\xac"},
+               {"topf",                            120165, "\xf0\x9d\x95\xa5"},
+               {"Uacute",                          218,    "\xc3\x9a"},
+               {"lap",                             10885,  "\xe2\xaa\x85"},
+               {"djcy",                            1106,   "\xd1\x92"},
+               {"bopf",                            120147, "\xf0\x9d\x95\x93"},
+               {"empty",                           8709,   "\xe2\x88\x85"},
+               {"LeftAngleBracket",                10216,  "\xe2\x9f\xa8"},
+               {"Imacr",                           298,    "\xc4\xaa"},
+               {"ltcir",                           10873,  "\xe2\xa9\xb9"},
+               {"trisb",                           10701,  "\xe2\xa7\x8d"},
+               {"gjcy",                            1107,   "\xd1\x93"},
+               {"pr",                              8826,   "\xe2\x89\xba"},
+               {"Mu",                              924,    "\xce\x9c"},
+               {"ogon",                            731,    "\xcb\x9b"},
+               {"pertenk",                         8241,   "\xe2\x80\xb1"},
+               {"plustwo",                         10791,  "\xe2\xa8\xa7"},
+               {"Vfr",                             120089, "\xf0\x9d\x94\x99"},
+               {"ApplyFunction",                   8289,   "\xe2\x81\xa1"},
+               {"Sub",                             8912,   "\xe2\x8b\x90"},
+               {"DoubleLeftRightArrow",            8660,   "\xe2\x87\x94"},
+               {"Lmidot",                          319,    "\xc4\xbf"},
+               {"nwarrow",                         8598,   "\xe2\x86\x96"},
+               {"angrtvbd",                        10653,  "\xe2\xa6\x9d"},
+               {"fcy",                             1092,   "\xd1\x84"},
+               {"ltlarr",                          10614,  "\xe2\xa5\xb6"},
+               {"CircleMinus",                     8854,   "\xe2\x8a\x96"},
+               {"angmsdab",                        10665,  "\xe2\xa6\xa9"},
+               {"wedgeq",                          8793,   "\xe2\x89\x99"},
+               {"iogon",                           303,    "\xc4\xaf"},
+               {"laquo",                           171,    "\xc2\xab"},
+               {"NestedGreaterGreater",            8811,   "\xe2\x89\xab"},
+               {"UnionPlus",                       8846,   "\xe2\x8a\x8e"},
+               {"CircleDot",                       8857,   "\xe2\x8a\x99"},
+               {"coloneq",                         8788,   "\xe2\x89\x94"},
+               {"csupe",                           10962,  "\xe2\xab\x92"},
+               {"tcaron",                          357,    "\xc5\xa5"},
+               {"GreaterTilde",                    8819,   "\xe2\x89\xb3"},
+               {"Map",                             10501,  "\xe2\xa4\x85"},
+               {"DoubleLongLeftArrow",             10232,  "\xe2\x9f\xb8"},
+               {"Uparrow",                         8657,   "\xe2\x87\x91"},
+               {"scy",                             1089,   "\xd1\x81"},
+               {"llarr",                           8647,   "\xe2\x87\x87"},
+               {"rangle",                          10217,  "\xe2\x9f\xa9"},
+               {"sstarf",                          8902,   "\xe2\x8b\x86"},
+               {"InvisibleTimes",                  8290,   "\xe2\x81\xa2"},
+               {"egsdot",                          10904,  "\xe2\xaa\x98"},
+               {"target",                          8982,   "\xe2\x8c\x96"},
+               {"lesges",                          10899,  "\xe2\xaa\x93"},
+               {"curren",                          164,    "\xc2\xa4"},
+               {"yopf",                            120170, "\xf0\x9d\x95\xaa"},
+               {"frac23",                          8532,   "\xe2\x85\x94"},
+               {"NotSucceedsTilde",                8831,   "\xe2\x89\xbf\xcc\xb8"},
+               {"napprox",                         8777,   "\xe2\x89\x89"},
+               {"odblac",                          337,    "\xc5\x91"},
+               {"gammad",                          989,    "\xcf\x9d"},
+               {"dscr",                            119993, "\xf0\x9d\x92\xb9"},
+               {"SupersetEqual",                   8839,   "\xe2\x8a\x87"},
+               {"squf",                            9642,   "\xe2\x96\xaa"},
+               {"Because",                         8757,   "\xe2\x88\xb5"},
+               {"sccue",                           8829,   "\xe2\x89\xbd"},
+               {"KHcy",                            1061,   "\xd0\xa5"},
+               {"Wcirc",                           372,    "\xc5\xb4"},
+               {"uparrow",                         8593,   "\xe2\x86\x91"},
+               {"lessgtr",                         8822,   "\xe2\x89\xb6"},
+               {"thickapprox",                     8776,   "\xe2\x89\x88"},
+               {"lbrksld",                         10639,  "\xe2\xa6\x8f"},
+               {"oslash",                          248,    "\xc3\xb8"},
+               {"NotCupCap",                       8813,   "\xe2\x89\xad"},
+               {"elinters",                        9191,   "\xe2\x8f\xa7"},
+               {"Assign",                          8788,   "\xe2\x89\x94"},
+               {"ClockwiseContourIntegral",        8754,   "\xe2\x88\xb2"},
+               {"lfisht",                          10620,  "\xe2\xa5\xbc"},
+               {"DownArrow",                       8595,   "\xe2\x86\x93"},
+               {"Zdot",                            379,    "\xc5\xbb"},
+               {"xscr",                            120013, "\xf0\x9d\x93\x8d"},
+               {"DiacriticalGrave",                96,     "\x60"},
+               {"DoubleLongLeftRightArrow",        10234,  "\xe2\x9f\xba"},
+               {"angle",                           8736,   "\xe2\x88\xa0"},
+               {"race",                            8765,   "\xe2\x88\xbd\xcc\xb1"},
+               {"Ascr",                            119964, "\xf0\x9d\x92\x9c"},
+               {"Xscr",                            119987, "\xf0\x9d\x92\xb3"},
+               {"acirc",                           226,    "\xc3\xa2"},
+               {"otimesas",                        10806,  "\xe2\xa8\xb6"},
+               {"gscr",                            8458,   "\xe2\x84\x8a"},
+               {"gcy",                             1075,   "\xd0\xb3"},
+               {"angmsdag",                        10670,  "\xe2\xa6\xae"},
+               {"tshcy",                           1115,   "\xd1\x9b"},
+               {"Acy",                             1040,   "\xd0\x90"},
+               {"NotGreaterLess",                  8825,   "\xe2\x89\xb9"},
+               {"dtdot",                           8945,   "\xe2\x8b\xb1"},
+               {"quot",                            34,     "\x22"},
+               {"micro",                           181,    "\xc2\xb5"},
+               {"simplus",                         10788,  "\xe2\xa8\xa4"},
+               {"nsupseteq",                       8841,   "\xe2\x8a\x89"},
+               {"Ufr",                             120088, "\xf0\x9d\x94\x98"},
+               {"Pr",                              10939,  "\xe2\xaa\xbb"},
+               {"napid",                           8779,   "\xe2\x89\x8b\xcc\xb8"},
+               {"rceil",                           8969,   "\xe2\x8c\x89"},
+               {"boxtimes",                        8864,   "\xe2\x8a\xa0"},
+               {"erarr",                           10609,  "\xe2\xa5\xb1"},
+               {"downdownarrows",                  8650,   "\xe2\x87\x8a"},
+               {"Kfr",                             120078, "\xf0\x9d\x94\x8e"},
+               {"mho",                             8487,   "\xe2\x84\xa7"},
+               {"scpolint",                        10771,  "\xe2\xa8\x93"},
+               {"vArr",                            8661,   "\xe2\x87\x95"},
+               {"Ccaron",                          268,    "\xc4\x8c"},
+               {"NotRightTriangle",                8939,   "\xe2\x8b\xab"},
+               {"topbot",                          9014,   "\xe2\x8c\xb6"},
+               {"qopf",                            120162, "\xf0\x9d\x95\xa2"},
+               {"eogon",                           281,    "\xc4\x99"},
+               {"luruhar",                         10598,  "\xe2\xa5\xa6"},
+               {"gtdot",                           8919,   "\xe2\x8b\x97"},
+               {"Egrave",                          200,    "\xc3\x88"},
+               {"roplus",                          10798,  "\xe2\xa8\xae"},
+               {"Intersection",                    8898,   "\xe2\x8b\x82"},
+               {"Uarr",                            8607,   "\xe2\x86\x9f"},
+               {"dcy",                             1076,   "\xd0\xb4"},
+               {"boxvl",                           9508,   "\xe2\x94\xa4"},
+               {"RightArrowBar",                   8677,   "\xe2\x87\xa5"},
+               {"yuml",                            255,    "\xc3\xbf"},
+               {"parallel",                        8741,   "\xe2\x88\xa5"},
+               {"succneqq",                        10934,  "\xe2\xaa\xb6"},
+               {"bemptyv",                         10672,  "\xe2\xa6\xb0"},
+               {"starf",                           9733,   "\xe2\x98\x85"},
+               {"OverBar",                         8254,   "\xe2\x80\xbe"},
+               {"Alpha",                           913,    "\xce\x91"},
+               {"LeftUpVectorBar",                 10584,  "\xe2\xa5\x98"},
+               {"ufr",                             120114, "\xf0\x9d\x94\xb2"},
+               {"swarhk",                          10534,  "\xe2\xa4\xa6"},
+               {"GreaterEqualLess",                8923,   "\xe2\x8b\x9b"},
+               {"sscr",                            120008, "\xf0\x9d\x93\x88"},
+               {"Pi",                              928,    "\xce\xa0"},
+               {"boxh",                            9472,   "\xe2\x94\x80"},
+               {"frac16",                          8537,   "\xe2\x85\x99"},
+               {"lbrack",                          91,     "\x5b"},
+               {"vert",                            124,    "\x7c"},
+               {"precneqq",                        10933,  "\xe2\xaa\xb5"},
+               {"NotGreaterSlantEqual",            10878,  "\xe2\xa9\xbe\xcc\xb8"},
+               {"Omega",                           937,    "\xce\xa9"},
+               {"uarr",                            8593,   "\xe2\x86\x91"},
+               {"boxVr",                           9567,   "\xe2\x95\x9f"},
+               {"ruluhar",                         10600,  "\xe2\xa5\xa8"},
+               {"ShortLeftArrow",                  8592,   "\xe2\x86\x90"},
+               {"Qfr",                             120084, "\xf0\x9d\x94\x94"},
+               {"olt",                             10688,  "\xe2\xa7\x80"},
+               {"nequiv",                          8802,   "\xe2\x89\xa2"},
+               {"fscr",                            119995, "\xf0\x9d\x92\xbb"},
+               {"rarrhk",                          8618,   "\xe2\x86\xaa"},
+               {"nsqsupe",                         8931,   "\xe2\x8b\xa3"},
+               {"nsubseteq",                       8840,   "\xe2\x8a\x88"},
+               {"numero",                          8470,   "\xe2\x84\x96"},
+               {"emsp14",                          8197,   "\xe2\x80\x85"},
+               {"gl",                              8823,   "\xe2\x89\xb7"},
+               {"ocirc",                           244,    "\xc3\xb4"},
+               {"weierp",                          8472,   "\xe2\x84\x98"},
+               {"boxvL",                           9569,   "\xe2\x95\xa1"},
+               {"RightArrowLeftArrow",             8644,   "\xe2\x87\x84"},
+               {"Precedes",                        8826,   "\xe2\x89\xba"},
+               {"RightVector",                     8640,   "\xe2\x87\x80"},
+               {"xcup",                            8899,   "\xe2\x8b\x83"},
+               {"angmsdad",                        10667,  "\xe2\xa6\xab"},
+               {"gtrsim",                          8819,   "\xe2\x89\xb3"},
+               {"natural",                         9838,   "\xe2\x99\xae"},
+               {"nVdash",                          8878,   "\xe2\x8a\xae"},
+               {"RightTriangleEqual",              8885,   "\xe2\x8a\xb5"},
+               {"dscy",                            1109,   "\xd1\x95"},
+               {"leftthreetimes",                  8907,   "\xe2\x8b\x8b"},
+               {"prsim",                           8830,   "\xe2\x89\xbe"},
+               {"Bcy",                             1041,   "\xd0\x91"},
+               {"Chi",                             935,    "\xce\xa7"},
+               {"timesb",                          8864,   "\xe2\x8a\xa0"},
+               {"Del",                             8711,   "\xe2\x88\x87"},
+               {"lmidot",                          320,    "\xc5\x80"},
+               {"RightDownVector",                 8642,   "\xe2\x87\x82"},
+               {"simdot",                          10858,  "\xe2\xa9\xaa"},
+               {"FilledVerySmallSquare",           9642,   "\xe2\x96\xaa"},
+               {"NotLessSlantEqual",               10877,  "\xe2\xa9\xbd\xcc\xb8"},
+               {"SucceedsTilde",                   8831,   "\xe2\x89\xbf"},
+               {"duarr",                           8693,   "\xe2\x87\xb5"},
+               {"apE",                             10864,  "\xe2\xa9\xb0"},
+               {"odot",                            8857,   "\xe2\x8a\x99"},
+               {"mldr",                            8230,   "\xe2\x80\xa6"},
+               {"Uarrocir",                        10569,  "\xe2\xa5\x89"},
+               {"nLl",                             8920,   "\xe2\x8b\x98\xcc\xb8"},
+               {"rarrpl",                          10565,  "\xe2\xa5\x85"},
+               {"cir",                             9675,   "\xe2\x97\x8b"},
+               {"blk14",                           9617,   "\xe2\x96\x91"},
+               {"VerticalLine",                    124,    "\x7c"},
+               {"jcy",                             1081,   "\xd0\xb9"},
+               {"filig",                           64257,  "\xef\xac\x81"},
+               {"LongRightArrow",                  10230,  "\xe2\x9f\xb6"},
+               {"beta",                            946,    "\xce\xb2"},
+               {"ccupssm",                         10832,  "\xe2\xa9\x90"},
+               {"supsub",                          10964,  "\xe2\xab\x94"},
+               {"spar",                            8741,   "\xe2\x88\xa5"},
+               {"Tstrok",                          358,    "\xc5\xa6"},
+               {"isinv",                           8712,   "\xe2\x88\x88"},
+               {"rightsquigarrow",                 8605,   "\xe2\x86\x9d"},
+               {"Diamond",                         8900,   "\xe2\x8b\x84"},
+               {"curlyeqsucc",                     8927,   "\xe2\x8b\x9f"},
+               {"ijlig",                           307,    "\xc4\xb3"},
+               {"puncsp",                          8200,   "\xe2\x80\x88"},
+               {"hamilt",                          8459,   "\xe2\x84\x8b"},
+               {"mapstoleft",                      8612,   "\xe2\x86\xa4"},
+               {"Copf",                            8450,   "\xe2\x84\x82"},
+               {"prnsim",                          8936,   "\xe2\x8b\xa8"},
+               {"DotDot",                          8412,   "\xe2\x83\x9c"},
+               {"lobrk",                           10214,  "\xe2\x9f\xa6"},
+               {"twoheadrightarrow",               8608,   "\xe2\x86\xa0"},
+               {"ngE",                             8807,   "\xe2\x89\xa7\xcc\xb8"},
+               {"cylcty",                          9005,   "\xe2\x8c\xad"},
+               {"sube",                            8838,   "\xe2\x8a\x86"},
+               {"NotEqualTilde",                   8770,   "\xe2\x89\x82\xcc\xb8"},
+               {"Yuml",                            376,    "\xc5\xb8"},
+               {"comp",                            8705,   "\xe2\x88\x81"},
+               {"dotminus",                        8760,   "\xe2\x88\xb8"},
+               {"crarr",                           8629,   "\xe2\x86\xb5"},
+               {"imped",                           437,    "\xc6\xb5"},
+               {"barwedge",                        8965,   "\xe2\x8c\x85"},
+               {"harrcir",                         10568,  "\xe2\xa5\x88"},
 };
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index c865fa21a32ef2578c406b35d5f96dfe87b19b0c..8f430204e593332fba0a00ea6d9242b5590c299f 100644 (file)
 #ifndef SRC_LIBSERVER_HTML_TAGS_H_
 #define SRC_LIBSERVER_HTML_TAGS_H_
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /* Known HTML tags */
-typedef enum
-{
+typedef enum {
        Tag_UNKNOWN, /**< Unknown tag! */
        Tag_A,      /**< A */
        Tag_ABBR,   /**< ABBR */
@@ -196,5 +199,8 @@ typedef enum
 /* Unique elements */
 #define CM_UNIQUE       (1 << 22)
 
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBSERVER_HTML_TAGS_H_ */
index 7906aeadf83884c2c9942e91968b33a84d4f855c..00fd38488d58850710444d8e2e21f95b3bef93bd 100644 (file)
 #include "contrib/libev/ev.h"
 #include "ref.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_milter_reply {
        RSPAMD_MILTER_ADDRCPT = '+',
        RSPAMD_MILTER_DELRCPT = '-',
@@ -69,10 +73,11 @@ struct rspamd_milter_session {
 };
 
 typedef void (*rspamd_milter_finish) (gint fd,
-               struct rspamd_milter_session *session, void *ud);
+                                                                         struct rspamd_milter_session *session, void *ud);
+
 typedef void (*rspamd_milter_error) (gint fd,
-               struct rspamd_milter_session *session,
-               void *ud, GError *err);
+                                                                        struct rspamd_milter_session *session,
+                                                                        void *ud, GError *err);
 
 /**
  * Handles socket with milter protocol
@@ -83,9 +88,9 @@ typedef void (*rspamd_milter_error) (gint fd,
  * @return
  */
 gboolean rspamd_milter_handle_socket (gint fd, ev_tstamp timeout,
-               rspamd_mempool_t *pool,
-               struct ev_loop *ev_base, rspamd_milter_finish finish_cb,
-               rspamd_milter_error error_cb, void *ud);
+                                                                         rspamd_mempool_t *pool,
+                                                                         struct ev_loop *ev_base, rspamd_milter_finish finish_cb,
+                                                                         rspamd_milter_error error_cb, void *ud);
 
 /**
  * Updates userdata for a session, returns previous userdata
@@ -93,8 +98,8 @@ gboolean rspamd_milter_handle_socket (gint fd, ev_tstamp timeout,
  * @param ud
  * @return
  */
-void * rspamd_milter_update_userdata (struct rspamd_milter_session *session,
-               void *ud);
+void *rspamd_milter_update_userdata (struct rspamd_milter_session *session,
+                                                                        void *ud);
 
 /**
  * Sets SMTP reply string
@@ -105,9 +110,9 @@ void * rspamd_milter_update_userdata (struct rspamd_milter_session *session,
  * @return
  */
 gboolean rspamd_milter_set_reply (struct rspamd_milter_session *session,
-               rspamd_fstring_t *rcode,
-               rspamd_fstring_t *xcode,
-               rspamd_fstring_t *reply);
+                                                                 rspamd_fstring_t *rcode,
+                                                                 rspamd_fstring_t *xcode,
+                                                                 rspamd_fstring_t *reply);
 
 /**
  * Send some action to the MTA
@@ -117,7 +122,7 @@ gboolean rspamd_milter_set_reply (struct rspamd_milter_session *session,
  * @return
  */
 gboolean rspamd_milter_send_action (struct rspamd_milter_session *session,
-               enum rspamd_milter_reply act, ...);
+                                                                       enum rspamd_milter_reply act, ...);
 
 /**
  * Adds some header
@@ -127,7 +132,7 @@ gboolean rspamd_milter_send_action (struct rspamd_milter_session *session,
  * @return
  */
 gboolean rspamd_milter_add_header (struct rspamd_milter_session *session,
-               GString *name, GString *value);
+                                                                  GString *name, GString *value);
 
 /**
  * Removes some header
@@ -136,11 +141,11 @@ gboolean rspamd_milter_add_header (struct rspamd_milter_session *session,
  * @return
  */
 gboolean rspamd_milter_del_header (struct rspamd_milter_session *session,
-               GString *name);
+                                                                  GString *name);
 
 void rspamd_milter_session_unref (struct rspamd_milter_session *session);
 
-struct rspamd_milter_session * rspamd_milter_session_ref (
+struct rspamd_milter_session *rspamd_milter_session_ref (
                struct rspamd_milter_session *session);
 
 /**
@@ -148,7 +153,7 @@ struct rspamd_milter_session * rspamd_milter_session_ref (
  * @param session
  * @return
  */
-struct rspamd_http_message * rspamd_milter_to_http (
+struct rspamd_http_message *rspamd_milter_to_http (
                struct rspamd_milter_session *session);
 
 /**
@@ -157,7 +162,7 @@ struct rspamd_http_message * rspamd_milter_to_http (
  * @param results
  */
 void rspamd_milter_send_task_results (struct rspamd_milter_session *session,
-               const ucl_object_t *results);
+                                                                         const ucl_object_t *results);
 
 /**
  * Init internal milter context
@@ -173,4 +178,8 @@ void rspamd_milter_init_library (const struct rspamd_milter_context *ctx);
 rspamd_mempool_t *rspamd_milter_get_session_pool (
                struct rspamd_milter_session *session);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 41862a1691c50edbab7682bdc7bcf5762a78ba24..fff6de38fe35d626aa65d3c44857a465c2397220 100644 (file)
 #include "libutil/str_util.h"
 #include "libutil/libev_helper.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_milter_state {
        st_len_1 = 0,
        st_len_2,
@@ -97,45 +101,45 @@ enum rspamd_milter_io_cmd {
 /*
  * Protocol flags
  */
-#define RSPAMD_MILTER_FLAG_NOUNKNOWN   (1L<<8) /* filter does not want unknown cmd */
-#define RSPAMD_MILTER_FLAG_NODATA              (1L<<9) /* filter does not want DATA */
-#define RSPAMD_MILTER_FLAG_NR_HDR              (1L<<7) /* filter won't reply for header */
-#define RSPAMD_MILTER_FLAG_SKIP                (1L<<10)/* MTA supports SMFIR_SKIP */
-#define RSPAMD_MILTER_FLAG_RCPT_REJ    (1L<<11)/* filter wants rejected RCPTs */
-#define RSPAMD_MILTER_FLAG_NR_CONN     (1L<<12)/* filter won't reply for connect */
-#define RSPAMD_MILTER_FLAG_NR_HELO     (1L<<13)/* filter won't reply for HELO */
-#define RSPAMD_MILTER_FLAG_NR_MAIL     (1L<<14)/* filter won't reply for MAIL */
-#define RSPAMD_MILTER_FLAG_NR_RCPT     (1L<<15)/* filter won't reply for RCPT */
-#define RSPAMD_MILTER_FLAG_NR_DATA     (1L<<16)/* filter won't reply for DATA */
-#define RSPAMD_MILTER_FLAG_NR_UNKN     (1L<<17)/* filter won't reply for UNKNOWN */
-#define RSPAMD_MILTER_FLAG_NR_EOH      (1L<<18)/* filter won't reply for eoh */
-#define RSPAMD_MILTER_FLAG_NR_BODY     (1L<<19)/* filter won't reply for body chunk */
+#define RSPAMD_MILTER_FLAG_NOUNKNOWN    (1L<<8)    /* filter does not want unknown cmd */
+#define RSPAMD_MILTER_FLAG_NODATA        (1L<<9)    /* filter does not want DATA */
+#define RSPAMD_MILTER_FLAG_NR_HDR        (1L<<7)    /* filter won't reply for header */
+#define RSPAMD_MILTER_FLAG_SKIP        (1L<<10)/* MTA supports SMFIR_SKIP */
+#define RSPAMD_MILTER_FLAG_RCPT_REJ    (1L<<11)/* filter wants rejected RCPTs */
+#define RSPAMD_MILTER_FLAG_NR_CONN    (1L<<12)/* filter won't reply for connect */
+#define RSPAMD_MILTER_FLAG_NR_HELO    (1L<<13)/* filter won't reply for HELO */
+#define RSPAMD_MILTER_FLAG_NR_MAIL    (1L<<14)/* filter won't reply for MAIL */
+#define RSPAMD_MILTER_FLAG_NR_RCPT    (1L<<15)/* filter won't reply for RCPT */
+#define RSPAMD_MILTER_FLAG_NR_DATA    (1L<<16)/* filter won't reply for DATA */
+#define RSPAMD_MILTER_FLAG_NR_UNKN    (1L<<17)/* filter won't reply for UNKNOWN */
+#define RSPAMD_MILTER_FLAG_NR_EOH    (1L<<18)/* filter won't reply for eoh */
+#define RSPAMD_MILTER_FLAG_NR_BODY    (1L<<19)/* filter won't reply for body chunk */
 
 /*
  * For now, we specify that we want to reply just after EOM
  */
 #define RSPAMD_MILTER_FLAG_NOREPLY_MASK \
-       (RSPAMD_MILTER_FLAG_NR_CONN | RSPAMD_MILTER_FLAG_NR_HELO | \
-       RSPAMD_MILTER_FLAG_NR_MAIL | RSPAMD_MILTER_FLAG_NR_RCPT | \
-       RSPAMD_MILTER_FLAG_NR_DATA | RSPAMD_MILTER_FLAG_NR_UNKN | \
-       RSPAMD_MILTER_FLAG_NR_HDR | RSPAMD_MILTER_FLAG_NR_EOH | \
-       RSPAMD_MILTER_FLAG_NR_BODY)
+    (RSPAMD_MILTER_FLAG_NR_CONN | RSPAMD_MILTER_FLAG_NR_HELO | \
+    RSPAMD_MILTER_FLAG_NR_MAIL | RSPAMD_MILTER_FLAG_NR_RCPT | \
+    RSPAMD_MILTER_FLAG_NR_DATA | RSPAMD_MILTER_FLAG_NR_UNKN | \
+    RSPAMD_MILTER_FLAG_NR_HDR | RSPAMD_MILTER_FLAG_NR_EOH | \
+    RSPAMD_MILTER_FLAG_NR_BODY)
 
 /*
  * Options that the filter may send at initial handshake time, and message
  * modifications that the filter may request at the end of the message body.
  */
-#define RSPAMD_MILTER_FLAG_ADDHDRS     (1L<<0) /* filter may add headers */
-#define RSPAMD_MILTER_FLAG_CHGBODY     (1L<<1) /* filter may replace body */
-#define RSPAMD_MILTER_FLAG_ADDRCPT     (1L<<2) /* filter may add recipients */
-#define RSPAMD_MILTER_FLAG_DELRCPT     (1L<<3) /* filter may delete recipients */
-#define RSPAMD_MILTER_FLAG_CHGHDRS     (1L<<4) /* filter may change/delete headers */
-#define RSPAMD_MILTER_FLAG_QUARANTINE  (1L<<5) /* filter may request quarantine */
+#define RSPAMD_MILTER_FLAG_ADDHDRS    (1L<<0)    /* filter may add headers */
+#define RSPAMD_MILTER_FLAG_CHGBODY    (1L<<1)    /* filter may replace body */
+#define RSPAMD_MILTER_FLAG_ADDRCPT    (1L<<2)    /* filter may add recipients */
+#define RSPAMD_MILTER_FLAG_DELRCPT    (1L<<3)    /* filter may delete recipients */
+#define RSPAMD_MILTER_FLAG_CHGHDRS    (1L<<4)    /* filter may change/delete headers */
+#define RSPAMD_MILTER_FLAG_QUARANTINE    (1L<<5)    /* filter may request quarantine */
 
 #define RSPAMD_MILTER_ACTIONS_MASK \
-       (RSPAMD_MILTER_FLAG_ADDHDRS | RSPAMD_MILTER_FLAG_ADDRCPT | \
-       RSPAMD_MILTER_FLAG_DELRCPT | RSPAMD_MILTER_FLAG_CHGHDRS | \
-       RSPAMD_MILTER_FLAG_QUARANTINE)
+    (RSPAMD_MILTER_FLAG_ADDHDRS | RSPAMD_MILTER_FLAG_ADDRCPT | \
+    RSPAMD_MILTER_FLAG_DELRCPT | RSPAMD_MILTER_FLAG_CHGHDRS | \
+    RSPAMD_MILTER_FLAG_QUARANTINE)
 
 enum rspamd_milter_connect_proto {
        RSPAMD_MILTER_CONN_UNKNOWN = 'U',
@@ -163,4 +167,9 @@ enum rspamd_milter_connect_proto {
 #define RSPAMD_MILTER_SPAM_HEADER "X-Spam"
 #define RSPAMD_MILTER_DKIM_HEADER "DKIM-Signature"
 #define RSPAMD_MILTER_ACTION_HEADER "X-Rspamd-Action"
+
+#ifdef  __cplusplus
+}
 #endif
+
+#endif
\ No newline at end of file
index 0189e0e6c80845590a617cef550eddc3d4c58ed5..5b2b60d11f850ba1034cf16334cf8d9e742ac00f 100644 (file)
 #include "config.h"
 #include "rdns.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_monitored;
 struct rspamd_monitored_ctx;
 struct rspamd_config;
@@ -41,8 +45,9 @@ enum rspamd_monitored_flags {
 struct rspamd_monitored_ctx *rspamd_monitored_ctx_init (void);
 
 typedef void (*mon_change_cb) (struct rspamd_monitored_ctx *ctx,
-               struct rspamd_monitored *m, gboolean alive,
-               void *ud);
+                                                          struct rspamd_monitored *m, gboolean alive,
+                                                          void *ud);
+
 /**
  * Configure context for monitored objects
  * @param ctx context
@@ -51,11 +56,11 @@ typedef void (*mon_change_cb) (struct rspamd_monitored_ctx *ctx,
  * @param resolver resolver object
  */
 void rspamd_monitored_ctx_config (struct rspamd_monitored_ctx *ctx,
-               struct rspamd_config *cfg,
-               struct ev_loop *ev_base,
-               struct rdns_resolver *resolver,
-               mon_change_cb change_cb,
-               gpointer ud);
+                                                                 struct rspamd_config *cfg,
+                                                                 struct ev_loop *ev_base,
+                                                                 struct rdns_resolver *resolver,
+                                                                 mon_change_cb change_cb,
+                                                                 gpointer ud);
 
 struct ev_loop *rspamd_monitored_ctx_get_ev_base (struct rspamd_monitored_ctx *ctx);
 
@@ -74,8 +79,9 @@ struct rspamd_monitored *rspamd_monitored_create_ (
                enum rspamd_monitored_flags flags,
                const ucl_object_t *opts,
                const gchar *loc);
+
 #define rspamd_monitored_create(ctx, line, type, flags, opts) \
-       rspamd_monitored_create_(ctx, line, type, flags, opts, G_STRFUNC)
+    rspamd_monitored_create_(ctx, line, type, flags, opts, G_STRFUNC)
 
 /**
  * Return monitored by its tag
@@ -83,8 +89,8 @@ struct rspamd_monitored *rspamd_monitored_create_ (
  * @param tag
  * @return
  */
-struct rspamd_monitored * rspamd_monitored_by_tag (struct rspamd_monitored_ctx *ctx,
-               guchar tag[RSPAMD_MONITORED_TAG_LEN]);
+struct rspamd_monitored *rspamd_monitored_by_tag (struct rspamd_monitored_ctx *ctx,
+                                                                                                 guchar tag[RSPAMD_MONITORED_TAG_LEN]);
 
 /**
  * Sets `tag_out` to the monitored tag
@@ -92,7 +98,7 @@ struct rspamd_monitored * rspamd_monitored_by_tag (struct rspamd_monitored_ctx *
  * @param tag_out
  */
 void rspamd_monitored_get_tag (struct rspamd_monitored *m,
-               guchar tag_out[RSPAMD_MONITORED_TAG_LEN]);
+                                                          guchar tag_out[RSPAMD_MONITORED_TAG_LEN]);
 
 /**
  * Return TRUE if monitored object is alive
@@ -134,6 +140,7 @@ gdouble rspamd_monitored_latency (struct rspamd_monitored *m);
  * @param m
  */
 void rspamd_monitored_stop (struct rspamd_monitored *m);
+
 /**
  * Explicitly enable monitored object
  * @param m
@@ -146,4 +153,8 @@ void rspamd_monitored_start (struct rspamd_monitored *m);
  */
 void rspamd_monitored_ctx_destroy (struct rspamd_monitored_ctx *ctx);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBSERVER_MONITORED_H_ */
index 2059110fbef9b5b1289ce680cfcdc81474d9dd44..280ceedcb1edbbc542e1295f9d27884d5c7f4faf 100644 (file)
 #include "http_connection.h"
 #include "task.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #define RSPAMD_BASE_ERROR 500
 #define RSPAMD_FILTER_ERROR RSPAMD_BASE_ERROR + 1
 #define RSPAMD_NETWORK_ERROR RSPAMD_BASE_ERROR + 2
@@ -40,7 +44,7 @@ struct rspamd_metric;
  * @return
  */
 gboolean rspamd_protocol_handle_headers (struct rspamd_task *task,
-       struct rspamd_http_message *msg);
+                                                                                struct rspamd_http_message *msg);
 
 /**
  * Process control chunk and update task structure accordingly
@@ -49,7 +53,7 @@ gboolean rspamd_protocol_handle_headers (struct rspamd_task *task,
  * @return
  */
 gboolean rspamd_protocol_handle_control (struct rspamd_task *task,
-               const ucl_object_t *control);
+                                                                                const ucl_object_t *control);
 
 /**
  * Process HTTP request to the task structure
@@ -58,7 +62,7 @@ gboolean rspamd_protocol_handle_control (struct rspamd_task *task,
  * @return
  */
 gboolean rspamd_protocol_handle_request (struct rspamd_task *task,
-       struct rspamd_http_message *msg);
+                                                                                struct rspamd_http_message *msg);
 
 /**
  * Write task results to http message
@@ -66,7 +70,8 @@ gboolean rspamd_protocol_handle_request (struct rspamd_task *task,
  * @param task
  */
 void rspamd_protocol_http_reply (struct rspamd_http_message *msg,
-               struct rspamd_task *task, ucl_object_t **pobj);
+                                                                struct rspamd_task *task, ucl_object_t **pobj);
+
 /**
  * Write data to log pipes
  * @param task
@@ -84,19 +89,20 @@ enum rspamd_protocol_flags {
 };
 
 #define RSPAMD_PROTOCOL_DEFAULT (RSPAMD_PROTOCOL_BASIC| \
-               RSPAMD_PROTOCOL_METRICS| \
-               RSPAMD_PROTOCOL_MESSAGES| \
-               RSPAMD_PROTOCOL_RMILTER| \
-               RSPAMD_PROTOCOL_DKIM| \
-               RSPAMD_PROTOCOL_EXTRA)
+        RSPAMD_PROTOCOL_METRICS| \
+        RSPAMD_PROTOCOL_MESSAGES| \
+        RSPAMD_PROTOCOL_RMILTER| \
+        RSPAMD_PROTOCOL_DKIM| \
+        RSPAMD_PROTOCOL_EXTRA)
+
 /**
  * Write reply to ucl object filling log buffer
  * @param task
  * @param logbuf
  * @return
  */
-ucl_object_t * rspamd_protocol_write_ucl (struct rspamd_task *task,
-               enum rspamd_protocol_flags flags);
+ucl_object_t *rspamd_protocol_write_ucl (struct rspamd_task *task,
+                                                                                enum rspamd_protocol_flags flags);
 
 /**
  * Write reply for specified task command
@@ -112,9 +118,13 @@ void rspamd_protocol_write_reply (struct rspamd_task *task, ev_tstamp timeout);
  * @param out
  */
 void rspamd_ucl_torspamc_output (const ucl_object_t *top,
-       rspamd_fstring_t **out);
+                                                                rspamd_fstring_t **out);
+
+void rspamd_ucl_tospamc_output (const ucl_object_t *top,
+                                                               rspamd_fstring_t **out);
 
-void  rspamd_ucl_tospamc_output (const ucl_object_t *top,
-               rspamd_fstring_t **out);
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index fb2ee115a355ce4a39486feb933050c7a78f2a9a..1c49a04f2a11c38c11a1e78f69f1f54f8ccf0bb9 100644 (file)
 #ifndef RSPAMD_PROTOCOL_INTERNAL_H
 #define RSPAMD_PROTOCOL_INTERNAL_H
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /*
  * Just check if the passed message is spam or not and reply as
  * described below
@@ -85,4 +89,8 @@
 #define MAILER_HEADER "Mailer"
 #define RAW_DATA_HEADER "Raw"
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif //RSPAMD_PROTOCOL_INTERNAL_H
index 15146c5dd8106a1fa13282c54050b9bba90b0ca8..b9f80375e6a61a157ba893c42ce5f57c3b3a3071 100644 (file)
 #include "config.h"
 #include "libutil/regexp.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_re_cache;
 struct rspamd_re_runtime;
 struct rspamd_task;
@@ -76,14 +80,14 @@ rspamd_re_cache_add (struct rspamd_re_cache *cache, rspamd_regexp_t *re,
  * @param with regexp object to replace the origin
  */
 void rspamd_re_cache_replace (struct rspamd_re_cache *cache,
-               rspamd_regexp_t *what,
-               rspamd_regexp_t *with);
+                                                         rspamd_regexp_t *what,
+                                                         rspamd_regexp_t *with);
 
 /**
  * Initialize and optimize re cache structure
  */
 void rspamd_re_cache_init (struct rspamd_re_cache *cache,
-               struct rspamd_config *cfg);
+                                                  struct rspamd_config *cfg);
 
 /**
  * Returns true when hyperscan is loaded
@@ -95,13 +99,13 @@ gboolean rspamd_re_cache_is_hs_loaded (struct rspamd_re_cache *cache);
 /**
  * Get runtime data for a cache
  */
-struct rspamd_re_runtimerspamd_re_cache_runtime_new (struct rspamd_re_cache *cache);
+struct rspamd_re_runtime *rspamd_re_cache_runtime_new (struct rspamd_re_cache *cache);
 
 /**
  * Get runtime statistics
  */
 const struct rspamd_re_cache_stat *
-               rspamd_re_cache_get_stat (struct rspamd_re_runtime *rt);
+rspamd_re_cache_get_stat (struct rspamd_re_runtime *rt);
 
 /**
  * Process regexp runtime and return the result for a specific regexp
@@ -114,17 +118,17 @@ const struct rspamd_re_cache_stat *
  * @param is_strong use case sensitive match when looking for headers
  */
 gint rspamd_re_cache_process (struct rspamd_task *task,
-               rspamd_regexp_t *re,
-               enum rspamd_re_type type,
-               gconstpointer type_data,
-               gsize datalen,
-               gboolean is_strong);
+                                                         rspamd_regexp_t *re,
+                                                         enum rspamd_re_type type,
+                                                         gconstpointer type_data,
+                                                         gsize datalen,
+                                                         gboolean is_strong);
 
 int rspamd_re_cache_process_ffi (void *ptask,
-               void *pre,
-               int type,
-               void *type_data,
-               int is_strong);
+                                                                void *pre,
+                                                                int type,
+                                                                void *type_data,
+                                                                int is_strong);
 
 /**
  * Destroy runtime data
@@ -135,6 +139,7 @@ void rspamd_re_cache_runtime_destroy (struct rspamd_re_runtime *rt);
  * Unref re cache
  */
 void rspamd_re_cache_unref (struct rspamd_re_cache *cache);
+
 /**
  * Retain reference to re cache
  */
@@ -148,7 +153,7 @@ guint rspamd_re_cache_set_limit (struct rspamd_re_cache *cache, guint limit);
 /**
  * Convert re type to a human readable string (constant one)
  */
-const gchar * rspamd_re_cache_type_to_string (enum rspamd_re_type type);
+const gchar *rspamd_re_cache_type_to_string (enum rspamd_re_type type);
 
 /**
  * Convert re type string to the type enum
@@ -159,25 +164,30 @@ enum rspamd_re_type rspamd_re_cache_type_from_string (const char *str);
  * Compile expressions to the hyperscan tree and store in the `cache_dir`
  */
 gint rspamd_re_cache_compile_hyperscan (struct rspamd_re_cache *cache,
-               const char *cache_dir, gdouble max_time, gboolean silent,
-               GError **err);
+                                                                               const char *cache_dir, gdouble max_time, gboolean silent,
+                                                                               GError **err);
 
 
 /**
  * Returns TRUE if the specified file is valid hyperscan cache
  */
 gboolean rspamd_re_cache_is_valid_hyperscan_file (struct rspamd_re_cache *cache,
-               const char *path, gboolean silent, gboolean try_load);
+                                                                                                 const char *path, gboolean silent, gboolean try_load);
 
 /**
  * Loads all hyperscan regexps precompiled
  */
 gboolean rspamd_re_cache_load_hyperscan (struct rspamd_re_cache *cache,
-               const char *cache_dir);
+                                                                                const char *cache_dir);
 
 /**
  * Registers lua selector in the cache
  */
 void rspamd_re_cache_add_selector (struct rspamd_re_cache *cache,
-               const gchar *sname, gint ref);
+                                                                  const gchar *sname, gint ref);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 7a9bf99ab0f3463f98d07a3f3df185d7d9d9daaa..0df650326575acf6cee27d912c075f9a9a5d2447 100644 (file)
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_redis_pool;
 struct rspamd_config;
 struct redisAsyncContext;
@@ -35,8 +39,8 @@ struct rspamd_redis_pool *rspamd_redis_pool_init (void);
  * @param ev_base
  */
 void rspamd_redis_pool_config (struct rspamd_redis_pool *pool,
-               struct rspamd_config *cfg,
-               struct ev_loop *ev_base);
+                                                          struct rspamd_config *cfg,
+                                                          struct ev_loop *ev_base);
 
 
 /**
@@ -48,7 +52,7 @@ void rspamd_redis_pool_config (struct rspamd_redis_pool *pool,
  * @param port
  * @return
  */
-struct redisAsyncContextrspamd_redis_pool_connect (
+struct redisAsyncContext *rspamd_redis_pool_connect (
                struct rspamd_redis_pool *pool,
                const gchar *db, const gchar *password,
                const char *ip, int port);
@@ -65,7 +69,8 @@ enum rspamd_redis_pool_release_type {
  * @param ctx
  */
 void rspamd_redis_pool_release_connection (struct rspamd_redis_pool *pool,
-               struct redisAsyncContext *ctx, enum rspamd_redis_pool_release_type how);
+                                                                                  struct redisAsyncContext *ctx,
+                                                                                  enum rspamd_redis_pool_release_type how);
 
 /**
  * Stops redis pool and destroys it
@@ -78,6 +83,10 @@ void rspamd_redis_pool_destroy (struct rspamd_redis_pool *pool);
  * @param type
  * @return
  */
-const gchar* rspamd_redis_type_to_string (int type);
+const gchar *rspamd_redis_type_to_string (int type);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBSERVER_REDIS_POOL_H_ */
index d0f140098041e54510091cda89835bdf57d5fe55..aeb731e82a04e3c0e3ba7b92e823fd229ff6f1c7 100644 (file)
 #include "config.h"
 #include "mem_pool.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /*
  * Roll history is a special cycled buffer for checked messages, it is designed for writing history messages
  * and displaying them in webui
@@ -58,8 +62,8 @@ struct roll_history {
  * @param pool pool for shared memory
  * @return new structure
  */
-struct roll_history * rspamd_roll_history_new (rspamd_mempool_t *pool,
-               guint max_rows, struct rspamd_config *cfg);
+struct roll_history *rspamd_roll_history_new (rspamd_mempool_t *pool,
+                                                                                         guint max_rows, struct rspamd_config *cfg);
 
 /**
  * Update roll history with data from task
@@ -67,7 +71,7 @@ struct roll_history * rspamd_roll_history_new (rspamd_mempool_t *pool,
  * @param task task object
  */
 void rspamd_roll_history_update (struct roll_history *history,
-       struct rspamd_task *task);
+                                                                struct rspamd_task *task);
 
 /**
  * Load previously saved history from file
@@ -76,7 +80,7 @@ void rspamd_roll_history_update (struct roll_history *history,
  * @return TRUE if history has been loaded
  */
 gboolean rspamd_roll_history_load (struct roll_history *history,
-       const gchar *filename);
+                                                                  const gchar *filename);
 
 /**
  * Save history to file
@@ -85,6 +89,10 @@ gboolean rspamd_roll_history_load (struct roll_history *history,
  * @return TRUE if history has been saved
  */
 gboolean rspamd_roll_history_save (struct roll_history *history,
-       const gchar *filename);
+                                                                  const gchar *filename);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* ROLL_HISTORY_H_ */
index 1928ab00fd3d1cdd10d83c9ec53e0b46677ba1c8..08d3946c7741bc2379d428cd635d1614178ddc22 100644 (file)
 #include "mem_pool.h"
 #include "contrib/libev/ev.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_main;
 struct rspamd_worker;
 
@@ -179,42 +183,42 @@ struct rspamd_srv_reply {
 };
 
 typedef gboolean (*rspamd_worker_control_handler) (struct rspamd_main *rspamd_main,
-               struct rspamd_worker *worker,
-               gint fd,
-               gint attached_fd,
-               struct rspamd_control_command *cmd,
-               gpointer ud);
+                                                                                                  struct rspamd_worker *worker,
+                                                                                                  gint fd,
+                                                                                                  gint attached_fd,
+                                                                                                  struct rspamd_control_command *cmd,
+                                                                                                  gpointer ud);
 
 typedef void (*rspamd_srv_reply_handler) (struct rspamd_worker *worker,
-               struct rspamd_srv_reply *rep, gint rep_fd,
-               gpointer ud);
+                                                                                 struct rspamd_srv_reply *rep, gint rep_fd,
+                                                                                 gpointer ud);
 
 /**
  * Process client socket connection
  */
 void rspamd_control_process_client_socket (struct rspamd_main *rspamd_main,
-               gint fd, rspamd_inet_addr_t *addr);
+                                                                                  gint fd, rspamd_inet_addr_t *addr);
 
 /**
  * Register default handlers for a worker
  */
 void rspamd_control_worker_add_default_handler (struct rspamd_worker *worker,
-               struct ev_loop *ev_base);
+                                                                                               struct ev_loop *ev_base);
 
 /**
  * Register custom handler for a specific control command for this worker
  */
 void rspamd_control_worker_add_cmd_handler (struct rspamd_worker *worker,
-               enum rspamd_control_type type,
-               rspamd_worker_control_handler handler,
-               gpointer ud);
+                                                                                       enum rspamd_control_type type,
+                                                                                       rspamd_worker_control_handler handler,
+                                                                                       gpointer ud);
 
 /**
  * Start watching on srv pipe
  */
 void rspamd_srv_start_watching (struct rspamd_main *srv,
-               struct rspamd_worker *worker,
-               struct ev_loop *ev_base);
+                                                               struct rspamd_worker *worker,
+                                                               struct ev_loop *ev_base);
 
 
 /**
@@ -222,9 +226,14 @@ void rspamd_srv_start_watching (struct rspamd_main *srv,
  * end
  */
 void rspamd_srv_send_command (struct rspamd_worker *worker,
-               struct ev_loop *ev_base,
-               struct rspamd_srv_command *cmd,
-               gint attached_fd,
-               rspamd_srv_reply_handler handler,
-               gpointer ud);
+                                                         struct ev_loop *ev_base,
+                                                         struct rspamd_srv_command *cmd,
+                                                         gint attached_fd,
+                                                         rspamd_srv_reply_handler handler,
+                                                         gpointer ud);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 640a1c89851a2c2e6835ffb8cad2a344518a808a..ce2f3f7bf5b8d7172fb7d49c481980fddda0166e 100644 (file)
 #include "config.h"
 #include "ucl.h"
 #include "cfg_file.h"
-#include <lua.h>
 #include "contrib/libev/ev.h"
 
+#include <lua.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct rspamd_config;
 struct rspamd_symcache;
@@ -29,9 +34,9 @@ struct rspamd_worker;
 struct rspamd_symcache_item;
 struct rspamd_config_settings_elt;
 
-typedef void (*symbol_func_t)(struct rspamd_task *task,
-                                                         struct rspamd_symcache_item *item,
-                                                         gpointer user_data);
+typedef void (*symbol_func_t) (struct rspamd_task *task,
+                                                          struct rspamd_symcache_item *item,
+                                                          gpointer user_data);
 
 enum rspamd_symbol_type {
        SYMBOL_TYPE_NORMAL = (1u << 0u),
@@ -67,7 +72,7 @@ struct rspamd_abstract_callback_data {
  * Creates new cache structure
  * @return
  */
-struct rspamd_symcacherspamd_symcache_new (struct rspamd_config *cfg);
+struct rspamd_symcache *rspamd_symcache_new (struct rspamd_config *cfg);
 
 /**
  * Remove the cache structure syncing data if needed
@@ -112,6 +117,7 @@ gint rspamd_symcache_add_symbol (struct rspamd_symcache *cache,
  */
 void rspamd_symcache_set_peak_callback (struct rspamd_symcache *cache,
                                                                                gint cbref);
+
 /**
  * Add delayed condition to the specific symbol in cache. So symbol can be absent
  * to the moment of addition
@@ -149,14 +155,15 @@ gboolean rspamd_symcache_stat_symbol (struct rspamd_symcache *cache,
                                                                          gdouble *freq_stddev,
                                                                          gdouble *tm,
                                                                          guint *nhits);
+
 /**
  * Find symbol in cache by its id
  * @param cache
  * @param id
  * @return symbol's name or NULL
  */
-const gchar * rspamd_symcache_symbol_by_id (struct rspamd_symcache *cache,
-                                                                                       gint id);
+const gchar *rspamd_symcache_symbol_by_id (struct rspamd_symcache *cache,
+                                                                                  gint id);
 
 /**
  * Returns number of symbols registered in symbols cache
@@ -243,13 +250,14 @@ void rspamd_symcache_disable_symbol_perm (struct rspamd_symcache *cache,
  */
 void rspamd_symcache_enable_symbol_perm (struct rspamd_symcache *cache,
                                                                                 const gchar *symbol);
+
 /**
  * Get abstract callback data for a symbol (or its parent symbol)
  * @param cache cache object
  * @param symbol symbol name
  * @return abstract callback data or NULL if symbol is absent or has no data attached
  */
-struct rspamd_abstract_callback_datarspamd_symcache_get_cbdata (
+struct rspamd_abstract_callback_data *rspamd_symcache_get_cbdata (
                struct rspamd_symcache *cache, const gchar *symbol);
 
 /**
@@ -259,7 +267,7 @@ struct rspamd_abstract_callback_data* rspamd_symcache_get_cbdata (
  * @return
  */
 const gchar *rspamd_symcache_get_parent (struct rspamd_symcache *cache,
-               const gchar *symbol);
+                                                                                const gchar *symbol);
 
 /**
  * Adds flags to a symbol
@@ -269,15 +277,16 @@ const gchar *rspamd_symcache_get_parent (struct rspamd_symcache *cache,
  * @return
  */
 gboolean rspamd_symcache_add_symbol_flags (struct rspamd_symcache *cache,
-                                                                                 const gchar *symbol,
-                                                                                 guint flags);
+                                                                                  const gchar *symbol,
+                                                                                  guint flags);
 
 gboolean rspamd_symcache_set_symbol_flags (struct rspamd_symcache *cache,
                                                                                   const gchar *symbol,
                                                                                   guint flags);
 
 guint rspamd_symcache_get_symbol_flags (struct rspamd_symcache *cache,
-                                                                                  const gchar *symbol);
+                                                                               const gchar *symbol);
+
 /**
  * Process settings for task
  * @param task
@@ -338,6 +347,7 @@ gboolean rspamd_symcache_enable_symbol (struct rspamd_task *task,
 gboolean rspamd_symcache_disable_symbol (struct rspamd_task *task,
                                                                                 struct rspamd_symcache *cache,
                                                                                 const gchar *symbol);
+
 /**
  * Process specific function for each cache element (in order they are added)
  * @param cache
@@ -377,20 +387,24 @@ void rspamd_symcache_finalize_item (struct rspamd_task *task,
  * Increase number of async events pending for an item
  */
 guint rspamd_symcache_item_async_inc_full (struct rspamd_task *task,
-                                                                         struct rspamd_symcache_item *item,
-                                                                         const gchar *subsystem,
-                                                                         const gchar *loc);
+                                                                                  struct rspamd_symcache_item *item,
+                                                                                  const gchar *subsystem,
+                                                                                  const gchar *loc);
+
 #define rspamd_symcache_item_async_inc(task, item, subsystem) \
-       rspamd_symcache_item_async_inc_full(task, item, subsystem, G_STRLOC)
+    rspamd_symcache_item_async_inc_full(task, item, subsystem, G_STRLOC)
+
 /*
  * Decrease number of async events pending for an item, asserts if no events pending
  */
 guint rspamd_symcache_item_async_dec_full (struct rspamd_task *task,
-                                                                         struct rspamd_symcache_item *item,
-                                                                         const gchar *subsystem,
-                                                                         const gchar *loc);
+                                                                                  struct rspamd_symcache_item *item,
+                                                                                  const gchar *subsystem,
+                                                                                  const gchar *loc);
+
 #define rspamd_symcache_item_async_dec(task, item, subsystem) \
-       rspamd_symcache_item_async_dec_full(task, item, subsystem, G_STRLOC)
+    rspamd_symcache_item_async_dec_full(task, item, subsystem, G_STRLOC)
+
 /**
  * Decrease number of async events pending for an item, asserts if no events pending
  * If no events are left, this function calls `rspamd_symbols_cache_finalize_item` and returns TRUE
@@ -399,11 +413,12 @@ guint rspamd_symcache_item_async_dec_full (struct rspamd_task *task,
  * @return
  */
 gboolean rspamd_symcache_item_async_dec_check_full (struct rspamd_task *task,
-                                                                                          struct rspamd_symcache_item *item,
-                                                                                          const gchar *subsystem,
-                                                                                          const gchar *loc);
+                                                                                                       struct rspamd_symcache_item *item,
+                                                                                                       const gchar *subsystem,
+                                                                                                       const gchar *loc);
+
 #define rspamd_symcache_item_async_dec_check(task, item, subsystem) \
-       rspamd_symcache_item_async_dec_check_full(task, item, subsystem, G_STRLOC)
+    rspamd_symcache_item_async_dec_check_full(task, item, subsystem, G_STRLOC)
 
 /**
  * Disables execution of all symbols, excluding those specified in `skip_mask`
@@ -446,9 +461,9 @@ bool rspamd_symcache_set_allowed_settings_ids (struct rspamd_symcache *cache,
  * @param nids
  */
 bool rspamd_symcache_set_forbidden_settings_ids (struct rspamd_symcache *cache,
-                                                                                         const gchar *symbol,
-                                                                                         const guint32 *ids,
-                                                                                         guint nids);
+                                                                                                const gchar *symbol,
+                                                                                                const guint32 *ids,
+                                                                                                guint nids);
 
 /**
  * Returns allowed ids for a symbol as a constant array
@@ -457,9 +472,10 @@ bool rspamd_symcache_set_forbidden_settings_ids (struct rspamd_symcache *cache,
  * @param nids
  * @return
  */
-const guint32rspamd_symcache_get_allowed_settings_ids (struct rspamd_symcache *cache,
+const guint32 *rspamd_symcache_get_allowed_settings_ids (struct rspamd_symcache *cache,
                                                                                                                 const gchar *symbol,
                                                                                                                 guint *nids);
+
 /**
  * Returns denied ids for a symbol as a constant array
  * @param cache
@@ -467,9 +483,9 @@ const guint32* rspamd_symcache_get_allowed_settings_ids (struct rspamd_symcache
  * @param nids
  * @return
  */
-const guint32rspamd_symcache_get_forbidden_settings_ids (struct rspamd_symcache *cache,
-                                                                                                               const gchar *symbol,
-                                                                                                               guint *nids);
+const guint32 *rspamd_symcache_get_forbidden_settings_ids (struct rspamd_symcache *cache,
+                                                                                                                  const gchar *symbol,
+                                                                                                                  guint *nids);
 
 
 /**
@@ -499,4 +515,9 @@ gboolean rspamd_symcache_is_item_allowed (struct rspamd_task *task,
  * @return
  */
 enum rspamd_symbol_type rspamd_symcache_item_flags (struct rspamd_symcache_item *item);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 722e98c032a12ec71fea8c1689771e8b951a2f60..725d84fe4df0db72b0a9b20b38c4e8ec38ae4fc1 100644 (file)
@@ -5,11 +5,15 @@
 #include "ref.h"
 #include "addr.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct spf_resolved;
 
-typedef void (*spf_cb_t)(struct spf_resolved *record,
-               struct rspamd_task *task, gpointer cbdata);
+typedef void (*spf_cb_t) (struct spf_resolved *record,
+                                                 struct rspamd_task *task, gpointer cbdata);
 
 typedef enum spf_mech_e {
        SPF_FAIL,
@@ -74,18 +78,18 @@ struct spf_resolved {
  * Resolve spf record for specified task and call a callback after resolution fails/succeed
  */
 gboolean rspamd_spf_resolve (struct rspamd_task *task, spf_cb_t callback,
-               gpointer cbdata);
+                                                        gpointer cbdata);
 
 /*
  * Get a domain for spf for specified task
  */
-const gchar * rspamd_spf_get_domain (struct rspamd_task *task);
+const gchar *rspamd_spf_get_domain (struct rspamd_task *task);
 
 
 /*
  * Increase refcount
  */
-struct spf_resolved * spf_record_ref (struct spf_resolved *rec);
+struct spf_resolved *spf_record_ref (struct spf_resolved *rec);
 
 /*
  * Decrease refcount
@@ -105,6 +109,11 @@ gchar *spf_addr_mask_to_string (struct spf_addr *addr);
  * @param rec
  * @return
  */
-struct spf_addr * spf_addr_match_task (struct rspamd_task *task,
-                                                                          struct spf_resolved *rec);
+struct spf_addr *spf_addr_match_task (struct rspamd_task *task,
+                                                                         struct spf_resolved *rec);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index d581378b7c492a957d8271458735dced51c0d7d4..ac55dd9105eca742cb9f328d438c930f95b1a4b5 100644 (file)
 #include "dns.h"
 #include "re_cache.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_command {
        CMD_CHECK,
        CMD_SYMBOLS,
@@ -58,33 +62,33 @@ enum rspamd_task_stage {
 };
 
 #define RSPAMD_TASK_PROCESS_ALL (RSPAMD_TASK_STAGE_CONNECT | \
-               RSPAMD_TASK_STAGE_ENVELOPE | \
-               RSPAMD_TASK_STAGE_READ_MESSAGE | \
-               RSPAMD_TASK_STAGE_PRE_FILTERS | \
-               RSPAMD_TASK_STAGE_PROCESS_MESSAGE | \
-               RSPAMD_TASK_STAGE_FILTERS | \
-               RSPAMD_TASK_STAGE_CLASSIFIERS_PRE | \
-               RSPAMD_TASK_STAGE_CLASSIFIERS | \
-               RSPAMD_TASK_STAGE_CLASSIFIERS_POST | \
-               RSPAMD_TASK_STAGE_COMPOSITES | \
-               RSPAMD_TASK_STAGE_POST_FILTERS | \
-               RSPAMD_TASK_STAGE_LEARN_PRE | \
-               RSPAMD_TASK_STAGE_LEARN | \
-               RSPAMD_TASK_STAGE_LEARN_POST | \
-               RSPAMD_TASK_STAGE_COMPOSITES_POST | \
-               RSPAMD_TASK_STAGE_IDEMPOTENT | \
-               RSPAMD_TASK_STAGE_DONE)
+        RSPAMD_TASK_STAGE_ENVELOPE | \
+        RSPAMD_TASK_STAGE_READ_MESSAGE | \
+        RSPAMD_TASK_STAGE_PRE_FILTERS | \
+        RSPAMD_TASK_STAGE_PROCESS_MESSAGE | \
+        RSPAMD_TASK_STAGE_FILTERS | \
+        RSPAMD_TASK_STAGE_CLASSIFIERS_PRE | \
+        RSPAMD_TASK_STAGE_CLASSIFIERS | \
+        RSPAMD_TASK_STAGE_CLASSIFIERS_POST | \
+        RSPAMD_TASK_STAGE_COMPOSITES | \
+        RSPAMD_TASK_STAGE_POST_FILTERS | \
+        RSPAMD_TASK_STAGE_LEARN_PRE | \
+        RSPAMD_TASK_STAGE_LEARN | \
+        RSPAMD_TASK_STAGE_LEARN_POST | \
+        RSPAMD_TASK_STAGE_COMPOSITES_POST | \
+        RSPAMD_TASK_STAGE_IDEMPOTENT | \
+        RSPAMD_TASK_STAGE_DONE)
 #define RSPAMD_TASK_PROCESS_LEARN (RSPAMD_TASK_STAGE_CONNECT | \
-               RSPAMD_TASK_STAGE_ENVELOPE | \
-               RSPAMD_TASK_STAGE_READ_MESSAGE | \
-               RSPAMD_TASK_STAGE_PROCESS_MESSAGE | \
-               RSPAMD_TASK_STAGE_CLASSIFIERS_PRE | \
-               RSPAMD_TASK_STAGE_CLASSIFIERS | \
-               RSPAMD_TASK_STAGE_CLASSIFIERS_POST | \
-               RSPAMD_TASK_STAGE_LEARN_PRE | \
-               RSPAMD_TASK_STAGE_LEARN | \
-               RSPAMD_TASK_STAGE_LEARN_POST | \
-               RSPAMD_TASK_STAGE_DONE)
+        RSPAMD_TASK_STAGE_ENVELOPE | \
+        RSPAMD_TASK_STAGE_READ_MESSAGE | \
+        RSPAMD_TASK_STAGE_PROCESS_MESSAGE | \
+        RSPAMD_TASK_STAGE_CLASSIFIERS_PRE | \
+        RSPAMD_TASK_STAGE_CLASSIFIERS | \
+        RSPAMD_TASK_STAGE_CLASSIFIERS_POST | \
+        RSPAMD_TASK_STAGE_LEARN_PRE | \
+        RSPAMD_TASK_STAGE_LEARN | \
+        RSPAMD_TASK_STAGE_LEARN_POST | \
+        RSPAMD_TASK_STAGE_DONE)
 
 #define RSPAMD_TASK_FLAG_MIME (1u << 0u)
 #define RSPAMD_TASK_FLAG_JSON (1u << 1u)
@@ -135,80 +139,82 @@ enum rspamd_newlines_type;
  * Worker task structure
  */
 struct rspamd_task {
-       struct rspamd_worker *worker;                                   /**< pointer to worker object                                           */
-       enum rspamd_command cmd;                                                /**< command                                                                            */
-       gint sock;                                                                              /**< socket descriptor                                                          */
-       guint32 flags;                                                                  /**< Bit flags                                                                          */
-       guint32 dns_requests;                                                   /**< number of DNS requests per this task                       */
-       gulong message_len;                                                             /**< Message length                                                                     */
-       gchar *helo;                                                                    /**< helo header value                                                          */
-       gchar *queue_id;                                                                /**< queue id if specified                                                      */
-       const gchar *message_id;                                                /**< message id                                                                         */
-       rspamd_inet_addr_t *from_addr;                                  /**< from addr for a task                                                       */
-       rspamd_inet_addr_t *client_addr;                                /**< address of connected socket                                        */
-       gchar *deliver_to;                                                              /**< address to deliver                                                         */
-       gchar *user;                                                                    /**< user to deliver                                                            */
-       gchar *subject;                                                                 /**< subject (for non-mime)                                                     */
-       const gchar *hostname;                                                  /**< hostname reported by MTA                                           */
-       GHashTable *request_headers;                                    /**< HTTP headers in a request                                          */
-       GHashTable *reply_headers;                                              /**< Custom reply headers                                                       */
+       struct rspamd_worker *worker;                    /**< pointer to worker object                                          */
+       enum rspamd_command cmd;                        /**< command                                                                            */
+       gint sock;                                        /**< socket descriptor                                                                */
+       guint32 flags;                                    /**< Bit flags                                                                                */
+       guint32 dns_requests;                            /**< number of DNS requests per this task                      */
+       gulong message_len;                                /**< Message length                                                                  */
+       gchar *helo;                                    /**< helo header value                                                          */
+       gchar *queue_id;                                /**< queue id if specified                                                      */
+       const gchar *message_id;                        /**< message id                                                                         */
+       rspamd_inet_addr_t *from_addr;                    /**< from addr for a task                                                     */
+       rspamd_inet_addr_t *client_addr;                /**< address of connected socket                                        */
+       gchar *deliver_to;                                /**< address to deliver                                                               */
+       gchar *user;                                    /**< user to deliver                                                            */
+       gchar *subject;                                    /**< subject (for non-mime)                                                  */
+       const gchar *hostname;                            /**< hostname reported by MTA                                         */
+       GHashTable *request_headers;                    /**< HTTP headers in a request                                          */
+       GHashTable *reply_headers;                        /**< Custom reply headers                                                     */
        struct {
                const gchar *begin;
                gsize len;
                gchar *fpath;
-       } msg;                                                                                  /**< message buffer                                                                     */
-       struct rspamd_http_connection *http_conn;               /**< HTTP server connection                                                     */
-       struct rspamd_async_session * s;                                /**< async session object                                                       */
-       GPtrArray *parts;                                                               /**< list of parsed parts                                                       */
-       GPtrArray *text_parts;                                                  /**< list of text parts                                                         */
+       } msg;                                            /**< message buffer                                                                   */
+       struct rspamd_http_connection *http_conn;        /**< HTTP server connection                                                    */
+       struct rspamd_async_session *s;                /**< async session object                                                        */
+       GPtrArray *parts;                                /**< list of parsed parts                                                      */
+       GPtrArray *text_parts;                            /**< list of text parts                                                               */
        struct {
                const gchar *begin;
                gsize len;
                const gchar *body_start;
-       } raw_headers_content;                          /**< list of raw headers                                                        */
-       GPtrArray *received;                                                    /**< list of received headers                                           */
-       GHashTable *urls;                                                               /**< list of parsed urls                                                        */
-       GHashTable *emails;                                                             /**< list of parsed emails                                                      */
-       GHashTable *raw_headers;                                                /**< list of raw headers                                                        */
-       GQueue *headers_order;                                                  /**< order of raw headers                                                       */
-       struct rspamd_metric_result *result;                    /**< Metric result                                                                      */
-       GHashTable *lua_cache;                                                  /**< cache of lua objects                                                       */
-       GPtrArray *tokens;                                                              /**< statistics tokens */
-       GArray *meta_words;                                                             /**< rspamd_stat_token_t produced from meta headers
+       } raw_headers_content;                /**< list of raw headers                                                  */
+       GPtrArray *received;                            /**< list of received headers                                           */
+       GHashTable *urls;                                /**< list of parsed urls                                                       */
+       GHashTable *emails;                                /**< list of parsed emails                                                   */
+       GHashTable *raw_headers;                        /**< list of raw headers                                                        */
+       GQueue *headers_order;                            /**< order of raw headers                                                     */
+       struct rspamd_metric_result *result;            /**< Metric result                                                                      */
+       GHashTable *lua_cache;                            /**< cache of lua objects                                                     */
+       GPtrArray *tokens;                                /**< statistics tokens */
+       GArray *meta_words;                                /**< rspamd_stat_token_t produced from meta headers
                                                                                                                (e.g. Subject) */
 
        GPtrArray *rcpt_mime;
-       GPtrArray *rcpt_envelope;                                               /**< array of rspamd_email_address                                      */
+       GPtrArray *rcpt_envelope;                        /**< array of rspamd_email_address                                     */
        GPtrArray *from_mime;
        struct rspamd_email_address *from_envelope;
-       enum rspamd_newlines_type nlines_type;                  /**< type of newlines (detected on most of headers      */
+       enum rspamd_newlines_type nlines_type;            /**< type of newlines (detected on most of headers    */
 
-       ucl_object_t *messages;                                                 /**< list of messages that would be reported            */
-       struct rspamd_re_runtime *re_rt;                                /**< regexp runtime                                                                     */
-       GPtrArray *stat_runtimes;                                               /**< backend runtime                                                    */
-       struct rspamd_config *cfg;                                              /**< pointer to config object                                           */
+       ucl_object_t *messages;                            /**< list of messages that would be reported         */
+       struct rspamd_re_runtime *re_rt;                /**< regexp runtime                                                                     */
+       GPtrArray *stat_runtimes;                        /**< backend runtime                                                   */
+       struct rspamd_config *cfg;                        /**< pointer to config object                                         */
        GError *err;
-       rspamd_mempool_t *task_pool;                                    /**< memory pool for task                                                       */
+       rspamd_mempool_t *task_pool;                    /**< memory pool for task                                                       */
        double time_virtual;
        double time_real_finish;
        double time_virtual_finish;
        ev_tstamp task_timestamp;
-       gboolean (*fin_callback)(struct rspamd_task *task, void *arg);
-                                                                                                       /**< callback for filters finalizing                                    */
-       void *fin_arg;                                                                  /**< argument for fin callback                                          */
-
-       struct rspamd_dns_resolver *resolver;                   /**< DNS resolver                                                                       */
-       struct ev_loop *event_loop;                                             /**< Event base                                                                         */
-       struct ev_timer timeout_ev;                                             /**< Global task timeout                                                        */
-       struct ev_io guard_ev;                                                  /**< Event for input sanity guard                                       */
-
-       gpointer checkpoint;                                                    /**< Opaque checkpoint data                                                     */
-       ucl_object_t *settings;                                                 /**< Settings applied to task                                           */
-       guint32 processed_stages;                                                       /**< bits of stages that are processed                  */
-       struct rspamd_config_settings_elt *settings_elt;        /**< preprocessed settings id elt                               */
-
-       const gchar *classifier;                                                /**< Classifier to learn (if needed)                            */
-       struct rspamd_lang_detector *lang_det;                  /**< Languages detector                                                         */
+
+       gboolean (*fin_callback) (struct rspamd_task *task, void *arg);
+
+       /**< callback for filters finalizing                                    */
+       void *fin_arg;                                    /**< argument for fin callback                                                */
+
+       struct rspamd_dns_resolver *resolver;            /**< DNS resolver                                                                      */
+       struct ev_loop *event_loop;                        /**< Event base                                                                              */
+       struct ev_timer timeout_ev;                        /**< Global task timeout                                                     */
+       struct ev_io guard_ev;                            /**< Event for input sanity guard                                     */
+
+       gpointer checkpoint;                            /**< Opaque checkpoint data                                                     */
+       ucl_object_t *settings;                            /**< Settings applied to task                                                */
+       guint32 processed_stages;                            /**< bits of stages that are processed                     */
+       struct rspamd_config_settings_elt *settings_elt;    /**< preprocessed settings id elt                           */
+
+       const gchar *classifier;                        /**< Classifier to learn (if needed)                            */
+       struct rspamd_lang_detector *lang_det;            /**< Languages detector                                                               */
        guchar digest[16];
 };
 
@@ -220,6 +226,7 @@ struct rspamd_task *rspamd_task_new (struct rspamd_worker *worker,
                                                                         rspamd_mempool_t *pool,
                                                                         struct rspamd_lang_detector *lang_det,
                                                                         struct ev_loop *event_loop);
+
 /**
  * Destroy task object and remove its IO dispatcher if it exists
  */
@@ -245,7 +252,7 @@ gboolean rspamd_task_fin (void *arg);
  * @return
  */
 gboolean rspamd_task_load_message (struct rspamd_task *task,
-       struct rspamd_http_message *msg, const gchar *start, gsize len);
+                                                                  struct rspamd_http_message *msg, const gchar *start, gsize len);
 
 /**
  * Process task
@@ -259,7 +266,7 @@ gboolean rspamd_task_process (struct rspamd_task *task, guint stages);
  * @param task
  * @return
  */
-struct rspamd_email_addressrspamd_task_get_sender (struct rspamd_task *task);
+struct rspamd_email_address *rspamd_task_get_sender (struct rspamd_task *task);
 
 /**
  * Return addresses in the following precedence:
@@ -287,9 +294,9 @@ gboolean rspamd_task_add_recipient (struct rspamd_task *task, const gchar *rcpt)
  * @return true if learn succeed
  */
 gboolean rspamd_learn_task_spam (struct rspamd_task *task,
-       gboolean is_spam,
-       const gchar *classifier,
-       GError **err);
+                                                                gboolean is_spam,
+                                                                const gchar *classifier,
+                                                                GError **err);
 
 /**
  * Returns required score for a message (usually reject score)
@@ -298,8 +305,9 @@ gboolean rspamd_learn_task_spam (struct rspamd_task *task,
  * @return
  */
 struct rspamd_metric_result;
+
 gdouble rspamd_task_get_required_score (struct rspamd_task *task,
-               struct rspamd_metric_result *m);
+                                                                               struct rspamd_metric_result *m);
 
 /**
  * Returns the first header as value for a header
@@ -307,8 +315,8 @@ gdouble rspamd_task_get_required_score (struct rspamd_task *task,
  * @param name
  * @return
  */
-rspamd_ftok_t * rspamd_task_get_request_header (struct rspamd_task *task,
-               const gchar *name);
+rspamd_ftok_t *rspamd_task_get_request_header (struct rspamd_task *task,
+                                                                                          const gchar *name);
 
 /**
  * Returns all headers with the specific name
@@ -316,8 +324,8 @@ rspamd_ftok_t * rspamd_task_get_request_header (struct rspamd_task *task,
  * @param name
  * @return
  */
-GPtrArrayrspamd_task_get_request_header_multiple (struct rspamd_task *task,
-               const gchar *name);
+GPtrArray *rspamd_task_get_request_header_multiple (struct rspamd_task *task,
+                                                                                                       const gchar *name);
 
 /**
  * Adds a new request header to task (name and value should be mapped to fstring)
@@ -326,7 +334,7 @@ GPtrArray* rspamd_task_get_request_header_multiple (struct rspamd_task *task,
  * @param value
  */
 void rspamd_task_add_request_header (struct rspamd_task *task,
-               rspamd_ftok_t *name, rspamd_ftok_t *value);
+                                                                        rspamd_ftok_t *name, rspamd_ftok_t *value);
 
 /**
  * Write log line about the specified task if needed
@@ -340,7 +348,7 @@ void rspamd_task_write_log (struct rspamd_task *task);
  * @param value
  */
 void rspamd_task_profile_set (struct rspamd_task *task, const gchar *key,
-               gdouble value);
+                                                         gdouble value);
 
 /**
  * Get value for a specific profiling key
@@ -348,7 +356,7 @@ void rspamd_task_profile_set (struct rspamd_task *task, const gchar *key,
  * @param key
  * @return
  */
-gdoublerspamd_task_profile_get (struct rspamd_task *task, const gchar *key);
+gdouble *rspamd_task_profile_get (struct rspamd_task *task, const gchar *key);
 
 /**
  * Sets finishing time for a task if not yet set
@@ -364,4 +372,8 @@ gboolean rspamd_task_set_finish_time (struct rspamd_task *task);
  */
 const gchar *rspamd_task_stage_name (enum rspamd_task_stage stg);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* TASK_H_ */
index 734f48bbf1cf780b1dc61ebd1caab8c059df2593..6f1ccf59f7ea4408c5f893cdfce5b89189130209 100644 (file)
@@ -6,6 +6,10 @@
 #include "mem_pool.h"
 #include "fstring.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_task;
 struct rspamd_mime_text_part;
 
@@ -106,7 +110,9 @@ enum rspamd_url_find_type {
  * @param cfg
  */
 void rspamd_url_init (const gchar *tld_file);
+
 void rspamd_url_deinit (void);
+
 /*
  * Parse urls inside text
  * @param pool memory pool
@@ -147,10 +153,11 @@ gboolean rspamd_url_find (rspamd_mempool_t *pool,
                                                  enum rspamd_url_find_type how,
                                                  goffset *url_pos,
                                                  gboolean *prefix_added);
+
 /*
  * Return text representation of url parsing error
  */
-const gchar * rspamd_url_strerror (int err);
+const gchar *rspamd_url_strerror (int err);
 
 
 /**
@@ -163,7 +170,7 @@ const gchar * rspamd_url_strerror (int err);
 gboolean rspamd_url_find_tld (const gchar *in, gsize inlen, rspamd_ftok_t *out);
 
 typedef void (*url_insert_function) (struct rspamd_url *url,
-               gsize start_offset, gsize end_offset, void *ud);
+                                                                        gsize start_offset, gsize end_offset, void *ud);
 
 /**
  * Search for multiple urls in text and call `func` for each url found
@@ -180,6 +187,7 @@ void rspamd_url_find_multiple (rspamd_mempool_t *pool,
                                                           GPtrArray *nlines,
                                                           url_insert_function func,
                                                           gpointer ud);
+
 /**
  * Search for a single url in text and call `func` for each url found
  * @param pool
@@ -217,7 +225,9 @@ void rspamd_url_add_tag (struct rspamd_url *url, const gchar *tag,
                                                 rspamd_mempool_t *pool);
 
 guint rspamd_url_hash (gconstpointer u);
+
 guint rspamd_email_hash (gconstpointer u);
+
 guint rspamd_url_host_hash (gconstpointer u);
 
 
@@ -226,6 +236,7 @@ gboolean rspamd_emails_cmp (gconstpointer a, gconstpointer b);
 
 /* Compare two urls for building emails hash */
 gboolean rspamd_urls_cmp (gconstpointer a, gconstpointer b);
+
 gboolean rspamd_urls_host_cmp (gconstpointer a, gconstpointer b);
 
 /**
@@ -244,8 +255,8 @@ gsize rspamd_url_decode (gchar *dst, const gchar *src, gsize size);
  * @param pool
  * @return
  */
-const gchar * rspamd_url_encode (struct rspamd_url *url, gsize *dlen,
-                                                                rspamd_mempool_t *pool);
+const gchar *rspamd_url_encode (struct rspamd_url *url, gsize *dlen,
+                                                               rspamd_mempool_t *pool);
 
 
 /**
@@ -260,7 +271,7 @@ gboolean rspamd_url_is_domain (int c);
  * @param proto
  * @return
  */
-const gcharrspamd_url_protocol_name (enum rspamd_url_protocol proto);
+const gchar *rspamd_url_protocol_name (enum rspamd_url_protocol proto);
 
 
 /**
@@ -269,4 +280,9 @@ const gchar* rspamd_url_protocol_name (enum rspamd_url_protocol proto);
  * @return
  */
 enum rspamd_url_protocol rspamd_url_protocol_from_string (const gchar *str);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index d3ea738aa1ba6f8feafe6f55b522a9cd178c50e7..d0966e0091f4becced572a4cd0feb684d0a5a93c 100644 (file)
 #include "http_connection.h"
 #include "rspamd.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #ifndef HAVE_SA_SIGINFO
 typedef void (*rspamd_sig_handler_t) (gint);
 #else
+
 typedef void (*rspamd_sig_handler_t) (gint, siginfo_t *, void *);
+
 #endif
 
 struct rspamd_worker;
@@ -37,7 +43,7 @@ struct rspamd_worker_signal_handler;
  */
 void rspamd_worker_init_signals (struct rspamd_worker *worker, struct ev_loop *event_loop);
 
-typedef void (*rspamd_accept_handler)(struct ev_loop *loop, ev_io *w, int revents);
+typedef void (*rspamd_accept_handler) (struct ev_loop *loop, ev_io *w, int revents);
 
 /**
  * Prepare worker's startup
@@ -55,10 +61,10 @@ rspamd_prepare_worker (struct rspamd_worker *worker, const char *name,
  * Set special signal handler for a worker
  */
 void rspamd_worker_set_signal_handler (int signo,
-               struct rspamd_worker *worker,
-               struct ev_loop *event_loop,
-               rspamd_worker_signal_cb_t handler,
-               void *handler_data);
+                                                                          struct rspamd_worker *worker,
+                                                                          struct ev_loop *event_loop,
+                                                                          rspamd_worker_signal_cb_t handler,
+                                                                          void *handler_data);
 
 /**
  * Stop accepting new connections for a worker
@@ -67,9 +73,9 @@ void rspamd_worker_set_signal_handler (int signo,
 void rspamd_worker_stop_accept (struct rspamd_worker *worker);
 
 typedef gint (*rspamd_controller_func_t) (
-       struct rspamd_http_connection_entry *conn_ent,
-       struct rspamd_http_message *msg,
-       struct module_ctx *ctx);
+               struct rspamd_http_connection_entry *conn_ent,
+               struct rspamd_http_message *msg,
+               struct module_ctx *ctx);
 
 struct rspamd_custom_controller_command {
        const gchar *command;
@@ -102,7 +108,7 @@ struct rspamd_controller_session {
  * @param error_msg error message
  */
 void rspamd_controller_send_error (struct rspamd_http_connection_entry *entry,
-       gint code, const gchar *error_msg, ...);
+                                                                  gint code, const gchar *error_msg, ...);
 
 /**
  * Send a custom string using HTTP
@@ -110,7 +116,7 @@ void rspamd_controller_send_error (struct rspamd_http_connection_entry *entry,
  * @param str string to send
  */
 void rspamd_controller_send_string (struct rspamd_http_connection_entry *entry,
-       const gchar *str);
+                                                                       const gchar *str);
 
 /**
  * Send UCL using HTTP and JSON serialization
@@ -118,14 +124,14 @@ void rspamd_controller_send_string (struct rspamd_http_connection_entry *entry,
  * @param obj object to send
  */
 void rspamd_controller_send_ucl (struct rspamd_http_connection_entry *entry,
-       ucl_object_t *obj);
+                                                                ucl_object_t *obj);
 
 /**
  * Return worker's control structure by its type
  * @param type
  * @return worker's control structure or NULL
  */
-worker_t * rspamd_get_worker_by_type (struct rspamd_config *cfg, GQuark type);
+worker_t *rspamd_get_worker_by_type (struct rspamd_config *cfg, GQuark type);
 
 /**
  * Block signals before terminations
@@ -162,8 +168,8 @@ gboolean rspamd_worker_is_primary_controller (struct rspamd_worker *w);
  * @param w
  * @return
  */
-void * rspamd_worker_session_cache_new (struct rspamd_worker *w,
-               struct ev_loop *ev_base);
+void *rspamd_worker_session_cache_new (struct rspamd_worker *w,
+                                                                          struct ev_loop *ev_base);
 
 /**
  * Adds a new session identified by pointer
@@ -173,7 +179,7 @@ void * rspamd_worker_session_cache_new (struct rspamd_worker *w,
  * @param ptr
  */
 void rspamd_worker_session_cache_add (void *cache, const gchar *tag,
-               guint *pref, void *ptr);
+                                                                         guint *pref, void *ptr);
 
 /**
  * Removes session from cache
@@ -202,8 +208,8 @@ void rspamd_set_crash_handler (struct rspamd_main *);
  * @param resolver
  */
 void rspamd_worker_init_monitored (struct rspamd_worker *worker,
-               struct ev_loop *ev_base,
-               struct rspamd_dns_resolver *resolver);
+                                                                  struct ev_loop *ev_base,
+                                                                  struct rspamd_dns_resolver *resolver);
 
 /**
  * Performs throttling for accept events
@@ -221,15 +227,17 @@ void rspamd_worker_throttle_accept_events (gint sock, void *data);
  * @return TRUE if refork is desired
  */
 gboolean rspamd_check_termination_clause (struct rspamd_main *rspamd_main,
-               struct rspamd_worker *wrk, int status);
+                                                                                 struct rspamd_worker *wrk, int status);
 
 #ifdef WITH_HYPERSCAN
 struct rspamd_control_command;
+
 gboolean rspamd_worker_hyperscan_ready (struct rspamd_main *rspamd_main,
                                                                                struct rspamd_worker *worker, gint fd,
                                                                                gint attached_fd,
                                                                                struct rspamd_control_command *cmd,
                                                                                gpointer ud);
+
 #endif
 
 #define msg_err_main(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \
@@ -245,4 +253,8 @@ gboolean rspamd_worker_hyperscan_ready (struct rspamd_main *rspamd_main,
         G_STRFUNC, \
         __VA_ARGS__)
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* WORKER_UTIL_H_ */
index 025e9bf3488ed682f58a4829b769ae2dd37269ae..fa378554025d53c9a1a451349a9da3bfc569288e 100644 (file)
 
 #define RSPAMD_DEFAULT_BACKEND "mmap"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /* Forwarded declarations */
 struct rspamd_classifier_config;
 struct rspamd_statfile_config;
@@ -32,73 +36,93 @@ struct rspamd_task;
 
 struct rspamd_stat_backend {
        const char *name;
-       gpointer (*init)(struct rspamd_stat_ctx *ctx, struct rspamd_config *cfg,
-                       struct rspamd_statfile *st);
-       gpointer (*runtime)(struct rspamd_task *task,
-                       struct rspamd_statfile_config *stcf, gboolean learn, gpointer ctx);
-       gboolean (*process_tokens)(struct rspamd_task *task, GPtrArray *tokens,
-                       gint id,
-                       gpointer ctx);
-       gboolean (*finalize_process)(struct rspamd_task *task,
-                       gpointer runtime, gpointer ctx);
-       gboolean (*learn_tokens)(struct rspamd_task *task, GPtrArray *tokens,
-                       gint id,
-                       gpointer ctx);
-       gulong (*total_learns)(struct rspamd_task *task,
-                       gpointer runtime, gpointer ctx);
-       gboolean (*finalize_learn)(struct rspamd_task *task,
-                       gpointer runtime, gpointer ctx, GError **err);
-       gulong (*inc_learns)(struct rspamd_task *task,
-                       gpointer runtime, gpointer ctx);
-       gulong (*dec_learns)(struct rspamd_task *task,
-                       gpointer runtime, gpointer ctx);
-       ucl_object_t* (*get_stat)(gpointer runtime, gpointer ctx);
-       void (*close)(gpointer ctx);
-
-       gpointer (*load_tokenizer_config)(gpointer runtime, gsize *sz);
+
+       gpointer (*init) (struct rspamd_stat_ctx *ctx, struct rspamd_config *cfg,
+                                         struct rspamd_statfile *st);
+
+       gpointer (*runtime) (struct rspamd_task *task,
+                                                struct rspamd_statfile_config *stcf, gboolean learn, gpointer ctx);
+
+       gboolean (*process_tokens) (struct rspamd_task *task, GPtrArray *tokens,
+                                                               gint id,
+                                                               gpointer ctx);
+
+       gboolean (*finalize_process) (struct rspamd_task *task,
+                                                                 gpointer runtime, gpointer ctx);
+
+       gboolean (*learn_tokens) (struct rspamd_task *task, GPtrArray *tokens,
+                                                         gint id,
+                                                         gpointer ctx);
+
+       gulong (*total_learns) (struct rspamd_task *task,
+                                                       gpointer runtime, gpointer ctx);
+
+       gboolean (*finalize_learn) (struct rspamd_task *task,
+                                                               gpointer runtime, gpointer ctx, GError **err);
+
+       gulong (*inc_learns) (struct rspamd_task *task,
+                                                 gpointer runtime, gpointer ctx);
+
+       gulong (*dec_learns) (struct rspamd_task *task,
+                                                 gpointer runtime, gpointer ctx);
+
+       ucl_object_t *(*get_stat) (gpointer runtime, gpointer ctx);
+
+       void (*close) (gpointer ctx);
+
+       gpointer (*load_tokenizer_config) (gpointer runtime, gsize *sz);
+
        gpointer ctx;
 };
 
 #define RSPAMD_STAT_BACKEND_DEF(name) \
-               gpointer rspamd_##name##_init (struct rspamd_stat_ctx *ctx, \
-                       struct rspamd_config *cfg, struct rspamd_statfile *st); \
-               gpointer rspamd_##name##_runtime (struct rspamd_task *task, \
-                               struct rspamd_statfile_config *stcf, \
-                               gboolean learn, gpointer ctx); \
-               gboolean rspamd_##name##_process_tokens (struct rspamd_task *task, \
+        gpointer rspamd_##name##_init (struct rspamd_stat_ctx *ctx, \
+            struct rspamd_config *cfg, struct rspamd_statfile *st); \
+        gpointer rspamd_##name##_runtime (struct rspamd_task *task, \
+                struct rspamd_statfile_config *stcf, \
+                gboolean learn, gpointer ctx); \
+        gboolean rspamd_##name##_process_tokens (struct rspamd_task *task, \
                 GPtrArray *tokens, gint id, \
-                               gpointer ctx); \
-               gboolean rspamd_##name##_finalize_process (struct rspamd_task *task, \
-                               gpointer runtime, \
-                               gpointer ctx); \
-               gboolean rspamd_##name##_learn_tokens (struct rspamd_task *task, \
+                gpointer ctx); \
+        gboolean rspamd_##name##_finalize_process (struct rspamd_task *task, \
+                gpointer runtime, \
+                gpointer ctx); \
+        gboolean rspamd_##name##_learn_tokens (struct rspamd_task *task, \
                 GPtrArray *tokens, gint id, \
-                               gpointer ctx); \
-               gboolean rspamd_##name##_finalize_learn (struct rspamd_task *task, \
-                               gpointer runtime, \
-                               gpointer ctx, GError **err); \
-               gulong rspamd_##name##_total_learns (struct rspamd_task *task, \
-                               gpointer runtime, \
-                               gpointer ctx); \
-               gulong rspamd_##name##_inc_learns (struct rspamd_task *task, \
-                               gpointer runtime, \
-                               gpointer ctx); \
-               gulong rspamd_##name##_dec_learns (struct rspamd_task *task, \
-                               gpointer runtime, \
-                               gpointer ctx); \
-               gulong rspamd_##name##_learns (struct rspamd_task *task, \
-                               gpointer runtime, \
-                               gpointer ctx); \
-               ucl_object_t * rspamd_##name##_get_stat (gpointer runtime, \
-                               gpointer ctx); \
-               gpointer rspamd_##name##_load_tokenizer_config (gpointer runtime, \
-                               gsize *len); \
-               void rspamd_##name##_close (gpointer ctx)
+                gpointer ctx); \
+        gboolean rspamd_##name##_finalize_learn (struct rspamd_task *task, \
+                gpointer runtime, \
+                gpointer ctx, GError **err); \
+        gulong rspamd_##name##_total_learns (struct rspamd_task *task, \
+                gpointer runtime, \
+                gpointer ctx); \
+        gulong rspamd_##name##_inc_learns (struct rspamd_task *task, \
+                gpointer runtime, \
+                gpointer ctx); \
+        gulong rspamd_##name##_dec_learns (struct rspamd_task *task, \
+                gpointer runtime, \
+                gpointer ctx); \
+        gulong rspamd_##name##_learns (struct rspamd_task *task, \
+                gpointer runtime, \
+                gpointer ctx); \
+        ucl_object_t * rspamd_##name##_get_stat (gpointer runtime, \
+                gpointer ctx); \
+        gpointer rspamd_##name##_load_tokenizer_config (gpointer runtime, \
+                gsize *len); \
+        void rspamd_##name##_close (gpointer ctx)
 
 RSPAMD_STAT_BACKEND_DEF(mmaped_file);
+
 RSPAMD_STAT_BACKEND_DEF(sqlite3);
+
 #ifdef WITH_HIREDIS
+
 RSPAMD_STAT_BACKEND_DEF(redis);
+
+#endif
+
+#ifdef  __cplusplus
+}
 #endif
 
 #endif /* BACKENDS_H_ */
index 738a5e8c9ca9e9e9052af6e0405f7233c27b229d..4e159fb1347f4a1b77c64735b794cffa6b986565 100644 (file)
@@ -9,6 +9,10 @@
 /* Consider this value as 0 */
 #define ALPHA 0.0001
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_classifier_config;
 struct rspamd_task;
 struct rspamd_config;
@@ -18,49 +22,58 @@ struct token_node_s;
 
 struct rspamd_stat_classifier {
        char *name;
-       gboolean (*init_func)(struct rspamd_config *cfg,
-                                                 struct ev_loop *ev_base,
-                                                 struct rspamd_classifier *cl);
-       gboolean (*classify_func)(struct rspamd_classifier * ctx,
-                                                         GPtrArray *tokens,
-                                                         struct rspamd_task *task);
-       gboolean (*learn_spam_func)(struct rspamd_classifier * ctx,
-                                                               GPtrArray *input,
-                                                               struct rspamd_task *task,
-                                                               gboolean is_spam,
-                                                               gboolean unlearn,
-                                                               GError **err);
-       void (*fin_func)(struct rspamd_classifier *cl);
+
+       gboolean (*init_func) (struct rspamd_config *cfg,
+                                                  struct ev_loop *ev_base,
+                                                  struct rspamd_classifier *cl);
+
+       gboolean (*classify_func) (struct rspamd_classifier *ctx,
+                                                          GPtrArray *tokens,
+                                                          struct rspamd_task *task);
+
+       gboolean (*learn_spam_func) (struct rspamd_classifier *ctx,
+                                                                GPtrArray *input,
+                                                                struct rspamd_task *task,
+                                                                gboolean is_spam,
+                                                                gboolean unlearn,
+                                                                GError **err);
+
+       void (*fin_func) (struct rspamd_classifier *cl);
 };
 
 /* Bayes algorithm */
 gboolean bayes_init (struct rspamd_config *cfg,
                                         struct ev_loop *ev_base,
                                         struct rspamd_classifier *);
+
 gboolean bayes_classify (struct rspamd_classifier *ctx,
-               GPtrArray *tokens,
-               struct rspamd_task *task);
+                                                GPtrArray *tokens,
+                                                struct rspamd_task *task);
+
 gboolean bayes_learn_spam (struct rspamd_classifier *ctx,
-               GPtrArray *tokens,
-               struct rspamd_task *task,
-               gboolean is_spam,
-               gboolean unlearn,
-               GError **err);
+                                                  GPtrArray *tokens,
+                                                  struct rspamd_task *task,
+                                                  gboolean is_spam,
+                                                  gboolean unlearn,
+                                                  GError **err);
+
 void bayes_fin (struct rspamd_classifier *);
 
 /* Generic lua classifier */
 gboolean lua_classifier_init (struct rspamd_config *cfg,
                                                          struct ev_loop *ev_base,
                                                          struct rspamd_classifier *);
+
 gboolean lua_classifier_classify (struct rspamd_classifier *ctx,
-               GPtrArray *tokens,
-               struct rspamd_task *task);
+                                                                 GPtrArray *tokens,
+                                                                 struct rspamd_task *task);
+
 gboolean lua_classifier_learn_spam (struct rspamd_classifier *ctx,
-               GPtrArray *tokens,
-               struct rspamd_task *task,
-               gboolean is_spam,
-               gboolean unlearn,
-               GError **err);
+                                                                       GPtrArray *tokens,
+                                                                       struct rspamd_task *task,
+                                                                       gboolean is_spam,
+                                                                       gboolean unlearn,
+                                                                       GError **err);
 
 extern guint rspamd_bayes_log_id;
 #define msg_debug_bayes(...)  rspamd_conditional_debug_fast (NULL, task->from_addr, \
@@ -68,7 +81,9 @@ extern guint rspamd_bayes_log_id;
         G_STRFUNC, \
         __VA_ARGS__)
 
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
-/*
- * vi:ts=4
- */
index 6673d2239d5e250c63c2bc309d9a0962565bfea9..1816c9f7af2d1fcb03393ecbddd30149b35a6ae6 100644 (file)
 #include "config.h"
 #include "ucl.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #define RSPAMD_DEFAULT_CACHE "sqlite3"
 
 struct rspamd_task;
@@ -28,40 +32,53 @@ struct rspamd_statfile;
 
 struct rspamd_stat_cache {
        const char *name;
-       gpointer (*init)(struct rspamd_stat_ctx *ctx,
-                       struct rspamd_config *cfg,
-                       struct rspamd_statfile *st,
-                       const ucl_object_t *cf);
-       gpointer (*runtime)(struct rspamd_task *task,
-                       gpointer ctx, gboolean learn);
-       gint (*check)(struct rspamd_task *task,
-                       gboolean is_spam,
-                       gpointer runtime);
-       gint (*learn)(struct rspamd_task *task,
-                       gboolean is_spam,
-                       gpointer runtime);
+
+       gpointer (*init) (struct rspamd_stat_ctx *ctx,
+                                         struct rspamd_config *cfg,
+                                         struct rspamd_statfile *st,
+                                         const ucl_object_t *cf);
+
+       gpointer (*runtime) (struct rspamd_task *task,
+                                                gpointer ctx, gboolean learn);
+
+       gint (*check) (struct rspamd_task *task,
+                                  gboolean is_spam,
+                                  gpointer runtime);
+
+       gint (*learn) (struct rspamd_task *task,
+                                  gboolean is_spam,
+                                  gpointer runtime);
+
        void (*close) (gpointer ctx);
+
        gpointer ctx;
 };
 
 #define RSPAMD_STAT_CACHE_DEF(name) \
-               gpointer rspamd_stat_cache_##name##_init (struct rspamd_stat_ctx *ctx, \
-                               struct rspamd_config *cfg, \
-                               struct rspamd_statfile *st, \
-                               const ucl_object_t *cf); \
-               gpointer rspamd_stat_cache_##name##_runtime (struct rspamd_task *task, \
-                               gpointer ctx, gboolean learn); \
-               gint rspamd_stat_cache_##name##_check (struct rspamd_task *task, \
-                               gboolean is_spam, \
-                               gpointer runtime); \
-               gint rspamd_stat_cache_##name##_learn (struct rspamd_task *task, \
-                               gboolean is_spam, \
-                               gpointer runtime); \
-               void rspamd_stat_cache_##name##_close (gpointer ctx)
+        gpointer rspamd_stat_cache_##name##_init (struct rspamd_stat_ctx *ctx, \
+                struct rspamd_config *cfg, \
+                struct rspamd_statfile *st, \
+                const ucl_object_t *cf); \
+        gpointer rspamd_stat_cache_##name##_runtime (struct rspamd_task *task, \
+                gpointer ctx, gboolean learn); \
+        gint rspamd_stat_cache_##name##_check (struct rspamd_task *task, \
+                gboolean is_spam, \
+                gpointer runtime); \
+        gint rspamd_stat_cache_##name##_learn (struct rspamd_task *task, \
+                gboolean is_spam, \
+                gpointer runtime); \
+        void rspamd_stat_cache_##name##_close (gpointer ctx)
 
 RSPAMD_STAT_CACHE_DEF(sqlite3);
+
 #ifdef WITH_HIREDIS
+
 RSPAMD_STAT_CACHE_DEF(redis);
+
+#endif
+
+#ifdef  __cplusplus
+}
 #endif
 
 #endif /* LEARN_CACHE_H_ */
index 40a6bc71644251dda6c3cadaa64ec3b230e7af24..f91c8b79a2e6f9d12fac1ba2c42b754cee9c13fc 100644 (file)
 
 #include "config.h"
 #include "task.h"
-#include <lua.h>
+#include "lua/lua_common.h"
 #include "contrib/libev/ev.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * @file stat_api.h
  * High level statistics API
@@ -89,7 +93,7 @@ void rspamd_stat_close (void);
  * @param task
  */
 void rspamd_stat_process_tokenize (struct rspamd_stat_ctx *st_ctx,
-                                                         struct rspamd_task *task);
+                                                                  struct rspamd_task *task);
 
 /**
  * Classify the task specified and insert symbols if needed
@@ -99,7 +103,7 @@ void rspamd_stat_process_tokenize (struct rspamd_stat_ctx *st_ctx,
  * @return TRUE if task has been classified
  */
 rspamd_stat_result_t rspamd_stat_classify (struct rspamd_task *task,
-               lua_State *L, guint stage, GError **err);
+                                                                                  lua_State *L, guint stage, GError **err);
 
 
 /**
@@ -119,9 +123,9 @@ gboolean rspamd_stat_check_autolearn (struct rspamd_task *task);
  * @return TRUE if task has been learned
  */
 rspamd_stat_result_t rspamd_stat_learn (struct rspamd_task *task,
-               gboolean spam, lua_State *L, const gchar *classifier,
-               guint stage,
-               GError **err);
+                                                                               gboolean spam, lua_State *L, const gchar *classifier,
+                                                                               guint stage,
+                                                                               GError **err);
 
 /**
  * Get the overall statistics for all statfile backends
@@ -130,10 +134,14 @@ rspamd_stat_result_t rspamd_stat_learn (struct rspamd_task *task,
  * @return array of statistical information
  */
 rspamd_stat_result_t rspamd_stat_statistics (struct rspamd_task *task,
-               struct rspamd_config *cfg,
-               guint64 *total_learns,
-               ucl_object_t **res);
+                                                                                        struct rspamd_config *cfg,
+                                                                                        guint64 *total_learns,
+                                                                                        ucl_object_t **res);
 
 void rspamd_stat_unload (void);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* STAT_API_H_ */
index 50dbae9c10ac8ef548cb4779d81e239a35386492..967a3c4d66da0de80000a86b0e56b4f6d4565730 100644 (file)
 #include "backends/backends.h"
 #include "learn_cache/learn_cache.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_statfile_runtime {
        struct rspamd_statfile_config *st;
        gpointer backend_runtime;
@@ -54,10 +58,11 @@ struct rspamd_statfile {
 
 struct rspamd_stat_async_elt;
 
-typedef void (*rspamd_stat_async_handler)(struct rspamd_stat_async_elt *elt,
-               gpointer ud);
-typedef void (*rspamd_stat_async_cleanup)(struct rspamd_stat_async_elt *elt,
-               gpointer ud);
+typedef void (*rspamd_stat_async_handler) (struct rspamd_stat_async_elt *elt,
+                                                                                  gpointer ud);
+
+typedef void (*rspamd_stat_async_cleanup) (struct rspamd_stat_async_elt *elt,
+                                                                                  gpointer ud);
 
 struct rspamd_stat_async_elt {
        rspamd_stat_async_handler handler;
@@ -102,18 +107,26 @@ typedef enum rspamd_learn_cache_result {
        RSPAMD_LEARN_INGORE
 } rspamd_learn_t;
 
-struct rspamd_stat_ctx * rspamd_stat_get_ctx (void);
-struct rspamd_stat_classifier * rspamd_stat_get_classifier (const gchar *name);
-struct rspamd_stat_backend * rspamd_stat_get_backend (const gchar *name);
-struct rspamd_stat_tokenizer * rspamd_stat_get_tokenizer (const gchar *name);
-struct rspamd_stat_cache * rspamd_stat_get_cache (const gchar *name);
-struct rspamd_stat_async_elt* rspamd_stat_ctx_register_async (
+struct rspamd_stat_ctx *rspamd_stat_get_ctx (void);
+
+struct rspamd_stat_classifier *rspamd_stat_get_classifier (const gchar *name);
+
+struct rspamd_stat_backend *rspamd_stat_get_backend (const gchar *name);
+
+struct rspamd_stat_tokenizer *rspamd_stat_get_tokenizer (const gchar *name);
+
+struct rspamd_stat_cache *rspamd_stat_get_cache (const gchar *name);
+
+struct rspamd_stat_async_elt *rspamd_stat_ctx_register_async (
                rspamd_stat_async_handler handler, rspamd_stat_async_cleanup cleanup,
                gpointer d, gdouble timeout);
 
-static GQuark rspamd_stat_quark (void)
-{
+static GQuark rspamd_stat_quark (void) {
        return g_quark_from_static_string ("rspamd-statistics");
 }
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* STAT_INTERNAL_H_ */
index 784426d311d7322be195dd8d69edebd68900e5d7..bf4987c7a994ac33b1b14781de5f0a7364305219 100644 (file)
 
 #define RSPAMD_DEFAULT_TOKENIZER "osb"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_tokenizer_runtime;
 struct rspamd_stat_ctx;
 
 /* Common tokenizer structure */
 struct rspamd_stat_tokenizer {
        gchar *name;
+
        gpointer (*get_config) (rspamd_mempool_t *pool,
                                                        struct rspamd_tokenizer_config *cf, gsize *len);
-       gint (*tokenize_func)(struct rspamd_stat_ctx *ctx,
-                                                 struct rspamd_task *task,
-                                                 GArray *words,
-                                                 gboolean is_utf,
-                                                 const gchar *prefix,
-                                                 GPtrArray *result);
+
+       gint (*tokenize_func) (struct rspamd_stat_ctx *ctx,
+                                                  struct rspamd_task *task,
+                                                  GArray *words,
+                                                  gboolean is_utf,
+                                                  const gchar *prefix,
+                                                  GPtrArray *result);
 };
 
 enum rspamd_tokenize_type {
@@ -38,13 +44,13 @@ gint token_node_compare_func (gconstpointer a, gconstpointer b);
 
 
 /* Tokenize text into array of words (rspamd_stat_token_t type) */
-GArray * rspamd_tokenize_text (const gchar *text, gsize len,
-                                                          const UText *utxt,
-                                                          enum rspamd_tokenize_type how,
-                                                          struct rspamd_config *cfg,
-                                                          GList *exceptions,
-                                                          guint64 *hash,
-                                                          GArray *cur_words);
+GArray *rspamd_tokenize_text (const gchar *text, gsize len,
+                                                         const UText *utxt,
+                                                         enum rspamd_tokenize_type how,
+                                                         struct rspamd_config *cfg,
+                                                         GList *exceptions,
+                                                         guint64 *hash,
+                                                         GArray *cur_words);
 
 /* OSB tokenize function */
 gint rspamd_tokenizer_osb (struct rspamd_stat_ctx *ctx,
@@ -59,14 +65,19 @@ gpointer rspamd_tokenizer_osb_get_config (rspamd_mempool_t *pool,
                                                                                  gsize *len);
 
 struct rspamd_lang_detector;
+
 void rspamd_normalize_single_word (rspamd_stat_token_t *tok, rspamd_mempool_t *pool);
+
 void rspamd_normalize_words (GArray *words, rspamd_mempool_t *pool);
+
 void rspamd_stem_words (GArray *words, rspamd_mempool_t *pool,
                                                const gchar *language,
                                                struct rspamd_lang_detector *d);
 
 void rspamd_tokenize_meta_words (struct rspamd_task *task);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
-/*
- * vi:ts=4
- */
index 7efa5e3186a536ffb7be4f1529a9aace295e51dc..fe00ccc8690838d6fd0e4b0a9873e04ab84d9453 100644 (file)
 
 #include "mem_pool.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Opaque structure
  */
@@ -43,6 +47,7 @@ typedef struct rspamd_inet_addr_s rspamd_inet_addr_t;
 struct rspamd_radix_map_helper;
 
 struct rspamd_radix_map_helper **rspamd_inet_library_init (void);
+
 void rspamd_inet_library_destroy (void);
 
 /**
@@ -51,7 +56,7 @@ void rspamd_inet_library_destroy (void);
  * @param init
  * @return new inet addr
  */
-rspamd_inet_addr_t * rspamd_inet_address_new (int af, const void *init);
+rspamd_inet_addr_t *rspamd_inet_address_new (int af, const void *init);
 
 /**
  * Create new inet address structure from struct sockaddr
@@ -59,15 +64,15 @@ rspamd_inet_addr_t * rspamd_inet_address_new (int af, const void *init);
  * @param slen
  * @return
  */
-rspamd_inet_addr_t * rspamd_inet_address_from_sa (const struct sockaddr *sa,
-               socklen_t slen);
+rspamd_inet_addr_t *rspamd_inet_address_from_sa (const struct sockaddr *sa,
+                                                                                                socklen_t slen);
 
 /**
  * Create new inet address from rdns reply
  * @param rep reply element
  * @return new ipv4 or ipv6 addr (port is NOT set)
  */
-rspamd_inet_addr_t * rspamd_inet_address_from_rnds (
+rspamd_inet_addr_t *rspamd_inet_address_from_rnds (
                const struct rdns_reply_entry *rep);
 
 /**
@@ -79,7 +84,7 @@ rspamd_inet_addr_t * rspamd_inet_address_from_rnds (
  * @return TRUE if the address has been parsed, otherwise `target` content is undefined
  */
 gboolean rspamd_parse_inet_address_ip6 (const guchar *text, gsize len,
-               gpointer target);
+                                                                               gpointer target);
 
 /**
  * Parse string with ipv4 address of length `len` to `target` which should be
@@ -90,7 +95,7 @@ gboolean rspamd_parse_inet_address_ip6 (const guchar *text, gsize len,
  * @return TRUE if the address has been parsed, otherwise `target` content is undefined
  */
 gboolean rspamd_parse_inet_address_ip4 (const guchar *text, gsize len,
-               gpointer target);
+                                                                               gpointer target);
 
 /**
  * Parse ipv4 or ipv6 address to a static buffer `target`. Does not support Unix sockets
@@ -100,7 +105,7 @@ gboolean rspamd_parse_inet_address_ip4 (const guchar *text, gsize len,
  * @return
  */
 gboolean rspamd_parse_inet_address_ip (const char *src,
-               gsize srclen, rspamd_inet_addr_t *target);
+                                                                          gsize srclen, rspamd_inet_addr_t *target);
 
 /**
  * Try to parse address from string
@@ -109,8 +114,8 @@ gboolean rspamd_parse_inet_address_ip (const char *src,
  * @return TRUE if addr has been parsed
  */
 gboolean rspamd_parse_inet_address (rspamd_inet_addr_t **target,
-               const char *src,
-               gsize srclen);
+                                                                       const char *src,
+                                                                       gsize srclen);
 
 /**
  * Use memory pool allocated inet address
@@ -119,23 +124,23 @@ gboolean rspamd_parse_inet_address (rspamd_inet_addr_t **target,
  * @param pool
  * @return
  */
-rspamd_inet_addr_trspamd_parse_inet_address_pool (const char *src,
-                                                                                                        gsize srclen,
-                                                                                                        rspamd_mempool_t *pool);
+rspamd_inet_addr_t *rspamd_parse_inet_address_pool (const char *src,
+                                                                                                       gsize srclen,
+                                                                                                       rspamd_mempool_t *pool);
 
 /**
  * Returns string representation of inet address
  * @param addr
  * @return statically allocated string pointer (not thread safe)
  */
-const char * rspamd_inet_address_to_string (const rspamd_inet_addr_t *addr);
+const char *rspamd_inet_address_to_string (const rspamd_inet_addr_t *addr);
 
 /**
  * Returns pretty string representation of inet address
  * @param addr
  * @return statically allocated string pointer (not thread safe)
  */
-const char * rspamd_inet_address_to_string_pretty (const rspamd_inet_addr_t *addr);
+const char *rspamd_inet_address_to_string_pretty (const rspamd_inet_addr_t *addr);
 
 /**
  * Returns port number for the specified inet address in host byte order
@@ -157,8 +162,8 @@ gint rspamd_inet_address_get_af (const rspamd_inet_addr_t *addr);
  * @param sz
  * @return
  */
-struct sockaddrrspamd_inet_address_get_sa (const rspamd_inet_addr_t *addr,
-               socklen_t *sz);
+struct sockaddr *rspamd_inet_address_get_sa (const rspamd_inet_addr_t *addr,
+                                                                                        socklen_t *sz);
 
 /**
  * Makes a radix key from inet address
@@ -166,7 +171,7 @@ struct sockaddr* rspamd_inet_address_get_sa (const rspamd_inet_addr_t *addr,
  * @param klen
  * @return
  */
-guchar * rspamd_inet_address_get_hash_key (const rspamd_inet_addr_t *addr, guint *klen);
+guchar *rspamd_inet_address_get_hash_key (const rspamd_inet_addr_t *addr, guint *klen);
 
 /**
  * Receive data from an unconnected socket and fill the inet_addr structure if needed
@@ -177,7 +182,7 @@ guchar * rspamd_inet_address_get_hash_key (const rspamd_inet_addr_t *addr, guint
  * @return same as recvfrom(2)
  */
 gssize rspamd_inet_address_recvfrom (gint fd, void *buf, gsize len, gint fl,
-               rspamd_inet_addr_t **target);
+                                                                        rspamd_inet_addr_t **target);
 
 /**
  * Send data via unconnected socket using the specified inet_addr structure
@@ -188,7 +193,7 @@ gssize rspamd_inet_address_recvfrom (gint fd, void *buf, gsize len, gint fl,
  * @return
  */
 gssize rspamd_inet_address_sendto (gint fd, const void *buf, gsize len, gint fl,
-               const rspamd_inet_addr_t *addr);
+                                                                  const rspamd_inet_addr_t *addr);
 
 /**
  * Set port for inet address
@@ -202,7 +207,7 @@ void rspamd_inet_address_set_port (rspamd_inet_addr_t *addr, uint16_t port);
  * @return newly created and connected socket
  */
 int rspamd_inet_address_connect (const rspamd_inet_addr_t *addr, gint type,
-       gboolean async);
+                                                                gboolean async);
 
 /**
  * Listen on a specified inet address
@@ -212,7 +217,8 @@ int rspamd_inet_address_connect (const rspamd_inet_addr_t *addr, gint type,
  * @return
  */
 int rspamd_inet_address_listen (const rspamd_inet_addr_t *addr, gint type,
-       gboolean async);
+                                                               gboolean async);
+
 /**
  * Check whether specified ip is valid (not INADDR_ANY or INADDR_NONE) for ipv4 or ipv6
  * @param ptr pointer to struct in_addr or struct in6_addr
@@ -221,7 +227,8 @@ int rspamd_inet_address_listen (const rspamd_inet_addr_t *addr, gint type,
  */
 gboolean rspamd_ip_is_valid (const rspamd_inet_addr_t *addr);
 
-typedef void (*rspamd_accept_throttling_handler)(gint, void *);
+typedef void (*rspamd_accept_throttling_handler) (gint, void *);
+
 /**
  * Accept from listening socket filling addr structure
  * @param sock listening socket
@@ -241,9 +248,9 @@ gint rspamd_accept_from_socket (gint sock,
  * @return TRUE if string was parsed
  */
 gboolean rspamd_parse_host_port_priority (const gchar *str,
-               GPtrArray **addrs,
-               guint *priority, gchar **name, guint default_port,
-               rspamd_mempool_t *pool);
+                                                                                 GPtrArray **addrs,
+                                                                                 guint *priority, gchar **name, guint default_port,
+                                                                                 rspamd_mempool_t *pool);
 
 /**
  * Destroy the specified IP address
@@ -265,7 +272,7 @@ void rspamd_inet_address_apply_mask (rspamd_inet_addr_t *addr, guint mask);
  * @return
  */
 gint rspamd_inet_address_compare (const rspamd_inet_addr_t *a1,
-               const rspamd_inet_addr_t *a2, gboolean compare_ports);
+                                                                 const rspamd_inet_addr_t *a2, gboolean compare_ports);
 
 /**
  * Utility function to compare addresses by in g_ptr_array
@@ -274,7 +281,8 @@ gint rspamd_inet_address_compare (const rspamd_inet_addr_t *a1,
  * @return
  */
 gint rspamd_inet_address_compare_ptr (gconstpointer a1,
-               gconstpointer a2);
+                                                                         gconstpointer a2);
+
 /**
  * Performs deep copy of rspamd inet addr
  * @param addr
@@ -286,19 +294,21 @@ rspamd_inet_addr_t *rspamd_inet_address_copy (const rspamd_inet_addr_t *addr);
  * Returns hash for inet address (ignoring port)
  */
 guint rspamd_inet_address_hash (gconstpointer a);
+
 guint rspamd_inet_address_port_hash (gconstpointer a);
 
 /**
  * Returns true if two address are equal
  */
 gboolean rspamd_inet_address_equal (gconstpointer a, gconstpointer b);
+
 gboolean rspamd_inet_address_port_equal (gconstpointer a, gconstpointer b);
 
 /**
  * Returns TRUE if an address belongs to some local address
  */
 gboolean rspamd_inet_address_is_local (const rspamd_inet_addr_t *addr,
-               gboolean check_laddrs);
+                                                                          gboolean check_laddrs);
 
 /**
  * Returns size of storage required to store a complete IP address
@@ -306,4 +316,8 @@ gboolean rspamd_inet_address_is_local (const rspamd_inet_addr_t *addr,
  */
 gsize rspamd_inet_address_storage_size (void);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* ADDR_H_ */
index bd336b87bf98a9ace321c16d340d41ab1f5b8556..bd18fa75f4a48b161c19c274ca5742802d43bbbe 100644 (file)
 #include "mem_pool.h"
 #include "fstring.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #define RSPAMD_EXPRESSION_MAX_PRIORITY 1024
 
 #define RSPAMD_EXPRESSION_FLAG_NOOPT (1 << 0)
@@ -56,17 +60,20 @@ typedef struct rspamd_expression_atom_s {
        gint priority;
 } rspamd_expression_atom_t;
 
-typedef gdouble (*rspamd_expression_process_cb)(gpointer runtime_data,
-                                                                                               rspamd_expression_atom_t *atom);
+typedef gdouble (*rspamd_expression_process_cb) (gpointer runtime_data,
+                                                                                                rspamd_expression_atom_t *atom);
 
 struct rspamd_atom_subr {
        /* Parses atom from string and returns atom structure */
-       rspamd_expression_atom_t * (*parse)(const gchar *line, gsize len,
-                       rspamd_mempool_t *pool, gpointer ud, GError **err);
+       rspamd_expression_atom_t *(*parse) (const gchar *line, gsize len,
+                                                                               rspamd_mempool_t *pool, gpointer ud, GError **err);
+
        /* Process atom via the opaque pointer (e.g. struct rspamd_task *) */
        rspamd_expression_process_cb process;
+
        /* Calculates the relative priority of the expression */
        gint (*priority) (rspamd_expression_atom_t *atom);
+
        void (*destroy) (rspamd_expression_atom_t *atom);
 };
 
@@ -85,9 +92,9 @@ struct rspamd_expression;
  * @return TRUE if an expression have been parsed
  */
 gboolean rspamd_parse_expression (const gchar *line, gsize len,
-               const struct rspamd_atom_subr *subr, gpointer subr_data,
-               rspamd_mempool_t *pool, GError **err,
-               struct rspamd_expression **target);
+                                                                 const struct rspamd_atom_subr *subr, gpointer subr_data,
+                                                                 rspamd_mempool_t *pool, GError **err,
+                                                                 struct rspamd_expression **target);
 
 /**
  * Process the expression and return its value using atom 'process' functions with the specified data pointer
@@ -124,6 +131,7 @@ gdouble rspamd_process_expression_closure (struct rspamd_expression *expr,
                                                                                   gint flags,
                                                                                   gpointer runtime_ud,
                                                                                   GPtrArray **track);
+
 /**
  * Shows string representation of an expression
  * @param expr expression to show
@@ -136,7 +144,7 @@ GString *rspamd_expression_tostring (struct rspamd_expression *expr);
  * and should not be modified within callback
  */
 typedef void (*rspamd_expression_atom_foreach_cb) (const rspamd_ftok_t *atom,
-               gpointer ud);
+                                                                                                  gpointer ud);
 
 /**
  * Traverse over all atoms in the expression
@@ -145,7 +153,7 @@ typedef void (*rspamd_expression_atom_foreach_cb) (const rspamd_ftok_t *atom,
  * @param ud opaque data passed to `cb`
  */
 void rspamd_expression_atom_foreach (struct rspamd_expression *expr,
-               rspamd_expression_atom_foreach_cb cb, gpointer cbdata);
+                                                                        rspamd_expression_atom_foreach_cb cb, gpointer cbdata);
 
 /**
  * Checks if a specified node in AST is the specified operation
@@ -155,4 +163,8 @@ void rspamd_expression_atom_foreach (struct rspamd_expression *expr,
  */
 gboolean rspamd_expression_node_is_op (GNode *node, enum rspamd_expression_op op);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBUTIL_EXPRESSION_H_ */
index 1a4d25eb96fced60f0b6db7b03063a41ca6d7660..6102215d4efc7b4b0cd14eda77c151da1d4ac077 100644 (file)
 #include "mem_pool.h"
 #include <unicode/uchar.h>
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Fixed strings library
  * These strings are NOT null-terminated for speed
@@ -47,26 +51,26 @@ typedef struct f_str_unicode_tok {
 /**
  * Create new fixed length string
  */
-rspamd_fstring_trspamd_fstring_new (void)
-               G_GNUC_WARN_UNUSED_RESULT;
+rspamd_fstring_t *rspamd_fstring_new (void)
+G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Create new fixed length string with preallocated size
  */
 rspamd_fstring_t *rspamd_fstring_sized_new (gsize initial_size)
-               G_GNUC_WARN_UNUSED_RESULT;
+G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Create new fixed length string and initialize it with the initial data
  */
 rspamd_fstring_t *rspamd_fstring_new_init (const gchar *init, gsize len)
-               G_GNUC_WARN_UNUSED_RESULT;
+G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Assign new value to fixed string
  */
 rspamd_fstring_t *rspamd_fstring_assign (rspamd_fstring_t *str,
-               const gchar *init, gsize len) G_GNUC_WARN_UNUSED_RESULT;
+                                                                                const gchar *init, gsize len) G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Free fixed length string
@@ -76,14 +80,14 @@ void rspamd_fstring_free (rspamd_fstring_t *str);
 /**
  * Append data to a fixed length string
  */
-rspamd_fstring_trspamd_fstring_append (rspamd_fstring_t *str,
-               const char *in, gsize len) G_GNUC_WARN_UNUSED_RESULT;
+rspamd_fstring_t *rspamd_fstring_append (rspamd_fstring_t *str,
+                                                                                const char *in, gsize len) G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Append `len` repeated chars `c` to string `str`
  */
 rspamd_fstring_t *rspamd_fstring_append_chars (rspamd_fstring_t *str,
-               char c, gsize len) G_GNUC_WARN_UNUSED_RESULT;
+                                                                                          char c, gsize len) G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Erase `len` characters at position `pos`
@@ -96,14 +100,16 @@ void rspamd_fstring_erase (rspamd_fstring_t *str, gsize pos, gsize len);
  * Convert fixed string to a zero terminated string. This string must be
  * freed by a caller
  */
-char * rspamd_fstring_cstr (const rspamd_fstring_t *str)
-               G_GNUC_WARN_UNUSED_RESULT;
+char *rspamd_fstring_cstr (const rspamd_fstring_t *str)
+G_GNUC_WARN_UNUSED_RESULT;
+
 /**
  * Convert fixed string usign ftok_t to a zero terminated string. This string must be
  * freed by a caller
  */
-char * rspamd_ftok_cstr (const rspamd_ftok_t *str)
-               G_GNUC_WARN_UNUSED_RESULT;
+char *rspamd_ftok_cstr (const rspamd_ftok_t *str)
+G_GNUC_WARN_UNUSED_RESULT;
+
 /*
  * Return fast hash value for fixed string converted to lowercase
  */
@@ -113,31 +119,31 @@ guint32 rspamd_fstrhash_lc (const rspamd_ftok_t *str, gboolean is_utf);
  * Return true if two strings are equal
  */
 gboolean rspamd_fstring_equal (const rspamd_fstring_t *s1,
-               const rspamd_fstring_t *s2);
+                                                          const rspamd_fstring_t *s2);
 
 /**
  * Compare two fixed strings ignoring case
  */
 gint rspamd_fstring_casecmp (const rspamd_fstring_t *s1,
-               const rspamd_fstring_t *s2);
+                                                        const rspamd_fstring_t *s2);
 
 /**
  * Compare two fixed strings
  */
 gint rspamd_fstring_cmp (const rspamd_fstring_t *s1,
-               const rspamd_fstring_t *s2);
+                                                const rspamd_fstring_t *s2);
 
 /**
  * Compare two fixed tokens ignoring case
  */
 gint rspamd_ftok_casecmp (const rspamd_ftok_t *s1,
-               const rspamd_ftok_t *s2);
+                                                 const rspamd_ftok_t *s2);
 
 /**
  * Compare two fixed tokens
  */
 gint rspamd_ftok_cmp (const rspamd_ftok_t *s1,
-               const rspamd_ftok_t *s2);
+                                         const rspamd_ftok_t *s2);
 
 /**
  * Returns true if `s1` starts with `s2`
@@ -152,7 +158,7 @@ gboolean rspamd_ftok_starts_with (const rspamd_ftok_t *s1,
  * Return TRUE if ftok is equal to specified C string
  */
 gboolean rspamd_ftok_cstr_equal (const rspamd_ftok_t *s,
-               const gchar *pat, gboolean icase);
+                                                                const gchar *pat, gboolean icase);
 
 /**
  * Free fstring_t that is mapped to ftok_t
@@ -184,8 +190,8 @@ gsize rspamd_fstring_suggest_size (gsize len, gsize allocated, gsize needed_len)
  * @param needed_len
  * @return
  */
-rspamd_fstring_t * rspamd_fstring_grow (rspamd_fstring_t *str,
-               gsize needed_len) G_GNUC_WARN_UNUSED_RESULT;
+rspamd_fstring_t *rspamd_fstring_grow (rspamd_fstring_t *str,
+                                                                          gsize needed_len) G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * Copies ftok to zero terminated string (must be freed using g_free)
@@ -203,14 +209,17 @@ gchar *rspamd_fstringdup (const rspamd_fstring_t *src) G_GNUC_WARN_UNUSED_RESULT
 
 #define RSPAMD_FTOK_ASSIGN(t, lit) do { (t)->begin = (lit); (t)->len = sizeof(lit) - 1; } while (0)
 #define RSPAMD_FTOK_FROM_STR(t, str) do { \
-       if (G_LIKELY(str)) { \
-               (t)->begin = (const char*)(str); \
-               (t)->len = strlen (str); \
-       } \
-       else { \
-               (t)->begin = NULL; \
-               (t)->len = 0; \
-       } \
+    if (G_LIKELY(str)) { \
+        (t)->begin = (const char*)(str); \
+        (t)->len = strlen (str); \
+    } \
+    else { \
+        (t)->begin = NULL; \
+        (t)->len = 0; \
+    } \
 } while (0)
 
+#ifdef  __cplusplus
+}
+#endif
 #endif
index bae3cacfaa974667d82e81eea7483bdf11ba61da..e1284a885edda5a781b05cfd6f54bcb7901a61cc 100644 (file)
@@ -9,6 +9,10 @@
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_lru_hash_s;
 typedef struct rspamd_lru_hash_s rspamd_lru_hash_t;
 struct rspamd_lru_element_s;
@@ -23,9 +27,9 @@ typedef struct rspamd_lru_element_s rspamd_lru_element_t;
  * @param key_equal_func pointer to function for comparing keys
  * @return new rspamd_hash object
  */
-rspamd_lru_hash_t * rspamd_lru_hash_new (gint maxsize,
-                                                                                GDestroyNotify key_destroy,
-                                                                                GDestroyNotify value_destroy);
+rspamd_lru_hash_t *rspamd_lru_hash_new (gint maxsize,
+                                                                               GDestroyNotify key_destroy,
+                                                                               GDestroyNotify value_destroy);
 
 
 /**
@@ -36,11 +40,11 @@ rspamd_lru_hash_t * rspamd_lru_hash_new (gint maxsize,
  * @param key_equal_func pointer to function for comparing keys
  * @return new rspamd_hash object
  */
-rspamd_lru_hash_t * rspamd_lru_hash_new_full (gint maxsize,
-                                                                                         GDestroyNotify key_destroy,
-                                                                                         GDestroyNotify value_destroy,
-                                                                                         GHashFunc hfunc,
-                                                                                         GEqualFunc eqfunc);
+rspamd_lru_hash_t *rspamd_lru_hash_new_full (gint maxsize,
+                                                                                        GDestroyNotify key_destroy,
+                                                                                        GDestroyNotify value_destroy,
+                                                                                        GHashFunc hfunc,
+                                                                                        GEqualFunc eqfunc);
 
 /**
  * Lookup item from hash
@@ -60,6 +64,7 @@ gpointer rspamd_lru_hash_lookup (rspamd_lru_hash_t *hash,
  */
 gboolean rspamd_lru_hash_remove (rspamd_lru_hash_t *hash,
                                                                 gconstpointer key);
+
 /**
  * Insert item in hash
  * @param hash hash object
@@ -88,7 +93,7 @@ void rspamd_lru_hash_destroy (rspamd_lru_hash_t *hash);
  * @return new it or -1 if iteration has been reached over
  */
 int rspamd_lru_hash_foreach (rspamd_lru_hash_t *hash, int it, gpointer *k,
-               gpointer *v);
+                                                        gpointer *v);
 
 /**
  * Returns number of elements in a hash
@@ -101,4 +106,9 @@ guint rspamd_lru_hash_size (rspamd_lru_hash_t *hash);
  * @param hash hash object
  */
 guint rspamd_lru_hash_capacity (rspamd_lru_hash_t *hash);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 7d6ef4fff2097c7b62aced0e186f37b1a5ab8ce2..94501a740856cccf7de617277dd3a290403cb960 100644 (file)
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Binary minimal heap interface based on glib
  */
@@ -44,14 +48,14 @@ struct rspamd_min_heap *rspamd_min_heap_create (gsize reserved_size);
  * @param elt element to push
  */
 void rspamd_min_heap_push (struct rspamd_min_heap *heap,
-               struct rspamd_min_heap_elt *elt);
+                                                  struct rspamd_min_heap_elt *elt);
 
 /**
  * Pops the minimum element from the heap and reorder the queue
  * @param heap heap structure
  * @return minimum element
  */
-struct rspamd_min_heap_eltrspamd_min_heap_pop (struct rspamd_min_heap *heap);
+struct rspamd_min_heap_elt *rspamd_min_heap_pop (struct rspamd_min_heap *heap);
 
 /**
  * Updates priority for the element. It must be in queue (so `idx` should be sane)
@@ -60,7 +64,7 @@ struct rspamd_min_heap_elt* rspamd_min_heap_pop (struct rspamd_min_heap *heap);
  * @param npri new priority
  */
 void rspamd_min_heap_update_elt (struct rspamd_min_heap *heap,
-               struct rspamd_min_heap_elt *elt, guint npri);
+                                                                struct rspamd_min_heap_elt *elt, guint npri);
 
 
 /**
@@ -69,7 +73,7 @@ void rspamd_min_heap_update_elt (struct rspamd_min_heap *heap,
  * @param elt
  */
 void rspamd_min_heap_remove_elt (struct rspamd_min_heap *heap,
-               struct rspamd_min_heap_elt *elt);
+                                                                struct rspamd_min_heap_elt *elt);
 
 /**
  * Destroys heap (elements are not destroyed themselves)
@@ -83,7 +87,11 @@ void rspamd_min_heap_destroy (struct rspamd_min_heap *heap);
  * @param idx
  * @return
  */
-struct rspamd_min_heap_elt* rspamd_min_heap_index (struct rspamd_min_heap *heap,
-               guint idx);
+struct rspamd_min_heap_elt *rspamd_min_heap_index (struct rspamd_min_heap *heap,
+                                                                                                  guint idx);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBUTIL_HEAP_H_ */
index fc130344666f961e6f73184a3edb4357c5bf8962..1923e59539372d56120bf4cb3439040cb45aa9b4 100644 (file)
 
 #include "contrib/libev/ev.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_http_connection_type {
        RSPAMD_HTTP_SERVER,
        RSPAMD_HTTP_CLIENT
@@ -88,15 +92,15 @@ enum rspamd_http_options {
 };
 
 typedef int (*rspamd_http_body_handler_t) (struct rspamd_http_connection *conn,
-               struct rspamd_http_message *msg,
-               const gchar *chunk,
-               gsize len);
+                                                                                  struct rspamd_http_message *msg,
+                                                                                  const gchar *chunk,
+                                                                                  gsize len);
 
 typedef void (*rspamd_http_error_handler_t) (struct rspamd_http_connection *conn,
-               GError *err);
+                                                                                        GError *err);
 
 typedef int (*rspamd_http_finish_handler_t) (struct rspamd_http_connection *conn,
-               struct rspamd_http_message *msg);
+                                                                                        struct rspamd_http_message *msg);
 
 /**
  * HTTP connection structure
@@ -195,14 +199,14 @@ struct rspamd_http_connection *rspamd_http_connection_new_client_socket (
  * @param key opaque key structure
  */
 void rspamd_http_connection_set_key (struct rspamd_http_connection *conn,
-               struct rspamd_cryptobox_keypair *key);
+                                                                        struct rspamd_cryptobox_keypair *key);
 
 /**
  * Get peer's public key
  * @param conn connection structure
  * @return pubkey structure or NULL
  */
-const struct rspamd_cryptobox_pubkeyrspamd_http_connection_get_peer_key (
+const struct rspamd_cryptobox_pubkey *rspamd_http_connection_get_peer_key (
                struct rspamd_http_connection *conn);
 
 /**
@@ -263,8 +267,7 @@ void rspamd_http_connection_free (struct rspamd_http_connection *conn);
  * @return
  */
 static inline struct rspamd_http_connection *
-rspamd_http_connection_ref (struct rspamd_http_connection *conn)
-{
+rspamd_http_connection_ref (struct rspamd_http_connection *conn) {
        conn->ref++;
        return conn;
 }
@@ -274,8 +277,7 @@ rspamd_http_connection_ref (struct rspamd_http_connection *conn)
  * @param conn
  */
 static void
-rspamd_http_connection_unref (struct rspamd_http_connection *conn)
-{
+rspamd_http_connection_unref (struct rspamd_http_connection *conn) {
        if (--conn->ref <= 0) {
                rspamd_http_connection_free (conn);
        }
@@ -292,8 +294,12 @@ void rspamd_http_connection_reset (struct rspamd_http_connection *conn);
  * @param sz
  */
 void rspamd_http_connection_set_max_size (struct rspamd_http_connection *conn,
-               gsize sz);
+                                                                                 gsize sz);
 
 void rspamd_http_connection_disable_encryption (struct rspamd_http_connection *conn);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* HTTP_H_ */
index c610ffbbd21e939e60de860f4f04ea1e8f8ebdce..f7697c4067fe9899ce4fc8bfb730d9d758e2a9fa 100644 (file)
 
 #include "contrib/libev/ev.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_http_context;
 struct rspamd_config;
 struct rspamd_http_message;
@@ -44,20 +48,21 @@ struct rspamd_http_context_cfg {
  * @param ev_base event base
  * @return new context used for both client and server HTTP connections
  */
-struct rspamd_http_contextrspamd_http_context_create (struct rspamd_config *cfg,
-               struct ev_loop *ev_base, struct upstream_ctx *ctx);
+struct rspamd_http_context *rspamd_http_context_create (struct rspamd_config *cfg,
+                                                                                                               struct ev_loop *ev_base, struct upstream_ctx *ctx);
 
-struct rspamd_http_contextrspamd_http_context_create_config (
+struct rspamd_http_context *rspamd_http_context_create_config (
                struct rspamd_http_context_cfg *cfg,
                struct ev_loop *ev_base,
                struct upstream_ctx *ctx);
+
 /**
  * Destroys context
  * @param ctx
  */
 void rspamd_http_context_free (struct rspamd_http_context *ctx);
 
-struct rspamd_http_contextrspamd_http_context_default (void);
+struct rspamd_http_context *rspamd_http_context_default (void);
 
 /**
  * Returns preserved keepalive connection if it's available.
@@ -67,7 +72,7 @@ struct rspamd_http_context* rspamd_http_context_default (void);
  * @param host
  * @return
  */
-struct rspamd_http_connectionrspamd_http_context_check_keepalive (
+struct rspamd_http_connection *rspamd_http_context_check_keepalive (
                struct rspamd_http_context *ctx, const rspamd_inet_addr_t *addr,
                const gchar *host);
 
@@ -83,6 +88,7 @@ void rspamd_http_context_prepare_keepalive (struct rspamd_http_context *ctx,
                                                                                        struct rspamd_http_connection *conn,
                                                                                        const rspamd_inet_addr_t *addr,
                                                                                        const gchar *host);
+
 /**
  * Pushes a connection to keepalive pool after client request is finished,
  * keepalive key *must* be prepared before using of this function
@@ -95,4 +101,8 @@ void rspamd_http_context_push_keepalive (struct rspamd_http_context *ctx,
                                                                                 struct rspamd_http_message *msg,
                                                                                 struct ev_loop *ev_base);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index c9e6abfce93855ebb81b58b3608df1a509132466..e13c7427c134dc426ba2c96f71ead82f7f918d2f 100644 (file)
 #include "fstring.h"
 #include "ref.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_http_connection;
 
-enum rspamd_http_message_type { HTTP_REQUEST = 0, HTTP_RESPONSE };
+enum rspamd_http_message_type {
+       HTTP_REQUEST = 0, HTTP_RESPONSE
+};
 
 /**
  * Extract the current message from a connection to deal with separately
  * @param conn
  * @return
  */
-struct rspamd_http_message * rspamd_http_connection_steal_msg (
+struct rspamd_http_message *rspamd_http_connection_steal_msg (
                struct rspamd_http_connection *conn);
 
 /**
@@ -39,7 +46,7 @@ struct rspamd_http_message * rspamd_http_connection_steal_msg (
  * @param conn
  * @return
  */
-struct rspamd_http_message * rspamd_http_connection_copy_msg (
+struct rspamd_http_message *rspamd_http_connection_copy_msg (
                struct rspamd_http_message *msg, GError **err);
 
 /**
@@ -47,14 +54,15 @@ struct rspamd_http_message * rspamd_http_connection_copy_msg (
  * @param type request or response
  * @return new http message
  */
-struct rspamd_http_message * rspamd_http_new_message (enum rspamd_http_message_type type);
+struct rspamd_http_message *rspamd_http_new_message (enum rspamd_http_message_type type);
 
 /**
  * Increase refcount number for an HTTP message
  * @param msg message to use
  * @return
  */
-struct rspamd_http_message * rspamd_http_message_ref (struct rspamd_http_message *msg);
+struct rspamd_http_message *rspamd_http_message_ref (struct rspamd_http_message *msg);
+
 /**
  * Decrease number of refcounts for http message
  * @param msg
@@ -68,12 +76,13 @@ void rspamd_http_message_unref (struct rspamd_http_message *msg);
  */
 void rspamd_http_message_set_peer_key (struct rspamd_http_message *msg,
                                                                           struct rspamd_cryptobox_pubkey *pk);
+
 /**
  * Create HTTP message from URL
  * @param url
  * @return new message or NULL
  */
-struct rspamd_http_messagerspamd_http_message_from_url (const gchar *url);
+struct rspamd_http_message *rspamd_http_message_from_url (const gchar *url);
 
 /**
  * Returns body for a message
@@ -101,6 +110,7 @@ gboolean rspamd_http_message_set_body (struct rspamd_http_message *msg,
  */
 void rspamd_http_message_set_method (struct rspamd_http_message *msg,
                                                                         const gchar *method);
+
 /**
  * Maps fd as message's body
  * @param msg
@@ -162,7 +172,7 @@ void rspamd_http_message_add_header_fstr (struct rspamd_http_message *msg,
  * @param msg message
  * @param name name of header
  */
-const rspamd_ftok_t * rspamd_http_message_find_header (
+const rspamd_ftok_t *rspamd_http_message_find_header (
                struct rspamd_http_message *msg,
                const gchar *name);
 
@@ -172,7 +182,7 @@ const rspamd_ftok_t * rspamd_http_message_find_header (
  * @param name
  * @return list of rspamd_ftok_t * with values
  */
-GPtrArrayrspamd_http_message_find_header_multiple (
+GPtrArray *rspamd_http_message_find_header_multiple (
                struct rspamd_http_message *msg,
                const gchar *name);
 
@@ -198,13 +208,14 @@ void rspamd_http_message_free (struct rspamd_http_message *msg);
  * @return new GHashTable which maps rspamd_ftok_t* to rspamd_ftok_t*
  * (table must be freed by a caller)
  */
-GHashTablerspamd_http_message_parse_query (struct rspamd_http_message *msg);
+GHashTable *rspamd_http_message_parse_query (struct rspamd_http_message *msg);
 
 /**
  * Increase refcount for shared file (if any) to prevent early memory unlinking
  * @param msg
  */
-struct rspamd_storage_shmem* rspamd_http_message_shmem_ref (struct rspamd_http_message *msg);
+struct rspamd_storage_shmem *rspamd_http_message_shmem_ref (struct rspamd_http_message *msg);
+
 /**
  * Decrease external ref for shmem segment associated with a message
  * @param msg
@@ -218,4 +229,8 @@ void rspamd_http_message_shmem_unref (struct rspamd_storage_shmem *p);
  */
 guint rspamd_http_message_get_flags (struct rspamd_http_message *msg);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index f5a7dd9cc136e13d8b50d764c3e1056b91f36790..53c9a81f2e2126b526dc85e535d3d872836ddc75 100644 (file)
 #define HASH_CASELESS
 #include "uthash_strcase.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * HTTP header structure
  */
@@ -84,9 +88,10 @@ struct rspamd_keepalive_hash_key {
        GQueue conns;
 };
 
-gint32 rspamd_keep_alive_key_hash (struct rspamd_keepalive_hash_key* k);
-bool rspamd_keep_alive_key_equal (struct rspamd_keepalive_hash_key* k1,
-                                                                 struct rspamd_keepalive_hash_key* k2);
+gint32 rspamd_keep_alive_key_hash (struct rspamd_keepalive_hash_key *k);
+
+bool rspamd_keep_alive_key_equal (struct rspamd_keepalive_hash_key *k1,
+                                                                 struct rspamd_keepalive_hash_key *k2);
 
 KHASH_INIT (rspamd_keep_alive_hash, struct rspamd_keepalive_hash_key *,
                char, 0, rspamd_keep_alive_key_hash, rspamd_keep_alive_key_equal);
@@ -106,10 +111,16 @@ struct rspamd_http_context {
 };
 
 #define HTTP_ERROR http_error_quark ()
+
 GQuark http_error_quark (void);
 
 void rspamd_http_message_storage_cleanup (struct rspamd_http_message *msg);
+
 gboolean rspamd_http_message_grow_body (struct rspamd_http_message *msg,
                                                                                gsize len);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBUTIL_HTTP_PRIVATE_H_ */
index b946067b7249839d531ea1bb73cc23f583b1e8ca..115ee9b8a86eccfe1d6940ab31dfdd85fe756c1b 100644 (file)
 #include "config.h"
 #include "http_connection.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_http_connection_router;
 struct rspamd_http_connection_entry;
 
 typedef int (*rspamd_http_router_handler_t) (struct rspamd_http_connection_entry
                                                                                         *conn_ent,
                                                                                         struct rspamd_http_message *msg);
+
 typedef void (*rspamd_http_router_error_handler_t) (struct rspamd_http_connection_entry *conn_ent,
                                                                                                        GError *err);
+
 typedef void (*rspamd_http_router_finish_handler_t) (struct rspamd_http_connection_entry *conn_ent);
 
 
@@ -62,7 +68,7 @@ struct rspamd_http_connection_router {
  * the specified directory
  * @return
  */
-struct rspamd_http_connection_router * rspamd_http_router_new (
+struct rspamd_http_connection_router *rspamd_http_router_new (
                rspamd_http_router_error_handler_t eh,
                rspamd_http_router_finish_handler_t fh,
                ev_tstamp timeout,
@@ -109,6 +115,7 @@ void rspamd_http_router_insert_headers (struct rspamd_http_connection_router *ro
                                                                                struct rspamd_http_message *msg);
 
 struct rspamd_regexp_s;
+
 /**
  * Adds new pattern to router, regexp object is refcounted by this function
  * @param router
@@ -117,6 +124,7 @@ struct rspamd_regexp_s;
  */
 void rspamd_http_router_add_regexp (struct rspamd_http_connection_router *router,
                                                                        struct rspamd_regexp_s *re, rspamd_http_router_handler_t handler);
+
 /**
  * Handle new accepted socket
  * @param router router object
@@ -134,4 +142,8 @@ void rspamd_http_router_handle_socket (
  */
 void rspamd_http_router_free (struct rspamd_http_connection_router *router);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 30d806ae0ddd607ef5c03de669dfc1cf3456efa1..7a22ffb16cd06d661aa02f86aa1ece945919e4fe 100644 (file)
 
 #include "config.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Parse HTTP date header and return it as time_t
  * @param header HTTP date header
@@ -45,4 +49,8 @@ glong rspamd_http_date_format (gchar *buf, gsize len, time_t time);
  */
 void rspamd_http_normalize_path_inplace (gchar *path, guint len, guint *nlen);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index cf52db55737d364bc3fe283ba547d0fd8fb663fa..8502043e67b32085423e87a1d5da07eaceba97e1 100644 (file)
 #include "config.h"
 #include "contrib/libev/ev.h"
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /*
  * This module is a little helper to simplify libevent->libev transition
  * It allows to create timed IO watchers utilising both
  */
 
-typedef void (*rspamd_ev_cb)(int fd, short what, void *ud);
+typedef void (*rspamd_ev_cb) (int fd, short what, void *ud);
 
 struct rspamd_io_ev {
        ev_io io;
@@ -45,7 +50,7 @@ struct rspamd_io_ev {
  * @param ud
  */
 void rspamd_ev_watcher_init (struct rspamd_io_ev *ev,
-               int fd, short what, rspamd_ev_cb cb, void *ud);
+                                                        int fd, short what, rspamd_ev_cb cb, void *ud);
 
 /**
  * Start watcher with the specific timeout
@@ -75,4 +80,8 @@ void rspamd_ev_watcher_reschedule (struct ev_loop *loop,
                                                                   struct rspamd_io_ev *ev,
                                                                   short what);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 7347e67b147d0bad7f6d8b088925974c52a4b4c3..e56c37aad6cdcb8031e781c8e789a068f6567324 100644 (file)
@@ -2,23 +2,28 @@
 #define RSPAMD_LOGGER_H
 
 #include "config.h"
-#include "cfg_file.h"
 #include "radix.h"
 #include "util.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 #ifndef G_LOG_LEVEL_USER_SHIFT
 #define G_LOG_LEVEL_USER_SHIFT 8
 #endif
 
+struct rspamd_config;
+
 enum rspamd_log_flags {
        RSPAMD_LOG_FORCED = (1 << G_LOG_LEVEL_USER_SHIFT),
        RSPAMD_LOG_ENCRYPTED = (1 << (G_LOG_LEVEL_USER_SHIFT + 1)),
-       RSPAMD_LOG_LEVEL_MASK = ~(RSPAMD_LOG_FORCED|RSPAMD_LOG_ENCRYPTED)
+       RSPAMD_LOG_LEVEL_MASK = ~(RSPAMD_LOG_FORCED | RSPAMD_LOG_ENCRYPTED)
 };
 
 typedef void (*rspamd_log_func_t) (const gchar *module, const gchar *id,
-               const gchar *function,
-               gint level_flags, const gchar *message, gpointer arg);
+                                                                  const gchar *function,
+                                                                  gint level_flags, const gchar *message, gpointer arg);
 
 typedef struct rspamd_logger_s rspamd_logger_t;
 
@@ -28,9 +33,9 @@ typedef struct rspamd_logger_s rspamd_logger_t;
  * Init logger
  */
 void rspamd_set_logger (struct rspamd_config *cfg,
-               GQuark ptype,
-               rspamd_logger_t **plogger,
-               rspamd_mempool_t *pool);
+                                               GQuark ptype,
+                                               rspamd_logger_t **plogger,
+                                               rspamd_mempool_t *pool);
 
 /**
  * Open log file or initialize other structures
@@ -76,7 +81,7 @@ void rspamd_log_flush (rspamd_logger_t *logger);
  * Log function that is compatible for glib messages
  */
 void rspamd_glib_log_function (const gchar *log_domain,
-               GLogLevelFlags log_level, const gchar *message, gpointer arg);
+                                                          GLogLevelFlags log_level, const gchar *message, gpointer arg);
 
 /**
  * Log function for printing glib assertions
@@ -87,13 +92,13 @@ void rspamd_glib_printerr_function (const gchar *message);
  * Function with variable number of arguments support
  */
 void rspamd_common_log_function (rspamd_logger_t *logger,
-               gint level_flags,
-               const gchar *module, const gchar *id,
-               const gchar *function, const gchar *fmt, ...);
+                                                                gint level_flags,
+                                                                const gchar *module, const gchar *id,
+                                                                const gchar *function, const gchar *fmt, ...);
 
 void rspamd_common_logv (rspamd_logger_t *logger, gint level_flags,
-               const gchar *module, const gchar *id, const gchar *function,
-               const gchar *fmt, va_list args);
+                                                const gchar *module, const gchar *id, const gchar *function,
+                                                const gchar *fmt, va_list args);
 
 /**
  * Add new logging module, returns module ID
@@ -106,15 +111,15 @@ guint rspamd_logger_add_debug_module (const gchar *mod);
  * Macro to use for faster debug modules
  */
 #define INIT_LOG_MODULE(mname) \
-       static guint rspamd_##mname##_log_id = (guint)-1; \
-       RSPAMD_CONSTRUCTOR(rspamd_##mname##_log_init) { \
-               rspamd_##mname##_log_id = rspamd_logger_add_debug_module(#mname); \
+    static guint rspamd_##mname##_log_id = (guint)-1; \
+    RSPAMD_CONSTRUCTOR(rspamd_##mname##_log_init) { \
+        rspamd_##mname##_log_id = rspamd_logger_add_debug_module(#mname); \
 }
 
 #define INIT_LOG_MODULE_PUBLIC(mname) \
-       guint rspamd_##mname##_log_id = (guint)-1; \
-       RSPAMD_CONSTRUCTOR(rspamd_##mname##_log_init) { \
-               rspamd_##mname##_log_id = rspamd_logger_add_debug_module(#mname); \
+    guint rspamd_##mname##_log_id = (guint)-1; \
+    RSPAMD_CONSTRUCTOR(rspamd_##mname##_log_init) { \
+        rspamd_##mname##_log_id = rspamd_logger_add_debug_module(#mname); \
 }
 
 void rspamd_logger_configure_modules (GHashTable *mods_enabled);
@@ -123,22 +128,22 @@ void rspamd_logger_configure_modules (GHashTable *mods_enabled);
  * Conditional debug function
  */
 void rspamd_conditional_debug (rspamd_logger_t *logger,
-               rspamd_inet_addr_t *addr, const gchar *module, const gchar *id,
-               const gchar *function, const gchar *fmt, ...);
+                                                          rspamd_inet_addr_t *addr, const gchar *module, const gchar *id,
+                                                          const gchar *function, const gchar *fmt, ...);
 
 void rspamd_conditional_debug_fast (rspamd_logger_t *logger,
-               rspamd_inet_addr_t *addr,
-               guint mod_id, const gchar *module, const gchar *id,
-               const gchar *function, const gchar *fmt, ...);
+                                                                       rspamd_inet_addr_t *addr,
+                                                                       guint mod_id, const gchar *module, const gchar *id,
+                                                                       const gchar *function, const gchar *fmt, ...);
 
 /**
  * Function with variable number of arguments support that uses static default logger
  */
 void rspamd_default_log_function (gint level_flags,
-               const gchar *module, const gchar *id,
-               const gchar *function,
-               const gchar *fmt,
-               ...);
+                                                                 const gchar *module, const gchar *id,
+                                                                 const gchar *function,
+                                                                 const gchar *fmt,
+                                                                 ...);
 
 /**
  * Varargs version of default log function
@@ -148,10 +153,10 @@ void rspamd_default_log_function (gint level_flags,
  * @param args
  */
 void rspamd_default_logv (gint level_flags,
-               const gchar *module, const gchar *id,
-               const gchar *function,
-               const gchar *fmt,
-               va_list args);
+                                                 const gchar *module, const gchar *id,
+                                                 const gchar *function,
+                                                 const gchar *fmt,
+                                                 va_list args);
 
 /**
  * Temporary turn on debug
@@ -180,20 +185,20 @@ void rspamd_log_lock (rspamd_logger_t *logger);
  * 2 - info messages
  * 3 - debug messages
  */
-const guint64rspamd_log_counters (rspamd_logger_t *logger);
+const guint64 *rspamd_log_counters (rspamd_logger_t *logger);
 
 /**
  * Returns errors ring buffer as ucl array
  * @param logger
  * @return
  */
-ucl_object_t * rspamd_log_errorbuf_export (const rspamd_logger_t *logger);
+ucl_object_t *rspamd_log_errorbuf_export (const rspamd_logger_t *logger);
 
 /**
  * Returns the current logger object
  * @return
  */
-rspamd_logger_trspamd_logger_get_singleton (void);
+rspamd_logger_t *rspamd_logger_get_singleton (void);
 
 /* Typical functions */
 
@@ -282,7 +287,7 @@ extern guint rspamd_task_log_id;
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_debug_task_check(...)  rspamd_conditional_debug_fast (NULL, \
-               task ? task->from_addr : NULL, \
+        task ? task->from_addr : NULL, \
         rspamd_task_log_id, "task", task ? task->task_pool->tag.uid : NULL, \
         G_STRFUNC, \
         __VA_ARGS__)
@@ -310,7 +315,7 @@ extern guint rspamd_task_log_id;
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_warn_pool_check(...)   rspamd_default_log_function (G_LOG_LEVEL_WARNING, \
-               pool ? pool->tag.tagname : NULL, pool ? pool->tag.uid : NULL, \
+        pool ? pool->tag.tagname : NULL, pool ? pool->tag.uid : NULL, \
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_info_pool_check(...)   rspamd_default_log_function (G_LOG_LEVEL_INFO, \
@@ -318,7 +323,12 @@ extern guint rspamd_task_log_id;
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_debug_pool_check(...)  rspamd_conditional_debug (NULL, NULL, \
-               pool ? pool->tag.tagname : NULL, pool ? pool->tag.uid : NULL, \
-               G_STRFUNC, \
-               __VA_ARGS__)
+        pool ? pool->tag.tagname : NULL, pool ? pool->tag.uid : NULL, \
+        G_STRFUNC, \
+        __VA_ARGS__)
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 9f04d4c6cb270f33e9a657692545588353a9414a..9e09ab8fed07ca471598b94e705bcb78deba353e 100644 (file)
@@ -9,26 +9,34 @@
 #include "radix.h"
 #include "dns.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Maps API is designed to load lists data from different dynamic sources.
  * It monitor files and HTTP locations for modifications and reload them if they are
  * modified.
  */
 struct map_cb_data;
+struct rspamd_worker;
 
 /**
  * Callback types
  */
-typedef gchar * (*map_cb_t)(gchar *chunk, gint len,
-       struct map_cb_data *data, gboolean final);
-typedef void (*map_fin_cb_t)(struct map_cb_data *data, void **target);
-typedef void (*map_dtor_t)(struct map_cb_data *data);
+typedef gchar *(*map_cb_t) (gchar *chunk, gint len,
+                                                       struct map_cb_data *data, gboolean final);
+
+typedef void (*map_fin_cb_t) (struct map_cb_data *data, void **target);
+
+typedef void (*map_dtor_t) (struct map_cb_data *data);
 
-typedef gboolean (*rspamd_map_traverse_cb)(gconstpointer key,
-               gconstpointer value, gsize hits, gpointer ud);
-typedef void (*rspamd_map_traverse_function)(void *data,
-               rspamd_map_traverse_cb cb,
-               gpointer cbdata, gboolean reset_hits);
+typedef gboolean (*rspamd_map_traverse_cb) (gconstpointer key,
+                                                                                       gconstpointer value, gsize hits, gpointer ud);
+
+typedef void (*rspamd_map_traverse_function) (void *data,
+                                                                                         rspamd_map_traverse_cb cb,
+                                                                                         gpointer cbdata, gboolean reset_hits);
 
 /**
  * Common map object
@@ -56,7 +64,7 @@ gboolean rspamd_map_is_map (const gchar *map_line);
 /**
  * Add map from line
  */
-struct rspamd_maprspamd_map_add (struct rspamd_config *cfg,
+struct rspamd_map *rspamd_map_add (struct rspamd_config *cfg,
                                                                   const gchar *map_line,
                                                                   const gchar *description,
                                                                   map_cb_t read_callback,
@@ -67,7 +75,7 @@ struct rspamd_map* rspamd_map_add (struct rspamd_config *cfg,
 /**
  * Add map from ucl
  */
-struct rspamd_maprspamd_map_add_from_ucl (struct rspamd_config *cfg,
+struct rspamd_map *rspamd_map_add_from_ucl (struct rspamd_config *cfg,
                                                                                        const ucl_object_t *obj,
                                                                                        const gchar *description,
                                                                                        map_cb_t read_callback,
@@ -111,6 +119,10 @@ rspamd_map_traverse_function rspamd_map_get_traverse_function (struct rspamd_map
  * @return
  */
 void rspamd_map_traverse (struct rspamd_map *map, rspamd_map_traverse_cb cb,
-               gpointer cbdata, gboolean reset_hits);
+                                                 gpointer cbdata, gboolean reset_hits);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index 4645024e377884138d69e4b0a73a70e056856772..4f7b5b804e25688e472604e80ccd2354157fe2e7 100644 (file)
  * Defines helper structures to deal with different map types
  */
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /**
  * Common structures, abstract for simplicity
  */
@@ -42,56 +47,64 @@ enum rspamd_regexp_map_flags {
 };
 
 typedef void (*insert_func) (gpointer st, gconstpointer key,
-               gconstpointer value);
+                                                        gconstpointer value);
 
 /**
  * Radix list is a list like ip/mask
  */
-gchar * rspamd_radix_read (
+gchar *rspamd_radix_read (
                gchar *chunk,
                gint len,
                struct map_cb_data *data,
                gboolean final);
+
 void rspamd_radix_fin (struct map_cb_data *data, void **target);
+
 void rspamd_radix_dtor (struct map_cb_data *data);
 
 /**
  * Kv list is an ordinal list of keys and values separated by whitespace
  */
-gchar * rspamd_kv_list_read (
+gchar *rspamd_kv_list_read (
                gchar *chunk,
                gint len,
                struct map_cb_data *data,
                gboolean final);
+
 void rspamd_kv_list_fin (struct map_cb_data *data, void **target);
+
 void rspamd_kv_list_dtor (struct map_cb_data *data);
 
 /**
  * Regexp list is a list of regular expressions
  */
 
-gchar * rspamd_regexp_list_read_single (
+gchar *rspamd_regexp_list_read_single (
                gchar *chunk,
                gint len,
                struct map_cb_data *data,
                gboolean final);
-gchar * rspamd_regexp_list_read_multiple (
+
+gchar *rspamd_regexp_list_read_multiple (
                gchar *chunk,
                gint len,
                struct map_cb_data *data,
                gboolean final);
 
-gchar * rspamd_glob_list_read_single (
+gchar *rspamd_glob_list_read_single (
                gchar *chunk,
                gint len,
                struct map_cb_data *data,
                gboolean final);
-gchar * rspamd_glob_list_read_multiple (
+
+gchar *rspamd_glob_list_read_multiple (
                gchar *chunk,
                gint len,
                struct map_cb_data *data,
                gboolean final);
+
 void rspamd_regexp_list_fin (struct map_cb_data *data, void **target);
+
 void rspamd_regexp_list_dtor (struct map_cb_data *data);
 
 /**
@@ -99,7 +112,7 @@ void rspamd_regexp_list_dtor (struct map_cb_data *data);
  */
 gchar *
 rspamd_parse_kv_list (
-               gchar * chunk,
+               gchar *chunk,
                gint len,
                struct map_cb_data *data,
                insert_func func,
@@ -115,7 +128,7 @@ rspamd_parse_kv_list (
  * @return
  */
 gconstpointer rspamd_match_regexp_map_single (struct rspamd_regexp_map_helper *map,
-               const gchar *in, gsize len);
+                                                                                         const gchar *in, gsize len);
 
 /**
  * Find a multiple (all) matching regexp for the specified text or NULL if
@@ -125,8 +138,8 @@ gconstpointer rspamd_match_regexp_map_single (struct rspamd_regexp_map_helper *m
  * @param len
  * @return
  */
-GPtrArrayrspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
-               const gchar *in, gsize len);
+GPtrArray *rspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
+                                                                               const gchar *in, gsize len);
 
 /**
  * Find value matching specific key in a hash map
@@ -136,7 +149,7 @@ GPtrArray* rspamd_match_regexp_map_all (struct rspamd_regexp_map_helper *map,
  * @return
  */
 gconstpointer rspamd_match_hash_map (struct rspamd_hash_map_helper *map,
-               const gchar *in);
+                                                                        const gchar *in);
 
 /**
  * Find value matching specific key in a hash map
@@ -146,10 +159,10 @@ gconstpointer rspamd_match_hash_map (struct rspamd_hash_map_helper *map,
  * @return
  */
 gconstpointer rspamd_match_radix_map (struct rspamd_radix_map_helper *map,
-               const guchar *in, gsize inlen);
+                                                                         const guchar *in, gsize inlen);
 
 gconstpointer rspamd_match_radix_map_addr (struct rspamd_radix_map_helper *map,
-               const rspamd_inet_addr_t *addr);
+                                                                                  const rspamd_inet_addr_t *addr);
 
 /**
  * Creates radix map helper
@@ -157,6 +170,7 @@ gconstpointer rspamd_match_radix_map_addr (struct rspamd_radix_map_helper *map,
  * @return
  */
 struct rspamd_radix_map_helper *rspamd_map_helper_new_radix (struct rspamd_map *map);
+
 /**
  * Inserts new value into radix map
  * @param st
@@ -164,6 +178,7 @@ struct rspamd_radix_map_helper *rspamd_map_helper_new_radix (struct rspamd_map *
  * @param value
  */
 void rspamd_map_helper_insert_radix (gpointer st, gconstpointer key, gconstpointer value);
+
 /**
  * Inserts new value into radix map performing synchronous resolving
  * @param st
@@ -171,7 +186,8 @@ void rspamd_map_helper_insert_radix (gpointer st, gconstpointer key, gconstpoint
  * @param value
  */
 void rspamd_map_helper_insert_radix_resolve (gpointer st, gconstpointer key,
-               gconstpointer value);
+                                                                                        gconstpointer value);
+
 /**
  * Destroys radix map helper
  * @param r
@@ -185,6 +201,7 @@ void rspamd_map_helper_destroy_radix (struct rspamd_radix_map_helper *r);
  * @return
  */
 struct rspamd_hash_map_helper *rspamd_map_helper_new_hash (struct rspamd_map *map);
+
 /**
  * Inserts a new value into a hash map
  * @param st
@@ -192,6 +209,7 @@ struct rspamd_hash_map_helper *rspamd_map_helper_new_hash (struct rspamd_map *ma
  * @param value
  */
 void rspamd_map_helper_insert_hash (gpointer st, gconstpointer key, gconstpointer value);
+
 /**
  * Destroys hash map helper
  * @param r
@@ -204,8 +222,9 @@ void rspamd_map_helper_destroy_hash (struct rspamd_hash_map_helper *r);
  * @param flags
  * @return
  */
-struct rspamd_regexp_map_helper * rspamd_map_helper_new_regexp (struct rspamd_map *map,
-               enum rspamd_regexp_map_flags flags);
+struct rspamd_regexp_map_helper *rspamd_map_helper_new_regexp (struct rspamd_map *map,
+                                                                                                                          enum rspamd_regexp_map_flags flags);
+
 /**
  * Inserts a new regexp into regexp map
  * @param st
@@ -213,10 +232,15 @@ struct rspamd_regexp_map_helper * rspamd_map_helper_new_regexp (struct rspamd_ma
  * @param value
  */
 void rspamd_map_helper_insert_re (gpointer st, gconstpointer key, gconstpointer value);
+
 /**
  * Destroy regexp map
  * @param re_map
  */
 void rspamd_map_helper_destroy_regexp (struct rspamd_regexp_map_helper *re_map);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index e08c2dce3c2ef6338764f86bd362a085f71a1ac1..de84322ec3410c17430158d319e00e2fe4efe2a0 100644 (file)
 #include "map.h"
 #include "ref.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 typedef void (*rspamd_map_tmp_dtor) (gpointer p);
+
 extern guint rspamd_map_log_id;
 #define msg_err_map(...) rspamd_default_log_function (G_LOG_LEVEL_CRITICAL, \
-               "map", map->tag, \
+        "map", map->tag, \
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_warn_map(...)   rspamd_default_log_function (G_LOG_LEVEL_WARNING, \
-               "map", map->tag, \
+        "map", map->tag, \
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_info_map(...)   rspamd_default_log_function (G_LOG_LEVEL_INFO, \
-               "map", map->tag, \
+        "map", map->tag, \
         G_STRFUNC, \
         __VA_ARGS__)
 #define msg_debug_map(...)  rspamd_conditional_debug_fast (NULL, NULL, \
@@ -209,4 +214,8 @@ struct http_callback_data {
        ref_entry_t ref;
 };
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBUTIL_MAP_PRIVATE_H_ */
index 0a2e86b6d76d59f78a613ebd34d1dcde2ca5c689..5a663e35fa9afc8de02169c690f3c7d1bd09e6ff 100644 (file)
 #define RSPAMD_MEM_POOL_H
 
 #include "config.h"
+
+
 #if defined(HAVE_PTHREAD_PROCESS_SHARED) && !defined(DISABLE_PTHREAD_MUTEX)
 #include <pthread.h>
 #endif
 
-struct f_str_s;
-
+#ifdef  __cplusplus
+extern "C" {
+#endif
 
+struct f_str_s;
 
 #ifdef __has_attribute
 #  if __has_attribute(alloc_size)
@@ -60,7 +64,7 @@ enum rspamd_mempool_chain_type {
 /**
  * Destructor type definition
  */
-typedef void (*rspamd_mempool_destruct_t)(void *ptr);
+typedef void (*rspamd_mempool_destruct_t) (void *ptr);
 
 /**
  * Pool mutex structure
@@ -122,7 +126,7 @@ typedef struct memory_pool_s {
        GArray *destructors;
        GPtrArray *trash_stack;
        GHashTable *variables;                  /**< private memory pool variables                      */
-       gsize elt_len;                                                  /**< size of an element                                         */
+       gsize elt_len;                            /**< size of an element                                               */
        struct rspamd_mempool_entry_point *entry;
        struct rspamd_mempool_tag tag;          /**< memory pool tag                                            */
 } rspamd_mempool_t;
@@ -142,13 +146,13 @@ typedef struct memory_pool_stat_s {
 } rspamd_mempool_stat_t;
 
 
-
 /**
  * Allocate new memory poll
  * @param size size of pool's page
  * @return new memory pool object
  */
-rspamd_mempool_t * rspamd_mempool_new_ (gsize size, const gchar *tag, const gchar *loc);
+rspamd_mempool_t *rspamd_mempool_new_ (gsize size, const gchar *tag, const gchar *loc);
+
 #define rspamd_mempool_new(size, tag) rspamd_mempool_new_((size), (tag), G_STRLOC)
 
 /**
@@ -157,8 +161,8 @@ rspamd_mempool_t * rspamd_mempool_new_ (gsize size, const gchar *tag, const gcha
  * @param size bytes to allocate
  * @return pointer to allocated object
  */
-void * rspamd_mempool_alloc (rspamd_mempool_t * pool, gsize size)
-               RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+void *rspamd_mempool_alloc (rspamd_mempool_t *pool, gsize size)
+RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 
 /**
  * Get memory from temporary pool
@@ -166,7 +170,7 @@ void * rspamd_mempool_alloc (rspamd_mempool_t * pool, gsize size)
  * @param size bytes to allocate
  * @return pointer to allocated object
  */
-void * rspamd_mempool_alloc_tmp (rspamd_mempool_t * pool, gsize size) RSPAMD_ATTR_RETURNS_NONNUL;
+void *rspamd_mempool_alloc_tmp (rspamd_mempool_t *pool, gsize size) RSPAMD_ATTR_RETURNS_NONNUL;
 
 /**
  * Get memory and set it to zero
@@ -174,8 +178,8 @@ void * rspamd_mempool_alloc_tmp (rspamd_mempool_t * pool, gsize size) RSPAMD_ATT
  * @param size bytes to allocate
  * @return pointer to allocated object
  */
-void * rspamd_mempool_alloc0 (rspamd_mempool_t * pool, gsize size)
-       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+void *rspamd_mempool_alloc0 (rspamd_mempool_t *pool, gsize size)
+RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
 
 /**
  * Get memory and set it to zero
@@ -183,12 +187,12 @@ void * rspamd_mempool_alloc0 (rspamd_mempool_t * pool, gsize size)
  * @param size bytes to allocate
  * @return pointer to allocated object
  */
-void * rspamd_mempool_alloc0_tmp (rspamd_mempool_t * pool, gsize size) RSPAMD_ATTR_RETURNS_NONNUL;
+void *rspamd_mempool_alloc0_tmp (rspamd_mempool_t *pool, gsize size) RSPAMD_ATTR_RETURNS_NONNUL;
 
 /**
  * Cleanup temporary data in pool
  */
-void rspamd_mempool_cleanup_tmp (rspamd_mempool_t * pool);
+void rspamd_mempool_cleanup_tmp (rspamd_mempool_t *pool);
 
 /**
  * Make a copy of string in pool
@@ -196,8 +200,8 @@ void rspamd_mempool_cleanup_tmp (rspamd_mempool_t * pool);
  * @param src source string
  * @return pointer to newly created string that is copy of src
  */
-gchar * rspamd_mempool_strdup (rspamd_mempool_t * pool, const gchar *src)
-       RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
+gchar *rspamd_mempool_strdup (rspamd_mempool_t *pool, const gchar *src)
+RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
 
 /**
  * Make a copy of fixed string in pool as null terminated string
@@ -205,8 +209,8 @@ gchar * rspamd_mempool_strdup (rspamd_mempool_t * pool, const gchar *src)
  * @param src source string
  * @return pointer to newly created string that is copy of src
  */
-gchar * rspamd_mempool_fstrdup (rspamd_mempool_t * pool,
-       const struct f_str_s *src) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
+gchar *rspamd_mempool_fstrdup (rspamd_mempool_t *pool,
+                                                          const struct f_str_s *src) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
 
 struct f_str_tok;
 
@@ -216,18 +220,20 @@ struct f_str_tok;
  * @param src source string
  * @return pointer to newly created string that is copy of src
  */
-gchar * rspamd_mempool_ftokdup (rspamd_mempool_t *pool,
-               const struct f_str_tok *src) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
+gchar *rspamd_mempool_ftokdup (rspamd_mempool_t *pool,
+                                                          const struct f_str_tok *src) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT);
 
 /**
  * Allocate piece of shared memory
  * @param pool memory pool object
  * @param size bytes to allocate
  */
-void * rspamd_mempool_alloc_shared (rspamd_mempool_t * pool, gsize size)
-       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
-void * rspamd_mempool_alloc0_shared (rspamd_mempool_t *pool, gsize size)
-       RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+void *rspamd_mempool_alloc_shared (rspamd_mempool_t *pool, gsize size)
+RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+
+void *rspamd_mempool_alloc0_shared (rspamd_mempool_t *pool, gsize size)
+RSPAMD_ATTR_ALLOC_SIZE(2) RSPAMD_ATTR_ALLOC_ALIGN(MIN_MEM_ALIGNMENT) RSPAMD_ATTR_RETURNS_NONNUL;
+
 /**
  * Add destructor callback to pool
  * @param pool memory pool object
@@ -235,14 +241,14 @@ void * rspamd_mempool_alloc0_shared (rspamd_mempool_t *pool, gsize size)
  * @param data pointer to data that would be passed to destructor
  */
 void rspamd_mempool_add_destructor_full (rspamd_mempool_t *pool,
-       rspamd_mempool_destruct_t func,
-       void *data,
-       const gchar *function,
-       const gchar *line);
+                                                                                rspamd_mempool_destruct_t func,
+                                                                                void *data,
+                                                                                const gchar *function,
+                                                                                const gchar *line);
 
 /* Macros for common usage */
 #define rspamd_mempool_add_destructor(pool, func, data) \
-       rspamd_mempool_add_destructor_full (pool, func, data, G_STRFUNC, G_STRLOC)
+    rspamd_mempool_add_destructor_full (pool, func, data, G_STRFUNC, G_STRLOC)
 
 /**
  * Replace destructor callback to pool for specified pointer
@@ -252,7 +258,7 @@ void rspamd_mempool_add_destructor_full (rspamd_mempool_t *pool,
  * @param new_data pointer to data that would be passed to destructor
  */
 void rspamd_mempool_replace_destructor (rspamd_mempool_t *pool,
-       rspamd_mempool_destruct_t func, void *old_data, void *new_data);
+                                                                               rspamd_mempool_destruct_t func, void *old_data, void *new_data);
 
 /**
  * Calls all destructors associated with the specific memory pool without removing
@@ -272,7 +278,7 @@ void rspamd_mempool_delete (rspamd_mempool_t *pool);
  * @param pool memory pool object
  * @return mutex object
  */
-rspamd_mempool_mutex_t * rspamd_mempool_get_mutex (rspamd_mempool_t *pool);
+rspamd_mempool_mutex_t *rspamd_mempool_get_mutex (rspamd_mempool_t *pool);
 
 /**
  * Lock mutex
@@ -291,7 +297,7 @@ void rspamd_mempool_unlock_mutex (rspamd_mempool_mutex_t *mutex);
  * @param pool memory pool object
  * @return rwlock object
  */
-rspamd_mempool_rwlock_t * rspamd_mempool_get_rwlock (rspamd_mempool_t *pool);
+rspamd_mempool_rwlock_t *rspamd_mempool_get_rwlock (rspamd_mempool_t *pool);
 
 /**
  * Acquire read lock
@@ -333,6 +339,7 @@ void rspamd_mempool_stat_reset (void);
  * @return size of memory page in system
  */
 #define rspamd_mempool_suggest_size() rspamd_mempool_suggest_size_(G_STRLOC)
+
 gsize rspamd_mempool_suggest_size_ (const char *loc);
 
 /**
@@ -343,7 +350,7 @@ gsize rspamd_mempool_suggest_size_ (const char *loc);
  * @param destructor pointer to function-destructor
  */
 void rspamd_mempool_set_variable (rspamd_mempool_t *pool, const gchar *name,
-       gpointer value, rspamd_mempool_destruct_t destructor);
+                                                                 gpointer value, rspamd_mempool_destruct_t destructor);
 
 /**
  * Get memory pool variable
@@ -352,7 +359,7 @@ void rspamd_mempool_set_variable (rspamd_mempool_t *pool, const gchar *name,
  * @return NULL or pointer to variable data
  */
 gpointer rspamd_mempool_get_variable (rspamd_mempool_t *pool,
-       const gchar *name);
+                                                                         const gchar *name);
 
 /**
  * Removes variable from memory pool
@@ -360,7 +367,8 @@ gpointer rspamd_mempool_get_variable (rspamd_mempool_t *pool,
  * @param name name of variable
  */
 void rspamd_mempool_remove_variable (rspamd_mempool_t *pool,
-               const gchar *name);
+                                                                        const gchar *name);
+
 /**
  * Prepend element to a list creating it in the memory pool
  * @param l
@@ -368,7 +376,8 @@ void rspamd_mempool_remove_variable (rspamd_mempool_t *pool,
  * @return
  */
 GList *rspamd_mempool_glist_prepend (rspamd_mempool_t *pool,
-               GList *l, gpointer p) G_GNUC_WARN_UNUSED_RESULT;
+                                                                        GList *l, gpointer p) G_GNUC_WARN_UNUSED_RESULT;
+
 /**
  * Append element to a list creating it in the memory pool
  * @param l
@@ -376,6 +385,10 @@ GList *rspamd_mempool_glist_prepend (rspamd_mempool_t *pool,
  * @return
  */
 GList *rspamd_mempool_glist_append (rspamd_mempool_t *pool,
-               GList *l, gpointer p) G_GNUC_WARN_UNUSED_RESULT;
+                                                                       GList *l, gpointer p) G_GNUC_WARN_UNUSED_RESULT;
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index 785c09e3de543039127f21bf0fc10a1a4438c8b3..959b13455bcfc15471879a966e4e2e8eec173aa0 100644 (file)
  * hyperscan and ac-trie
  */
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_multipattern_flags {
        RSPAMD_MULTIPATTERN_DEFAULT = 0,
        RSPAMD_MULTIPATTERN_ICASE = (1 << 0),
        RSPAMD_MULTIPATTERN_UTF8 = (1 << 1),
        RSPAMD_MULTIPATTERN_TLD = (1 << 2),
        /* Not supported by acism */
-       RSPAMD_MULTIPATTERN_GLOB = (1 << 3),
+                       RSPAMD_MULTIPATTERN_GLOB = (1 << 3),
        RSPAMD_MULTIPATTERN_RE = (1 << 4),
 };
 
@@ -50,12 +54,12 @@ struct rspamd_cryptobox_library_ctx;
  * @return if 0 then search for another pattern, otherwise return this value to caller
  */
 typedef gint (*rspamd_multipattern_cb_t) (struct rspamd_multipattern *mp,
-               guint strnum,
-               gint match_start,
-               gint match_pos,
-               const gchar *text,
-               gsize len,
-               void *context);
+                                                                                 guint strnum,
+                                                                                 gint match_start,
+                                                                                 gint match_pos,
+                                                                                 const gchar *text,
+                                                                                 gsize len,
+                                                                                 void *context);
 
 /**
  * Init multipart library and set the appropriate cache dir
@@ -78,7 +82,7 @@ struct rspamd_multipattern *rspamd_multipattern_create (
  * @return
  */
 struct rspamd_multipattern *rspamd_multipattern_create_sized (guint reserved,
-               enum rspamd_multipattern_flags flags);
+                                                                                                                         enum rspamd_multipattern_flags flags);
 
 /**
  * Creates new multipattern structure
@@ -98,7 +102,7 @@ struct rspamd_multipattern *rspamd_multipattern_create_full (
  * @param pattern
  */
 void rspamd_multipattern_add_pattern (struct rspamd_multipattern *mp,
-               const gchar *pattern, gint flags);
+                                                                         const gchar *pattern, gint flags);
 
 /**
  * Adds new pattern from arbitrary string
@@ -108,7 +112,7 @@ void rspamd_multipattern_add_pattern (struct rspamd_multipattern *mp,
  * @param flags
  */
 void rspamd_multipattern_add_pattern_len (struct rspamd_multipattern *mp,
-               const gchar *pattern, gsize patlen, gint flags);
+                                                                                 const gchar *pattern, gsize patlen, gint flags);
 
 /**
  * Compiles multipattern structure
@@ -116,7 +120,7 @@ void rspamd_multipattern_add_pattern_len (struct rspamd_multipattern *mp,
  * @return
  */
 gboolean rspamd_multipattern_compile (struct rspamd_multipattern *mp,
-               GError **err);
+                                                                         GError **err);
 
 /**
  * Lookups for patterns in a text using the specified callback function
@@ -128,16 +132,17 @@ gboolean rspamd_multipattern_compile (struct rspamd_multipattern *mp,
  * @return
  */
 gint rspamd_multipattern_lookup (struct rspamd_multipattern *mp,
-               const gchar *in, gsize len, rspamd_multipattern_cb_t cb,
-               gpointer ud, guint *pnfound);
+                                                                const gchar *in, gsize len, rspamd_multipattern_cb_t cb,
+                                                                gpointer ud, guint *pnfound);
+
 /**
  * Get pattern string from multipattern identified by index
  * @param mp
  * @param index
  * @return
  */
-const gcharrspamd_multipattern_get_pattern (struct rspamd_multipattern *mp,
-               guint index);
+const gchar *rspamd_multipattern_get_pattern (struct rspamd_multipattern *mp,
+                                                                                         guint index);
 
 /**
  * Returns number of patterns in a multipattern matcher
@@ -158,4 +163,8 @@ void rspamd_multipattern_destroy (struct rspamd_multipattern *mp);
  */
 gboolean rspamd_multipattern_has_hyperscan (void);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBUTIL_MULTIPATTERN_H_ */
index 86947f67c7303d12de70c4294eadb5a13df2e3b5..008e082451eedfac42c11392d7c3f7deeab46bbf 100644 (file)
@@ -19,6 +19,9 @@
 #include "config.h"
 #include "fstring.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
 /*
  * supported formats:
  *     %[0][width][x][X]O                  off_t
  * @param ud opaque pointer
  * @return number of characters written
  */
-typedef glong (*rspamd_printf_append_func)(const gchar *buf, glong buflen,
-       gpointer ud);
+typedef glong (*rspamd_printf_append_func) (const gchar *buf, glong buflen,
+                                                                                       gpointer ud);
 
 glong rspamd_fprintf (FILE *f, const gchar *fmt, ...);
+
 glong rspamd_printf (const gchar *fmt, ...);
+
 glong rspamd_log_fprintf (FILE *f, const gchar *fmt, ...);
+
 glong rspamd_snprintf (gchar *buf, glong max, const gchar *fmt, ...);
-gchar * rspamd_vsnprintf (gchar *buf, glong max, const gchar *fmt,
-       va_list args);
+
+gchar *rspamd_vsnprintf (gchar *buf, glong max, const gchar *fmt,
+                                                va_list args);
+
 glong rspamd_printf_gstring (GString *s, const gchar *fmt, ...);
+
 glong rspamd_vprintf_gstring (GString *s, const gchar *fmt, va_list args);
 
 glong rspamd_printf_fstring (rspamd_fstring_t **s, const gchar *fmt, ...);
+
 glong rspamd_vprintf_fstring (rspamd_fstring_t **s, const gchar *fmt, va_list args);
 
 glong rspamd_vprintf_common (rspamd_printf_append_func func,
-       gpointer apd,
-       const gchar *fmt,
-       va_list args);
+                                                        gpointer apd,
+                                                        const gchar *fmt,
+                                                        va_list args);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* PRINTF_H_ */
index be75b1b7f529ea7c84a558ef293919f77d352fa5..f08b6cc1b380030757abc49935d468d107899c03 100644 (file)
@@ -22,6 +22,9 @@
 
 #define RADIX_NO_VALUE   (uintptr_t)-1
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
 
 typedef struct radix_tree_compressed radix_compressed_t;
 
@@ -35,10 +38,10 @@ typedef struct radix_tree_compressed radix_compressed_t;
  * @return previous value of the key or `RADIX_NO_VALUE`
  */
 uintptr_t
-radix_insert_compressed (radix_compressed_t * tree,
-       guint8 *key, gsize keylen,
-       gsize masklen,
-       uintptr_t value);
+radix_insert_compressed (radix_compressed_t *tree,
+                                                guint8 *key, gsize keylen,
+                                                gsize masklen,
+                                                uintptr_t value);
 
 /**
  * Find a key in a radix trie
@@ -47,8 +50,8 @@ radix_insert_compressed (radix_compressed_t * tree,
  * @param keylen length of a key
  * @return opaque pointer or `RADIX_NO_VALUE` if no value has been found
  */
-uintptr_t radix_find_compressed (radix_compressed_t * tree, const guint8 *key,
-               gsize keylen);
+uintptr_t radix_find_compressed (radix_compressed_t *tree, const guint8 *key,
+                                                                gsize keylen);
 
 /**
  * Find specified address in tree (works for IPv4 or IPv6 addresses)
@@ -57,7 +60,7 @@ uintptr_t radix_find_compressed (radix_compressed_t * tree, const guint8 *key,
  * @return
  */
 uintptr_t radix_find_compressed_addr (radix_compressed_t *tree,
-               const rspamd_inet_addr_t *addr);
+                                                                         const rspamd_inet_addr_t *addr);
 
 /**
  * Destroy the complete radix trie
@@ -81,14 +84,14 @@ radix_compressed_t *radix_create_compressed_with_pool (rspamd_mempool_t *pool);
  * @return number of elements inserted
  */
 gint rspamd_radix_add_iplist (const gchar *list, const gchar *separators,
-               radix_compressed_t *tree, gconstpointer value, gboolean resolve);
+                                                         radix_compressed_t *tree, gconstpointer value, gboolean resolve);
 
 /**
  * Generic version of @see rspamd_radix_add_iplist. This function creates tree
  * if `tree` is NULL.
  */
 gboolean radix_add_generic_iplist (const gchar *ip_list,
-               radix_compressed_t **tree, gboolean resolve);
+                                                                  radix_compressed_t **tree, gboolean resolve);
 
 /**
  * Returns number of elements in the tree
@@ -102,11 +105,15 @@ gsize radix_get_size (radix_compressed_t *tree);
  * @param tree
  * @return constant string
  */
-const gchar * radix_get_info (radix_compressed_t *tree);
+const gchar *radix_get_info (radix_compressed_t *tree);
 
 /**
  * Returns memory pool associated with the radix tree
  */
-rspamd_mempool_t* radix_get_pool (radix_compressed_t *tree);
+rspamd_mempool_t *radix_get_pool (radix_compressed_t *tree);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index 1e2fc30b5b1c775c4f7ed4f8b4aabf763c75e7bc..99498ac316e8099a6ed70b972018e2e71858c79f 100644 (file)
@@ -19,6 +19,8 @@
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
+
+
 /**
  * @file ref.h
  * A set of macros to handle refcounts
index b982c08f67108fc3bb455d099726ddd2b0680cf0..f7ed05daddbd18769e4d4f4a39c8b626bf175c99 100644 (file)
 #define RSPAMD_REGEXP_FLAG_DISABLE_JIT (1 << 5)
 #define RSPAMD_REGEXP_FLAG_UTF (1 << 6)
 
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_config;
 
 typedef struct rspamd_regexp_s rspamd_regexp_t;
@@ -51,8 +56,8 @@ struct rspamd_re_capture {
  * @param err error pointer set if compilation failed
  * @return new regexp object
  */
-rspamd_regexp_trspamd_regexp_new (const gchar *pattern, const gchar *flags,
-               GError **err);
+rspamd_regexp_t *rspamd_regexp_new (const gchar *pattern, const gchar *flags,
+                                                                       GError **err);
 
 /**
  * Search the specified regexp in the text
@@ -66,9 +71,9 @@ rspamd_regexp_t* rspamd_regexp_new (const gchar *pattern, const gchar *flags,
  * @return
  */
 gboolean rspamd_regexp_search (rspamd_regexp_t *re,
-               const gchar *text, gsize len,
-               const gchar **start, const gchar **end, gboolean raw,
-               GArray *captures);
+                                                          const gchar *text, gsize len,
+                                                          const gchar **start, const gchar **end, gboolean raw,
+                                                          GArray *captures);
 
 
 /**
@@ -79,12 +84,12 @@ gboolean rspamd_regexp_search (rspamd_regexp_t *re,
  * @return
  */
 gboolean rspamd_regexp_match (rspamd_regexp_t *re,
-               const gchar *text, gsize len, gboolean raw);
+                                                         const gchar *text, gsize len, gboolean raw);
 
 /**
  * Increase refcount for a regexp object
  */
-rspamd_regexp_trspamd_regexp_ref (rspamd_regexp_t *re);
+rspamd_regexp_t *rspamd_regexp_ref (rspamd_regexp_t *re);
 
 /**
  * Unref regexp object
@@ -118,12 +123,13 @@ gpointer rspamd_regexp_get_id (rspamd_regexp_t *re);
  * @param re
  * @return
  */
-const charrspamd_regexp_get_pattern (rspamd_regexp_t *re);
+const char *rspamd_regexp_get_pattern (rspamd_regexp_t *re);
 
 /**
  * Get PCRE flags for the regexp
  */
 guint rspamd_regexp_get_pcre_flags (rspamd_regexp_t *re);
+
 /**
  * Get rspamd flags for the regexp
  */
@@ -179,7 +185,7 @@ gpointer rspamd_regexp_set_class (rspamd_regexp_t *re, gpointer re_class);
  * Create new regexp cache
  * @return
  */
-struct rspamd_regexp_cacherspamd_regexp_cache_new (void);
+struct rspamd_regexp_cache *rspamd_regexp_cache_new (void);
 
 /**
  * Query rspamd cache for a specified regexp
@@ -188,9 +194,9 @@ struct rspamd_regexp_cache* rspamd_regexp_cache_new (void);
  * @param flags
  * @return
  */
-rspamd_regexp_t* rspamd_regexp_cache_query (struct rspamd_regexp_cache* cache,
-               const gchar *pattern,
-               const gchar *flags);
+rspamd_regexp_t *rspamd_regexp_cache_query (struct rspamd_regexp_cache *cache,
+                                                                                       const gchar *pattern,
+                                                                                       const gchar *flags);
 
 /**
  * Insert item to the cache using custom pattern and flags
@@ -199,9 +205,9 @@ rspamd_regexp_t* rspamd_regexp_cache_query (struct rspamd_regexp_cache* cache,
  * @param flags
  * @param re
  */
-void rspamd_regexp_cache_insert (struct rspamd_regexp_cachecache,
-               const gchar *pattern,
-               const gchar *flags, rspamd_regexp_t *re);
+void rspamd_regexp_cache_insert (struct rspamd_regexp_cache *cache,
+                                                                const gchar *pattern,
+                                                                const gchar *flags, rspamd_regexp_t *re);
 
 /**
  * Create or get cached regexp from the specified cache
@@ -211,9 +217,9 @@ void rspamd_regexp_cache_insert (struct rspamd_regexp_cache* cache,
  * @param err error pointer set if compilation failed
  * @return new regexp object
  */
-rspamd_regexp_trspamd_regexp_cache_create (struct rspamd_regexp_cache *cache,
-               const gchar *pattern,
-               const gchar *flags, GError **err);
+rspamd_regexp_t *rspamd_regexp_cache_create (struct rspamd_regexp_cache *cache,
+                                                                                        const gchar *pattern,
+                                                                                        const gchar *flags, GError **err);
 
 /**
  * Remove regexp from the cache
@@ -222,7 +228,7 @@ rspamd_regexp_t* rspamd_regexp_cache_create (struct rspamd_regexp_cache *cache,
  * @return TRUE if a regexp has been removed
  */
 gboolean rspamd_regexp_cache_remove (struct rspamd_regexp_cache *cache,
-               rspamd_regexp_t *re);
+                                                                        rspamd_regexp_t *re);
 
 /**
  * Destroy regexp cache and unref all elements inside it
@@ -268,4 +274,8 @@ void rspamd_regexp_library_finalize (void);
  */
 rspamd_regexp_t *rspamd_regexp_from_glob (const gchar *gl, gsize sz, GError **err);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* REGEXP_H_ */
index d17e823e67c9eae2b2e3aa9703fee2df2f8a964c..9208c71da9443af9df8cc41a7e581e7cbc1902f8 100644 (file)
@@ -16,6 +16,7 @@
 #include "config.h"
 #include "rrd.h"
 #include "util.h"
+#include "cfg_file.h"
 #include "logger.h"
 #include "unix-std.h"
 #include "cryptobox.h"
index d242499654bb14e355230d71cb2373379c16172e..ffffa921ddc070ba674f9a3efa5d721bb123c9a1 100644 (file)
 #define RRD_VERSION   "0003"
 #define RRD_FLOAT_COOKIE  ((double)8.642135E130)
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 typedef union {
        unsigned long lv;
        double dv;
@@ -139,41 +143,41 @@ enum rrd_cdp_param {
        CDP_val = 0,
        /* the base_interval is always an
         * average */
-       CDP_unkn_pdp_cnt,
+                       CDP_unkn_pdp_cnt,
        /* how many unknown pdp were
         * integrated. This and the cdp_xff
         * will decide if this is going to
         * be a UNKNOWN or a valid value */
-       CDP_hw_intercept,
+                       CDP_hw_intercept,
        /* Current intercept coefficient for the Holt-Winters
         * prediction algorithm. */
-       CDP_hw_last_intercept,
+                       CDP_hw_last_intercept,
        /* Last iteration intercept coefficient for the Holt-Winters
         * prediction algorihtm. */
-       CDP_hw_slope,
+                       CDP_hw_slope,
        /* Current slope coefficient for the Holt-Winters
         * prediction algorithm. */
-       CDP_hw_last_slope,
+                       CDP_hw_last_slope,
        /* Last iteration slope coeffient. */
-       CDP_null_count,
+                       CDP_null_count,
        /* Number of sequential Unknown (DNAN) values + 1 preceding
         * the current prediction.
         * */
-       CDP_last_null_count,
+                       CDP_last_null_count,
        /* Last iteration count of Unknown (DNAN) values. */
-       CDP_primary_val = 8,
+                       CDP_primary_val = 8,
        /* optimization for bulk updates: the value of the first CDP
         * value to be written in the bulk update. */
-       CDP_secondary_val = 9,
+                       CDP_secondary_val = 9,
        /* optimization for bulk updates: the value of subsequent
         * CDP values to be written in the bulk update. */
-       CDP_hw_seasonal = CDP_hw_intercept,
+                       CDP_hw_seasonal = CDP_hw_intercept,
        /* Current seasonal coefficient for the Holt-Winters
         * prediction algorithm. This is stored in CDP prep to avoid
         * redundant seek operations. */
-       CDP_hw_last_seasonal = CDP_hw_last_intercept,
+                       CDP_hw_last_seasonal = CDP_hw_last_intercept,
        /* Last iteration seasonal coefficient. */
-       CDP_seasonal_deviation = CDP_hw_intercept,
+                       CDP_seasonal_deviation = CDP_hw_intercept,
        CDP_last_seasonal_deviation = CDP_hw_last_intercept,
        CDP_init_seasonal = CDP_null_count
 };
@@ -200,7 +204,7 @@ struct rspamd_rrd_file {
        gdouble *rrd_value; /* list of rrd values */
 
        gchar *filename;
-       guint8 * map; /* mmapped area */
+       guint8 *map; /* mmapped area */
        gsize size; /* its size */
        gboolean finalized;
        gchar *id;
@@ -216,7 +220,7 @@ struct rspamd_rrd_file {
  * @param err error pointer
  * @return rrd file structure
  */
-struct rspamd_rrd_file * rspamd_rrd_open (const gchar *filename, GError **err);
+struct rspamd_rrd_file *rspamd_rrd_open (const gchar *filename, GError **err);
 
 /**
  * Create basic header for rrd file
@@ -228,11 +232,11 @@ struct rspamd_rrd_file * rspamd_rrd_open (const gchar *filename, GError **err);
  * @return TRUE if file has been created
  */
 struct rspamd_rrd_file *rspamd_rrd_create (const gchar *filename,
-               gulong ds_count,
-               gulong rra_count,
-               gulong pdp_step,
-               gdouble initial_ticks,
-               GError **err);
+                                                                                  gulong ds_count,
+                                                                                  gulong rra_count,
+                                                                                  gulong pdp_step,
+                                                                                  gdouble initial_ticks,
+                                                                                  GError **err);
 
 /**
  * Add data sources to rrd file
@@ -241,9 +245,9 @@ struct rspamd_rrd_file *rspamd_rrd_create (const gchar *filename,
  * @param err error pointer
  * @return TRUE if data sources were added
  */
-gboolean rspamd_rrd_add_ds (struct rspamd_rrd_file * file,
-       GArray *ds,
-       GError **err);
+gboolean rspamd_rrd_add_ds (struct rspamd_rrd_file *file,
+                                                       GArray *ds,
+                                                       GError **err);
 
 /**
  * Add round robin archives to rrd file
@@ -253,8 +257,8 @@ gboolean rspamd_rrd_add_ds (struct rspamd_rrd_file * file,
  * @return TRUE if archives were added
  */
 gboolean rspamd_rrd_add_rra (struct rspamd_rrd_file *file,
-       GArray *rra,
-       GError **err);
+                                                        GArray *rra,
+                                                        GError **err);
 
 /**
  * Finalize rrd file header and initialize all RRA in the file
@@ -272,16 +276,16 @@ gboolean rspamd_rrd_finalize (struct rspamd_rrd_file *file, GError **err);
  * @return TRUE if a row has been added
  */
 gboolean rspamd_rrd_add_record (struct rspamd_rrd_file *file,
-               GArray *points,
-               gdouble ticks,
-               GError **err);
+                                                               GArray *points,
+                                                               gdouble ticks,
+                                                               GError **err);
 
 /**
  * Close rrd file
  * @param file
  * @return
  */
-gint rspamd_rrd_close (struct rspamd_rrd_file * file);
+gint rspamd_rrd_close (struct rspamd_rrd_file *file);
 
 /*
  * Conversion functions
@@ -291,18 +295,21 @@ gint rspamd_rrd_close (struct rspamd_rrd_file * file);
  * Convert rrd dst type from string to numeric value
  */
 enum rrd_dst_type rrd_dst_from_string (const gchar *str);
+
 /**
  * Convert numeric presentation of dst to string
  */
-const gchar * rrd_dst_to_string (enum rrd_dst_type type);
+const gchar *rrd_dst_to_string (enum rrd_dst_type type);
+
 /**
  * Convert rrd consolidation function type from string to numeric value
  */
 enum rrd_cf_type rrd_cf_from_string (const gchar *str);
+
 /**
  * Convert numeric presentation of cf to string
  */
-const gchar * rrd_cf_to_string (enum rrd_cf_type type);
+const gchar *rrd_cf_to_string (enum rrd_cf_type type);
 
 /* Default RRA and DS */
 
@@ -310,23 +317,23 @@ const gchar * rrd_cf_to_string (enum rrd_cf_type type);
  * Create default RRA
  */
 void rrd_make_default_rra (const gchar *cf_name,
-       gulong pdp_cnt,
-       gulong rows,
-       struct rrd_rra_def *rra);
+                                                  gulong pdp_cnt,
+                                                  gulong rows,
+                                                  struct rrd_rra_def *rra);
 
 /**
  * Create default DS
  */
 void rrd_make_default_ds (const gchar *name,
-               const gchar *type,
-               gulong pdp_step,
-               struct rrd_ds_def *ds);
+                                                 const gchar *type,
+                                                 gulong pdp_step,
+                                                 struct rrd_ds_def *ds);
 
 /**
  * Open or create the default rspamd rrd file
  */
 struct rspamd_rrd_file *rspamd_rrd_file_default (const gchar *path,
-               GError **err);
+                                                                                                GError **err);
 
 /**
  * Returned by querying rrd database
@@ -346,6 +353,11 @@ struct rspamd_rrd_query_result {
  * @param rra_num number of rra to return data for
  * @return query result structure, that should be freed (using g_slice_free1) after usage
  */
-struct rspamd_rrd_query_result * rspamd_rrd_query (struct rspamd_rrd_file *file,
-       gulong rra_num);
+struct rspamd_rrd_query_result *rspamd_rrd_query (struct rspamd_rrd_file *file,
+                                                                                                 gulong rra_num);
+
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* RRD_H_ */
index 5a107bdc4e567d27dc382bdddb3897f814813aaa..2b2af973774a9c403ea9e48a362b454af9000a85 100644 (file)
 
 #define RSPAMD_SHINGLE_SIZE 32
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_shingle {
        guint64 hashes[RSPAMD_SHINGLE_SIZE];
 };
@@ -39,7 +43,7 @@ enum rspamd_shingle_alg {
  * @return shingle value
  */
 typedef guint64 (*rspamd_shingles_filter) (guint64 *input, gsize count,
-               gint shno, const guchar *key, gpointer ud);
+                                                                                  gint shno, const guchar *key, gpointer ud);
 
 /**
  * Generate shingles from the input of fixed size strings using lemmatizer
@@ -51,12 +55,12 @@ typedef guint64 (*rspamd_shingles_filter) (guint64 *input, gsize count,
  * @param filterd opaque data for filtering function
  * @return shingles array
  */
-struct rspamd_shinglerspamd_shingles_from_text (GArray *input,
-               const guchar key[16],
-               rspamd_mempool_t *pool,
-               rspamd_shingles_filter filter,
-               gpointer filterd,
-               enum rspamd_shingle_alg alg);
+struct rspamd_shingle *rspamd_shingles_from_text (GArray *input,
+                                                                                                 const guchar key[16],
+                                                                                                 rspamd_mempool_t *pool,
+                                                                                                 rspamd_shingles_filter filter,
+                                                                                                 gpointer filterd,
+                                                                                                 enum rspamd_shingle_alg alg);
 
 /**
  * Generate shingles from the DCT matrix of an image
@@ -67,12 +71,12 @@ struct rspamd_shingle* rspamd_shingles_from_text (GArray *input,
  * @param filterd opaque data for filtering function
  * @return shingles array
  */
-struct rspamd_shinglerspamd_shingles_from_image (guchar *dct,
-               const guchar key[16],
-               rspamd_mempool_t *pool,
-               rspamd_shingles_filter filter,
-               gpointer filterd,
-               enum rspamd_shingle_alg alg);
+struct rspamd_shingle *rspamd_shingles_from_image (guchar *dct,
+                                                                                                  const guchar key[16],
+                                                                                                  rspamd_mempool_t *pool,
+                                                                                                  rspamd_shingles_filter filter,
+                                                                                                  gpointer filterd,
+                                                                                                  enum rspamd_shingle_alg alg);
 
 /**
  * Compares two shingles and return result as a floating point value - 1.0
@@ -82,12 +86,16 @@ struct rspamd_shingle* rspamd_shingles_from_image (guchar *dct,
  * @return
  */
 gdouble rspamd_shingles_compare (const struct rspamd_shingle *a,
-               const struct rspamd_shingle *b);
+                                                                const struct rspamd_shingle *b);
 
 /**
  * Default filtering function
  */
 guint64 rspamd_shingles_default_filter (guint64 *input, gsize count,
-               gint shno, const guchar *key, gpointer ud);
+                                                                               gint shno, const guchar *key, gpointer ud);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SHINGLES_H_ */
index 78ee26fc64d5a5400b7f02915575aad1f2ea8ead..53f13747ccc0fcd5155acc63ba2791847cf4c06d 100644 (file)
 
 #define RSPAMD_SQLITE3_STMT_MULTIPLE (1 << 0)
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_sqlite3_prstmt {
        gint idx;
        const gchar *sql;
@@ -39,10 +43,10 @@ struct rspamd_sqlite3_prstmt {
  * @param err
  * @return new prepared statements array or NULL
  */
-GArrayrspamd_sqlite3_init_prstmt (sqlite3 *db,
-               struct rspamd_sqlite3_prstmt *init_stmt,
-               gint max_idx,
-               GError **err);
+GArray *rspamd_sqlite3_init_prstmt (sqlite3 *db,
+                                                                       struct rspamd_sqlite3_prstmt *init_stmt,
+                                                                       gint max_idx,
+                                                                       GError **err);
 
 /**
  * Run prepared statements by its index getting parameters and setting results from
@@ -53,7 +57,7 @@ GArray* rspamd_sqlite3_init_prstmt (sqlite3 *db,
  * @return
  */
 gint rspamd_sqlite3_run_prstmt (rspamd_mempool_t *pool, sqlite3 *db, GArray *stmts,
-               gint idx, ...);
+                                                               gint idx, ...);
 
 /**
  * Close and free prepared statements
@@ -68,8 +72,9 @@ void rspamd_sqlite3_close_prstmt (sqlite3 *db, GArray *stmts);
  * @param create_sql
  * @return
  */
-sqlite3 * rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
-               gchar *create_sql, guint32 version, GError **err);
+sqlite3 *rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool,
+                                                                               const gchar *path, const gchar *create_sql,
+                                                                               guint32 version, GError **err);
 
 
 /**
@@ -78,4 +83,8 @@ sqlite3 * rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *pa
  */
 gboolean rspamd_sqlite3_sync (sqlite3 *db, gint *wal_frames, gint *wal_checkpoints);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBUTIL_SQLITE_UTILS_H_ */
index f7f1652dee06b2d386136bd73d2fdb1706cc3f69..75436f2ccfe6250946829e8e7efb1f30c27fb4a7 100644 (file)
 #include "libutil/addr.h"
 #include "libutil/libev_helper.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_ssl_connection;
 
-typedef void (*rspamd_ssl_handler_t)(gint fd, short what, gpointer d);
-typedef void (*rspamd_ssl_error_handler_t)(gpointer d, GError *err);
+typedef void (*rspamd_ssl_handler_t) (gint fd, short what, gpointer d);
+
+typedef void (*rspamd_ssl_error_handler_t) (gpointer d, GError *err);
 
 /**
  * Creates a new ssl connection data structure
  * @param ssl_ctx initialized SSL_CTX structure
  * @return opaque connection data
  */
-struct rspamd_ssl_connection * rspamd_ssl_connection_new (gpointer ssl_ctx,
-               struct ev_loop *ev_base, gboolean verify_peer);
+struct rspamd_ssl_connection *rspamd_ssl_connection_new (gpointer ssl_ctx,
+                                                                                                                struct ev_loop *ev_base, gboolean verify_peer);
 
 /**
  * Connects SSL session using the specified (connected) FD
@@ -45,9 +50,9 @@ struct rspamd_ssl_connection * rspamd_ssl_connection_new (gpointer ssl_ctx,
  * @return TRUE if a session has been connected
  */
 gboolean rspamd_ssl_connect_fd (struct rspamd_ssl_connection *conn, gint fd,
-               const gchar *hostname, struct rspamd_io_ev *ev, ev_tstamp timeout,
-               rspamd_ssl_handler_t handler, rspamd_ssl_error_handler_t err_handler,
-               gpointer handler_data);
+                                                               const gchar *hostname, struct rspamd_io_ev *ev, ev_tstamp timeout,
+                                                               rspamd_ssl_handler_t handler, rspamd_ssl_error_handler_t err_handler,
+                                                               gpointer handler_data);
 
 /**
  * Perform async read from SSL socket
@@ -57,7 +62,7 @@ gboolean rspamd_ssl_connect_fd (struct rspamd_ssl_connection *conn, gint fd,
  * @return
  */
 gssize rspamd_ssl_read (struct rspamd_ssl_connection *conn, gpointer buf,
-               gsize buflen);
+                                               gsize buflen);
 
 /**
  * Perform async write to ssl buffer
@@ -69,7 +74,7 @@ gssize rspamd_ssl_read (struct rspamd_ssl_connection *conn, gpointer buf,
  * @return
  */
 gssize rspamd_ssl_write (struct rspamd_ssl_connection *conn, gconstpointer buf,
-               gsize buflen);
+                                                gsize buflen);
 
 /**
  * Emulate writev by copying iovec to a temporary buffer
@@ -79,7 +84,7 @@ gssize rspamd_ssl_write (struct rspamd_ssl_connection *conn, gconstpointer buf,
  * @return
  */
 gssize rspamd_ssl_writev (struct rspamd_ssl_connection *conn, struct iovec *iov,
-               gsize iovlen);
+                                                 gsize iovlen);
 
 /**
  * Removes connection data
@@ -87,4 +92,8 @@ gssize rspamd_ssl_writev (struct rspamd_ssl_connection *conn, struct iovec *iov,
  */
 void rspamd_ssl_connection_free (struct rspamd_ssl_connection *conn);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LIBUTIL_SSL_UTIL_H_ */
index 6fbb11ccf66f2986da41d6d2e6087089f3c5ec3c..c820bd10cb928f8d87a723785902be62596f619c 100644 (file)
@@ -20,6 +20,9 @@
 #include "ucl.h"
 #include "fstring.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
 
 enum rspamd_newlines_type {
        RSPAMD_TASK_NEWLINES_CR,
@@ -37,6 +40,7 @@ gint rspamd_lc_cmp (const gchar *s, const gchar *d, gsize l);
  * Convert string to lowercase in-place using ASCII conversion
  */
 void rspamd_str_lc (gchar *str, guint size);
+
 /**
  * Convert string to lowercase in-place using utf (limited) conversion
  */
@@ -46,13 +50,16 @@ void rspamd_str_lc_utf8 (gchar *str, guint size);
  * Hash table utility functions for case insensitive hashing
  */
 guint64 rspamd_icase_hash (const gchar *in, gsize len, guint64 seed);
+
 guint rspamd_strcase_hash (gconstpointer key);
+
 gboolean rspamd_strcase_equal (gconstpointer v, gconstpointer v2);
 
 /*
  * Hash table utility functions for case sensitive hashing
  */
 guint rspamd_str_hash (gconstpointer key);
+
 gboolean rspamd_str_equal (gconstpointer v, gconstpointer v2);
 
 
@@ -60,10 +67,15 @@ gboolean rspamd_str_equal (gconstpointer v, gconstpointer v2);
  * Hash table utility functions for hashing fixed strings
  */
 guint rspamd_ftok_icase_hash (gconstpointer key);
+
 gboolean rspamd_ftok_icase_equal (gconstpointer v, gconstpointer v2);
+
 guint rspamd_ftok_hash (gconstpointer key);
+
 gboolean rspamd_ftok_equal (gconstpointer v, gconstpointer v2);
+
 guint rspamd_gstring_icase_hash (gconstpointer key);
+
 gboolean rspamd_gstring_icase_equal (gconstpointer v, gconstpointer v2);
 
 /**
@@ -77,6 +89,7 @@ gboolean rspamd_gstring_icase_equal (gconstpointer v, gconstpointer v2);
  * @return bytes copied
  */
 gsize rspamd_strlcpy_fast (gchar *dst, const gchar *src, gsize siz);
+
 gsize rspamd_strlcpy_safe (gchar *dst, const gchar *src, gsize siz);
 
 #if defined(__has_feature)
@@ -133,7 +146,7 @@ gpointer rspamd_str_pool_copy (gconstpointer data, gpointer ud);
  * @param inlen input length
  * @return freshly allocated base32 encoding of a specified string
  */
-gchar * rspamd_encode_base32 (const guchar *in, gsize inlen);
+gchar *rspamd_encode_base32 (const guchar *in, gsize inlen);
 
 /**
  * Decode string using base32 encoding
@@ -141,7 +154,7 @@ gchar * rspamd_encode_base32 (const guchar *in, gsize inlen);
  * @param inlen input length
  * @return freshly allocated base32 decoded value or NULL if input is invalid
  */
-gucharrspamd_decode_base32 (const gchar *in, gsize inlen, gsize *outlen);
+guchar *rspamd_decode_base32 (const gchar *in, gsize inlen, gsize *outlen);
 
 /**
  * Encode string using hex encoding
@@ -149,7 +162,7 @@ guchar* rspamd_decode_base32 (const gchar *in, gsize inlen, gsize *outlen);
  * @param inlen input length
  * @return freshly allocated base32 encoding of a specified string
  */
-gchar * rspamd_encode_hex (const guchar *in, gsize inlen);
+gchar *rspamd_encode_hex (const guchar *in, gsize inlen);
 
 /**
  * Decode string using hex encoding
@@ -157,7 +170,7 @@ gchar * rspamd_encode_hex (const guchar *in, gsize inlen);
  * @param inlen input length
  * @return freshly allocated base32 decoded value or NULL if input is invalid
  */
-gucharrspamd_decode_hex (const gchar *in, gsize inlen);
+guchar *rspamd_decode_hex (const gchar *in, gsize inlen);
 
 /**
  * Encode string using base32 encoding
@@ -168,7 +181,7 @@ guchar* rspamd_decode_hex (const gchar *in, gsize inlen);
  * @return encoded len if `outlen` is enough to encode `inlen`
  */
 gint rspamd_encode_base32_buf (const guchar *in, gsize inlen, gchar *out,
-               gsize outlen);
+                                                          gsize outlen);
 
 /**
  * Decode string using base32 encoding
@@ -179,7 +192,7 @@ gint rspamd_encode_base32_buf (const guchar *in, gsize inlen, gchar *out,
  * @return decoded len if in is valid base32 and `outlen` is enough to encode `inlen`
  */
 gint rspamd_decode_base32_buf (const gchar *in, gsize inlen,
-               guchar *out, gsize outlen);
+                                                          guchar *out, gsize outlen);
 
 /**
  * Encode string using hex encoding
@@ -190,7 +203,7 @@ gint rspamd_decode_base32_buf (const gchar *in, gsize inlen,
  * @return encoded len if `outlen` is enough to encode `inlen`
  */
 gint rspamd_encode_hex_buf (const guchar *in, gsize inlen, gchar *out,
-               gsize outlen);
+                                                       gsize outlen);
 
 
 /**
@@ -202,7 +215,7 @@ gint rspamd_encode_hex_buf (const guchar *in, gsize inlen, gchar *out,
  * @return decoded len if in is valid hex and `outlen` is enough to encode `inlen`
  */
 gssize rspamd_decode_hex_buf (const gchar *in, gsize inlen,
-               guchar *out, gsize outlen);
+                                                         guchar *out, gsize outlen);
 
 /**
  * Common version of base64 encoder
@@ -221,6 +234,7 @@ rspamd_encode_base64_common (const guchar *in,
                                                         gsize *outlen,
                                                         gboolean fold,
                                                         enum rspamd_newlines_type how);
+
 /**
  * Encode string using base64 encoding
  * @param in input
@@ -228,8 +242,8 @@ rspamd_encode_base64_common (const guchar *in,
  * @param str_len maximum string length (if <= 0 then no lines are split)
  * @return freshly allocated base64 encoded value or NULL if input is invalid
  */
-gchar * rspamd_encode_base64 (const guchar *in, gsize inlen, gint str_len,
-               gsize *outlen);
+gchar *rspamd_encode_base64 (const guchar *in, gsize inlen, gint str_len,
+                                                        gsize *outlen);
 
 /**
  * Encode and fold string using base64 encoding
@@ -238,8 +252,8 @@ gchar * rspamd_encode_base64 (const guchar *in, gsize inlen, gint str_len,
  * @param str_len maximum string length (if <= 0 then no lines are split)
  * @return freshly allocated base64 encoded value or NULL if input is invalid
  */
-gchar * rspamd_encode_base64_fold (const guchar *in, gsize inlen, gint str_len,
-               gsize *outlen, enum rspamd_newlines_type how);
+gchar *rspamd_encode_base64_fold (const guchar *in, gsize inlen, gint str_len,
+                                                                 gsize *outlen, enum rspamd_newlines_type how);
 
 /**
  * Encode and fold string using quoted printable encoding
@@ -248,8 +262,8 @@ gchar * rspamd_encode_base64_fold (const guchar *in, gsize inlen, gint str_len,
  * @param str_len maximum string length (if <= 0 then no lines are split)
  * @return freshly allocated base64 encoded value or NULL if input is invalid
  */
-gchar * rspamd_encode_qp_fold (const guchar *in, gsize inlen, gint str_len,
-                                                                  gsize *outlen, enum rspamd_newlines_type how);
+gchar *rspamd_encode_qp_fold (const guchar *in, gsize inlen, gint str_len,
+                                                         gsize *outlen, enum rspamd_newlines_type how);
 
 /**
  * Decode quoted-printable encoded buffer, input and output must not overlap
@@ -260,7 +274,7 @@ gchar * rspamd_encode_qp_fold (const guchar *in, gsize inlen, gint str_len,
  * @return real size of decoded output or (-1) if outlen is not enough
  */
 gssize rspamd_decode_qp_buf (const gchar *in, gsize inlen,
-               gchar *out, gsize outlen);
+                                                        gchar *out, gsize outlen);
 
 /**
  * Decode quoted-printable encoded buffer using rfc2047 format, input and output must not overlap
@@ -271,7 +285,7 @@ gssize rspamd_decode_qp_buf (const gchar *in, gsize inlen,
  * @return real size of decoded output or (-1) if outlen is not enough
  */
 gssize rspamd_decode_qp2047_buf (const gchar *in, gsize inlen,
-               gchar *out, gsize outlen);
+                                                                gchar *out, gsize outlen);
 
 /**
  * Encode quoted-printable buffer using rfc2047 format, input and output must not overlap
@@ -282,7 +296,7 @@ gssize rspamd_decode_qp2047_buf (const gchar *in, gsize inlen,
  * @return
  */
 gssize rspamd_encode_qp2047_buf (const gchar *in, gsize inlen,
-               gchar *out, gsize outlen);
+                                                                gchar *out, gsize outlen);
 
 #ifndef g_tolower
 #   define g_tolower(x) (((x) >= 'A' && (x) <= 'Z') ? (x) - 'A' + 'a' : (x))
@@ -297,7 +311,7 @@ gssize rspamd_encode_qp2047_buf (const gchar *in, gsize inlen,
  * @return
  */
 gint rspamd_strings_levenshtein_distance (const gchar *s1, gsize s1len,
-               const gchar *s2, gsize s2len, guint replace_cost);
+                                                                                 const gchar *s2, gsize s2len, guint replace_cost);
 
 /**
  * Fold header using rfc822 rules, return new GString from the previous one
@@ -309,10 +323,10 @@ gint rspamd_strings_levenshtein_distance (const gchar *s1, gsize s1len,
  * @return new GString with the folded value
  */
 GString *rspamd_header_value_fold (const gchar *name,
-               const gchar *value,
-               guint fold_max,
-               enum rspamd_newlines_type how,
-               const gchar *fold_on_chars);
+                                                                  const gchar *value,
+                                                                  guint fold_max,
+                                                                  enum rspamd_newlines_type how,
+                                                                  const gchar *fold_on_chars);
 
 /**
  * Search for a substring `srch` in the text `in` using Apostolico-Crochemore algorithm
@@ -324,7 +338,7 @@ GString *rspamd_header_value_fold (const gchar *name,
  * @return position of the first substring match or (-1) if not found
  */
 goffset rspamd_substring_search (const gchar *in, gsize inlen,
-       const gchar *srch, gsize srchlen);
+                                                                const gchar *srch, gsize srchlen);
 
 /**
  * Search for a substring `srch` in the text `in` using Apostolico-Crochemore algorithm in caseless matter (ASCII only)
@@ -336,7 +350,7 @@ goffset rspamd_substring_search (const gchar *in, gsize inlen,
  * @return position of the first substring match or (-1) if not found
  */
 goffset rspamd_substring_search_caseless (const gchar *in, gsize inlen,
-               const gchar *srch, gsize srchlen);
+                                                                                 const gchar *srch, gsize srchlen);
 
 /**
  * Search for end-of-headers mark in the input string. Returns position just after
@@ -348,7 +362,8 @@ goffset rspamd_string_find_eoh (GString *input, goffset *body_start);
 
 
 #define rspamd_ucl_emit_gstring(o, t, target) \
-       rspamd_ucl_emit_gstring_comments((o), (t), (target), NULL)
+    rspamd_ucl_emit_gstring_comments((o), (t), (target), NULL)
+
 /**
  * Emit UCL object to gstring
  * @param obj object to emit
@@ -357,12 +372,13 @@ goffset rspamd_string_find_eoh (GString *input, goffset *body_start);
  * @param target target string
  */
 void rspamd_ucl_emit_gstring_comments (const ucl_object_t *obj,
-               enum ucl_emitter emit_type,
-               GString *target,
-               const ucl_object_t *comments);
+                                                                          enum ucl_emitter emit_type,
+                                                                          GString *target,
+                                                                          const ucl_object_t *comments);
 
 #define rspamd_ucl_emit_fstring(o, t, target) \
-       rspamd_ucl_emit_fstring_comments((o), (t), (target), NULL)
+    rspamd_ucl_emit_fstring_comments((o), (t), (target), NULL)
+
 /**
  * Emit UCL object to fstring
  * @param obj object to emit
@@ -371,9 +387,9 @@ void rspamd_ucl_emit_gstring_comments (const ucl_object_t *obj,
  * @param target target string
  */
 void rspamd_ucl_emit_fstring_comments (const ucl_object_t *obj,
-               enum ucl_emitter emit_type,
-               rspamd_fstring_t **target,
-               const ucl_object_t *comments);
+                                                                          enum ucl_emitter emit_type,
+                                                                          rspamd_fstring_t **target,
+                                                                          const ucl_object_t *comments);
 
 extern const guchar lc_map[256];
 
@@ -405,27 +421,26 @@ gsize rspamd_memcspn (const gchar *s, const gchar *e, gsize len);
 gsize rspamd_memspn (const gchar *s, const gchar *e, gsize len);
 
 /* https://graphics.stanford.edu/~seander/bithacks.html#HasMoreInWord */
-#define rspamd_str_hasmore(x,n) ((((x)+~0UL/255*(127-(n)))|(x))&~0UL/255*128)
+#define rspamd_str_hasmore(x, n) ((((x)+~0UL/255*(127-(n)))|(x))&~0UL/255*128)
 
 static inline gboolean
-rspamd_str_has_8bit (const guchar *beg, gsize len)
-{
+rspamd_str_has_8bit (const guchar *beg, gsize len) {
        unsigned long *w;
        gsize i, leftover = len % sizeof (*w);
 
-       w = (unsigned long *)beg;
+       w = (unsigned long *) beg;
 
-       for (i = 0; i < len / sizeof (*w); i ++) {
+       for (i = 0; i < len / sizeof (*w); i++) {
                if (rspamd_str_hasmore (*w, 127)) {
                        return TRUE;
                }
 
-               w ++;
+               w++;
        }
 
-       beg = (const guchar *)w;
+       beg = (const guchar *) w;
 
-       for (i = 0; i < leftover; i ++) {
+       for (i = 0; i < leftover; i++) {
                if (beg[i] > 127) {
                        return TRUE;
                }
@@ -435,9 +450,11 @@ rspamd_str_has_8bit (const guchar *beg, gsize len)
 }
 
 struct UConverter;
+
 struct UConverter *rspamd_get_utf8_converter (void);
 
 struct UNormalizer2;
+
 const struct UNormalizer2 *rspamd_get_unicode_normalizer (void);
 
 enum rspamd_normalise_result {
@@ -456,7 +473,7 @@ enum rspamd_normalise_result {
  * @return TRUE if a string has been normalised
  */
 enum rspamd_normalise_result rspamd_normalise_unicode_inplace (rspamd_mempool_t *pool,
-               gchar *start, guint *len);
+                                                                                                                          gchar *start, guint *len);
 
 enum rspamd_regexp_escape_flags {
        RSPAMD_REGEXP_ESCAPE_ASCII = 0,
@@ -464,6 +481,7 @@ enum rspamd_regexp_escape_flags {
        RSPAMD_REGEXP_ESCAPE_GLOB = 1u << 1,
        RSPAMD_REGEXP_ESCAPE_RE = 1u << 2,
 };
+
 /**
  * Escapes special characters when reading plain data to be processed in pcre
  * @param pattern pattern to process
@@ -474,7 +492,7 @@ enum rspamd_regexp_escape_flags {
  */
 gchar *
 rspamd_str_regexp_escape (const gchar *pattern, gsize slen,
-               gsize *dst_len, enum rspamd_regexp_escape_flags flags);
+                                                 gsize *dst_len, enum rspamd_regexp_escape_flags flags);
 
 /**
  * Returns copy of src (zero terminated) where all unicode is made valid or replaced
@@ -484,7 +502,7 @@ rspamd_str_regexp_escape (const gchar *pattern, gsize slen,
  * @param dstelen
  * @return
  */
-gchar * rspamd_str_make_utf_valid (const guchar *src, gsize slen, gsize *dstlen);
+gchar *rspamd_str_make_utf_valid (const guchar *src, gsize slen, gsize *dstlen);
 
 /**
  * Strips characters in `strip_chars` from start and end of the GString
@@ -498,19 +516,23 @@ gsize rspamd_gstring_strip (GString *s, const gchar *strip_chars);
  * @param s
  * @param strip_chars
  */
-const gcharrspamd_string_len_strip (const gchar *in,
-               gsize *len, const gchar *strip_chars);
+const gchar *rspamd_string_len_strip (const gchar *in,
+                                                                         gsize *len, const gchar *strip_chars);
 
 #define IS_ZERO_WIDTH_SPACE(uc) ((uc) == 0x200B || \
-                                                               (uc) == 0x200C || \
-                                                               (uc) == 0x200D || \
-                                                               (uc) == 0xFEFF)
+                                (uc) == 0x200C || \
+                                (uc) == 0x200D || \
+                                (uc) == 0xFEFF)
 #define IS_OBSCURED_CHAR(uc) (((uc) >= 0x200B && (uc) <= 0x200F) || \
-                                                               ((uc) >= 0x2028 && (uc) <= 0x202F) || \
-                                                               ((uc) >= 0x205F && (uc) <= 0x206F) || \
-                                                               (uc) == 0xFEFF)
+                                ((uc) >= 0x2028 && (uc) <= 0x202F) || \
+                                ((uc) >= 0x205F && (uc) <= 0x206F) || \
+                                (uc) == 0xFEFF)
 
 #define RSPAMD_LEN_CHECK_STARTS_WITH(s, len, lit) \
-       ((len) >= sizeof(lit) - 1 && g_ascii_strncasecmp ((s), (lit), sizeof(lit) - 1) == 0)
+    ((len) >= sizeof(lit) - 1 && g_ascii_strncasecmp ((s), (lit), sizeof(lit) - 1) == 0)
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* SRC_LIBUTIL_STR_UTIL_H_ */
index 89ac0ee9e731dbb99e87a7b47c4a7a9f0f2e6b6e..04ec6d9843bd4e08035cfc52444efec2a26df17d 100644 (file)
@@ -6,6 +6,10 @@
 #include "rdns.h"
 #include "ucl.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_upstream_rotation {
        RSPAMD_UPSTREAM_RANDOM = 0,
        RSPAMD_UPSTREAM_HASHED,
@@ -29,7 +33,7 @@ struct upstream_ctx;
  * Init upstreams library
  * @param resolver
  */
-struct upstream_ctxrspamd_upstreams_library_init (void);
+struct upstream_ctx *rspamd_upstreams_library_init (void);
 
 /**
  * Remove reference from upstreams library
@@ -41,8 +45,8 @@ void rspamd_upstreams_library_unref (struct upstream_ctx *ctx);
  * @param cfg
  */
 void rspamd_upstreams_library_config (struct rspamd_config *cfg,
-               struct upstream_ctx *ctx, struct ev_loop *event_loop,
-               struct rdns_resolver *resolver);
+                                                                         struct upstream_ctx *ctx, struct ev_loop *event_loop,
+                                                                         struct rdns_resolver *resolver);
 
 /**
  * Upstream error logic
@@ -72,7 +76,7 @@ void rspamd_upstream_set_weight (struct upstream *up, guint weight);
  * Create new list of upstreams
  * @return
  */
-struct upstream_listrspamd_upstreams_create (struct upstream_ctx *ctx);
+struct upstream_list *rspamd_upstreams_create (struct upstream_ctx *ctx);
 
 /**
  * Sets specific flag to the upstream list
@@ -80,7 +84,7 @@ struct upstream_list* rspamd_upstreams_create (struct upstream_ctx *ctx);
  * @param flags
  */
 void rspamd_upstreams_set_flags (struct upstream_list *ups,
-               enum rspamd_upstream_flag flags);
+                                                                enum rspamd_upstream_flag flags);
 
 /**
  * Sets custom limits for upstreams
@@ -106,7 +110,7 @@ void rspamd_upstreams_set_limits (struct upstream_list *ups,
  * @param rot
  */
 void rspamd_upstreams_set_rotation (struct upstream_list *ups,
-               enum rspamd_upstream_rotation rot);
+                                                                       enum rspamd_upstream_rotation rot);
 
 /**
  * Destroy list of upstreams
@@ -142,8 +146,8 @@ enum rspamd_upstream_parse_type {
  * @return TRUE if upstream has been added
  */
 gboolean rspamd_upstreams_add_upstream (struct upstream_list *ups, const gchar *str,
-               guint16 def_port, enum rspamd_upstream_parse_type parse_type,
-               void *data);
+                                                                               guint16 def_port, enum rspamd_upstream_parse_type parse_type,
+                                                                               void *data);
 
 /**
  * Add multiple upstreams from comma, semicolon or space separated line
@@ -154,13 +158,14 @@ gboolean rspamd_upstreams_add_upstream (struct upstream_list *ups, const gchar *
  * @return TRUE if **any** of upstreams has been added
  */
 gboolean rspamd_upstreams_parse_line (struct upstream_list *ups,
-               const gchar *str, guint16 def_port, void *data);
+                                                                         const gchar *str, guint16 def_port, void *data);
 
 
 gboolean rspamd_upstreams_parse_line_len (struct upstream_list *ups,
                                                                                  const gchar *str, gsize len,
                                                                                  guint16 def_port,
                                                                                  void *data);
+
 /**
  * Parse upstreams list from the UCL object
  * @param ups
@@ -170,11 +175,11 @@ gboolean rspamd_upstreams_parse_line_len (struct upstream_list *ups,
  * @return
  */
 gboolean rspamd_upstreams_from_ucl (struct upstream_list *ups,
-               const ucl_object_t *in, guint16 def_port, void *data);
+                                                                       const ucl_object_t *in, guint16 def_port, void *data);
 
 
 typedef void (*rspamd_upstream_traverse_func) (struct upstream *up, guint idx,
-               void *ud);
+                                                                                          void *ud);
 
 /**
  * Traverse upstreams list calling the function specified
@@ -183,7 +188,7 @@ typedef void (*rspamd_upstream_traverse_func) (struct upstream *up, guint idx,
  * @param ud
  */
 void rspamd_upstreams_foreach (struct upstream_list *ups,
-               rspamd_upstream_traverse_func cb, void *ud);
+                                                          rspamd_upstream_traverse_func cb, void *ud);
 
 enum rspamd_upstreams_watch_event {
        RSPAMD_UPSTREAM_WATCH_SUCCESS = 1u << 0,
@@ -216,14 +221,14 @@ void rspamd_upstreams_add_watch_callback (struct upstream_list *ups,
  * @param up
  * @return
  */
-rspamd_inet_addr_trspamd_upstream_addr_next (struct upstream *up);
+rspamd_inet_addr_t *rspamd_upstream_addr_next (struct upstream *up);
 
 /**
  * Returns the current IP address of the upstream
  * @param up
  * @return
  */
-rspamd_inet_addr_trspamd_upstream_addr_cur (const struct upstream *up);
+rspamd_inet_addr_t *rspamd_upstream_addr_cur (const struct upstream *up);
 
 /**
  * Add custom address for an upstream (ownership of addr is transferred to upstream)
@@ -231,14 +236,14 @@ rspamd_inet_addr_t* rspamd_upstream_addr_cur (const struct upstream *up);
  * @return
  */
 gboolean rspamd_upstream_add_addr (struct upstream *up,
-               rspamd_inet_addr_t *addr);
+                                                                  rspamd_inet_addr_t *addr);
 
 /**
  * Returns the symbolic name of the upstream
  * @param up
  * @return
  */
-const gcharrspamd_upstream_name (struct upstream *up);
+const gchar *rspamd_upstream_name (struct upstream *up);
 
 /**
  * Sets opaque user data associated with this upstream
@@ -261,9 +266,9 @@ gpointer rspamd_upstream_get_data (struct upstream *up);
  * @param type type of rotation algorithm, for `RSPAMD_UPSTREAM_HASHED` it is required to specify `key` and `keylen` as arguments
  * @return
  */
-struct upstreamrspamd_upstream_get (struct upstream_list *ups,
-               enum rspamd_upstream_rotation default_type,
-               const guchar *key, gsize keylen);
+struct upstream *rspamd_upstream_get (struct upstream_list *ups,
+                                                                         enum rspamd_upstream_rotation default_type,
+                                                                         const guchar *key, gsize keylen);
 
 /**
  * Get new upstream from the list
@@ -271,16 +276,17 @@ struct upstream* rspamd_upstream_get (struct upstream_list *ups,
  * @param type type of rotation algorithm, for `RSPAMD_UPSTREAM_HASHED` it is required to specify `key` and `keylen` as arguments
  * @return
  */
-struct upstreamrspamd_upstream_get_forced (struct upstream_list *ups,
-               enum rspamd_upstream_rotation forced_type,
-               const guchar *key, gsize keylen);
+struct upstream *rspamd_upstream_get_forced (struct upstream_list *ups,
+                                                                                        enum rspamd_upstream_rotation forced_type,
+                                                                                        const guchar *key, gsize keylen);
 
 /**
  * Re-resolve addresses for all upstreams registered
  */
 void rspamd_upstream_reresolve (struct upstream_ctx *ctx);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* UPSTREAM_H */
-/*
- * vi:ts=4
- */
index 7f13ded0635d5b05d49c92a1043398ff2e346d9b..7c9eb5f914bc263d8b85b603ad811e7746e1524c 100644 (file)
 #include "contrib/libev/ev.h"
 #include <time.h>
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct rspamd_config;
 struct rspamd_main;
 struct workq;
@@ -28,10 +32,12 @@ struct workq;
  * @return socket FD or -1 in case of error
  */
 gint rspamd_socket_create (gint af, gint type, gint protocol, gboolean async);
+
 /*
  * Create socket and bind or connect it to specified address and port
  */
 gint rspamd_socket_tcp (struct addrinfo *, gboolean is_server, gboolean async);
+
 /*
  * Create socket and bind or connect it to specified address and port
  */
@@ -41,10 +47,10 @@ gint rspamd_socket_udp (struct addrinfo *, gboolean is_server, gboolean async);
  * Create and bind or connect unix socket
  */
 gint rspamd_socket_unix (const gchar *,
-       struct sockaddr_un *,
-       gint type,
-       gboolean is_server,
-       gboolean async);
+                                                struct sockaddr_un *,
+                                                gint type,
+                                                gboolean is_server,
+                                                gboolean async);
 
 /**
  * Make a universal socket
@@ -56,7 +62,7 @@ gint rspamd_socket_unix (const gchar *,
  * @param try_resolve try name resolution for a socket (BLOCKING)
  */
 gint rspamd_socket (const gchar *credits, guint16 port, gint type,
-       gboolean async, gboolean is_server, gboolean try_resolve);
+                                       gboolean async, gboolean is_server, gboolean try_resolve);
 
 /**
  * Make a universal sockets
@@ -67,12 +73,13 @@ gint rspamd_socket (const gchar *credits, guint16 port, gint type,
  * @param is_server make this socket as server socket
  * @param try_resolve try name resolution for a socket (BLOCKING)
  */
-GList * rspamd_sockets_list (const gchar *credits,
-       guint16 port,
-       gint type,
-       gboolean async,
-       gboolean is_server,
-       gboolean try_resolve);
+GList *rspamd_sockets_list (const gchar *credits,
+                                                       guint16 port,
+                                                       gint type,
+                                                       gboolean async,
+                                                       gboolean is_server,
+                                                       gboolean try_resolve);
+
 /*
  * Create socketpair
  */
@@ -87,6 +94,7 @@ gint rspamd_write_pid (struct rspamd_main *);
  * Make specified socket non-blocking
  */
 gint rspamd_socket_nonblocking (gint);
+
 /*
  * Make specified socket blocking
  */
@@ -101,9 +109,11 @@ gint rspamd_socket_poll (gint fd, gint timeout, short events);
  * Init signals
  */
 #ifdef HAVE_SA_SIGINFO
-void rspamd_signals_init (struct sigaction *sa, void (*sig_handler)(gint,
-       siginfo_t *,
-       void *));
+
+void rspamd_signals_init (struct sigaction *sa, void (*sig_handler) (gint,
+                                                                                                                                        siginfo_t *,
+                                                                                                                                        void *));
+
 #else
 void rspamd_signals_init (struct sigaction *sa, void (*sig_handler)(gint));
 #endif
@@ -111,14 +121,17 @@ void rspamd_signals_init (struct sigaction *sa, void (*sig_handler)(gint));
 /*
  * Send specified signal to each worker
  */
-void rspamd_pass_signal (GHashTable *, gint );
+void rspamd_pass_signal (GHashTable *, gint);
 
 #ifndef HAVE_SETPROCTITLE
+
 /*
  * Process title utility functions
  */
 gint init_title (struct rspamd_main *, gint argc, gchar *argv[], gchar *envp[]);
+
 gint setproctitle (const gchar *fmt, ...);
+
 #endif
 
 #ifndef HAVE_PIDFILE
@@ -137,12 +150,17 @@ typedef struct rspamd_pidfh_s {
        dev_t pf_dev;
        ino_t pf_ino;
 } rspamd_pidfh_t;
-rspamd_pidfh_t * rspamd_pidfile_open (const gchar *path,
-       mode_t mode,
-       pid_t *pidptr);
+
+rspamd_pidfh_t *rspamd_pidfile_open (const gchar *path,
+                                                                        mode_t mode,
+                                                                        pid_t *pidptr);
+
 gint rspamd_pidfile_write (rspamd_pidfh_t *pfh);
+
 gint rspamd_pidfile_close (rspamd_pidfh_t *pfh);
+
 gint rspamd_pidfile_remove (rspamd_pidfh_t *pfh);
+
 #else
 typedef struct pidfh rspamd_pidfh_t;
 #define rspamd_pidfile_open pidfile_open
@@ -154,10 +172,10 @@ typedef struct pidfh rspamd_pidfh_t;
 /*
  * Replace %r with rcpt value and %f with from value, new string is allocated in pool
  */
-gchar * resolve_stat_filename (rspamd_mempool_t *pool,
-       gchar *pattern,
-       gchar *rcpt,
-       gchar *from);
+gchar *resolve_stat_filename (rspamd_mempool_t *pool,
+                                                         gchar *pattern,
+                                                         gchar *rcpt,
+                                                         gchar *from);
 
 const gchar *
 rspamd_log_check_time (gdouble start, gdouble end, gint resolution);
@@ -166,12 +184,14 @@ rspamd_log_check_time (gdouble start, gdouble end, gint resolution);
  * File locking functions
  */
 gboolean rspamd_file_lock (gint fd, gboolean async);
+
 gboolean rspamd_file_unlock (gint fd, gboolean async);
 
 /*
  * Google perf-tools initialization function
  */
 void gperf_profiler_init (struct rspamd_config *cfg, const gchar *descr);
+
 void gperf_profiler_stop (void);
 
 /*
@@ -203,18 +223,18 @@ const gchar *g_environ_getenv (gchar **envp, const gchar *variable);
  * Convert milliseconds to timeval fields
  */
 #define msec_to_tv(msec, tv) do { (tv)->tv_sec = (msec) / 1000; (tv)->tv_usec = \
-                                                                         ((msec) - (tv)->tv_sec * 1000) * 1000; \
+                                      ((msec) - (tv)->tv_sec * 1000) * 1000; \
 } while (0)
 #define double_to_tv(dbl, tv) do { (tv)->tv_sec = (int)(dbl); (tv)->tv_usec = \
-                                                                          ((dbl) - (int)(dbl)) * 1000 * 1000; \
+                                       ((dbl) - (int)(dbl)) * 1000 * 1000; \
 } while (0)
 #define double_to_ts(dbl, ts) do { (ts)->tv_sec = (int)(dbl); (ts)->tv_nsec = \
                                        ((dbl) - (int)(dbl)) * 1e9; \
 } while (0)
 #define tv_to_msec(tv) ((tv)->tv_sec * 1000LLU + (tv)->tv_usec / 1000LLU)
 #define tv_to_double(tv) ((double)(tv)->tv_sec + (tv)->tv_usec / 1.0e6)
-#define ts_to_usec(ts) ((ts)->tv_sec * 1000000LLU +                                                    \
-       (ts)->tv_nsec / 1000LLU)
+#define ts_to_usec(ts) ((ts)->tv_sec * 1000000LLU +                            \
+    (ts)->tv_nsec / 1000LLU)
 #define ts_to_double(tv) ((double)(tv)->tv_sec + (tv)->tv_nsec / 1.0e9)
 
 /**
@@ -242,7 +262,7 @@ typedef struct rspamd_mutex_s {
  * Create new mutex
  * @return mutex or NULL
  */
-rspamd_mutex_t * rspamd_mutex_new (void);
+rspamd_mutex_t *rspamd_mutex_new (void);
 
 /**
  * Lock mutex
@@ -271,9 +291,9 @@ void rspamd_mutex_free (rspamd_mutex_t *mtx);
  * @param ud user data for copy functions
  */
 void rspamd_hash_table_copy (GHashTable *src, GHashTable *dst,
-       gpointer (*key_copy_func)(gconstpointer data, gpointer ud),
-       gpointer (*value_copy_func)(gconstpointer data, gpointer ud),
-       gpointer ud);
+                                                        gpointer (*key_copy_func) (gconstpointer data, gpointer ud),
+                                                        gpointer (*value_copy_func) (gconstpointer data, gpointer ud),
+                                                        gpointer ud);
 
 
 /**
@@ -315,6 +335,7 @@ void rspamd_ptr_array_free_hard (gpointer p);
  * @param p
  */
 void rspamd_array_free_hard (gpointer p);
+
 /**
  * Special utility to help GString freeing in rspamd_mempool
  * @param p
@@ -334,25 +355,28 @@ void rspamd_gerror_free_maybe (gpointer p);
 void rspamd_gstring_free_soft (gpointer p);
 
 struct rspamd_external_libs_ctx;
+
 /**
  * Initialize rspamd libraries
  */
-struct rspamd_external_libs_ctxrspamd_init_libs (void);
+struct rspamd_external_libs_ctx *rspamd_init_libs (void);
 
 gpointer rspamd_init_ssl_ctx (void);
+
 gpointer rspamd_init_ssl_ctx_noverify (void);
 
 /**
  * Configure libraries
  */
 void rspamd_config_libs (struct rspamd_external_libs_ctx *ctx,
-               struct rspamd_config *cfg);
+                                                struct rspamd_config *cfg);
 
 /**
  * Reset and initialize decompressor
  * @param ctx
  */
 gboolean rspamd_libs_reset_decompression (struct rspamd_external_libs_ctx *ctx);
+
 /**
  * Reset and initialize compressor
  * @param ctx
@@ -421,7 +445,7 @@ gboolean rspamd_constant_memcmp (const void *a, const void *b, gsize len);
  * @return fd or -1 in case of error
  */
 int rspamd_file_xopen (const char *fname, int oflags, guint mode,
-               gboolean allow_symlink);
+                                          gboolean allow_symlink);
 
 /**
  * Map file without following symlinks or special stuff
@@ -431,7 +455,7 @@ int rspamd_file_xopen (const char *fname, int oflags, guint mode,
  * @return pointer to memory (should be freed using munmap) or NULL in case of error
  */
 gpointer rspamd_file_xmap (const char *fname, guint mode, gsize *size,
-               gboolean allow_symlink);
+                                                  gboolean allow_symlink);
 
 /**
  * Map named shared memory segment
@@ -441,7 +465,7 @@ gpointer rspamd_file_xmap (const char *fname, guint mode, gsize *size,
  * @return pointer to memory (should be freed using munmap) or NULL in case of error
  */
 gpointer rspamd_shmem_xmap (const char *fname, guint mode,
-               gsize *size);
+                                                       gsize *size);
 
 /**
  * Normalize probabilities using polynomial function
@@ -521,4 +545,8 @@ double rspamd_set_counter_ema (struct rspamd_counter_data *cd,
 double rspamd_set_counter (struct rspamd_counter_data *cd,
                                                   gdouble value);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 93bb5a28e0eae4c6b5d0b5726d31ac52b97f4930..d14ebba54873c5511879ec71bffa88ede2c18d89 100644 (file)
@@ -2,7 +2,6 @@
 #define RSPAMD_LUA_H
 
 #include "config.h"
-#ifdef WITH_LUA
 
 #include <lua.h>
 #include <lauxlib.h>
@@ -48,6 +47,10 @@ luaL_register (lua_State *L, const gchar *name, const struct luaL_reg *methods)
                lua_State * L)
 #define LUA_INTERFACE_DEF(class, name) { # name, lua_ ## class ## _ ## name }
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 extern const luaL_reg null_reg[];
 
 #define RSPAMD_LUA_API_VERSION 12
@@ -126,17 +129,17 @@ struct rspamd_lua_cached_entry {
  * Create and register new class
  */
 void rspamd_lua_new_class (lua_State *L,
-       const gchar *classname,
-       const struct luaL_reg *methods);
+                                                  const gchar *classname,
+                                                  const struct luaL_reg *methods);
 
 /**
  * Create and register new class with static methods
  */
 void rspamd_lua_new_class_full (lua_State *L,
-       const gchar *classname,
-       const gchar *static_name,
-       const struct luaL_reg *methods,
-       const struct luaL_reg *func);
+                                                               const gchar *classname,
+                                                               const gchar *static_name,
+                                                               const struct luaL_reg *methods,
+                                                               const struct luaL_reg *func);
 
 /**
  * Set class name for object at @param objidx position
@@ -151,7 +154,7 @@ void rspamd_lua_table_set (lua_State *L, const gchar *index, const gchar *value)
 /**
  * Get string value of index in a table (return t['index'])
  */
-const gchar * rspamd_lua_table_get (lua_State *L, const gchar *index);
+const gchar *rspamd_lua_table_get (lua_State *L, const gchar *index);
 
 /**
  * Convert classname to string
@@ -169,6 +172,7 @@ gpointer rspamd_lua_check_class (lua_State *L, gint index, const gchar *name);
 lua_State *rspamd_lua_init (bool wipe_mem);
 
 void rspamd_lua_start_gc (struct rspamd_config *cfg);
+
 /**
  * Sets field in a global variable
  * @param L
@@ -178,7 +182,8 @@ void rspamd_lua_start_gc (struct rspamd_config *cfg);
  */
 void
 rspamd_plugins_table_push_elt (lua_State *L, const gchar *field_name,
-               const gchar *new_elt);
+                                                          const gchar *new_elt);
+
 /**
  * Load and initialize lua plugins
  */
@@ -188,7 +193,8 @@ rspamd_init_lua_filters (struct rspamd_config *cfg, gboolean force_load);
 /**
  * Initialize new locked lua_State structure
  */
-struct lua_locked_state * rspamd_init_lua_locked (struct rspamd_config *cfg);
+struct lua_locked_state *rspamd_init_lua_locked (struct rspamd_config *cfg);
+
 /**
  * Free locked state structure
  */
@@ -207,11 +213,11 @@ void rspamd_lua_task_push (lua_State *L, struct rspamd_task *task);
 /**
  * Return lua ip structure at the specified address
  */
-struct rspamd_lua_ip * lua_check_ip (lua_State * L, gint pos);
+struct rspamd_lua_ip *lua_check_ip (lua_State *L, gint pos);
 
-struct rspamd_lua_text * lua_check_text (lua_State * L, gint pos);
+struct rspamd_lua_text *lua_check_text (lua_State *L, gint pos);
 
-struct rspamd_lua_regexp *lua_check_regexp (lua_State * L, gint pos);
+struct rspamd_lua_regexp *lua_check_regexp (lua_State *L, gint pos);
 
 enum rspamd_lua_task_header_type {
        RSPAMD_TASK_HEADER_PUSH_SIMPLE = 0,
@@ -223,6 +229,7 @@ enum rspamd_lua_task_header_type {
 gint rspamd_lua_push_header (lua_State *L,
                                                         struct rspamd_mime_header *h,
                                                         enum rspamd_lua_task_header_type how);
+
 /**
  * Push specific header to lua
  */
@@ -233,10 +240,11 @@ gint rspamd_lua_push_header_array (lua_State *L,
 /**
  * Check for task at the specified position
  */
-struct rspamd_task *lua_check_task (lua_State * L, gint pos);
-struct rspamd_task *lua_check_task_maybe (lua_State * L, gint pos);
+struct rspamd_task *lua_check_task (lua_State *L, gint pos);
+
+struct rspamd_task *lua_check_task_maybe (lua_State *L, gint pos);
 
-struct rspamd_lua_map *lua_check_map (lua_State * L, gint pos);
+struct rspamd_lua_map *lua_check_map (lua_State *L, gint pos);
 
 /**
  * Push ip address from a string (nil is pushed if a string cannot be converted)
@@ -257,74 +265,114 @@ int rspamd_lua_typerror (lua_State *L, int narg, const char *tname);
 void rspamd_lua_add_preload (lua_State *L, const gchar *name, lua_CFunction func);
 
 void luaopen_task (lua_State *L);
+
 void luaopen_config (lua_State *L);
+
 void luaopen_map (lua_State *L);
-void luaopen_trie (lua_State * L);
+
+void luaopen_trie (lua_State *L);
+
 void luaopen_textpart (lua_State *L);
+
 void luaopen_mimepart (lua_State *L);
+
 void luaopen_image (lua_State *L);
+
 void luaopen_url (lua_State *L);
+
 void luaopen_classifier (lua_State *L);
-void luaopen_statfile (lua_State * L);
+
+void luaopen_statfile (lua_State *L);
+
 void luaopen_regexp (lua_State *L);
+
 void luaopen_cdb (lua_State *L);
-void luaopen_xmlrpc (lua_State * L);
-void luaopen_http (lua_State * L);
-void luaopen_redis (lua_State * L);
-void luaopen_upstream (lua_State * L);
-void luaopen_mempool (lua_State * L);
-void luaopen_dns_resolver (lua_State * L);
-void luaopen_rsa (lua_State * L);
-void luaopen_ip (lua_State * L);
-void luaopen_expression (lua_State * L);
-void luaopen_logger (lua_State * L);
+
+void luaopen_xmlrpc (lua_State *L);
+
+void luaopen_http (lua_State *L);
+
+void luaopen_redis (lua_State *L);
+
+void luaopen_upstream (lua_State *L);
+
+void luaopen_mempool (lua_State *L);
+
+void luaopen_dns_resolver (lua_State *L);
+
+void luaopen_rsa (lua_State *L);
+
+void luaopen_ip (lua_State *L);
+
+void luaopen_expression (lua_State *L);
+
+void luaopen_logger (lua_State *L);
+
 void luaopen_text (lua_State *L);
-void luaopen_util (lua_State * L);
-void luaopen_tcp (lua_State * L);
-void luaopen_html (lua_State * L);
+
+void luaopen_util (lua_State *L);
+
+void luaopen_tcp (lua_State *L);
+
+void luaopen_html (lua_State *L);
+
 void luaopen_sqlite3 (lua_State *L);
+
 void luaopen_cryptobox (lua_State *L);
+
 void luaopen_dns (lua_State *L);
-void luaopen_udp (lua_State * L);
-void luaopen_worker (lua_State * L);
-void luaopen_kann (lua_State * L);
+
+void luaopen_udp (lua_State *L);
+
+void luaopen_worker (lua_State *L);
+
+void luaopen_kann (lua_State *L);
 
 void rspamd_lua_dostring (const gchar *line);
 
 double rspamd_lua_normalize (struct rspamd_config *cfg,
-       long double score,
-       void *params);
+                                                        long double score,
+                                                        void *params);
 
 /* Config file functions */
 void rspamd_lua_post_load_config (struct rspamd_config *cfg);
+
 gboolean rspamd_lua_handle_param (struct rspamd_task *task,
-       gchar *mname,
-       gchar *optname,
-       enum lua_var_type expected_type,
-       gpointer *res);
+                                                                 gchar *mname,
+                                                                 gchar *optname,
+                                                                 enum lua_var_type expected_type,
+                                                                 gpointer *res);
+
 gboolean rspamd_lua_check_condition (struct rspamd_config *cfg,
-       const gchar *condition);
+                                                                        const gchar *condition);
+
 void rspamd_lua_dumpstack (lua_State *L);
 
 /* Set lua path according to the configuration */
 void rspamd_lua_set_path (lua_State *L, const ucl_object_t *cfg_obj,
-               GHashTable *vars);
+                                                 GHashTable *vars);
 
 /* Set some lua globals */
 gboolean rspamd_lua_set_env (lua_State *L, GHashTable *vars, char **lua_env,
-               GError **err);
+                                                        GError **err);
+
 void rspamd_lua_set_globals (struct rspamd_config *cfg, lua_State *L);
 
-struct memory_pool_s * rspamd_lua_check_mempool (lua_State * L, gint pos);
-struct rspamd_config * lua_check_config (lua_State * L, gint pos);
-struct rspamd_async_session* lua_check_session (lua_State * L, gint pos);
-struct ev_loop* lua_check_ev_base (lua_State * L, gint pos);
-struct rspamd_dns_resolver * lua_check_dns_resolver (lua_State * L, gint pos);
+struct memory_pool_s *rspamd_lua_check_mempool (lua_State *L, gint pos);
+
+struct rspamd_config *lua_check_config (lua_State *L, gint pos);
+
+struct rspamd_async_session *lua_check_session (lua_State *L, gint pos);
+
+struct ev_loop *lua_check_ev_base (lua_State *L, gint pos);
+
+struct rspamd_dns_resolver *lua_check_dns_resolver (lua_State *L, gint pos);
 
 enum rspamd_lua_parse_arguments_flags {
        RSPAMD_LUA_PARSE_ARGUMENTS_DEFAULT = 0,
        RSPAMD_LUA_PARSE_ARGUMENTS_IGNORE_MISSING,
 };
+
 /**
  * Extract an arguments from lua table according to format string. Supported arguments are:
  * [*]key=S|I|N|B|V|U{a-z};[key=...]
@@ -419,7 +467,7 @@ void *rspamd_lua_check_udata_maybe (lua_State *L, gint pos, const gchar *classna
  * @param task
  */
 void lua_call_finish_script (struct rspamd_config_cfg_lua_script *sc,
-               struct rspamd_task *task);
+                                                        struct rspamd_task *task);
 
 /**
  * Run post-load operations
@@ -428,9 +476,10 @@ void lua_call_finish_script (struct rspamd_config_cfg_lua_script *sc,
  * @param ev_base
  */
 void rspamd_lua_run_postloads (lua_State *L, struct rspamd_config *cfg,
-               struct ev_loop *ev_base, struct rspamd_worker *w);
+                                                          struct ev_loop *ev_base, struct rspamd_worker *w);
 
 void rspamd_lua_run_config_post_init (lua_State *L, struct rspamd_config *cfg);
+
 void rspamd_lua_run_config_unload (lua_State *L, struct rspamd_config *cfg);
 
 /**
@@ -440,7 +489,7 @@ void rspamd_lua_run_config_unload (lua_State *L, struct rspamd_config *cfg);
  * @param ref
  */
 void rspamd_lua_add_ref_dtor (lua_State *L, rspamd_mempool_t *pool,
-               gint ref);
+                                                         gint ref);
 
 /**
  * Tries to load some module using `require` and get some method from it
@@ -450,7 +499,7 @@ void rspamd_lua_add_ref_dtor (lua_State *L, rspamd_mempool_t *pool,
  * @return TRUE if function exists in that module, the function is pushed in stack, otherwise stack is unchanged and FALSE is returned
  */
 gboolean rspamd_lua_require_function (lua_State *L, const gchar *modname,
-               const gchar *funcname);
+                                                                         const gchar *funcname);
 
 /**
  * Tries to load redis server definition from ucl object specified
@@ -460,9 +509,10 @@ gboolean rspamd_lua_require_function (lua_State *L, const gchar *modname,
  * @return
  */
 gboolean rspamd_lua_try_load_redis (lua_State *L, const ucl_object_t *obj,
-               struct rspamd_config *cfg, gint *ref_id);
+                                                                       struct rspamd_config *cfg, gint *ref_id);
 
 struct rspamd_stat_token_s;
+
 /**
  * Pushes a single word into Lua
  * @param L
@@ -477,6 +527,7 @@ enum rspamd_lua_words_type {
        RSPAMD_LUA_WORDS_FULL,
        RSPAMD_LUA_WORDS_MAX
 };
+
 /**
  * Pushes words (rspamd_stat_token_t) to Lua
  * @param L
@@ -484,7 +535,7 @@ enum rspamd_lua_words_type {
  * @param how
  */
 gint rspamd_lua_push_words (lua_State *L, GArray *words,
-               enum rspamd_lua_words_type how);
+                                                       enum rspamd_lua_words_type how);
 
 /* Paths defs */
 #define RSPAMD_CONFDIR_INDEX "CONFDIR"
@@ -516,5 +567,8 @@ extern ucl_object_t *lua_traces;
 #define LUA_TRACE_POINT do {} while(0)
 #endif
 
-#endif /* WITH_LUA */
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* RSPAMD_LUA_H */
index a44bd12e9fc8fa58906d697bd5fae2cc7bca120b..7b18df7a53edd59dd279aca69b3381068b41d290 100644 (file)
 
 #include "lua_common.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 LUA_PUBLIC_FUNCTION_DEF (config, add_radix_map);
 LUA_PUBLIC_FUNCTION_DEF (config, radix_from_config);
 LUA_PUBLIC_FUNCTION_DEF (config, radix_from_ucl);
@@ -27,4 +31,8 @@ LUA_PUBLIC_FUNCTION_DEF (config, add_kv_map);
 LUA_PUBLIC_FUNCTION_DEF (config, add_map);
 LUA_PUBLIC_FUNCTION_DEF (config, get_maps);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif /* SRC_LUA_LUA_MAP_H_ */
index d44eb0d5460e986a654924adb98684569d0e8f5e..be954271d8a7a150541bba7994e14bf5945fd488 100644 (file)
@@ -3,10 +3,15 @@
 
 #include <lua.h>
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 struct thread_entry;
 struct lua_thread_pool;
 
 typedef void (*lua_thread_finish_t) (struct thread_entry *thread, int ret);
+
 typedef void (*lua_thread_error_t) (struct thread_entry *thread, int ret, const char *msg);
 
 struct thread_entry {
@@ -37,7 +42,7 @@ struct lua_callback_state {
  * @return
  */
 struct lua_thread_pool *
-lua_thread_pool_new (lua_State * L);
+lua_thread_pool_new (lua_State *L);
 
 /**
  * Destroys the pool
@@ -80,8 +85,9 @@ void
 lua_thread_pool_return_full (struct lua_thread_pool *pool,
                                                         struct thread_entry *thread_entry,
                                                         const gchar *loc);
+
 #define lua_thread_pool_return(pool, thread_entry) \
-       lua_thread_pool_return_full (pool, thread_entry, G_STRLOC)
+    lua_thread_pool_return_full (pool, thread_entry, G_STRLOC)
 
 /**
  * Currently running thread. Typically needed in yielding point - to fill-up continuation.
@@ -92,8 +98,10 @@ lua_thread_pool_return_full (struct lua_thread_pool *pool,
 struct thread_entry *
 lua_thread_pool_get_running_entry_full (struct lua_thread_pool *pool,
                                                                                const gchar *loc);
+
 #define lua_thread_pool_get_running_entry(pool) \
-       lua_thread_pool_get_running_entry_full (pool, G_STRLOC)
+    lua_thread_pool_get_running_entry_full (pool, G_STRLOC)
+
 /**
  * Updates currently running thread
  *
@@ -104,8 +112,10 @@ void
 lua_thread_pool_set_running_entry_full (struct lua_thread_pool *pool,
                                                                                struct thread_entry *thread_entry,
                                                                                const gchar *loc);
+
 #define lua_thread_pool_set_running_entry(pool, thread_entry) \
-       lua_thread_pool_set_running_entry_full (pool, thread_entry, G_STRLOC)
+    lua_thread_pool_set_running_entry_full (pool, thread_entry, G_STRLOC)
+
 /**
  * Prevents yielded thread to be used for callback execution. lua_thread_pool_restore_callback() should be called afterwards.
  *
@@ -114,9 +124,11 @@ lua_thread_pool_set_running_entry_full (struct lua_thread_pool *pool,
  */
 void
 lua_thread_pool_prepare_callback_full (struct lua_thread_pool *pool,
-               struct lua_callback_state *cbs, const gchar *loc);
+                                                                          struct lua_callback_state *cbs, const gchar *loc);
+
 #define lua_thread_pool_prepare_callback(pool, cbs) \
-       lua_thread_pool_prepare_callback_full (pool, cbs, G_STRLOC)
+    lua_thread_pool_prepare_callback_full (pool, cbs, G_STRLOC)
+
 /**
  * Restores state after lua_thread_pool_prepare_callback () usage
  *
@@ -124,9 +136,10 @@ lua_thread_pool_prepare_callback_full (struct lua_thread_pool *pool,
  */
 void
 lua_thread_pool_restore_callback_full (struct lua_callback_state *cbs,
-               const gchar *loc);
+                                                                          const gchar *loc);
+
 #define lua_thread_pool_restore_callback(cbs) \
-       lua_thread_pool_restore_callback_full (cbs, G_STRLOC)
+    lua_thread_pool_restore_callback_full (cbs, G_STRLOC)
 
 /**
  * Acts like lua_call but the tread is able to suspend execution.
@@ -139,8 +152,9 @@ void
 lua_thread_call_full (struct thread_entry *thread_entry,
                                          int narg,
                                          const gchar *loc);
+
 #define lua_thread_call(thread_entry, narg) \
-       lua_thread_call_full (thread_entry, narg, G_STRLOC)
+    lua_thread_call_full (thread_entry, narg, G_STRLOC)
 
 /**
  * Yields thread. should be only called in return statement
@@ -150,9 +164,10 @@ lua_thread_call_full (struct thread_entry *thread_entry,
  */
 int
 lua_thread_yield_full (struct thread_entry *thread_entry, int nresults,
-               const gchar *loc);
+                                          const gchar *loc);
+
 #define lua_thread_yield(thread_entry, narg) \
-       lua_thread_yield_full (thread_entry, narg, G_STRLOC)
+    lua_thread_yield_full (thread_entry, narg, G_STRLOC)
 
 /**
  * Resumes suspended by lua_yield_thread () thread
@@ -164,8 +179,13 @@ void
 lua_thread_resume_full (struct thread_entry *thread_entry,
                                                int narg,
                                                const gchar *loc);
+
 #define lua_thread_resume(thread_entry, narg) \
-       lua_thread_resume_full (thread_entry, narg, G_STRLOC)
+    lua_thread_resume_full (thread_entry, narg, G_STRLOC)
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif /* LUA_THREAD_POOL_H_ */
 
index e8ed9c873e9af74b37f224a41c7828238d4db54a..e1a638df7b7090c1ac449b026064eab75ac62f63 100644 (file)
 #include <lauxlib.h>
 #include <lualib.h>
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 extern GHashTable *ucl_vars;
 extern gchar **lua_env;
 extern struct rspamd_main *rspamd_main;
@@ -29,10 +33,13 @@ extern struct rspamd_main *rspamd_main;
 GQuark rspamadm_error (void);
 
 struct rspamadm_command;
-typedef const gchar* (*rspamadm_help_func) (gboolean full_help,
+
+typedef const gchar *(*rspamadm_help_func) (gboolean full_help,
                                                                                        const struct rspamadm_command *cmd);
+
 typedef void (*rspamadm_run_func) (gint argc, gchar **argv,
                                                                   const struct rspamadm_command *cmd);
+
 typedef void (*rspamadm_lua_exports_func) (gpointer lua_state);
 
 #define RSPAMADM_FLAG_NOHELP (1 << 0)
@@ -52,8 +59,10 @@ extern const struct rspamadm_command *commands[];
 extern struct rspamadm_command help_command;
 
 const struct rspamadm_command *rspamadm_search_command (const gchar *name,
-               GPtrArray *all_commands);
+                                                                                                               GPtrArray *all_commands);
+
 void rspamadm_fill_internal_commands (GPtrArray *dest);
+
 void rspamadm_fill_lua_commands (lua_State *L, GPtrArray *dest);
 
 gboolean rspamadm_execute_lua_ucl_subr (gint argc, gchar **argv,
@@ -62,6 +71,7 @@ gboolean rspamadm_execute_lua_ucl_subr (gint argc, gchar **argv,
                                                                                gboolean rspamadm_subcommand);
 
 struct thread_entry;
+
 typedef void (*lua_thread_error_t) (struct thread_entry *thread, int ret, const char *msg);
 
 
@@ -70,7 +80,12 @@ struct lua_call_data {
        gint ret;
        gpointer ud;
 };
+
 gint lua_repl_thread_call (struct thread_entry *thread, gint narg,
-               gpointer ud, lua_thread_error_t error_func);
+                                                  gpointer ud, lua_thread_error_t error_func);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
index a56fab2b46f3148a315d10a541d62a4cc60d30fb..0a0fb45fc80ab9fad5aad9679a834dd745c1c4fc 100644 (file)
 #include "libutil/http_connection.h"
 #include "libutil/upstream.h"
 #include "libutil/radix.h"
+#include "libserver/cfg_file.h"
 #include "libserver/url.h"
 #include "libserver/protocol.h"
 #include "libserver/async_session.h"
 #include "libserver/roll_history.h"
 #include "libserver/task.h"
+
 #include <openssl/ssl.h>
 #include <magic.h>
 
 #define CR '\r'
 #define LF '\n'
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 enum rspamd_worker_flags {
        RSPAMD_WORKER_HAS_SOCKET = (1 << 0),
        RSPAMD_WORKER_UNIQUE = (1 << 1),
@@ -69,8 +75,8 @@ struct rspamd_worker_accept_event {
        struct rspamd_worker_accept_event *prev, *next;
 };
 
-typedef void (*rspamd_worker_term_cb)(EV_P_ ev_child *, struct rspamd_main *,
-               struct rspamd_worker *);
+typedef void (*rspamd_worker_term_cb) (EV_P_ ev_child *, struct rspamd_main *,
+                                                                          struct rspamd_worker *);
 
 /**
  * Worker process structure
@@ -114,6 +120,7 @@ struct rspamd_abstract_worker_ctx {
 };
 
 struct rspamd_worker_signal_handler;
+
 typedef gboolean (*rspamd_worker_signal_cb_t) (
                struct rspamd_worker_signal_handler *, void *ud);
 
@@ -147,10 +154,11 @@ struct rspamd_controller_pbkdf {
  * Common structure representing C module context
  */
 struct module_s;
+
 struct module_ctx {
-       gint (*filter)(struct rspamd_task *task);                   /**< pointer to headers process function                    */
-       struct module_s *mod;                                                                           /**< module pointer                                                                     */
-       gboolean enabled;                                                                                       /**< true if module is enabled in configuration         */
+       gint (*filter) (struct rspamd_task *task);                   /**< pointer to headers process function                   */
+       struct module_s *mod;                                        /**< module pointer                                                                        */
+       gboolean enabled;                                            /**< true if module is enabled in configuration            */
 };
 
 #ifndef WITH_HYPERSCAN
@@ -178,28 +186,33 @@ struct module_ctx {
 #define RSPAMD_CUR_WORKER_VERSION 0x2
 
 #define RSPAMD_FEATURES \
-               RSPAMD_FEATURE_HYPERSCAN RSPAMD_FEATURE_PCRE2 \
-               RSPAMD_FEATURE_FANN RSPAMD_FEATURE_SNOWBALL
+        RSPAMD_FEATURE_HYPERSCAN RSPAMD_FEATURE_PCRE2 \
+        RSPAMD_FEATURE_FANN RSPAMD_FEATURE_SNOWBALL
 
 #define RSPAMD_MODULE_VER \
-               RSPAMD_CUR_MODULE_VERSION, /* Module version */ \
-               RSPAMD_VERSION_NUM, /* Rspamd version */ \
-               RSPAMD_FEATURES /* Compilation features */ \
+        RSPAMD_CUR_MODULE_VERSION, /* Module version */ \
+        RSPAMD_VERSION_NUM, /* Rspamd version */ \
+        RSPAMD_FEATURES /* Compilation features */ \
 
 #define RSPAMD_WORKER_VER \
-               RSPAMD_CUR_WORKER_VERSION, /* Worker version */ \
-               RSPAMD_VERSION_NUM, /* Rspamd version */ \
-               RSPAMD_FEATURES /* Compilation features */ \
+        RSPAMD_CUR_WORKER_VERSION, /* Worker version */ \
+        RSPAMD_VERSION_NUM, /* Rspamd version */ \
+        RSPAMD_FEATURES /* Compilation features */ \
 /**
  * Module
  */
 typedef struct module_s {
        const gchar *name;
-       int (*module_init_func)(struct rspamd_config *cfg, struct module_ctx **ctx);
-       int (*module_config_func)(struct rspamd_config *cfg);
-       int (*module_reconfig_func)(struct rspamd_config *cfg);
-       int (*module_attach_controller_func)(struct module_ctx *ctx,
-               GHashTable *custom_commands);
+
+       int (*module_init_func) (struct rspamd_config *cfg, struct module_ctx **ctx);
+
+       int (*module_config_func) (struct rspamd_config *cfg);
+
+       int (*module_reconfig_func) (struct rspamd_config *cfg);
+
+       int (*module_attach_controller_func) (struct module_ctx *ctx,
+                                                                                 GHashTable *custom_commands);
+
        guint module_version;
        guint64 rspamd_version;
        const gchar *rspamd_features;
@@ -220,8 +233,11 @@ struct rspamd_worker_listen_socket {
 
 typedef struct worker_s {
        const gchar *name;
-       gpointer (*worker_init_func)(struct rspamd_config *cfg);
-       void (*worker_start_func)(struct rspamd_worker *worker);
+
+       gpointer (*worker_init_func) (struct rspamd_config *cfg);
+
+       void (*worker_start_func) (struct rspamd_worker *worker);
+
        int flags;
        int listen_type;
        guint worker_version;
@@ -313,8 +329,9 @@ struct rspamd_process_exception {
  */
 struct controller_command;
 struct controller_session;
-typedef gboolean (*controller_func_t)(gchar **args,
-       struct controller_session *session);
+
+typedef gboolean (*controller_func_t) (gchar **args,
+                                                                          struct controller_session *session);
 
 struct controller_session {
        struct rspamd_worker *worker;                               /**< pointer to worker structure (controller in fact) */
@@ -322,7 +339,7 @@ struct controller_session {
        struct controller_command *cmd;                             /**< real command                                                                   */
        struct rspamd_config *cfg;                                  /**< pointer to config file                                                 */
        GList *parts;                                               /**< extracted mime parts                                                   */
-       struct rspamd_async_session * s;                             /**< async session object                                                  */
+       struct rspamd_async_session *s;                             /**< async session object                                                   */
        struct rspamd_dns_resolver *resolver;                       /**< DNS resolver                                                                   */
        struct ev_loop *ev_base;                                 /**< Event base                                                                                */
 };
@@ -354,17 +371,20 @@ struct rspamd_external_libs_ctx {
  * Register custom controller function
  */
 void register_custom_controller_command (const gchar *name,
-       controller_func_t handler,
-       gboolean privilleged,
-       gboolean require_message);
+                                                                                controller_func_t handler,
+                                                                                gboolean privilleged,
+                                                                                gboolean require_message);
 
 enum rspamd_pbkdf_version_id {
        RSPAMD_PBKDF_ID_V1 = 1,
-       RSPAMD_PBKDF_ID_V2= 2,
+       RSPAMD_PBKDF_ID_V2 = 2,
        RSPAMD_PBKDF_ID_MAX
 };
 
 extern const struct rspamd_controller_pbkdf pbkdf_list[];
 
+#ifdef  __cplusplus
+}
+#endif
 
 #endif
\ No newline at end of file
index 6d0e763aa39a23c17754a4c73e30642aac093285..cef2c9a19e4920d55d130991d0c3ae9f39448eca 100644 (file)
 #include "libserver/cfg_file.h"
 #include "libserver/rspamd_control.h"
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 static const guint64 rspamd_worker_magic = 0xb48abc69d601dc1dULL;
 
 struct rspamd_lang_detector;
@@ -52,13 +56,14 @@ struct rspamd_worker_ctx {
        /* Language detector */
        struct rspamd_lang_detector *lang_det;
 };
+
 /*
  * Init scanning routines
  */
 void rspamd_worker_init_scanner (struct rspamd_worker *worker,
-               struct ev_loop *ev_base,
-               struct rspamd_dns_resolver *resolver,
-               struct rspamd_lang_detector **plang_det);
+                                                                struct ev_loop *ev_base,
+                                                                struct rspamd_dns_resolver *resolver,
+                                                                struct rspamd_lang_detector **plang_det);
 
 /*
  * Called on forced timeout
@@ -70,4 +75,8 @@ void rspamd_task_timeout (EV_P_ ev_timer *w, int revents);
  */
 void rspamd_worker_guard_handler (EV_P_ ev_io *w, int revents);
 
+#ifdef  __cplusplus
+}
+#endif
+
 #endif
index 56562ae8cb99af618d6fcfbf0a68592854c14a38..95eef354d417f8d2624d8c18abfff9bab9ca3b13 100644 (file)
@@ -5,6 +5,10 @@
  * Here are described test functions for rspamd test suite
  */
 
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
 /* URL parser test */
 void rspamd_url_test_func (void);
 
@@ -38,6 +42,10 @@ void rspamd_cryptobox_test_func (void);
 
 void rspamd_heap_test_func (void);
 
-void rspamd_lua_lua_pcall_vs_resume_test_func(void);
+void rspamd_lua_lua_pcall_vs_resume_test_func (void);
+
+#ifdef  __cplusplus
+}
+#endif
 
 #endif